【猎云网(微信号:ilieyun)】12月28日报道 (编译:何弃疗)
几乎在每一个软件开发者的职业生涯中,都有那么几个时期我们与“负面工作者”为伴。所谓的“负面工作”可能听起来有点奇怪,说的就是那些一无是处无所事事的人。那么所谓的负面工作是如何产生的呢?
举个例子吧,讲的是曾和我共事过一家公司的一位开发者。他在该公司6个月的任期内对代码库进行了2次修改,然而这些修改最终并没有什么卵用反而破坏了产品的其他功能。最尴尬的是,他做的第3次修改是撤销前2次做的改变,呵呵。
听起来他似乎啥也没做,除了一些人需要为他犯下的错擦屁股。他们不得不一直跟踪观察来判断出现的bug是因为他所做的工作导致的还是其他人的工作导致的,他们不得不花时间去讨论如何为他背锅,他们也不得不花时间确定没有一个代码是值得修改的,做完这些才能让团队直接删除这几次更改。
最终的结果是整个团队浪费了几十个小时去解决这个问题,而这位开发者却在啥也没做的同时拉低了整个团队的生产力。
像这样的例子还有很多。
我曾经碰到过很多有能力写出好代码的开发人员,但是最终他们呈现出的结果如此复杂以至于其他开发者要花费大量的时间去理解它。诚然,尝试去理解别人写的代码一定是有点耗时的,但是重要的是究竟有多耗时多难懂。
这里提供了一些简单的计算步骤帮助我们理解:
假设一个不靠谱的开发者要花5个小时来编写复杂难懂的代码,该团队内的其他4位开发者每人需要花费10个小时才能弄懂该代码是如何工作的。
净损失:(4×10)+ 5 = 40 + 5 = 45小时消耗
假设一个很棒的开发者需要花费10个小时去写一个更容易理解的代码,该团队内的其他4位开发者每人需要花费1小时就能弄懂该代码是如何工作的。
净损失:(4×1)+10=4+10=14小时消耗
差异:45-14=31小时
这些损耗的时间同样也会呈现出指数倍上升。我曾经看过因为代码写的太烂了,导致一个好的开发者花了两周才完成一个任务,然而如果代码写的好的话理论上这个任务只需要花费2个小时就能完成。当然这2个小时也是比较宽裕的,如果最开始用的是一个非常优秀的软件设计的话,可能只需要30分钟就能完成这个任务。
负面工作的一个更加恶劣的形式就是一个开发者他惯用过时的编程操作且同时对于一个公司有极大的影响力,这时后果就更严重了。这种类型的开发者讨厌学习能够改变其现有工作流程的新鲜事物,同时他们会滥用自己的影响力去让整个公司的开发过程保持不变来方便自己。这样的后果是,整个团队中的其他开发人员都会受到负面的影响。
我曾经在一家公司工作,当时我们需要调研一种新的方法来对不同开发者完成的工作进行整合。当时我们每周会用两次这种方法,每使用一次需要花费几个小时,但是我们确信这个新的方法最终能够降低到只需花费几分钟。然而公司里一位很有影响力的开发者不愿意接受任何改变,且他们有权力拒绝任何改进。最终我们花了半年的时间践行这一方法,直到这位开发者没什么大话语权之后才实施了。
4小时×每周两次×26周=整整六个月一共浪费了208小时
呵呵,对于一个员工来说208小时相当于五周工作时间的总和。
你能想象你五个星期啥事也没干么?如果这五周你就无所事事浪费人生你会怎么想?
幸运的是这被浪费的208个小时是分配给十几个人的,但是这种局面仍然很可怕。这只是该公司的一个例子,这种工作态度不仅会阻碍该公司在一个领域的发展也会阻碍它在其他很多领域的发展。其他因为顽固不变而导致的错误会浪费更多的时间。
如果有负面工作的开发者就会带来人力成本的浪费。很多人都希望自己能够在工作岗位上获得一种成就感,他们希望自己花出去的时间是有价值的。对于开发者来说意味着能够研发一些真正有价值的软件,然而被无辜浪费的时间则是高效工作的拦路虎。
我们中的大多数还是想要和真正有才华的人一起共事的,如果和你合作的人是团队的负担那么对你也会有一种情感上的浪费。这是我们成功路上的障碍,他们也会让我们觉得我们的工作毫无价值。
开发者良好的就业市场使得开发者们能够很容易地解决此类问题:另谋他职。当然这对于公司来说,是一个最不想要的结果。
那么如果做负面工作的开发者的成本如此之高,他们为何还能被聘用呢?这其中的一部分原因来自于亟需改进招聘过程,但是人们很少讨论的原因是降低招聘标准带来的诱惑。
有的时候,一家公司处于需要迅速完成大量工作的情况之中。如果公司里没有足够的开发者来完成这一目标的话,那么该公司就需要雇佣更多的开发人员。由于开发者在目前的就业市场中具有相当的优势,那么完成一次不错的招聘就需要相当多的时间。这时就是降低招聘标准出现的契机,当工作量非常巨大的时候,很多人都是在恐慌之后急急忙忙被招聘的。他们就会认为只有足够多的开发者才能够完成更多的工作量。
然而这远不是真理,并非所有的开发者都会为你的团队带来积极的价值。我理解截止日期带来的压力,但是在恐慌之中急急忙忙招聘并不会真正地解决这个问题,甚至会让问题更大。糟糕的开发者不仅会拖慢你的脚步,而且会让优秀的开发者离开你的公司。相对于没有雇佣任何人来说你会陷于更加糟糕的情况之中。