百度在職 iOS 架構師的成長筆記,送給還在迷茫的你!
前言
我們經常在網上會看到這樣的文章,你的同齡人正在如何如何......。這是典型的販賣焦慮的文章。的確,現階段,剛畢業幾年的年輕人,面臨車,房子等,有時候壓力挺大的。
但你過度焦慮的話,每天生活在恐慌當中,你會發現你生活過得一團糟。對比一下,很多國家的底層平民,典型如印度,一點不焦慮,樂天知命,反正永遠上升不了,得過且過。所以,適度的焦慮也許是成長的代價,我們要把握好一個度。
有時候,我也經常在想,到了30 多歲,我自己會是怎樣的?是繼續奮鬥在一線寫代碼,還是做技術架構,或者轉行,創業等等。說句實話,我現在也是一臉懵逼,未來是怎樣的,我也不確定。但有一點可以確定的,我一直在追求更完美的自己,提高自己的核心競爭力。
作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:638302184,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿裏面試題、面試經驗,討論技術, 大家一起交流學習成長!希望幫助開發者少走彎路。
今天,站在我的角度,一起來聊聊職場技術人的成長歷程。在我看來,以下幾個方面尤為重要。
自學能力
復盤總結能力
技術素養
自學能力
剛開始實習的時候,以為工作了,技術就可以突飛猛進,因為想著有人帶了。等到工作了,才發現還是 too young,too simple。
在工作中,遇到不懂得,90% 的問題需要你自己解決的。相信工作中的人都深有體會,第一:同事也有自己的任務需要完成,不可能你一碰到問題,就想著會有人幫你解決。第二:工作中,每個人都會有自己的分工,有時候遇到的問題,往往是特定場景的問題,如果之前沒有遇到過,一時之間也很難幫你解決。頂多提供一種思路。
因此,自學能力真的很重要。具體來說,表現在以下幾點。
第一:善用搜索引擎
說句實話,技術遇到的問題,只要不是最新的,80% 的問題都可以通過搜索引擎找到相應的解決方案。記得,我剛入職場的時候,有一段時間,遇到問題的時候,第一時間總會問身邊的同事有沒有遇到這樣的問題。等他們比較空閑的時候,一般會跟你講解,忙的時候,也是叫你去百度或者 google 搜一下。
當然,搜索的話也有一些技巧。這裏就不展開說了,建議大家多用 Google,Github,StackFlow。
第二:學會舉一反三
平時工作中遇到的難題,不要僅僅停留在表面,要通過現象去分析背後的原因。比如說,開發的時候遇到滑動沖突,通過搜索引擎在網上找到相應的解決方案了。這是第一步,但還不夠,我們不僅要知道解決方案,更重要的是要了解為什麽要這樣解決?有沒有更好的解決方案。
如果我們僅僅停留在抄的層面上,bug 稍微變化一下,下次你還是解決不了。因為工作中遇到的 bug 總是千奇百怪的,但十之八九,掌握了原理,解決思路都是差不多的。
第三: 形成自己一套解決問題的思路
解決問題的思路,這個跟工作經驗有一定的關聯。資深的工程師,遇到問題的時候,對比普通的工程師,往往能較快定位到問題根源。這跟個人的積累和經驗有空,一時之間很難找到適當的例子說明。也許這就是只可意會,不可言傳吧。
那我們平時開發中遇到的 bug,你的解決思路一般是怎樣的?
這種一般分幾種類型的 bug。第一: crash 的話一般比較容易解決,一般從堆棧可以看出信息,再結合代碼或者搜索引擎可以定位到問題。
第二種:邏輯錯誤的 bug。這種類型的 bug,我們要先定位到大概的代碼,再結合 log,看是哪裏出錯了。但有時候,用戶反饋回來的 bug,往往不是不是必現的,是偶現的。這時候,就需要一步步分析了。
復盤總結能力
總結對於每一個人來說都非常重要,這點是毋庸置疑的。
相信大家也經常遇到這樣的場景。
這種類型的 bug 我以前遇到過,但一時半會不知道怎麽解決了。
我以前明明是這樣寫的,沒問題啊。
這種功能我以前做過,找了半天,找不到以前的代碼了。
剛開始實習的時候,這種情況我經常發生。仔細想來,一般有以下原因。
第一:人的記憶性是有限的,不可能記住所有的東西
第二:沒有及時總結
還記得這句俗話嗎?好記性不如爛筆頭。平時我們看文章,或者跟別人探討,覺得某些觀點挺正確的。但事後就是想不起來,這是為什麽呢?這是因為我們只停留在表層,沒有真正轉化為自己內在的東西。你記性好,當時記住了。但你能保證十天,一個月,一年之後,你還記得住嗎?
做筆記的難得之處,是你的思考過程。當你著手記筆記的時候,你的大腦在思考,我要怎樣用簡短通俗的語言記錄下來。這在無形之中加深了你的印象。一段時間後,即使你忘記了,但當你回看以前的筆記的時候,我們往往會吸收地很快。
當然,我也不贊同一味地死記硬背。生活中的瑣事那麽多,不可能事事都記錄下來。挑選那些你覺得重要的,有感觸的即可。
那可能有部分問就會問了,什麽是重要的?這裏我發表以下我的看法。
開發中需要經常用到的。這些你肯定需要記住,不可能說每一次你需要用到,再去搜索,這樣效率多低。
第二,一些疑難雜癥。針對某些特定場景的 bug 或者需要註意的。
人的一生也是一樣,是一連串的故事組成的。我們的一生,究其到底,不過是所有經歷事情的總和。我們的昨天和今天,決定了我們的明天。就像種瓜得瓜種豆得豆一樣。
我們有時候就是有這樣的一種錯誤,覺得今的事情不用總結,以後需要用到的時候,以前所有的認知會自然而然得回來。這是,這只是我們找的一個借口,為自己的懶惰的一個借口。其實我們心裏明白,今天的總結會對明天有著莫大的幫助,但是懶惰總能戰勝我們的理性。
技術素養
前面這兩步做好了,在所在的技術領域專心工作幾年,不敢說你成為一名技術大神,但至少成為一名高級,資深工程師。
什麽是技術素養呢?
在我看來,包括以下幾個方面。
第一方面:技術深度和技術廣度。
作為一名技術人,技術還是最重要的。它是我們的專業技能,也是我們謀生的重要技術。
技術深度,簡單來說就是你在技術領域的鉆研程度。假設有 A,B,C,D 四個領域,我們在 A 領域有很深的鉆研和造詣,碰到 A 領域的疑難雜癥,我們基本能很快地解決,這就是技術深度。而你如果 A,B,C,D 四個領域都有一定的了解,這就是技術廣度。
那怎樣平衡好這兩者之間的關系呢?
個人的看法是如果你想往技術發展,先鉆研某個領域,爭取有較高的造詣,之後再橫向發展,了解其他的領域,做到有一技之長,這將形成你獨特的優勢。
因為你在 A 領域有較深的造詣之後,你將有一定的不可代替性,這就是價值。而且,現在大公司分工明確,很多時候需要的是專才,而不是什麽方面都懂一點的人。當然,我不是不建議大家全面發展,只是說,先鉆研某個領域,再想其他領域拓展。
第二方面:大局觀
大局觀,簡單來說,就是看待事物的視野和角度。具體到技術人來說,主要是技術棧,技術方向的選擇,以及業務方向的洞察。
一個技術團隊的領導,往往需要有較好的大局觀。
主要表現對於各技術棧的選擇和比較、架構設計模式的考慮、設計策略等。一個良好的架構,往往能夠以最小的代價應對變化無窮的需求。同時,註意:架構的選擇,需要結合業務場景,脫離業務場景來談架構都是耍流氓。
業務能力的洞察,主要是指結合業務和技術,能夠做出合適的判斷,要清楚當下那些任務優先級別比較高,做什麽事情收益最高。技術與業務是分不開的,在很多情況下,技術是服務於產品的。任憑你技術做牛,效果做得再酷炫,性能做得再好,產品沒人用,那就沒什麽卵用。因為在這裏,你的技術產生不了任何價值,而公司說到底,就是一個盈利機構,你覺得可能一直燒錢下去嗎?
當然,對於產品天馬行空,異想天開的想法,我們也要懂得合理拒絕,不能由產品牽著鼻子走。
舉一個例子,去年 去年“網傳中國平安產品經理與開發因「根據手機殼顏色改變app主題」需求打架一事”,這反映了一個公認的事實,程序員或多或少與產品經理存在著某些矛盾。最好的解決方案是,技術人懂點產品思維,產品懂點技術,考慮問題多從對方的角度出發。
總結
說到底,就是要培養自己的核心競爭力,形成自己獨特的優勢。而如何確立自己的競爭力,就需要我們逐步培養,技術深度,技術廣度,業務洞察能力等。做好每一項,都不是一件 easy 的事情。尤其是技術深度,業務洞察能力。後面有時間,再單獨寫文章與大家探討技術深度的問題,因為我現在也不是有特別深的理解,哈哈。
記住,職場中,做好自己本職工作的同時,請記住要培養自己的核心競爭力。公司只是你工作的一個平臺,不是你的全部。你離開了這家公司,你還能瀟灑地生活嗎?
以上僅屬個人意見,某些地方有些紙上談兵,不喜輕噴。
作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:638302184,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿裏面試題、面試經驗,討論技術, 大家一起交流學習成長!希望幫助開發者少走彎路。
---------------------
作者:gdutxiaoxu
來源:CSDN
文章來源於網絡,如有侵權,請聯系小編刪除。
百度在職 iOS 架構師的成長筆記,送給還在迷茫的你!