我的程序員到項目經理之路

之前有多位我公衆號「kevinsheng」的讀者問我想做項目經理,想問下我的經驗及教訓,答應了好多人要寫,一直沒寫,眼瞅着年底了,2018答應過的事情絕對不能拖到2019。今天就跟大家聊聊,內容可能有點長。

這篇文章其實很早就想寫了,但說實話一直不寫的原因是有點心虛,畢竟我也才畢業不到5年時間,不是什麼行業大牛,也不是知名大V,害怕自己寫不好給讀者帶來誤導。但又轉念想想,誰不是這樣過來的呢,大部分人剛畢業都不可能立馬找到滿意的工作,大部分人對自己的職業規劃也是充滿迷茫,都是慢慢積累,一路摸着石頭過河。今天我就大膽寫出來,哪怕對你有一點點啓發,能幫你少走一點點彎路,我就覺得值了。

我14年畢業於一個普通的本科院校,計算機與科學技術專業,算是所謂的科班出身吧。從大學畢業順利拿到畢業證和學位證來講,我算是合格的,但從畢業就業所需的專業技能來講,我是學渣。這裏我並不想過分強調中國大學教育與社會所需工作技能的脫節。如今的互聯網時代,想要學習任何的技術知識大多都能找到,關鍵是你怎麼利用學習資源了,所以不要抱怨自己的學校和大學教育環境。

現在想想,我的大學日子過的太爽了,籃球、dota、妹子、一幫好兄弟、熱鬧的班集體,肆無忌憚的揮霍着自己的青春,大學四年可以說是目前爲止我人生裏最美好的一段回憶了吧。但時間是公平的,有的人肆意揮灑青春,畢業就面臨着失業,而有的人早早就爲考研或是工作準備着,他們大多也都能如願。我是前者,但我也不後悔,那段時光短暫而美好,青春無悔。

大三末的時候,雖然是專業技能很差,但編程還是有一點基礎的,就硬着頭皮試着去找了一份工作,是一家做電商網站的公司。記憶深刻的是當時那個公司老闆給我開出一個月的工資是2000,需要說明的是當時是2013年,我還沒畢業,而且我所在的城市是一座四五線的內地小城市,一個月2000感覺真的很多了。跟我一起進去的還有幾個實習的同學,私底下我問了都才1000多點。我內心當時那個高興啊,我想這主要源於我面試時候的表現吧。其實當時的技術水平都很低,我感覺主要是那個老闆覺得我綜合能力更強,希望我未來能帶領一個小團隊。我大學期間是班長,自認爲溝通能力還不錯吧,我想這個是主要原因,在面試的溝通過程中,我表現出的自信,叫吹牛逼也行,我覺得征服了那個老闆,當然也可能是因爲我太帥(噢,那個老闆好像是女的)。

後來臨近畢業,家裏人讓考公務員。我也確實努力考了一把,差點進面試,說實話我現在想想幸虧沒考上,如果當時真當了公務員,我可能會後悔,雖說工作穩定,但一定見識不了外面世界的精彩。公務員考試失敗後,我就想着繼續找計算機相關工作了,當時還真沒想去大城市,覺得去像北京這樣的大城市,可能就是去找死,水平這麼低,找不到工作的,現在回過頭想想那時候真傻逼。一個堂哥給我的建議是,你要下定決心從事計算機行業,就別小城市發展,要去就去IT聚集地北上廣,當時他給我舉了個形象的例子,至今記憶猶新,在小城市裏做IT就像在小河湖泊裏划船,只有到大城市的大江大海里,才能歷經風雨,揚帆遠航。現在回想過往幾年,確是這樣。

從認爲自己來北京是找不到工作、是找死,到我下定決心來北京,經歷了很多,包括家裏人的反對、自己痛苦的思想鬥爭。很慶幸我戰勝了自己,很感激當時自己下定決心的勇氣。年輕的時候不去冒險,不去嘗試,要等到自己老了嗎?

我大學的時候學的是Java,剛來北京的時候,僅有一點基礎知識,編碼能力很有限,投了一部分簡歷,收到面試也很少。相比之下,當時有很多同學參加了培訓,他們也確實比我更快找到了工作。由於之前的實習經歷,我對自己還是有信心的,我覺得我不培訓也能找到工作,我更願意在工作中去學習,而不是再回到上課的日子裏,事實證明我可以。雖然面試機會不多,但我抓住了每次面試機會,每次面試都是提升自己的機會。基本都是白天面試,晚上回來學習,我發現這樣效率很高。針對職位要求去準備相關知識,我記得找工作面試那一週我晚上都是熬夜到兩三點才睡覺,終於功夫不負有心人,收到了兩家公司的offer,一個是做測試的,一個是做java開發。考慮到以後的發展方向,我選了java開發。

在公司的前半年基本都是白天在公司跟着別人做項目,晚上回去自己再學習。說實話很辛苦,當時水平太低,大家也都很忙,遇到問題,不到萬不得已也不會輕易問別人,基本都是自己查資料,自己摸索。這裏說下,有時候有些技術難題如果自己一段時間還沒解決,就厚點臉皮趕緊問同事,沒啥不好意思的,技不如人不可怕,可怕的是你不敢面對,別人的指點能讓你少走很多彎路。經過半年的努力,我漸漸從一個Java小白開始跟着做項目,自己也學着搭建框架了。工作雖辛苦,經常加班,但有幾個一起進公司的同齡人,我們一起加班一起玩,漸漸成爲了朋友,工資不高但還算過的開心。這樣的日子過了快2年,漸漸地,我發現了問題,一是在這個公司裏我能學到的東西已經不多了,技術氛圍不夠,提升空間有限;二是領導一直口頭上說要給我們加薪,但一直往後拖,每次加班一段時間後,就帶領大家下館子,大吃一頓,喝一場酒,講一場兄弟情。只怪當時我們太年輕,竟然每次都被領導的兄弟情感動,恨不得爲他上刀山下火海。後來瞭解到,2個愛喝酒的,跟領導玩的好的老員工,私下領導都給了“好處”。而他們就是平時指揮我們幹活的人,其實我們乾的活比他們多的多。認清了這一點,我們幾個人相繼跳槽換了公司,臨走時領導還極力挽留,說現在行情不好,不好找工作。誰能再信你的鬼話,尼瑪不出來不知道,我們的薪資基本都翻了2-3倍。正在看這篇文章的童鞋,如果你的領導是這種總拿兄弟情洗腦的人,現在是市場經濟,聽哥一句話,找個機會趕緊撤吧。

到下一家公司,開始還是做Java開發,這個時候水平離大牛還很遠,但基本也能在項目中擔任重要角色,甚至在有些項目中挑大樑了。但漸漸的我又發現問題了,這次不是公司的問題,是我自己的問題。這時候做研發快3年了,在思考我的未來發展方向時,我迷茫了。往什麼方向發展呢?那段時間我看了很多關於職業規劃的書,很多書中基本都指向了2條路,一條是管理方向,一條是技術大牛、架構師方向。我對比了自己,問了自己幾個問題,我喜歡寫代碼嗎?我能在技術的道路上走的更深嗎?

說實話當初考大學選專業的時候,想必大多數人一樣,都不知道自己喜歡什麼。當時選專業的時候,我就覺得計算機象徵着科技、未來,就選了計算機專業。其實也不知道自己喜歡不喜歡這專業,將來會不會喜歡寫代碼。大學期間學渣不說了,參加工作寫了幾年代碼後,我發現有時候我是喜歡寫代碼的,特別是在我用自己的思路實現一個牛逼功能的時候,那時候我甚至覺得自己能改變世界。但我發現這種獲得內心滿足感、自豪感的時候並不多,更多的時候可能是出於完成任務。同時我發現,周圍很多人是這種情況,但也有少部分人,他們不僅喜歡寫代碼,而且擅長寫代碼。比如,同樣的功能開發,擅長的人可能半天完成,而我也能完成,但需要1天甚至更長的時間。也許有人會說,這說明你不努力,你沒有及時掌握牛逼的技術知識。咱不要擡槓,即便你努力,在做同一件事上,你必須承認,有些人是更有天賦的的,這叫擅長,而你最多叫喜歡。我特別喜歡打籃球,有時候甚至幻想能去打NBA,看NBA的都知道科比牛逼,除了我科每天看洛杉磯凌晨4點鐘的太陽,你以爲人家沒有天賦嗎,努力加天賦,人家這叫擅長,我就算全天24小時再努力打籃球,最多叫喜歡。

認清了喜歡和擅長的差距,我逐漸認清了自己,我最多算喜歡寫代碼,但我並不擅長寫代碼。成爲技術大牛,也許擅長的人需要5年,我可能需要10年甚至更長時間。也許我加倍的努力,理論上有可能實現的,但有時候選擇可能比努力更重要。也許別人5年後成了大牛,而我在成爲大牛的路上已經熬成了禿瓢大爺。我認清自己後,決定了自己以後不會走技術大牛這條路線。當然這只是說我選擇路線時候的考慮,不同的人情況不同,並不是說管理就好,技術就不好。就算我下定決心以後要走管理路線,但對於技術,在我成爲項目經理之前我也還是不敢有絲毫懈怠,因爲這是當時的安身立命之本啊。至於管理路線,當時也是一知半解,不知道自己具體管理路線怎麼走。但是當時我心裏就埋下了一顆種子,等待着它的發芽。

在明確自己以後要走管理路線的情況下,我也沒有放棄技術的精進,我會留心觀察一些之前我沒有關注的事情,比如項目上的一些溝通、客戶或產品經理提出的需求、項目範圍控制、項目里程碑節點、項目階段總結等等。這些之前我都認爲是雜事,是沒用的事。花時間在這些事上不如讓我靜心寫幾行代碼,不用理會那麼多亂七八糟的人和事。我想大多數程序員也是這麼想的,但這些看似跟程序員關係不大的事情,後來我發現也是完成一個項目必不可少的,甚至有時候比寫代碼重要的多。

下面說2種情況,看你遇到過沒。我剛寫代碼的時候,小組長佈置了開發任務,我啥也不問,覺得理解就直接開始做了,結果快做完了,組長告訴我他想要的並不是這樣,臥槽,辛苦寫了半天的代碼要重寫。這是很典型的程序員遇到的一個問題,一方面是缺乏對功能需求的理解,只想着如何實現這個功能,殊不知跟實際的需求相差很遠。另一方面缺乏與佈置任務人的溝通。還有一種情況,有時候客戶需求說的很清晰,我們理解的很清楚,溝通也不錯,貌似我們做的都對,但卻有一種現實讓我們很痛苦,感覺功能越做越多,尼瑪啥時候能做完啊,需求感覺沒邊沒頭的,爲了工期我們還要苦逼加班加點。向着目標我們工作加班加點也能理解,但是像這種項目給你造成了很大的精神壓力,完全沒有了當初改變世界的興奮。上面說的第一種情況,需要我們程序員寫代碼的時候多理解需求、多溝通,避險陷入孤島的思維陷阱,但後面一種情況,看似與程序員寫代碼無關,但直接影響到了我們,這其實就是項目經理要解決的問題。

上面說的第2種情況,在項目管理中叫項目範圍蔓延,屬於項目範圍管理中的問題。那麼項目經理一般怎麼處理這種問題呢,這就要說到項目範圍管理中的定義項目範圍,定義範圍其實就是明確需求的過程,確定哪些需求在項目範圍內,哪些將排查在項目範圍外,從而定義出項目產品、服務或成果的邊界。這個定義範圍的過程中會有一個輸出叫項目範圍說明書,它的前身叫項目工作說明書(SOW)。這個文件一般是需要項目甲方、乙方確定的,大部分情況是很正式的書面文件,有雙方的負責人簽字的。在項目進行過程中需要項目經理根據這個及時把控項目範圍,如果出現範圍蔓延就要及時找客戶相關方負責人溝通了,一般客戶看到這個當初大家達成一致的文件就不會再逼逼新增需求了,當然也有例外的,這時候如有必要就問題升級了。現實項目中遇到的問題可不僅僅是這一種情況,還有很多,比如項目時間管理、成本管理、質量管理、溝通管理、風險管理等等,每一個展開都能寫一篇文章,受限於篇幅,這裏不一一展開講了,以後有機會挑大家感興趣的說說我的理解。

回到我的經歷上來,在我不斷精進自己技術的同時,我會很留心項目經理做的事,經常在完成自己的工作的前提下,去協助項目經理處理一些工作。有段時間公司項目很多,但項目經理人員有限,項目經理都是一個人同時帶幾個項目。我參與開發的項目,完成自己的開發任務之外,我基本都會盡最大努力去幫助項目經理做一些事,比如寫一些項目文檔,業務需求分析,跟客戶溝通等等。面對不同的客戶,溝通方式也不一樣,這塊我學到了不少。但也很累,好多時候半夜裏還在幫着寫文檔,不要以爲項目經理就很輕鬆。

相比開發,更多時候是專注自己的代碼,完成功能就行。而項目經理從項目一開始到結束,都在各種操心。項目開始的時候要制定項目計劃、定義項目範圍,執行過程中要隨時把握項目進度、評估各種風險,項目驗收階段要保證滿足客戶驗收標準,期間還有各種會議、彙報工作等等。有時候我甚至覺得倒不如寫代碼痛快,但我覺得凡事都有個過程,不可能一開始就能處理好所有事情。漸漸的,我熟悉了一個項目的完整流程。有一次,我所在的項目中,項目經理家中有事不得不離開,整個項目需要一個能掌控進度的人,項目經理向領導推薦了我,我頂着壓力接了,畢竟這是個機會,期間遇到我不能解決的問題,及時領導彙報,磕磕碰碰,最後項目總算是結了項。我平時的努力部門經理也都看在眼裏,通過這次機會,我也證明了自己,不僅能寫代碼,我還能帶項目。雖然短期內職位上沒有變化,但後續的項目中我開始帶項目了,我做的就是項目經理的工作,後來也確實得到了職位晉升。

有一點需要注意的是,項目經理大部分都是從技術做起,從項目做起,慢慢歷練出來的,很多時候是被提拔出來的,不是說你剛剛畢業或突然想轉項目經理就能做的了,這需要一個過程,需要你踏踏實實做好自己的工作的前提下,多去關注,多去學習。還有一些人如果對客戶需求敏感、對產品設計感興趣,也可以做產品經理,這也是管理路線的一個選擇。

不知不覺,感覺寫了好長,很感謝你能看到這裏,後續我會經常在公衆號裏分享自己的一些感悟。不論是做技術還是管理,希望大家都能找到適合自己的路。最後再說一點,不論你從事任何工作,都要培養下自己的寫作能力,多記錄,多總結,多分享,每次寫作都是一次很棒的自我對話,這真的是未來很重要的一項個人技能。

PS:希望以上內容對你有幫助,如果你對自己的職業規劃有疑惑,想得到一些建議,歡迎大家掃描下面二維碼關注我的公衆號「kevinsheng」,關注後有機會可以添加到我的個人微信,我會經常分享一些自己的職場經驗、感悟、提升認知的內容,期待與大家溝通交流,一起進步。

                                                       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章