- 《一、糟糕程序员的各种迹象》
- 《二、平庸程序员的各种迹象》
三、不应该成为一名程序员的迹象
如果在学校上了编程课之后,你还有下面列出的迹象,那可能就真的没救了。这样的话,你可以选择另外一种职业来更好地推进事业发展。
1.无法确定程序的执行顺序
特征
1 2 3 4 5 | a = 5 b = 10 a = b print a |
- 看着上面的代码,你不能确定最后会输出什么数字。
备选职业
- 电工
- 管道工
- 建筑师
- 土木工程师
- 艺术家
2.抽象思维的能力不足
特征
- 很难理解对象和类之间的差别。
- 很难为自己的程序实现设计模式。
- 很难写出低耦合的函数。
- 不会用正则表达式。
- LISP对你来说晦涩难懂。
- 搞不懂邱奇图灵论题( Church-Turing Thesis )。
备选职业
- 合同谈判专家
- 演技派演员( Method actor )
3. Collyer Brothers 综合征
[译注]: Collyer Brothers 是美国的一对兄弟,性格怪异且有强迫囤积症,生活与世隔绝,强迫性地收集书、家具、乐器和各种物品,并在自家走廊里安置诱杀装置捕杀入侵者。之后被发现死于家中,周围堆了超过 140 吨的物品。详见 Collyer Brothers 。
特征
- 不愿意丢掉任何东西,包括垃圾。
- 不愿意删除任何东西,无论是代码或注释。
- 为了抵御入侵者,有布置陷阱的冲动。
- 不愿意和别人交流。
- 组织能力差。
备选职业
- 古董商
- 拾荒女人(Bag lady)
4.因果关系的意识失调
特征
- 很认真地认为编译器拒绝你的程序是带有恶意的。
- 被叫去修复一个已部署程序中的bug时,你在试图祷告。
- 认为隐藏变量是理所当然,并且想也不想就把程序异常怪到它们头上。
- 认为程序中存在的代码都会影响其运行时行为,即使某些代码从未被调用。
- 调试前有很多保留节目,比如擦亮幸运高尔夫球、转一转你的婚戒或拍一下放在显示屏上的 nodding-dog 玩偶。在调试无效时,你觉得很可能是因为调试前的保留节目少了某个环节或是做的顺序不对。
* -内存限制、被转移的偏移量和编译器特性。详见 Reddit 上面的讨论。各自评判吧。
备选职业
- 去拉斯维加斯玩老虎机
- Cam Riely 所著的《是什么造就了一名优秀的程序猿》(校对注:这个链接貌似挂了,我推荐 Josh Symonds 的《 什么原因成就了一位优秀的程序员? 》
5.不关心结果
编程对你来说可能只是个爱好,但它也是社会上最棒的兴趣爱好之一,没有它你无法进入专业的软件开发领域。
特征
- 如果重启能够解决,你就没兴趣修复这个问题。
- 安装程序暗地里部署了来路不明的第三方程序,而它和你的函数毫不相关。
- 设计用户界面(UI)时不使用任何人体工程学模型,你也没兴趣研究软件易用性。
- 程序显得花里胡哨,超出使用需求,比如:载入背景时在活动程序的界面上方显示启动画面,或额外地在桌面各处放置多个启动图标。
- 在程序里生成可从其他地方(比如:浏览器)读取的输出,或自己实现一个网络协议,并且依赖其他方的软件来容忍违反规范的行为。
- 虽然平台提供了事件驱动编程,但还是写繁忙-等待循环体。
- 不使用托管类语言,不担心边界检查或输入合法性验证。
- 在用户界面上很容易触发具有相应破坏力的操作(比如:“删除数据库”按钮就在“保存”按钮旁边,一样大,没有确认提醒步骤,也没有撤销操作)。
- 不使用空格、缩进或注释。
实际上,这些特征更多的是由管理人员所强加,程序猿只是执行者。由于这毕竟是一篇自测的文章,因此还是把这些特征分在了一组。并且,对这些人最好的建议是去一个更好的公司谋职,不然就是去商学院,学学怎么以破坏力更小的方式来赚钱。
备选职业
- 讨债
- 电话推销