各式各样的极品程序员,你属于哪一种
英文原文: The Taxonomy of Terrible Programmers
本文作者 Aaron 是 MarkedUp 创始人兼 .Net 开发者。在这篇文章里,作者根据自己平时在工作中的所见所闻,列举了几个比较有代表性的极品程序员类型。他们各有自己的特点和性格,在软件开发工作中,这种特点和性格显露无疑。(以下为编译内容)
在日常工作里肯定会发现很多有趣的事情,极品程序员所做的事就是很有意思的。事实上,现在所讨论的极品程序员主要是从他们的判断力、行为举止、个人态度和匪夷所思的工作方式上来判断的,有的时候这些程序员一味的只是追求文档上的内容,而不擅于用分析方式来解决问题。
几乎每一个软件开发者多多少少都会出现头脑短路的现象,也就是说,下面所列举的各种极品程序员类型,总有一款是属于你的。
1. 宠物专家型程序员:独爱一种技术
这种类型的程序员所遇到的致命错误就是:只钟爱一种技术,对别的技术不来电。其实这不是什么值得表扬的优点。因为这种程序员看上去就像是“天生注定爱上这种框架的程序员”,对于自己喜欢的技术可以说是放不开、丢不掉。甚至在生活里也是一个打破砂锅问到底的人。
不管问题是什么,他的回答总是跟他的性格类型脱不了关系:
- “嘿,我们需要在 Rails 框架里实现一个内容管理系统,但是我们应该用哪一个数据库呢?”Mongo
- “多用户博客引擎吗?”Mongo
- “关键业务一致性系统?”Mongo
- “库存管理系统?”Mongo
- “电子病历系统?”Mongo
- “分布式数据仓库?”Mongo
宠物专家类型的程序员在任何软件开发项目里都会找出各种各样的理由,也不管这些理由是否具有实际意义。但是,一旦你试图反驳他的观点或者是想法的时候,他们在感情上是无法接受的,即使你和他的关系特别好也是没有用的。如果他知道自己的想法错了,也不会告诉任何,而是更愿意在最后一秒的关键时刻偷偷的使用别人的正确方案。
2. 奥术师型程序员:保守主义者,不到万不得已不做修复
奥术师类型的程序员的目标是至高无上的:不考虑成本,尽一切可能保护系统的正常运行和系统的完整性。除此之外,这类程序员信奉一个很简单的哲理,这个简单的哲理也就是引领他们在软件开发和管理实践中的一个基本准则:只要还能将就使用,不到万不得已千万不要去修复。
不管什么样的软件,只要是在奥术师的保护下,就一直是使用那个平台、那个部署程序、那个数据库还有那个永远不会改变的操作系统。但是你不必担心,因为奥术师会一直盯着这些看上去老旧的组件,也许他不能赢得每一场战斗,但是他一定会为了每一场战斗而凶猛拼杀。
在奥术师的世界观里,过去也代表着未来。所以,他将会和那些想要升级他的 1981 年发布的的 PASCAL 代码库的人作战到底,哪怕是泪流满面。
3. 未来派程序员:赶潮人,追求最前沿的技术
未来派程序员可以说是奥术师程序员的对立面——今天就是未来,任何使用昨天的开发工具编写的代码在未来派眼里看来都是无与伦比的厌恶。他们的目标可不是什么哲理——追求最新最前沿的技术。
如果你看到未来派程序员甩着鼻涕在你面前吹嘘最近在 Hacker News 上看到关于 JavaScript 的最新消息而滔滔不绝的时候,你千万不要惊讶,因为他们没像是在 Justin Bieber 演唱会上那样在你面前尖叫就已经很照顾你了。即使有的时候在 Microsoft Research or the Server and Tools Team 发布新产品的时候,即使他们根本不理解那些产品的用途,也会显得很热情。
不过,需要提醒的是,如果你是一个未来派程序员,那么 DevOps 工程师,QA 工程师和 Release 工程师这些职位是未来派程序员的天敌。
4. 信息囤积者型程序员:小心谨慎,不愿公布代码
信息囤积者型程序员是一个很谨慎的人,但是对自身的谨慎行为充满不确定性。他们生活在一个认知失调的世界里:对自己的工作感到自豪,但是需要帮助的时候又不愿意让别人知道。
所以囤积者通常会隐藏代码,不愿意公布代码。小心翼翼地避免访问记录,更不愿意别人跟踪他所做的一些修改记录。他最大的恐惧就是遇到代码合并冲突,因为这样的暴露风险是最大的。
也许囤积者型的程序员很乐意告诉你他的工作是多么了不起,但是如果你想要知道他的代码估计会很难。最终,信息囤积者型的程序员注定要失败,这样的做事行为不被别人接受,存在也是没价值的。只希望在短期内能有较好的改善。
5. 艺术家型程序员: 质量?美观?不可兼得
艺术家型程序员简直就是囤积者和未来派程序员的表兄弟,艺术家型程序员会倾入所有的心思来构建完美的代码行。此外,艺术家型程序员也是一个易动感情的人——他所创造出的软件就是他感情的流露,也是他个人才华的生动化身。
艺术家型程序员还会考虑这样的问题:如果我使用的 JavaScript 里不添加分号的话,在语句上是不是更加漂亮呢?如果把这个块包装起来,是不是更加完美?他们最在乎的是美观,其次才是质量。
艺术家型程序员也不是这个行业所提倡的那种程序员,他们无法客观的讨论评价自己的作品,也无法定位自己在同事当中的位置。
6. 孤岛型程序员:性格孤僻者,代码就是一切
孤岛型程序员是整个程序员行列里最孤独的人,这样的程序员在软件创造方面有很多很大的欲望,但是他们的短板是不愿与人交往。孤岛型程序员的理想工作条件是与外界交流最好是保持在最低限度,而且严格控制在他方便的时候。他的生活里只是代码,没有人类。
但不幸的是,现实和理想往往是有很大的区别的,但是这些程序员必须为了生存而去公司谋求工作,于是被迫与同事或客户沟通,这对他们来说的确是一个巨大的负担。所以他们只能躲避——躲避会议、躲避电话沟通、关闭邮件接收器等等。他们遇到问题的时候宁愿查询上百件项目文档也不愿意问自己的队友。
和信息囤积者型程序员一样,孤岛型程序员注定要失败。软件开发就像是一项团队运动,不接受那些不遵守规则的另类。
7. 敏捷型程序员:急功近利,常常半途而废
敏捷型程序员是一个功利主义者,致力于需求改善软件效率,以及个人和团队的生产力。但不幸的是,他对“敏捷”哲理的理解和实施策略实在是呆板和僵化,不禁使人发笑。
敏捷型程序员的初始意图是很高尚的:改善软件开发方式。这样的程序员做起事情来是比较雷厉风行的,但是也有缺点:任何讨论时间超过四小时的问题最后都会变成泡沫;任何在最后冲刺阶段所做的项目基本上都会缩水。
另外值得注意的是,大部分敏捷型程序员都有一个通病:自命不凡。在程序开发过程当中,尤其是在选用一些小的组件的时候,坚持己见,导致网络文件系统出现错误或者是驱动程序实现效果不理想。
8. 文盲型程序员:编程入门者,功底浅薄
顾名思义,文盲型程序员在阅读别人的源代码的时候总是会遇到很多麻烦,有的时候基本上是看不懂别人的代码。
换句话说,文盲型程序员和孤岛型程序员像是一对表兄弟,只对他们钟爱的编程语言花时间去理解基本的编程结构,全面掌握编程语法,但是看到其他程序员所写的代码的时候,完全是一窍不通。在这种情况下,我们称之为“code-blind”程序员。
当面对其他开发者问“你为什么不使用我们标准的接口来生成一个对话”的时候,文盲型程序员通常是盯着自己的脚尖然后是喃喃自语。
以上只是列举了一部分类型的极品程序员案例,当然,极品并不代表不好,只要把这种极品特征合理应用,它就会成为你的特长。不知道你是不是一个极品程序员?