原文链接 - https://medium.com/p/506a06ae35ea
原文推荐 @developerWorks
开发者 - 为啥总是后来的让你感觉更好更强更完美?
每当你为你的项目新雇佣了一个开发者,TA总是能让你感觉到无所不能。 TA才接手这个项目三天的时间,却已经对工程提出了5个库的升级建议并将各种问题整理妥当。 TA做的每项事情都似乎证明了你雇佣TA的正确性。TA已经为项目找到了8个可能到导致严重后果的突出问题。看到这一切,你禁不住要想这个项目之前的开发者是有多么的糟糕,连这样严重的问题都发现不了?与此同时,TA还极力反对使用项目已经使用的某某框架,并表示对之前为该项目选择的数据库类型之不理解同时提出了更好的方案。TA时不时的还跟你抱怨诸如缺少内容分发网络让你花费了无数的无用时间在提供内容上的问题。当然,这些都不是你的责任,那是你那该死的前任开发者的错! 太好了,犯错者明确了!
现任效应 (The curse of the present)
别担心 - 这是个普遍的现象,我已经见过很多次,每当一个新的开发者加入后,你总会有种恍如隔世的感觉。 TA会推荐使用新的工具,新的流程,新的语言,新的一切的一切。 这一切,都在诉说这前任开发者/开发团队的不是。相信我,我曾经经历过这个过程中的每一个角色,我曾经是前任开发者,被新来的各种指责。我也当过新开发者用前任来做一切问题的挡箭牌。我也曾经先后雇佣了这两个角色的开发者。当然,我也为一些对于显而易见的问题漠不关心的公司工作过,是的,这事情很正常。
这些,我的归纳就是所谓的“现任效应”。 当你,作为开发者,看到开发某个特定应用已经作出的种种决定,你会被每一个不完美的选择震惊! “天啊,为什么,为什么这要用Rails,用Node.js不是会好很多么?” 或者 “前任开发者脑子进水了吧,把这些显然需要引用完整性的数据存到MongoDb(NoSQL)中?”。 但是,请注意你是在“现在”来看待这个已经存在的应用。当之前的开发者/团队开发的时候,他们未必能知道这么多,他们需要去猜测去决定所有的未知。 他们需要在重重迷雾中确定方案。你被你“现在”所知道的信息迷惑了,所以这一切看起来都像是坏决定的集合。
推脱责任
另一个责怪前任开发者的理由就是 - 这太简单了。 前任的开发者已经不需要也没法随时出现在现场为自己辩护,所以责怪他是超级容易的。假如一个开发者不愿意出力去解决一个问题,那说这是系统遗留问题远比说自己的懒惰和不胜任要来的轻松简单。无论老板来问任何事情的处理时间,总是可以轻松的说“啊,这个一般情况下两周就够了,但因为我们使用的是一个老的版本(库),所以可能要花费一个月的时间”。诚然在老的版本上工作的确会增加时间,但更显然的是你,开发者,你这个月准备放羊了!
证明自己
如果你决定雇佣一个新的开发者,那你肯定有充足的理由为什么该雇佣TA。经过一轮轮的笔试,面试,你最终决定雇佣这个人。现在,这个人需要证明自己能够胜任。开发者一般倾向于通过快速对现有系统作出重大的改变来证明,实现各种无需实现的流程,引入各种现有团队前所未闻的工具。 我见过太多这种定式的行为,就像一个开发者过来说:嘿!prvotal实在是差到不能使用了我们应该转向Jira,或者说他简直不敢相信我们还在使用老掉牙的svn,应该尽快转投git的拥抱,等等。这些都印证了他们渊博的知识,让高高在上的boss看在眼里,喜在心中。
到此为止
我认为批评前任开发者/团队是一个错误的行为。你应该尊重他们在当时的环境下中通过尽力猜测和假定作出的他们认为的最佳方案选择。他们不像你现在这样能看到完全运行的系统。“前任效应”在短期内能够给那些带你进入组织的人很好的印象,但从长期来看,这会伤害所有人。我们都曾经当过那个离开后被无数问题所指责的开发者 - 如果你碰巧知道这些那感觉真是太糟糕了,己所不欲,勿施于人。做个有道德的人,即使这时前任的错,也不必陷害之,担负起你自己的责任。
请你从长远的角度出发做个英雄,成为一个可靠的团队成员,随时负责任的做出好决定。 不要做落井下石的一时英雄。也许你能够把这样的行为抛之脑后,但是我们(开发者社区)不会喜欢这样的你。不过话说回来,的确有一些情况下之前的开发者实在是相当的糟糕,这样的话,请你一次性的把情况告诉给所有相关的负责人,而不是反复用来当作你偷懒或无能的理由。