IT職場人生系列之十五:語言與技術II
本文是IT職場人生系列的第十五篇
本篇延續了技術與語言I的內容(之十二),蒐集了之後大家的一些評論和我的反饋,整理在這裡。
“新人學老技術有風險”的實質
其實不是說老技術沒有學習的價值了,而是指新人依託老技術存活,風險很大。
我自己曾經是一個C++高手,心裡很清楚如果自己親自”無私地“帶領一個徒弟,要讓他學到我的水平,沒有5年做不到;而如果一個人要自學超過我,那可能是10年的事情了(本人程式設計10年,當年也跟了個師傅才有今天);何況這5年和10年裡邊,我也在成長,所以幾乎是一個無望的競爭。尤其是如果業務市場萎縮,一般水平的人退出,而只剩下高手的老技術。
這種競爭的殘酷性,不是來自於技術新舊,也不是來自於人的差異,而是來自於起跑線的不同
這是為什麼我建議新人儘量學習新技術的原因,畢竟起跑線是公平的。
不想放棄老技術,怎麼辦?
1. 若從事老技術(比如嵌入式,很多都是老技術)
若想獲得突破,就應該另闢蹊徑。
典型的,在技術中多融入應用的概念,也就是換應用領域,換使用者體驗。
比如360防毒軟體,其所用語言、業務領域,都與以往防毒軟體沒有本質區別,但是其突破在於更人性化,更易用,更明白使用者要什麼。因此360在衡量人員的技術水平的時候,就不會單獨看技術本身,從而給有想法的新人留下了空間。
在嵌入式、移動互聯裡邊也肯定存在同樣的事情。
第二種則是引入新思想。
我們曾經有一次是軟體伺服器後臺用C++,機頂盒則是使用C(相對較老)。後來機頂盒裡邊總是有問題,就讓做後臺C++的幫助看一下。
結果發現C由於不是面向物件的,裡邊有很多設計不合理的地方。幫忙的人就利用面向物件的思想,把整個結構重新整理了一下,立刻就乾淨多了。因此如果你到了一個C環境,就可以嘗試學習一下比C更新一點的C++,來超過一直在用C的老手們。
這個在下面還有一種相反情況的介紹。
2. 若從事新技術,應該順便學習老技術
老技術既然能存在這麼久,自然有其道理。若從事新技術,應該多去學習老技術之神。
比如C#是一種很靈活的語言,其特點在於可以讓很多不太會程式設計序的人拿起控制元件就能使用,但缺點也就出來了:這些控制元件多數MVC不分離,極難重構,用一次造一次,靈活度有限。
所以像我們這些從C++轉來的程式設計師,就會毫不猶豫地選擇MVC架構,除了SQL用LINQ取巧之外,其他地方都用“相對笨拙”的方法實現。但是結果卻是:一旦實現,就很容易維護、重構、改造,可保未來5年即使業務千變萬化,架構依然穩定。
曾經有一篇文章說MVC把Asp.net變複雜了,本來高中畢業生就能做的工作,弄成要有很深厚的根底才能做的工作了。不過對於老手而言,這種深技術思維反而更好,就不會因為轉行到新的技術上,而與新手競爭;反而是利用更困難但更有效的架構能力,獲取新的起跑線優勢,拉開距離。
更多本系列文章:
點選下載免費的敏捷開發教材:《火星人敏捷開發手冊》