程序员是青春饭?该何去何从?
針對工作幾年的程序員工程師,經常會遇到瓶頸,這個瓶頸不一定技術上的,也可能是職業發展上的。一般技術的職業規劃會有兩個方向。
技術方向:
架構師,系統分析師,CTO
這種往往是走純技術路線,發展到最后都是在公司中深入某一塊技術,例如存儲,MQ,通信,等等。后面發展路線也往往是架構師/系統分析師,技術專家,高級培訓師,然后就是技術總監。
業務方向:
產品經理,項目經理,部門經理,CEO
我覺得業務方向更多的是關注項目,針對當前業務,非常了解業務的整個流程,而如果有些業務因為特殊性,會遇到技術難點,要么讓公司基礎技術部提供解決方案,要么扔給手下人去做技術調研以及技術攻堅,如果自己部門針對這個技術做出了很多成績,那么可以分享推廣到全公司去使用,大家都來調用你的接口,都來參閱你的文檔,可想你自己也是非常高興的。
可是我一直覺得,如果技術不懂業務,不了解業務痛點,沒有產品思維,那么也無法針對技術做出改進、改善。業務驅動技術,根據不同的業務,會有特殊的技術要求,實時性高、穩定性強、多數據聚合計算等等,都考驗了程序員的技術儲備,亦或者技術攻堅水準。
這兩天讀了本書《我編程,我快樂》,第一眼看書名,我以為是某個國內無良人士出了一本騙錢的書,但是后來看到是外國著作,國人翻譯且豆瓣評論還不錯,因此就耐心的看了下去,整體還不錯。下面針對本書寫一些心得:
做一個通才
頂尖的程序員都往往是某一個領域的專家,其他領域大部分都是興趣所致,你可以理解他不如專精領域那么厲害,但是也比普通程序員要厲害的多。
我們在項目中,往往不可能只使用一門技術,往往都是多門技術并行前進,因此多會一門技術就代表著多一種解決方式,多一個思考方向,也許新的解決方式往往比你固有的思維更加有效,這也是為什么現在流行混合編程。
真正的大牛是針對業務場景去選擇技術,而不是在某個特定的技術框框下去完成任務,因此程序員需要做一名通才。當然這個通才指的是某個領域中的通才,切記不能好高騖遠,什么都學,什么都只會皮毛,那不如不學。
跳出自己的舒適區
很多程序員都會下意識的標榜自己是一名c++程序員,java程序員,ios開發,安卓開發,php程序員等等。但是他們往往忽略了一個事實,就是你首先是一名程序員,有意無意的將自己綁定在某個領域或者某一個語言上是非常危險的事情?! ?/p>
對自己喜歡的事情投入100%的熱情
我有個優點,也正是我的缺點,當我喜歡做某個事情的時候,我會投入100%的熱情,說廢寢忘食也不會過。因為這段時間內,我滿腦子都是這件事情,甚至睡覺上廁所,吃飯,走路都會想著它,這樣的優點讓我能迅速掌握某個新技術。但是往往因為這樣,也同樣讓我產生了我是天才,學什么都很快的錯覺,從而導致自己很多東西都學不精通就放棄了。我覺得以后需要更正這個錯誤的想法。
投入100%的熱情,并持之以恒,我知道這是非常難的事情,也正因為如此,技術專家、資深大牛才那么稀缺。
站在巨人的肩膀上
另外一點提高自己瓶頸的方法就是借鑒前人的代碼,程序員這個行業,并不一定非要什么都不看直接寫,也許你在有基礎的情況下,直接開始寫,遇到問題在查找問題會來的更加容易上手。但是正因為這樣,你寫出來的代碼往往質量非常差,優化性不夠,語法啰嗦,不夠優雅,因此我們要學會多從其他人的代碼中汲取優點。多逛逛開源社區,針對自己感興趣的方向去學習別人的代碼,也是進步的一種方法。最討厭某個前輩或者資深人士說,看什么看,直接寫,這樣的說法是極其不負責任的。
做團隊最差的人
做團隊最差的人,當你覺得其他人都比你優秀,那么你自然而然就成為了最差的那個人,跟比你優秀的人工作,會讓你更加的快樂,學習到更多有用的東西,也許寧做鳳尾,不做雞頭也是這么來的。而做團隊最差的人,往往可以有非常強的學習動力,以及非常迅速的成長空間。否則只有固步自封,100行代碼寫了一萬次,有什么意義么?
學習如何失敗
越早的發現問題,就能越早的彌補損失,你應該慶幸現在發現了這么多bug,而不是上線的時候,你也應該慶幸人少的時候發現了這么多bug,而不是用戶擁堵的時候。
1.發現問題第一時間提出,在開發和測試中,越早發現錯誤,造成的問題就越小,越早發現并且暴露自己犯下的錯誤,造成的負面影響也就越小。
2.接受批評,也許這個問題并不是跟你有直接關系,也許只是間接關系,也許壓根跟你沒關系。但是當出現問題的時候,我們第一時間需要的是解決方案,而不是互相甩鍋,我們的目標是在最短的時間內解決修復問題,在誰來負責這個問題上糾纏不清的后果就是拖延解決問題的時間。
3.尋求幫助,當我們遇到困難的時候,一定要學會跟團隊成員互相溝通,尋求解決方案,而不是因為責任感和自尊心而掩飾問題,以及拖延問題。沒有人不會犯錯,越是及早的解決問題,越是能減少問題帶來的負面影響。
說“不”
在團隊中,經常會遇到需求方給你提出某個需求,也許你覺得這個需求不合理,但是還是礙于同事的面子抽時間給他完成這個需求,這個時候你在同事的眼里也許就是負責的好同事。但是也許你遇到的只是一個不動腦子,或者壓根只是抱著試一試態度的產品經理。沒有經過完整的調研,只是拍拍腦袋覺得用戶可能會喜歡這個產品,沒有做出需求調研就話了一個prd給你扔了過來。如果項目表現不錯,你的努力受到了大家的認可,那么皆大歡喜。但是如果這個項目最后還是失敗了,那么你付出的努力也會白白浪費,也許這個項目還是你抽空閑時間,大晚上熬夜寫的。
所以在需求方提出需求的時候,你一定要問他,做這個功能的意義是什么?你有數據做出支撐么?這個功能對我們現有的產品會有什么影響以及正面作用?沒有數據支撐的需求一律說不。
上面都是從業務上面來說的,下面說說技術上。
當你的項目經理問你是否能完成這個任務的時候,你模棱兩可的說可以,也許行,好像行,也許你的項目經理只是詢問下你需不需要幫助,又也許你的項目經理聽了你的回答,會跟大老板拍板保證,這些都是建立在他對你的信任上的。或許你只是想表現的不那么弱,或許你只是想在你上司面前表現一下,我不是部門最菜的。但是這種信任是慢慢積累起來的,如果有一次你讓他失望了,兩次讓他失望了,甚至三次,那么這種新人就會崩塌,你可以說"我不確定我能hold住這個項目,這是一次挑戰,但我想要試一試。"這就是非常好的答案。提前告知你上司這個項目會遇到的風險點,以及不確定因素,我想他更愿意給你更多的時間去調研,去整理整個項目的技術難度。
敢于說"不"的人做出的承諾更可信,也更有分量,我不知道并不代表我不可靠,某個領域內的專家對于他們不知道的事情,總是勇于承認。
價值僵固
正如上面所說的跳出自己的舒適區一樣,價值僵固依舊也很可怕,很多前輩都喜歡對后輩們諄諄教導,一部分前輩會把自己踩過的坑,遇到過的問題告訴你,你吸取了這些話,那么以后能少走很多彎路。但是如果這個前輩的思想已經過時,或者已經落伍了呢?他的成功經驗往往還停留在他們自己的那個時期,他們覺得自己的成功可以復制,但他們往往忽略了風向,站在風口,豬也能飛。所以可以聽信前輩們的一些話,但是也不能全聽,每個人都需要有自己的判斷力,以及獨立思考的想法,這是非常重要的。
總之我覺得很多程序員進入這個行業都是興趣所致,也有部分人是因為想要找一個合適,體面的白領工作而進入這個行業,但是,在這個行業里面厲害的,就是那種真正專注技術本身的人,他們往往都是稀缺人才,可遇不可得的厲害人物,而這些人大部分都有幾個特點。
1.從不制定自己的職業規劃,我寫代碼完全就是興趣所致(任性)。
2.我制定項目技術方案是根據項目業務需求本身,而不是單單從技術的角度出發。
3.跳出自己的舒適區,大牛會寫的代碼有很多。從c,c++,java,到php,ruby,python,js再到go,swift,haskell,erlang通通信手拈來,并不是別人天賦有多強,而是人家能適應新技術,跳出自己的舒適區。
4.投入100%的熱情,大牛寫代碼不是為了錢,而是自己喜歡。
5.學會處理人際關系,以及表達自我想法,溝通能力,也是程序員需要掌握的一件事情,因為你的上司看重你的表現的,往往不是你實現某個功能的細枝末節,而是你對于整個項目的把控,以及溝通。
如果讓我在職業規劃上做出一種選擇,我希望技術走廣而不深的路線,業務上也同時齊頭并進。雖然整理文檔,寫項目匯報總結這些文檔會讓我痛苦不已,但是我覺得這才是我應該走的路,也是最適合我的路。
總結
以上是生活随笔為你收集整理的程序员是青春饭?该何去何从?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软雅黑字体的bug,可能不是我第一个发
- 下一篇: Mybatis多表新增