如果單從興趣來看,其實我對Linux內核,Android中間件的興趣要高於WEB,何況還有這么多年的經驗積累,何必從頭探索一個新的技術方向呢?
這里面原因是很多的,最核心的大概是以下4個點:
1、當我看到Linux引入DTS解決板級配置硬編碼,看到Android的Makefile寫得如此靈活,看到git在管理大型工程上的優勢 ,看到Linux的音頻驅動框架寫得如此優雅,看到Cortex創新性的硬件架構,甚至於看到我自己花了幾個月在音頻通訊算法取得一點小成就,都會醉心不已。我總是羡慕那些引入良好設計的天才們,衷心希望能一天天向他們靠近。
可是事與願違,雖然我越來越熟悉如何做出符合公司要求的產品,對於產品的理解也越來越好,但是技術上非但沒有進步,反而一直在退步。大量的維護工作和重復開發耗盡了我幾乎全部精力,如果你在這個行業,那么應該更能體會到,操作系統這一層及以下的工作,由於會導致性能問題沒法像應用層那樣直觀地引用比較先進的軟件設計模式,代碼沒寫好更容易導致重復開發和后期的大量維護。
實際上我認為我們的軟件開發模式仍然處在遠古時代(難以想像我在5年前已經開始用git管理我的所有代碼,而直到離職時卻還需要在工作中用vss配合別人工作),有一天我想通了這個問題:這其實是由公司的業務決定的,盡管是IT公司,但是由於產品技術復雜度太低,解決這些業務問題對能力要求實在太低,以致於對技術提升並沒有多少幫助,也很難產生良好的技術氛圍。
在我畢業的時候,我希望可以靠興趣工作順便賺錢,實際上我也這么做了,而在這兩年我卻越來越焦慮,我發現自己正一步步變成為了賺錢而工作。那么換一家公司吧?找一家讓我可以安心研究內核和拿高薪的技術型公司,在福州這地方其概率並不比當一個自由職業者高多少,可控性更低,於是就先盡量做自由職業者了;
2、當一個自由職業者,就需要能夠獨立提供完整的服務,如果其他人不配合或配合不給力我就干不成事那我當不成自由職業者,只有做應用是最滿足這個條件的。
與之相比,嵌入式開發的要害恰恰在於離市場太遠,就算有技術,沒有產線、硬件、結構、應用的一系列配合,很難做成一件事,我唯一想到能獨立完成的就是找一家培訓機構,是把自己的嵌入式開發技術教給別人作為起點,而正如上篇所提到的,正好有WEB項目進來,就走上了WEB路線。
3、而選擇WEB應用而不是手機應用,是我對WEB開發本來就有興趣,用它做過幾個小網站;第二方面我十分厭倦不同平台要用不同的語言不同的開發包的模式,重復學習成本太高。PC跨平台要Qt,Gtk,而Android要Java,而iOS要ObjectC,時間一定會被語言、庫、框架的熟悉給耗盡;第三方面是這幾年WEB開發,特別是WEB前端的發展一年比一年猛,這主要得益於移動互聯網的迅猛發展(2016年github stars數最多項目幾乎清一色是WEB相關)。感興趣的東西正在風口上,此時不進,更待何時?
4、我認為嵌入式開發在HARD模式,而WEB開發則在Easy模式,至多Medium模式,從難到易,為什么不嘗試下呢?
於是,在后面幾個月里,我走上了一條全新的技術路線——成了WEB開發的全棧工程師。