一個程式設計師的成長之路,會經歷多個階段,從初級工程師、中級工程師到高階工程師再到這個領域的專家,但是能成為技術專家的終歸是少數,因此我們通常給自己規劃的是前幾個階段。剛畢業的時候就在想,如何能成為高階工程師?高階工程師到底是什麼樣子的?有的人會說,工作3-5年後,自然就成為了高階工程師,這種以工作年限來定義的並不準確,有的人或許工作好幾年卻在原地踏步,還停留在初、中級別,有的可能工作2-3年就成為了獨擋一面,攻堅克難的高階工程師。那麼,同樣是3、5年,為什麼差距能這麼大呢?利用週末時間說說自己的看法(反正週末寫技術文你們也不看。。。)
思考方式(分析問題)
我記得在我畢業後的第一家公司的時候,在開發中遇到了一個問題,我就跑去問老大,然後老大給我說:如果這個問題給你來解決,你會怎麼做?當時一臉懵逼?心裡是這樣的
不給答案就算了,反而給他問住了,老大問你你得回答啊,於是就分析了一下,說出了自己的想法,老大說:這不是知道嗎?還跑來問我幹嘛。從那以後,我都不敢輕易去問了,遇到問題了自己先分析,然後尋找解決方法,有的時候就算實在解決不了,也要先整理一下思路然後再去問。
為什麼講這個故事呢?因為很多同學都是這樣,在技術群裡經常有些同學會問一些沒有營養的問題,可能他們自己都還沒思考或者實踐過,就把問題仍出來,等待答案。在發現問題的時候就為自己設定了門檻,覺得自己解決不了,想找人幫忙解決。久而久之就形成了習慣,才會發現自己沒有獨立分析解決問題的能力,遇到難題就扔給別人,工作了多久都是原地踏步,技術沒有長進,這非常不利於我們的職業發展。
我們與高階工程師的差距可能就在我們的思維方式,分析問題的能力。遇到問題時,先想想自己的解決方案,然後再問別人,這樣才會有比較,發現自己的不足,從而提升自己。
工具方法 (解決問題)
經常有同學私信問我問題,有的問題我也碰到過或者沒用到過,就會跟他們說,google 一下呢,或者我google 一下,搜到一些相關文章、部落格,把連結發給他,然後過了一會兒,收到他的資訊說解決問題了。謝謝大佬(其實我不是大佬。。。只是用工具找到了問題的答案和方法)
高階工程師可能也不是面面俱到,不是所有的問題都會解決,可能很多問題都沒碰到過,或者沒有用到相關的技術,但是,遇到問題,知道該怎麼去找解決方案。作為一個程式設計師,遇到問題我們要懂得利用已有的工具方法去解決問題,那麼有哪些好的工具呢?
-
Google : 遇到問題的第一時間想到的就是Google一下,萬事問google,國內訪問不是很通暢,這個時候就需要自備梯子了,作為開發者,我們隨時都會用到Google,基本上大多數的問題都能夠解決。
-
StackOverFlow: StackOverFlow 也是我們程式設計師的寶地,上面有許多優質的問題和答案,如果通過Google 沒有找到解決辦法,那麼不妨去StackOverFlow 搜一搜,或許也有別人遇到相同的問題並且已經有了結局方案。
-
Github: Github 上有很多優秀的開源專案,各種框架、炫酷的UI、類庫等等,多在上面看一看、逛一逛,或許下一次你就是用上別人的開源,當然如果你有好的方案,也不吝開源出來,幫助其他人少走彎路。
除了上面這幾個知名平臺,國內的像知乎、CSDN 、掘金 也都不錯,有很多技術部落格和文章,不過水平參差不齊,自己過濾掉糟粕就好。
我們和高階工程師的差距可能就在我們對於工具的運用和解決問題的能力,遇到問題學會運用已有工具去尋找解決方案。工欲善其事,必先利其器,有什麼槍打什麼鳥。除了上面說的這一些,我們平時開發也需多積累一些工具,提升開發效率。
知識延伸 (總結)
實現一個需求可能有多種方案,每一種方案可能都有利有弊,在開發趕需求階段,我們可能不會考慮哪種方案最好,或許根本就沒有考慮有幾種方案,只要實現了需求就行,管他效率還是封裝解耦呢。但是隨著需求的增加,專案的專案變大,原來的方案可能就滿足不了了,這個時候,我們就需要為以前的方案還債了。花費更多的時間和精力。
高階工程師會考慮得更加全面,不止於眼前,考慮效能和可擴充套件性,這樣才能應對將來不變的需求和更高的效能要求。會進行技術預研和考量,選擇合適的方案。善於總結和分享。自己進步的同時也幫助他人進步。
結尾
通過以上幾點淺談了一下和高階工程師的差距,其中養成獨立分析問題的能力尤為重要,其實不止程式設計師,其他行業同樣重要,當和領導和團隊一起討論方案之前,自己先分析問題,整理可行方案和疑惑難點等,開會的時候,領導也會對你另眼先看。
最後附2篇關於Android工程師進階的文章:
更多Android乾貨文章,關注公眾號 【Android技術雜貨鋪】