程序猿職業發展之路


引言: 之前這個文章發佈在瞭我的頭條號"程序加油站"上的文章,這裡也同步發佈在這裡,希望對大傢有所裨益,有所思考,善莫大焉。


這幾日有同事與我聊起瞭未來職業規劃之路,對於未來的發展略感迷茫,未來不知方向如何,這裡就把這篇文字來簡述一下個人的若幹理解,以資有所幫助。 在這裡我把程序員或者軟件工程師的職業生涯按照年限分為以下若幹個階段:



  • 1~3年


    這個階段是起步階段,離開學校,從0開始,一切包括技術技能和職場經驗都需要從新學習;這個時候非常重要的是挑選一個好的mentor或者老板,他或者是你的團隊領導,亦可是比你資格老經驗豐富的老程序員;他所帶給你的東西將深深影響你之後的發展之路和技術習慣。所以一定要慎重挑選團隊,尤其是帶你的那個mentor。


    這個階段主要潛心熟悉業務,掌握技術,將工作中用到的技術點學好用好,做到用過的技術都是熟悉的;如果能夠做到知其然還要知其所以然,將是一個非常大的加分項。


    如果你足夠幸運的話,或許正好碰到一個項目啟動,從零參加一個項目,參與到其中的主要的技術決策點、技術討論、團隊的協作開放模式、溝通方式、架構設計等,都對你未來的發展裨益甚大。這個機會或許有,但是能從中收獲多少,因人而異。


    此時的角色為新手,初級程序員。


  • 3~5年

    這個階段,基礎的技術素質已經具備,具有若幹或者不多的項目經驗,曾經有一個或者幾個公司團隊的工作經歷,此時將面臨提升的問題,如何提升自己,將所用到的技術能夠深入的理解相對於理解技術的使用,變得更為重要;知其然還要知其所以然。


    在團隊中處於幹活的主力,此時需要註意學習好的工作習慣、溝通方式;在團隊技術討論或者大的技術決策中,除瞭瞭解到其中的技術討論結果之外,還需要認真思考為什麼選擇這個技術方案,而非另外一個技術方案,其中的利弊會是什麼樣子,做出的技術決策最終驅動力來自哪裡;對於其中不明白的地方,可以和其中的當事人多討論,可以極大提升自己對於技術的理解和判斷能力。


    另外一個重要的學習點是理解項目或者團隊的運作方式和工作方式,不同的公司以及團隊的風格各異,且與其中的靈魂人物或者負責人息息相關。因為身處其中,故可以近距離觀察團隊的工作方式,分析其中存在的問題,幫助自己理解項目、團隊、協作以及如何解決其中的問題方式。這一點非常重要,團隊中的善於學習者將從此被打上團隊的烙印,如果是好的做事風格將裨益良多,反之則會走諸多的彎路。


    在這個結束之後,已經建立起瞭紮實的技術功底和良好的技術分析能力,對於團隊化的開放方式具有自己的理解和判斷能力。角色為中級程序員。


  • 5~10年

    在這個階段,如果所處的團隊無法提供新的提升以及上升空間,一般可以考慮選擇新的機會。這個階段是程序員的黃金階段,已經具備瞭獨當一面的能力,可以實現從想法到落地的整個過程,角色為高級程序員。


    在項目中承擔主力實施者,可以具備挑選技術方案和評估技術架構的能力;關註的問題將從之前的實現功能轉化為挑選一種最優的技術方案來實現,考慮方案的技術特性以及系統中的諸多限制因素,綜合考慮,選定最優的方案;可擴展性、可維護性、團隊的駕馭能力、時間周期、性能要求、變更頻次等等都將成為影響技術方案選擇的因素;某種意義上來講,技術方案的確定其實是一個對比分析和選擇的過程,平衡各個方面的影響因素,做出最優化的選擇。


    對於技術保持敏感度,雖然一定有若幹的技術,沒有機會瞭解;但基於技術的原理來分析,通過快速的學習,是可以做出正確的判斷選擇,這個就是所謂的技術感或者潛質;每種技術都有其適用的場景,有其面臨的問題和不足,結合業務系統的場景,做出最為合理的判斷選擇。


    對於項目中出現的各類技術難題和詭異問題,都是可以基於自身的技術理解和邏輯推理判斷來進行快速定位分析的,這個技能是必須具備的,是之前階段積累的各種技能經驗的綜合應用;在真實的項目中,總是會有相當多詭異或者偶爾出現的問題折磨著技術團隊,能解決此類問題,會成為程序員能否更上一層樓的標桿卡尺,能勝任此類問題,建議考慮向架構師方向發展;反之,可以考慮走項目經理,走綜合素質的方向。



10年以上


此時角色是項目的架構師或者核心負責人;將承擔著整個項目團隊的興衰成敗的關鍵;這裡主要是討論有追求的團隊,希望做出點拿得出手的項目的團隊或者項目,並給團隊成員帶來有價值的成長經驗。其他不在討論之列。


平衡的藝術;需求、技術架構、可維護性、時間周期是其中沖突最為嚴重的若幹因素,平衡就是在取其中的折中和妥協;完全偏向任何一方都是非常危險的,由需求方決定技術方案更是為整個項目埋下深深的技術隱患和不確定性;所以,堅持原則,合理平衡會是此時對於程序員的巨大考驗。


團隊培養的技能。此時身負培養團隊的責任,手下有若幹號人在相當長的時間之內,和你一起工作;除瞭保障項目的順利實施,還需要讓技術團隊在這段一起工作的過程中,都有所提升,在未來會有更好的發展機會。如有可能,可與團隊的成員進行一一溝通,基於自身的經驗為團隊成員設計不同的職業目標提供建議;通過不同的方式,比如技術分享、stand-up的技術直接討論等,營造開放自由的學習氛圍,讓團隊從中受益。這樣才是一個合格的架構師和團隊領導。


勇氣與信念;在團隊進行項目的開發和維護過程中,一定會有各種沖突和矛盾,作為項目的核心和負責人,請註意保護團隊成員;如果他們有做得不夠好的地方,請提醒他們。如果他們犯瞭錯誤或者與其他相關方發生沖突,請站在他們前面,分析問題解決問題,幫助他們共度難關,讓他們從沖突和錯誤中學習和成長;士為知己者死,團隊用命,最大限度激發團隊的榮譽感、向心力,才是凝聚之道,為團隊文化之精髓。最為團隊的架構師或者核心負責人,要有勇氣和信念,有所堅持有所舍棄,知道什麼是錯的東西,什麼是正確的做事方式,在無法改變大的環境情況下,盡力維持,保證團隊的穩定與戰鬥力。


過瞭10年,更多的時候是選擇平臺和未來發展的立足之地;也可以慢慢學習如何做一些自己感興趣的事情,如果有機會參與到創業中也是不錯的嘗試。總之在具備的經驗、能力和團隊領導力之後,可以有更多的選擇和機會。


另外還有幾點日常的經驗可以與大傢分享:



  • 多閱讀


    閱讀各類技術書籍,尤其是業界大牛的圖書會讓視野打開,關於技術以及技術背後的內容會非常有價值;我一般每隔一段時間都會逛各大網上書店,趁起打折之際,買回來細細閱讀,有基本我甚至閱讀瞭幾遍,方有所收獲。比如關於java的,我推薦大傢可以買葛一鳴的書來看,屬於比較高級的,但是寫的很好;關於服務化,推薦大傢看看李林峰的書,還有李智慧的《大型網站技術架構》等都是非常優秀的內容。


  • 和優秀的人多討論

    個人非常推崇此方式,在身邊和團隊中,多參與到各類技術討論中,多思考多分析;大膽假設小心求證,從不同的人身上瞭解到不同的技術理解,幫助你在有限的時間內,拓寬對各類技術和解決問題的方式方法的理解;老子有雲:法無定法,水無常態;在與各類的討論,收獲將是非常有價值的。把時間浪費在有價值的事情,和優秀的人多討論,遠離低效或者所謂很Low的人。


  • 學習寫作,把自己的理解融會貫通記錄下來

    寫作是技術表達的一種,在寫作的過程中,會強迫自己梳理出清晰簡介的思路出來;我在寫文章的過程,一般不會隻寫結果或者結論,而是以提出問題,分析問題,解決問題,並針對整個過程中的思路進行重新反思,從而提出更為高效的解決思路;在我的理解中,最終的那個結論並不是最重要的,而針對陌生問題的解決思路、方式方法才是最為重要的;授人以魚不如,授人以漁,我是非常認同的。


  • 多參加各類技術論壇以及學習各類的網絡公開課

    互聯網時代,資源極大豐富;優秀的公開課一般都是國外大學的高質量課程,英文中字,略有一定的難度;另外也可以考慮參加一些收費的培訓,因人而異;拿筆者個人的體驗來說,在某個針對大數據的平臺上,在3年的時間裡,一共學習瞭19門課程;在其他網絡平臺的免費公開課不算。



在高中之時,路遙的書非常的印象深刻,這裡引用他在人生中的一段話來結束本文吧:


" 人生的道路雖然漫長,但緊要處常常隻有幾步,特別是當人年輕的時候。沒有一個人的生活道路是筆直的,沒有岔道的。有些岔道口,
譬如政治上的岔道口,事業上的岔道口,個人生活上岔道口,你走錯一步,可以影響人生的一個時期,也可以影響一生。“



以上僅僅都是個人的若幹體會和經驗,如果不足之處,還請大傢多多諒解。

0 個評論

要回覆文章請先登錄註冊