除多年程式設計經驗之外,還有什麼能區分一個程式設計師是“老手”還是“新手”?程式設計技巧當然是一部分,但它絕非是全部。
聰明的程式設計師可能比他們的同行擁有更出眾的程式設計技巧,但那不足以說明他們就是“老手”。同樣,僅僅因為擁有10年程式設計經驗也並不意味著他們就是高手。在工作崗位上,擁有多年程式設計經驗也不能說明問題。即便沒被炒魷魚,那也不能提升你的價值。
下面列舉的事情是大多數高階程式設計師都會做的。
1.不止掌握一門程式語言
我相信有些優秀的程式設計師只懂(並精通)一門程式語言,但在某種程度上而言,這其實會限制一個人的思維。就像當你手拿一把錘子時,任何東西看起來都像釘子。我認為,知道併成功使用至少一門程式語言,這是程式設計師從新手走向老手的重要一步。我要說的是,像JavaScript和SQL這樣的輔助程式語言,只有當你確實已經開發了完整的應用程式,並在其中使用這些程式語言時,它們才有價值。
2.工作之餘也經常程式設計
我抱怨過把開源作為招賢的一項要求,但那僅僅因為許多充滿激情的程式設計師把時間花在別的地方。除了對開源有所貢獻,你還可以做兼職顧問,兼職創業,開發自己的產品或者創辦自己的微型軟體公司。當然,你也可以嘗試從外部接些兼職專案,可參考伯樂線上的這篇《成功接專案需要注意的幾個要點》。
注:mISV即MicroISV,是一個只有一名員工組成的軟體公司,是一種微型公司。
3.經歷完整的軟體開發過程,從概念設計到產品實現,再到產品維護
有的程式設計師希望不用自己動手就可以得到詳細的設計說明,然後把缺陷程式碼交給測試/維護小組,這是平庸程式設計師的一個縮影。任何稱職的程式設計師都會跟客戶密切合作,去制定需求分析,然後編碼實現,當然也要維護。如果你在編碼實現階段偷懶了,那你在維護階段不得不付出代價。
4.不斷創新
創新就是做一些你身邊的人沒有做過的事情,用來改善你的過程或產品。你不一定非得是世界上第一個做這件事的人,只要發現一個問題,找到解決方法然後實現它就行。
5.編寫的軟體能解決實際問題
有一副虛構的場景:一名黑客,僅僅是出於對技術以及自己所做事情的愛,一天到晚都在編寫程式碼。但這幾乎無助於成就一名優秀的開發者。事實上,我曾見過有些開發人員和客戶爭論,來採用更好但不太有助客戶的技術。這會適得其反。你可以利用自己的時間來完善。但涉及工作時,你最好還是編寫能實際改進並解決問題的程式碼,而不是使用那些不同尋常的演算法或介面。
編者後話
這些問題對於任何想成為高階開發人員的朋友來說,都合情合理。因為這些問題和擁有多少年程式設計經驗並沒有關聯。如果你能做到上面4-5條,那你就是高階程式設計師。如果只有1-2條,那你還需要加油努力。
當然,在面試中,設定一個簡單的“是或不是”問題,通常是一個衡量自己的小練習。更重要的問題會是“你能給我們舉例介紹一下嗎?”
你的高階程式設計師測試得分是多少?你怎麼看待這些問題呢?對高階程式設計師來說,其中是否多餘的嗎?或者你認為還有其他條件可以判斷他人為高階程式設計師? 歡迎在評論或微博中分享你的觀點。
Via:Code Anthem 編譯:伯樂線上/朱勇