菜鳥向左,老鳥向右 軟件開發中的技術代溝
原創【51CTO.com 5月19日外電頭條】同一個軟件開發團隊的成員之間可能存在非常大的年齡差異,既可能有初出茅廬的新手,也可能有閱歷豐富的老手。在意見相左時,后者往往具有較大發言權,認為自己走過的橋比后者走過的路還長。但軟件公司XTS的CEO兼創始人埃里克•斯皮格爾(Eric Spiegel)認為,軟件開發不僅僅是老資格開發者的游戲,年輕人也同樣非常重要。
斯皮格爾通過自身經歷來展現了現實世界開發團隊中存在的這個問題。當他還是一個新手時,其開發團隊使用COBOL語言開發了一個庫存管理應用程序,在需要提高該應用的性能時,團隊中的兩個陣營之間發生了爭論。
斯皮格爾提出了他在之前一個項目中學到的一些性能優化技巧,并堅稱團隊應該回過頭去修改數據庫的所有字段,以提高應用程序的性能。
但是團隊中資深開發者的話讓斯皮格爾當場面紅耳赤,“你不知道自己在說什么!你想為了減少CPU幾毫秒的時間而浪費所有人的時間?你歇歇吧!”
這句話讓斯皮格爾很受傷,至今還記憶猶新。他堅信這種修改是值得的,他的建議已經在上一個項目中得以證明,每節省1毫秒時間都有助于確保批量作業的按時完成,確保貨物能夠準時發出。
當時的斯皮格爾無法理解,同一種編程技術在一個環境中很容易被接受,而且效果不錯,為什么換了一個環境就得到不相同的結果,絲毫沒有被接受的希望。
答案是課本上學到的東西和有限的真實經歷不能解答一切。當然,這主要因為問題的答案隨著所處環境不同而不同。在一個理想的世界中,所有代碼都將被***編寫,具有優異性能。它能在不超出預算、不超出工期的情況下滿足所有需求。然而這個世界并不***。
在現實世界中,所有“年長”開發者閱歷豐富,問題的答案并不總是非此即彼。由于人員、預算和設備等資源的限制,你不得不作出艱難選擇。因此你不得不學會折中之道。
這讓大多數新開發者感到發瘋,他們會說“不公平!我拒絕走近路來編寫低質量代碼!”而經驗豐富的開發者則會說,“這種情況我們已經經歷過一次。解決此問題沒有創新的方法。”就算這樣系統會更慢一些。但是只要客戶能夠接受,這算不了什么。
這并不意味著你犧牲全體人員的編碼標準。許多年長開發者的代碼就像意大利面條般難解,他們明白軟件文檔的清晰對維護的重要性。
編寫符合標準的代碼往往只需要花幾分鐘時間,但找出達到***性能的合理方式卻往往需要花數小時來試驗。你不一定總是有這個時間。
這是否意味著團隊經理應該采納年長、經驗更豐富開發者的觀點,而無視年輕開發者的意見?當然不是!年輕開發者同樣為開發團隊帶來很多有利的東西。
許多年輕人因為癡迷于技術,從十幾歲就開始寫程序。當他們從計算機科學專業畢業時,已經有許多年開發經驗,在把握***技術趨勢方面也有一定相關經驗。
他們更容易接受新觀點,不會被束縛于一個特定的設計或編程方式。年輕常常意味著靈活。
培訓一個新手通常要比培訓一個老手容易的多。假如你的團隊新招入了一名年輕開發者,對其培訓團隊規范和流程時,不會遇到太大的習慣性阻力。
年輕開發者更勇于冒險,這對于發現能夠影響格局的新概念來說非常重要。
相對來說,年長開發者一旦長時間使用一個技術,很容易形成思維定勢,碰到每一種問題時都使用這種技術。
當然,許多年長開發者也在跟蹤和學習***技術趨勢,在51CTO.com之前的一篇報道《阻礙程序員成長的五大原因》中,不注意知識更新是阻礙成長的重要原因之一。另外,理解技術在業務上的應用需要一定時間。這是資深開發者的真正出眾之處,尤其是對那些長時間從業于某個行業的開發者來說。
他們已經變成金融業和制造業等領域的專家,因此更容易憑借實際經驗幫助用戶制定一個可行的解決方案。
對于團隊經理來說關鍵的是,需要單獨評估每一個人的情況,不能簡單根據年齡來劃分他們。對新開發者和老開發者所固有的特性保持清醒的頭腦。
你的工作就是引導這兩部分人,幫助他們認識到自身缺點和對方優點,幫助他們進行自我完善。一個新老搭配的開發團隊一般是***組合,不同年代的開發者可以相互取長補短。
如果你是一個擁有好主意的新開發者,要大膽分享自己的觀點。但對于那些你未曾經歷過的事情,一定要善于聽取過來人的經驗之談。
對于擁有豐富經驗的年長開發者來說,當你的年輕同事提出一些新想法時,不要立即嘲笑或威脅他們。他們可能會拓展你的視野。而且你可能實際會發現,這些新手也并非一無所知。
作者:Eric Spiegel
原文:Is Software Development a Young Person's Game?
【編輯推薦】
【51CTO.com獨家譯稿,非經授權謝絕轉載,合作媒體轉載請注明作者與出處】