曾經在知乎回答過類似問題,那也是我在知乎獲贊最高的回答。但是發現這個問題簡直成了知乎的日常問題,可見廣大同行的焦慮。那麼索性從新審視這個命題,談談我對這件事情的看法。
程式設計師的職業生命到底有多長?
程式設計師是可以做一輩子的,但單純只會敲程式碼的程式設計師,職業生命十年左右。
從業初期,肯定是從小工到大工的成長過程,業務逐漸熟練,技巧逐漸豐富,理解逐漸深刻,這時你成為了“技術大拿”,你成為團隊的“百曉生”、“頂樑柱”;之後,勢必會承擔起更多的責任,這時工作內容會逐漸體現出一些管理性質,你開始帶團隊,培養新人,做一些設計,參與制定一些規範,進行程式碼審查,這時公司開始信任你,依賴你;再後來,開始直接接觸客戶,收集需求,技術選型,開始考慮成本與利潤,開始考慮風險與回報,這時你已經成為公司不可或缺的一部分。
我只是寫出了一個程式設計師成長路線的一種可能性,但是可以看出來,隨著時間的流逝,公司對你的期待會越來越高,所以,程式設計師的職業生命是和個人能力成正比的。如同逆水行舟,不進則退,只要不斷成長,讓自己的能力與自己的資歷匹配,職業生命就可以無限延長;否則,當你的能力無法匹配你的資歷,面臨的最壞結果就是出局。
技術重要還是管理重要?
作為對技術抱有熱情與幻想的程式設計師,我一度堅持認為技術最重要,但是現在我覺得我錯了。技術當然是重要的,這也是我得到認可的原因,但是“技術”只是個工具,最終我們的產出是利用“技術”實現了的那個“需求”。我不斷地磨練自己的技術,不斷地學習,目的是當面對“需求”,我可以給出更多種可行的方案,我可以在實現的過程中有更多的選擇,解決難題時我可以想到更多的手段。
談到管理,曾經覺得它和技術格格不入,但現在我覺得我又錯了。“管理”可不是單純的“管人”,專案的結構、團隊的協調、進度、質量都需要管理,而這些也可以理解為廣義的“技術”,當技術成長到一定程度,自然而然地會思考如何讓專案進行得更流暢、效率更高、質量更穩,那麼這時事實上我們已經在思考“管理”了。
所以,對技術痴迷,也不要固執地排斥管理;對管理重視,也不要愚蠢地鄙視技術。技術缺管理是一盤散沙,白費力氣;管理缺技術是緣木求魚,攻而不克。
要不要“趕時髦”?
新技術、新理念,我們要積極地去了解,但是要慎重地使用。軟體行業用日新月異來形容毫不為過,這個充滿活力的行業,各種新鮮事物層出不窮。作為從業人員,我們需要開闊視野,前沿知識哪怕不用,也要去了解,因為這種積累,在日後會為你提供更多的思路。但是在新技術的使用上,我偏向於求“穩”,貿然引入新技術,特別是整個團隊集體轉向,會引入太大的風險。現在網際網路公司呈現出的激進的風潮,我是持保留態度的。
程式設計師的核心競爭力是什麼?
是學習能力。我們這個行業實在變化太快,“一招鮮,吃遍天”這種事情是不存在的,我們總會遇到從未接觸過的新挑戰,怎麼辦?學習。就如同一個優秀的企業,它最有價值的地方在於它有無限的發展前景。那麼一個優秀的程式設計師,最有價值的地方就在於擁有無限的潛力。要知道,公司僱傭一個人,並不是因為他現在水平深淺,而是他能不能和公司一起成長,只看眼前的公司不會長久,只看眼前的員工沒有未來。
程式設計師到底何去何從?
其實囉嗦了那麼多,歸根結底就是持續提升自己,就這麼簡單。把焦慮、嫉妒、迷茫的時間拿來充實自己,到了35歲你會發現,這真的是職業生涯的分岔路口,只不過我們的路通向美好。