在你决定成为一只程序猿之前,请先成为一个 Power User
James Swineson
已而!已而!
程序猿[1]这个工作听起来不错:市场需求大,工资高,(看起来)工作轻松,前途也广。于是,你兴冲冲地去看了网上几个视频教程,或是关注了几个微信公众号,写了两行代码,弹个对话框,以为自己入门了。这样能入门吗?当然能。不幸的是,要通过这种方法获得“真正的”程序猿群体的认同,你要走的路会更曲折。跟着视频教程一步一步写出了你的第一个程序(抑或是失败了)的同学,通常会在接下来遇到的问题上迷茫:
- 我遇到了别人都没有遇到过的故障怎么办?
- 我的程序运行失败了,问题可能不出在程序本身,怎么查找原因?
- 我找到了一个问题的可能解法,有人贴出了一堆看不懂的代码,应该怎么用?
- 我需要实现一个功能,有人写了个 library,但是没有详细的说明文档,怎么办?
- 我的问题在中文互联网上没有人回答,或者和这个问题直接相关的人不说中文,怎么办?
而这些问题常常是“真正的”程序猿不愿意或者说不屑于解答的——除非你真的很漂亮。绝大多数高级程序猿都是 Power User,他们对自己工作和日常使用的硬件和软件相当熟悉,并且期望和他们交流的其他人也是。这些人会愿意告诉你“把某个文件复制到某处可以解决这个问题”或者“这是因为某某库没装好”,但是会对你问出的诸如“如何复制文件”以及“如何安装某某库”之类的问题表现出极大的不解。
更严重的问题是,如果你不熟悉你所使用的系统和软件,你甚至没法完整地描述问题。我遇到过不少人问我这类问题:
- “连不上网了怎么办?”
- “我的程序没法运行了怎么办?”
而如果你对你使用的系统和软件有基础的认识,会使用一些调试工具,问出的问题就会更像下面的风格:
- “我的 Windows 7 今天突然连不上网了,PPPoE 拨号显示错误 651,右下角的本地连接的小电脑图标以前屏幕都是蓝色的,现在变灰了,ping 网关超时。”
- “我的 C 程序无法运行,代码和教程上一模一样,Dev-C++ 也按教程的要求配置了,ld 返回错误:unable to resolve symbol _Winmain。”
后一类提问方式的信息量是前一种的数倍,分析问题原因也相对容易太多,心情也会更好——至少我知道我不用一步一步教人“在开始菜单上右击,然后单击运行按钮,然后……”了。
我在这里诚挚地建议各位想成为程序猿的同学:如果你甚至都不是一个 Power User,请不要看着网上那些 21 天入门视频或者报个乱七八糟的班就开始写程序。你根本没有学习编程的基础知识。
以下为一份我编写的入门知识自测表,建议在全部会以后再开始学习编程:
对计算机的工作原理有基础的认知
- 我知道计算机是需要用电的
- 我知道计算机需要人维护
- 我知道计算机对它在干什么没有知觉
- 我知道每台计算机上安装的系统都有一些不同(即使刚刚安装完)
我知道同一个程序或者同一个设置在不同的计算机或者不同的操作系统上很可能产生不同的结果
对你使用的操作系统充分熟悉我知道什么是操作系统
我知道常见的操作系统及其常见的用途
我知道我在用的操作系统的名字和版本
我知道什么是文件,文件夹,扩展名和路径(以及权限,对 *nix 用户而言)
我知道如何复制和粘贴文件或者文本,以及如何在指定的范围内查找一个文件
我知道如何用特定程序打开一个不能直接双击打开的文件
我知道如何在命令行/终端下完成文件的复制,移动,重命名操作
我知道如何在命令行/终端下运行一个程序,并且指定命令行参数
我知道如何联网并且下载文件
具有在程序员世界生存的基本能力
- 我能够举一反三
- 我能认识到在不同的环境下同一个名字可以代表工作原理类似的不同事物
- 我懂英语,并且会查字典
- 我能,并且会访问 Google,Stack Overflow 和 Github
==========
注:
- 程序猿:包括但不限于编程,服务器运维等工作。(同样的,别以为买个 VPS 装两个“一键包”就会搭服务器了!)