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