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