狼是自然界中真正的掠食者,而哈士奇不过是人类的玩物。两者长得确实很像,就如同IT界的Programmer()和Coder()。如果用狼和哈士奇来隐喻这两种职业,Programmer无疑是软件业真正的狼。

狼与哈士奇,程序员和码农

一、“哈士奇”的习性

• 他们写出机器可以理解的代码。

• 他们的代码依靠注释读懂。

• 他们只在工作时间写代码。

• 他们不喜欢看书,但偶尔会看看视频。

• 他们只会阅读别人的博客,自己从来不写。

• 他们关注的仅仅是进度。

• 他们仅仅是复制代码。

• 遇到问题他们会直接问同伴。

• 他们总是认为自己会的很多,喜欢用海量的“精通”来装点自己的简历,假装高手。

• 他们每天沉寂在C+V的死循环中,并不断地抱怨需求变更。

• 他们会因为学会了某种代码的写法,而骄傲自满。

• 他们一边在被动地接受需求,一边在抱怨不合理的需求。

• 他们不会检查自己的代码,在测试暴露缺陷之前,他们往往难以发现。

• 他们不认为自己要为代码质量负责,那应该是管理者和测试的事情。

• 他们在拿到任务后会直接开始工作。

• 他们往往具有文档恐惧症。

• 他们并不崇拜专业人士。

• 他们擅长推卸责任。

• 他们对编译警告弃之不理。

• 他们只是在写可以运行的程序。

• 他们会拖延不喜欢的任务。

• 他们更容易放弃自己的设计。

• 他们的编程往往止步于编码的表象。

二、“狼”的习性

• 他们写出人可以读懂的代码。

• 他们的代码风格统一并具有自描述性。

• 他们不仅在工作时间,在业余时间也会写代码。

• 他们会看大量的书籍,阅读大量技术资料,当然也会看视频。

• 他们不仅阅读别人的博客,他们自己也会写博客,他们认为分享知识是快乐的。

• 他们不仅关注进度而且更关注代码的质量,提供现实的进度方案,在上司面前坚持自己的意见。

• 他们复用代码而不是复制代码。

• 遇到问题他们会尝试自己解决,访问社区,然后才会询问同伴。

• 他们总是认为自己还能做的更好,并对那些巨人由衷地敬佩,在不是高手时不假装高手。

• 他们经常在思索如何能够解耦,用灵动的设计应对突然到来的变更。

• 当掌握某种代码的写法,他们看到的往往是背后深层次的问题,并向专业水准看齐。

• 他们会对不合理的需求说不,并在工作中尝试影响他们的领导。

• 他们会经常重构自己的代码,并维护自己的缺陷核对表。

• 他们认为提高代码质量是自己的责任,并为自己的过失而负责。

• 他们在拿到任务后,会在行动之前,进行分析和计划,而不是马上编码。

• 他们往往会认真阅读项目文档。

• 他们和希望提高软件开发技能的人为伍,参加交流会,加入某个社区参与技术讨论。

• 他们敢于承认错误。

• 他们将警告与错误同等对待。

• 他们在构建自己彻底理解的程序。

• 他们将不喜欢的任务认为是对自身的磨砺。

• 他们往往坚持自己的设计。

• 他们的编程往往深入语言,触及思想。

三、做“狼”还是“哈士奇”?

狼和哈士奇的隐喻意味着Coder难以在技术实战中战胜Programmer,但现实是,往往Coder更受欢迎,如同哈士奇更讨人喜欢一样。原因很简单,Programmer在众多Coder之中显得格格不入。Programmer能更快更高效地完成任务,他们讨厌加班,抵制低效的流程,他们对自己的能力深信不疑,并经常坚持自己的意见,对不合理的需求说不。这些,在雇主的眼里就是叛逆。而Coder就低调很多,他们甘于加班,对设计没有意见,不会对需求说不,出了问题他们总在说,这是别人的问题。他们两者的代码,在外行看来没有差别。在雇主眼中,往往那些闭嘴加班的员工更应该重用。

也许,Programmer们并不想让自己被孤立,但现实却是残酷的。人们缺少包容,善意的提醒,也可能会被认为是卖弄,是对权威的挑战。狼只有在狼群中,才能得到自身的认同感。软件的构建者是Programmer而不是Coder。如果你是一匹狼,而你有感受不到团队的认同感,那你不妨换一换环境,因为,和臭棋篓子下棋,永远无法进步

如果你是位开明的领导者,当你读到这篇文章时,我真切地希望你能留意那些“带刺”的员工,因为很可能,他比你团队中的其他人都看的更远。

如果你是名,那么请你选择到底是做狼还是哈士奇。狼可能没有安稳的生活,没有丰盛的午餐,但却拥有强大的力量,自由,以及尊严。