原文連接 - 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看在眼裏,喜在心中。
到此爲止
我認爲批評前任開發者/團隊是一個錯誤的行爲。你應該尊重他們在當時的環境下中經過盡力猜想和假定做出的他們認爲的最佳方案選擇。他們不像你如今這樣能看到徹底運行的系統。「前任效應」在短時間內可以給那些帶你進入組織的人很好的印象,但從長期來看,這會傷害全部人。咱們都曾經當過那個離開後被無數問題所指責的開發者 - 若是你碰巧知道這些那感受真是太糟糕了,己所不欲,勿施於人。作個有道德的人,即便這時前任的錯,也沒必要陷害之,擔負起你本身的責任。
請你從長遠的角度出發作個英雄,成爲一個可靠的團隊成員,隨時負責任的作出好決定。 不要作乘人之危的一時英雄。也許你可以把這樣的行爲拋之腦後,可是咱們(開發者社區)不會喜歡這樣的你。不過話說回來,的確有一些狀況下以前的開發者實在是至關的糟糕,這樣的話,請你一次性的把狀況告訴給全部相關的負責人,而不是反覆用來看成你偷懶或無能的理由。