軟件開發就像炒股,關鍵看你怎么選股票!
英文原文:Is Software Development like a stock market? So, how to choose the stocks?
本文作者 Paulo Ortins 在這里分享了對于選擇哪種編程語言作為軟件開發工作的起點的話題,并闡述了自己的觀點。其實道理很簡單,不管你選擇了什么語言,不管你在這門語言上花了多少時間和精力,你對這門語言的掌握程度是最有說服力的。(以下為編譯內容)
有的人經常抱怨軟件開發行業的技術、概念、工具等更新換代的速度實在是太快了,用他們的話說就是:每周都有新的算法、新的框架、新的編程語言等之類的新東西問世,讓人有種應接不暇的感覺。而作為一名軟件開發者,我們所要做的就是從這些新的工具里面挑選出適合自己的。
但是,你覺得花時間去熟練掌握每一款新的技術值得嗎?或許也未必。即使我們做出了選擇,花時間和精力去學習使用新的東西,可是到了第二年的時候 又得面臨同樣的狀況——說不定又有一款新技術正在變得很熱門,很有潛力。所以,我們不得不在市場上充斥著各種各樣的新事物的環境下,靜下心來熟練掌握一門 技術。
軟件開發行業就像是一個股票市場,關鍵看你怎么選擇股票。以下通過一些分析數據來證明這一觀點。
軟件開發領域就像一個巨大的股票市場
對于我來說,軟件開發這一行業的特點和股票市場有點像,每天都會有很多以軟件開發為主的科技公司誕生,這就相當于可投資的公司數量在不斷地增 長;投資者需要考慮的問題就是該把錢投資在哪家公司?開發者需要考慮的問題就是該把時間花在哪些項目上?!而這兩者之間最大的區別在于:投資者可以把錢投 資在許多家公司,而開發者,很難在同一時間學習超過2-3 個新的東西。這就給開發者帶來了很大的壓力,一旦在決策上連續出現2-3 個問題的話,那就會讓整個團隊處于不利境地。
以下根據對股票行業的數據分析,來探討一下一位年輕的投資者在軟件開發行業里應該怎樣選擇合適的股票?
選股票,大學問
股票市場里有三種賺錢的方法,第一種就是 Fundamental Analysis(基本面分析,以判斷金融市場未來走勢為目標),投資一個真正有價值的公司,這在現實中已經得到了充分的證實,例如股神巴菲特就是很好的 例子。第二種方法就是推測股票價值,以低買高賣的方式掙錢。第三種方式就是 small caps(小型股),這樣的公司市值較低,正因為如此才導致這樣的投資風險更高。可是在軟件市場我們不能像推測股票價格一樣推測技術的價格,一旦選擇了某 項開發工具,就必須掌握那項技術,用最短的時間發揮它最大的效用。所以,年輕開發者投資自己的時間且獲得高效回報的方法就是——Fundamental Analysis 和 small caps。
作為一個年輕的軟件開發者,哪一種方法最好呢?是將時間花在一個新技術上還是選擇一個已經很成熟的技術上呢?
時間是證明一切的最好方法
(下面所說的開發語言只是為了舉例而舉例,并不是希望引起爭執。)
回顧 2005 的時候,Rails 剛剛興起,而 Ruby 已經存在很長時間了,但是使用 Ruby 的開發者并不是特別的多,Java 和 .NET 的地位也很穩固。如果那個時候的年輕開發者選擇了 Ruby 來開始他們的職業生涯的話,不知道會出現什么樣的結局?如果選了 Java 或 .NET 的話,結果也很難預測。
假設一個開發者選擇了 Ruby 作為自己的開發語言,并且具有 8 年的開發經驗,基本上可以說他是這個行業里最有經驗的 Ruby 開發者了,作 Ruby 之類的經驗分享演講、發表 Ruby 論文應該都是很有分量的。想要招聘他的公司應該也是一大把的,畢竟這樣的開發者是很罕見的。
作為一個擁有 8 年經驗的 .Net 開發者或 Java 開發者的話,有一份舒適的工作應該不成問題,但他不可能成為這個行業里經驗最豐富的 .Net 開發者或 Java 開發者,畢竟,行業里還是不缺乏擁有 15 年開發經驗的 Java 開發者的,如果一個公司需要一個真正的專家的話,那么擁有 15 年開發的經驗是最好不過的了。
當然,這樣的例子可以用在其它時期的案例上,例如:iOS 和 Android 現在正炒的火熱、Big Data 和 Machine Learning 也被捧得很高、Cloud Computing、Node、Clojure、Scala 也不乏人氣等等。只不過要是將所有的精力都押注在以上所說的這些新事物上的話,估計是一個很不明智的選擇。
個人觀點
對于給年輕開發者的建議,最好是選擇將更多的時間用在新技術/算法上,這也是一個很好的機會——在這項技術取得很好的市場份額之前熟練掌握它。 也就是說,通過這么長時間的鉆研,你成為世界級專家的可能性就會加大。以這種方式追趕其他方面的開發者,甚至會比他們更有經驗。
<span id="shareA4" class="fl"> </span>