針對工作幾年的程序員工程師,經(jīng)常會遇到瓶頸,這個瓶頸不一定技術(shù)上的,也可能是職業(yè)發(fā)展上的.一般技術(shù)的職業(yè)規(guī)劃會有兩個方向
技術(shù)方向:
架構(gòu)師,系統(tǒng)分析師,CTO
這種往往是走純技術(shù)路線, 發(fā)展到最后都是在公司中深入某一塊技術(shù),例如存儲,MQ,通信,等等,后面發(fā)展路線也往往是架構(gòu)師/系統(tǒng)分析師,技術(shù)專家,高級培訓(xùn)師,然后就是技術(shù)總監(jiān)
業(yè)務(wù)方向:
產(chǎn)品經(jīng)理,項目經(jīng)理,部門經(jīng)理,CEO
我覺得業(yè)務(wù)方向更多的是關(guān)注項目,針對當(dāng)前業(yè)務(wù),非常了解業(yè)務(wù)的整個流程,而如果有些業(yè)務(wù)因為特殊性,會遇到技術(shù)難點,要么讓公司基礎(chǔ)技術(shù)部提供解決方案,要么扔給手下人去做技術(shù)調(diào)研以及技術(shù)攻堅,如果自己部門針對這個技術(shù)做出了很多成績,那么可以分享推廣到全公司去使用,大家都來調(diào)用你的接口,都來參閱你的文檔,可想你自己也是非常高興的.
可是我一直覺得,如果技術(shù)不懂業(yè)務(wù),不了解業(yè)務(wù)痛點,沒有產(chǎn)品思維,那么也無法針對技術(shù)做出改進,改善,業(yè)務(wù)驅(qū)動技術(shù), 根據(jù)不同的業(yè)務(wù),會有特殊的技術(shù)要求,實時性高,穩(wěn)定性強,多數(shù)據(jù)聚合計算,等等,都考驗了程序員的技術(shù)儲備,亦或者技術(shù)攻堅水準.
這兩天讀了本書<<我編程,我快樂>>一眼看書名,我以為是某個國內(nèi)無良人士出了一本騙錢的書,但是后來看到是外國著作,國人翻譯,且豆瓣評論還不錯,因此就耐心的看了下去,整體還不錯,下面針對本書寫一些心得
做一個通才 頂尖的程序員都往往是某一個領(lǐng)域的專家,其他領(lǐng)域大部分都是興趣所致,你可以理解他不如專精領(lǐng)域那么厲害,但是也比普通程序員要厲害的多.
跳出自己的舒適區(qū) 很多程序員都會下意識的標榜自己是一名c++程序員,java程序員,iOS開發(fā),安卓開發(fā),php程序員等等,但是他們往往忽略了一個事實,就是你首先是一名程序員,有意無意的將自己綁定在某個領(lǐng)域或者某一個語言上是非常危險的事情.
站在巨人的肩膀上 另外一點提高自己瓶頸的方法就是借鑒前人的代碼,程序員這個行業(yè),并不一定非要什么都不看直接寫,也許你在有基礎(chǔ)的情況下,直接開始寫,遇到問題在查找問題會來的更加容易上手,但是正因為這樣,你寫出來的代碼往往質(zhì)量非常差,優(yōu)化性不夠,語法啰嗦,不夠優(yōu)雅,因此我們要學(xué)會多從其他人的代碼中汲取優(yōu)點,多逛逛開源社區(qū),針對自己感興趣的方向去學(xué)習(xí)別人的代碼,也是進步的一種方法.最討厭某個前輩或者資深人士說,看什么看,直接寫,這樣的說法是極其不負責(zé)任的.
做團隊最差的人 做團隊最差的人,當(dāng)你覺得其他人都比你優(yōu)秀,那么你自然而然就成為了最差的那個人,跟比你優(yōu)秀的人工作,會讓你更加的快樂,學(xué)習(xí)到更多有用的東西,也許寧做鳳尾,不做雞頭也是這么來的,而做團隊最差的人,往往可以有非常強的學(xué)習(xí)動力,以及非常迅速的成長空間.否則只有固步自封,100行代碼寫了一萬次,有什么意義么?
學(xué)習(xí)如何失敗 越早的發(fā)現(xiàn)問題,就能越早的彌補損失,你應(yīng)該慶幸現(xiàn)在發(fā)現(xiàn)了這么多bug,而不是上線的時候,你也應(yīng)該慶幸人少的時候發(fā)現(xiàn)了這么多bug,而不是用戶擁堵的時候,如果你的軟件沒有定期向你抱怨,你就不知道危險的故障隱藏在哪里,此外帶著防御性的措施進行編程也是很重要的.出現(xiàn)問題的時候,才是考驗軟件開發(fā)質(zhì)量的時候,出現(xiàn)問題的時候,解決方法,解決思維也是檢測工程師技術(shù)的時候,學(xué)習(xí)處理也是非常重要的.
1.因此發(fā)現(xiàn)問題第一時間提出,在開發(fā)和測試中,越早發(fā)現(xiàn)錯誤,造成的問題就越小,越早發(fā)現(xiàn)并且暴露自己犯下的錯誤,造成的負面影響也就越小
2.接受批評,也許這個問題并不是跟你有直接關(guān)系,也許只是間接關(guān)系,也許壓根跟你沒關(guān)系,但是當(dāng)出現(xiàn)問題的時候,我們第一時間需要的是解決方案,而不是互相甩鍋,我們的目標是在最短的時間內(nèi)解決修復(fù)問題,在誰來負責(zé)這個問題上糾纏不清的后果就是拖延解決問題的時間.
3.尋求幫助,當(dāng)我們遇到困難的時候,一定要學(xué)會跟團隊成員互相溝通,尋求解決方案,而不是因為責(zé)任感和自尊心而掩飾問題,以及拖延問題,沒有人不會犯錯,越是及早的解決問題,越是能減少問題帶來的負面影響.
說"不" 在團隊中,經(jīng)常會遇到需求方給你提出某個需求,也許你覺得這個需求不合理,但是還是礙于同事的面子抽時間給他完成這個需求,這個時候你在同事的眼里也許就是負責(zé)的好同事,但是也許你遇到的只是一個不動腦子,或者壓根只是抱著試一試態(tài)度的產(chǎn)品經(jīng)理,沒有經(jīng)過完整的調(diào)研,只是拍拍腦袋覺得用戶可能會喜歡這個產(chǎn)品,沒有做出需求調(diào)研就話了一個prd給你扔了過來,如果項目表現(xiàn)不錯,你的努力受到了大家的認可,那么皆大歡喜,但是如果這個項目最后還是失敗了.那么你付出的努力也會白白浪費,也許這個項目還是你抽空閑時間,大晚上熬夜寫的.
所以在需求方提出需求的時候,你一定要問他,做這個功能的意義是什么? 你有數(shù)據(jù)做出支撐么? 這個功能對我們現(xiàn)有的產(chǎn)品會有什么影響以及正面作用? 沒有數(shù)據(jù)支撐的需求一律說不. 我手上事情還沒做完,就因為你一個拍腦袋想出來的點子,就讓我陪你一起瘋? 記住,戰(zhàn)術(shù)上的努力并不能彌補戰(zhàn)略上的懶惰,如果方向從一開始就是錯誤的,那么為什么要一直錯誤下去? 及早回頭,懸崖勒馬,也許有人會說,互聯(lián)網(wǎng)就是不斷迭代,不斷試錯的過程,那請問你在進行之前有經(jīng)過詳細的規(guī)劃么? 有詳細的數(shù)據(jù)支撐么? 如何看出你這個需求就是非常緊急,如何看出你這個需求一上線就會有N多的人樂此不疲的使用的? 如果沒有,請你先去想清楚再來說話.試水的前提是我大概知道這個水有多深,而不是一無所知,不然為什么沒有人去試海? 試洋?
上面都是從業(yè)務(wù)上面來說的.下面說說技術(shù)上
當(dāng)你的項目經(jīng)理問你是否能完成這個任務(wù)的時候,你模棱兩可的說可以,也許行,好像行,也許你的項目經(jīng)理只是詢問下你需不需要幫助,又也許你的項目經(jīng)理聽了你的回答,會跟大老板拍板保證,這些都是建立在他對你的信任上的.或許你只是想表現(xiàn)的不那么弱,或許你只是想在你上司面前表現(xiàn)一下,我不是部門最菜的.但是這種信任是慢慢積累起來的,如果有一次你讓他失望了.兩次讓他失望了,甚至三次,那么這種新人就會崩塌, 你可以說"我不確定我能hold住這個項目,這是一次挑戰(zhàn),但我想要試一試."這就是非常好的答案. 提前告知你上司這個項目會遇到的風(fēng)險點,以及不確定因素,我想他更愿意給你更多的時間去調(diào)研,去整理整個項目的技術(shù)難度
敢于說"不"的人做出的承諾更可信,也更有分量,我不知道并不代表我不可靠,某個領(lǐng)域內(nèi)的專家對于他們不知道的事情,總是勇于承認.
總之我覺得很多程序員進入這個行業(yè)都是興趣所致,也有部分人是因為想要找一個合適,體面的白領(lǐng)工作而進入這個行業(yè),但是,在這個行業(yè)里面厲害的,就是那種真正專注技術(shù)本身的人,他們往往都是稀缺人才,可遇不可得的厲害人物,而這些人大部分都有幾個特點
1.從不制定自己的職業(yè)規(guī)劃,我寫代碼完全就是興趣所致(任性)
2.我制定項目技術(shù)方案是根據(jù)項目業(yè)務(wù)需求本身,而不是單單從技術(shù)的角度出發(fā),因此程序員在應(yīng)對大部分場景和工作需求中,廣度比深度更加重要,但是如果你想要專精某個單一領(lǐng)域的知識,并且成為專家,那么深度就比廣度重要的多,而這種人才同樣可貴
3.跳出自己的舒適區(qū),大牛會寫的代碼有很多,從c,c++,java,到php,ruby,python,js再到go,swift,haskell,erlang通通信手拈來,并不是別人天賦有多強,而是人家能適應(yīng)新技術(shù),跳出自己的舒適區(qū),慢慢積累,導(dǎo)致看起來比別人厲害的多,你要相信,憑現(xiàn)如今大部分人的努力程度,還遠遠輪不到拼天賦的時候.
4.投入100%的熱情,大牛寫代碼不是為了錢,而是自己喜歡
5.學(xué)會處理人際關(guān)系,以及表達自我想法,溝通能力,也是程序員需要掌握的一件事情,因為你的上司看重你的表現(xiàn)的,往往不是 你實現(xiàn)某個功能的細枝末節(jié),而是你對于整個項目的把控,以及溝通,他需要的只是結(jié)果,而不是過程,因此往往溝通能力強的資 深程序員,最后都會往高層去發(fā)展,慢慢轉(zhuǎn)為管理層,而如果你只是想要安靜的寫代碼,不想被這些無聊的事情干擾的話,那么你 可以忽略這一點.做一個技術(shù)資深大牛.但是你要知道,這個行業(yè)很多資深大牛往往都是溝通能力強,技術(shù)高深的體現(xiàn),除非你是 求伯君,一個人單干的蘭博式英雄,但是隨著年代發(fā)展,團隊式工作已經(jīng)是主流,你無法一個人去單一的實現(xiàn)某個任務(wù)或者功能. 團隊式開發(fā)針對開發(fā)效率,項目進度,項目復(fù)雜度,以及成本控制都比單一人員要好,而團隊式協(xié)作就表名,你必須要有最基本的 溝通能力矾踱。
如果讓我在職業(yè)規(guī)劃上做出一種選擇,我希望技術(shù)走廣而不深的路線,業(yè)務(wù)上也同時齊頭并進.雖然整理文檔,寫項目匯報總結(jié)這些文檔會讓我痛苦不已,但是我覺得這才是我應(yīng)該走的路,也是最適合我的路,不過,也許過一段時間,我就不這么想了
小編給大家推薦一個iOS技術(shù)交流群:763164022!群內(nèi)提供數(shù)據(jù)結(jié)構(gòu)與算法反粥、底層進階咒钟、swift吹由、逆向、底層面試題整合文檔等免費資料朱嘴!希望找到更多的同行多多交流倾鲫!以下資料,進群可以免費獲得哦