什麼才是程式設計師最有價值的技能?怎樣才能成為一名成功的開發者呢?我敢打賭,在你的職業生涯中你至少問過自己一次這樣的問題。你找到答案了嗎?你認為自己搞清楚了沒有?
許多年輕的程式設計師會告訴你,偉大的開發者最重要的技能是對自己所用語言的掌握。當然,你得對 C#、 F#、C++、Java、Ruby、Haskell 或什麼別的語言嫺熟於心。然而,語言本身並不能提供足夠的技能讓你完成桌面或 web app。
「那要不就是對平台的知識了,」你又問自己。也許甚至是整個平台體系,如果你仔細思考一下的話。比方說,這有可能意味著要知道 Windows API 或 iOS 開發的工具或資料庫。可是,你再想一下。如果趨勢變了的話又會怎樣?如果項目轉向另一個平台的話又會怎樣?如果你只具備前一個平台的知識的話,你還會是一名偉大的程式設計師嗎?我不這麼認為。
「對!我知道了。肯定是解決問題和分析性思維的能力」,你幾乎對著我吼起來了。事實上你是對的。沒有一個好的開發者是不具備分析性思維的。但是,問題解決仍然不是你應該具備的最重要技能。
「如果不是程式設計知識的話,那一定就是程式設計激情。你每天都得學點新東西。不能停止,你得熱愛它。」的確,你是對的,儘管這並非最重要的能力,但已經接近了。讓你從好的開發者變成偉大的開發者的,是程式設計的激情,尤其是學習的激情。
然而,還有一個技能更有價值,那就是溝通。
許多時候這一點被低估了,可如果不使用溝通技能的話你一天都過不了。而且,你要溝通的還不僅僅是客戶。還包括你的同事,分享你的想法,用不侮辱人的方式辯論,說服你的老闆應該採取你的方式。此外,還有還要彙報狀態更新,解釋發生的事情。你每天都要溝通,而且要溝通得當,如果你要成為偉大的開發者的話。
這就是我要發文章談演講這個似乎不相干話題的原因。我認為從中你可以學到很多東西,如果你對此感興趣的話你可以繼續學習 coursera 的課程。
如果你也同意溝通很重要,那麼你可以點擊以下的連結:
1.我的程式會動,可是我不知道為什麼。
2.我的程式不會動,可是我不知道為什麼。
<( ̄︶ ̄)>
在畢業前學會寫作。
在畢業前學會C。
在畢業前學會個體經濟學。
基本上本篇寫的都是「軟體開發」,
而「程式設計」很單純只是工程動作:
把規格要求的事項,用最少的成本開發出來。
一個軟體開發者最重要的事情就是溝通,
而一個程式設計師最重要的事情有三個:
第一紀律、第二紀律、第三還是紀律。
「紀律」就是自己對程式碼品質的要求。
你有沒有用相同的專案架構風格?
你有沒有用相同的變數、函式、型別命名風格?
你有沒有用相同的版本管控與發行風格?
你有沒有用相同的註解與文件風格?
寫程式最重要的不是會動,也不是跑得快,
而是程式碼要看得懂。
不只讓別人看得懂,還能讓一年以後的你自己看得懂。
不要以為這是一件簡單的事。
台灣軟體工程師很聰明,很優秀,頭腦絕對比外國人強。
但是拿到國際上和人家一比,就矮一大截。
原因只有一個:
台灣工程師擅長單打獨鬥,但是不能團隊合作。
可悲的是,在可見的未來裡,這個現象不會有任何改善。
因為台灣企業對於「技術人才」的輕視,
以及整個華人文化「學而優則仕」根深蒂固的落伍觀念。
一個成功的軟體團隊必定是由很多不同面相的人員組成。
年輕新血帶來新的工具、新的演算法、新的設計哲學。
經驗豐富的前輩主導專案的走向、設計統一的介面風格。
如此才能在既有的基礎上不斷進化。
反觀台灣,台灣企業要的不是人才,台灣企業要的只是人力。
程式設計員只不過是一個又一個還沒爆開的新鮮肝臟,
根本沒有人想過「資深高階技術領班」這種事情。
因此一代一代又一代,
年輕新血不斷走著前人的覆轍,犯相同的錯,
讓台灣整個未來的競爭力,全部葬送在無謂的浪費中。
電子資訊產業多位大老批評博士生賣雞排種種行徑,
我一直很想反問諸位業界大老:
請問貴單位真的是把博士生當人才用,還是當奴才用?