目前我们程序员客栈所有的开发者都是经过实名认证签约的,但是就算这样还是有很多开发者,在开发过程中表现出作为一名程序员不合格的地方,这些人我们发现后就会取消签约,下面以我个人的经验,糟糕的程序员具有以下这些特质:
1,Stack Overflow机器人:这种人遇到问题时,会灵活地使用Google搜寻,并采用所找到的第一个结果(按:好的答案通常在Stack Overflow上)。
问题不在于从Stack Overflow上抄答案回来用,因为Stack Overflow上面的数据确实比多数官方手册来的丰富与完整。所以请不要误会我的意思,上网找答案就算不是最棒的途径也属上上策。问题在于不加理解就机械化地采用网络上的答案,甚至也不管适不适用于自己的问题。许多人居然会觉得论坛上的说法比他们眼前的代码更可靠。
2,我不是测试人员:我不需要测试自己的代码,那是测试人员的工作。
我不认为这种态度在这个敏捷开发方法成熟的时代已经形式渐微。还是有一些原因造成他们不愿改变习惯去测试自己的代码。其中一部分来自于对设定测试环境没有兴趣,另一部分是对测试这门学问没有通盘的认识。(还有一部分是开发人员社群对测试人员存有不便明说的轻蔑。)
3,讨厌手册:有些人好像认为手册必须要压韵,而他们没有那种文学素养,所以那自然不会是他们的工作。
一点浅见:这是活跃的程序计划的头号敌人。好的程序不是那种酷炫功能多如繁星的,而是那种具备一些多数人需要的好功能且代码持续被许多开发人员阅读、修改和更新的。这类不喜欢技术交流和精确、详尽的手册的开发人员,是公司迈向成功的最大阻力。
4,代码很丑:我的代码可以跑,但是:
我喜欢为变数取名叫x、flag、str、arr等等。
我绝大多数的代码都集中在一个很长很长的函式里。
没有缩排。
没有一致的风格和规则。
到处都是全局变数。
这一项是最令我困扰的。也不是说程序写得不好啦,这里面还是有可能会有超猛的代码。但我打个比方,如果一串钻石项炼挂在像酷斯拉那么大的超巨型恶心怪虫的尸体上被埋葬于地底,就再也不会有人找到它了。就算被找到,也不会有人想要清理它甚或戴上它。
5,短线投机客:他会不断地写出程序给你,但是不会尝试深入了解问题,对程序应用领域的背景知识也全无兴趣。
给他一些工作,他就算加班也会使命必达地交给你一个会动的程序。但也仅止于此。有时候开发人员具备一些自私的心态,促使他不只关心截止日期,也想从处理的事物中学到东西是很重要的。
6,给自己找理由:
「那不是我做的。」
「这看起来真糟糕。」
「不是我的问题。」
「这不是我修改的代码造成的问题,而是用到我的代码的人没写对。」
「我超讨厌这个(一天要讲十遍)。」
「这我修不好,请去把写这程序的人找来亲自处理。」当初写出错误的人已经离职了,不知道什么时候会轮到你?
7,夜郎自大:「我的方法」或「这才是王道」是他们的座右铭。
但他说来说去都是在比较他的想法和你的想法,而不是这个案子的规格。不然就是拿你的解法和他的解法做比较,随之而来的就是彼此间的争论。有时候他们会一直不断挑剔你的代码,因为就算你的代码会动、通过测试、看起来也很工整,仍旧令他们感到不舒服。这种人是开发效率的瓶颈,而且通常抗压性很差。他们对团队其实没什么帮助,虽然他们很可能是资深的开发人员。
8,固步自封:例如当Java的程序员听到必须要用Python来写一支程序,马上就会脸色给你看。
有些人对于学习新事物感到很痛苦,有些人则很怕写东西进数据库。他们会用尽一切方法来避免离开自己的舒适圈,此外有些迷信也使得他们不敢碰某些特定领域的东西。以我自己的经验来说,这种现象在新手中是很常见没错,但一个好的开发人员即便在他们不熟悉的领域也乐于探索。
9,粗心:忘记备份、同一个案子的代码有很多版本分别放在不同的文件夹、在产品版本的程序中印出开发用的除错信息等等。
这是另一个常见的新手现象,在他的经验值提高后就会有所改善。
10,懒惰的假高手:他们对能够透过一些特殊的技巧让程序运作感到自豪,会用一些神奇的方法来解决看起来很复杂的问题。
不过根据我的经验,这些招式十有八九都只是化妆术。那些怪招都嘛很烂,因为不知道什么时候会爆炸,而且之后在修复、重构上花的时间会比现在一次做好还要多。