兩周前剛剛辭去了我的首份工作,算是為我畢業后的首個四年打上句點。在家充電之余,為這段經歷作個階段性總結,一來紀念,二來激勵,是這些經歷塑造的我,要在反思中前行。
改變:這不是沖動的決定
我見過沖動的決定長什么樣子,所以這并不是,事實上,這只是遵從長久以來內心的抉擇。
在有限的人生中,你想做些什么,成就什么?想要做到這些,你必須有怎樣的規劃才有可能實現它?為了實現規劃,你需要做出什么改變,來不斷修正你的航線、補全你的拼圖?過去的一切造就的是現在的你,但這些并不會一直引領你接近未來的自己。如果你的目標是環游世界,那么學著怎么開汽車可能就足夠了,但如果你想探索宇宙,那就得學更多東西了。
過去的一年,最大的收獲是思維方式的轉變,是對事物有更透徹的思考,對目標有更清晰的規劃,雖說還遠遠不夠,但總算掌握了粗略的方法,希望接下來能不斷的驗證調整,使之成為有力的思考工具。
改變當然不是一件容易說到做到的事,它意味著熟悉的一切將不再,信任的團隊、熟絡的領導、熟悉的行業領域、舒服的工作節奏、熟練的技能,這些都要重頭開始,慢慢積累。但就像一開始離開學校,踏入職場一樣,從小事做起,保持好奇,保持耐心,總有熬出頭的一天。
進擊的程序員:可以專心敲代碼,也是一種幸福
編程的日子是簡單純粹的,從最開始的.NET開發程序員到Java開發程序員,去年還短暫的寫了一段時間的Android程序。編程它是有魔力的,那就是創造的快樂。
大學里面學的大都是理論課程,計算機導論、組網原理、算法基礎等等,然后再加上一兩個課程設計,好一點的話可能還會有幾個月的企業實習機會,然后一個程序員小白就誕生了。班里畢業后從事了軟件行業的同學,基本上水平都差不多,好一些的話,可能還考了個軟件設計師、系統分析師之類的職稱。那時候哪懂什么行業領域,職業生涯規劃也是個非常模糊的概念,甚至連軟件技術如何為企業創造價值,都是毫無概念的。
工作的前兩年,基本上的思維模式就是遇到問題——解決問題,屬于被動式的工作模式。這無可厚非,當面對一個陌生事物的時候,最好的開始當然是觀察和思考,在實踐中不斷學習總結以完善認知。我并沒有在一開始的時候就給自己的技術發展方向做限定,而是廣泛的涉獵所有可能會派上用場的知識。還記得實習的時候寫的第一個周報,我把那個星期了解到的技術名詞全寫上去了,大約超過一百個,呵呵。這些技術知識,后來工作上真正用到的可能不到五分之一,但也正是這些東西拼湊成了我對軟件技術最初的認知框架。廣泛涉獵的好處是,它可以幫助你開拓思路、觸類旁通。這些星星點點的知識積累得足夠多了以后,脈絡自然就會呈現出來,再經過梳理填充,慢慢的形成一個知識面,形成一種直覺意識還有趨勢判斷。當某天你站在主導的位置,面對未知的領域或事物做決策的時候,直覺和趨勢判斷會幫助你規避風險,選擇更好的解決方案,而這些能力養成不是一朝一夕的。
軟件開發簡單來說就是做數據的CRUD(增加、讀取、更新、刪除)和展現?當然可以這么簡單理解,但實際操作起來,卻遠遠不只這些。一開始我負責一個系統其中一個小模塊的編寫,流程并不復雜,就是前面所說的CRUD操作。后來開始單獨負責一個小系統的設計開發了,慢慢就發現事情的復雜度上去了,你需要更加全面的去考慮所有問題了。因為系統的需求很清晰,在我能把控的范圍之內,系統開發測試和前期維護都由我全權負責,只要保證系統穩定可用就行。于是我就放開了折騰,自個設計、編碼、上線,有問題,再調整設計、重構、再上線……幾番來回,對軟件系統也有了一個全局的認識,同時領悟到,要把復雜的事情流程化,把重復的事情自動化,例如把步驟冗雜的操作在程序中用流程來封裝固化,把重復的操作做成腳本和工具來自動化等等,總之,“Don’t Repeat Yourself”。
第二年加入到大團隊后,終于完整的參與了一遍軟件研發的完整流程。從前期的需求分析,長達幾周的需求研討會,到概要設計、詳細設計,再到長達半年之久的現場駐點開發,最后上線移交運營維護。整整一年的項目,跟著團隊一起奮斗,經歷種種,開工飯、駐點開發、進度滯后、熬夜加班、里程碑、試運行、緊急故障、客戶發飆、緊急修復、穩定運行、項目獲獎、慶功宴……團隊的力量是驚人的,它的每一次成功或失敗都激勵著你,讓你竭盡全力朝著目標往前趕。
研發工程師是一個很好的職業起點,它教會你注重細節,理解原理,以及萬事皆有因,鍛煉你發現問題和解決問題的能力,讓人驚嘆設計的精妙和創造的樂趣。像手工藝人一樣,耐心沉著,不斷練習,提高自己的技藝,對自己的作品反復精雕細琢,這是作為程序員最可貴的工匠精神。
菜鳥架構師:有些坑,你要踩過才知道
到了工作的第三年,大數據的概念如日中天,只要是做技術的,聊起當下潮流,三句不離大數據。那時候公司也已經開始著手往大數據布局,選取了項目試點之后,發現大數據方案確實可行,于是就開始組建團隊,正式啟動大數據項目。剛好,我在之前的試點項目里,一直負責大數據平臺的對接工作,對系統的應用和原理最為熟悉,于是,很自然的成為了大數據團隊早期的一員。
由于試點項目時,大數據平臺只是一個快速原型,可運行,但是不具備可擴展性,如果真的把它當作一個戰略性平臺產品,必須對其重新設計,推倒重來。于是,出于領導對我的信任,我被賦予了系統架構師的職責,規劃大數據應用服務平臺的架構設計和實現。很顯然,在獨立搭建一個大系統方面,從我以往的經歷里,可借鑒的東西不多,但也表明這個陌生的新領域會讓我收獲巨大,機會與挑戰共存,讓我既興奮又焦慮。
還好,一直以來堅持的習慣還是幫助了我。一是對系統架構知識的廣泛涉獵,以及自己業余時間折騰的系統框架,能夠派上用場;二是對知識的記錄和整理總結,在技術選型上能夠提供參考;三是對平臺原理的探索,讓我對原平臺系統的核心思路理解透徹。在這個基礎上,我得以在短期內順利的完成對原系統重構,實現了原有系統所有功能的同時,提高了性能,實現了擴展性、伸縮性和可維護性。
新平臺經過一段時間的試運行和調整之后,已經漸趨穩定,接下來就是怎么把它做大做強了。在初期只有兩個成員且需求清晰的時候,項目運轉良好,但當需求漸漸多起來,人員也慢慢的加進來以后,問題開始涌現,我越來越感覺力不從心、孤立無援,最終無奈的選擇了退出。
現在回想起來,還是唏噓不已。當時在負責大數據平臺的時候,我還兼顧著之前另外一個項目的維護工作,需要跟進相應的故障處理,版本發布和系統升級的工作,最要命的是它處于全面推廣時期,所以還需要我提供在全國各地推廣中,對工程人員進行系統部署時的遠程支撐。由于系統優化不好,安裝維護復雜,導致它很難部署,所以無形中增加了我不少工作量,一個星期里至少有三天時間用來處理相關事項,遇到問題井噴期,多點起火,根本就應接不暇,最嚴重的時候甚至試過腱鞘炎導致手腕半個月動彈不得。沒有平衡好多個項目的關系,以及前期優化不足的系統上線后需要償還的技術債務,讓人疲于奔命,苦不堪言。
而大數據平臺本身的團隊管理和項目管理,也存在著很多問題。
- 團隊缺乏組織結構,沒有建立梯隊機制。我雖然負責系統架構工作,但屬于無授權領導,又作為團隊里工作資歷最淺的一位,沒有調動團隊資源的權利,當時自身的管理意識也不強,管理能力不足,在團隊管理上沒法做出貢獻。其他成員當時手頭上也都有其他項目的事情要兼顧處理,參與度有限,所以團隊名存實亡,一直處于無組織的狀態。同時沒有建立起人才梯隊,團隊缺少業務和技術權威,很多決策都要等部門技術總監來做,沒有實現團隊自組織,也就沒能充分發揮成員自主性和創造力,導致執行效果不佳。
- 團隊目標不統一。團隊沒有清晰的短期目標,只有長期目標,而冗長的項目周期和頻繁的需求變更讓目標變得缺少說服力,團隊成員迷失方向。
- 團隊文化不統一,缺乏使命感。團隊成員對于新技術、新工具的看法不一,并沒有建立開放心態、追求精品和持續改進的文化氛圍。同時沒有建立使命必達的使命感,項目進度容易拖沓不前,進一步打擊團隊信心。
- 基礎設施不一致。雖然在同一系統框架中協同編碼,但成員間卻沒有形成共用類庫的習慣,還是各自為陣,單打獨斗。沒有做好版本管理,沒有把版本升級管理作為重要的初始需求,導致每次版本升級傷筋動骨,非常痛苦。
- 缺乏溝通。沒有形成溝通機制,團隊信息傳遞不及時,成員之間信息不對稱,導致團隊節奏很難統一。
以上問題的存在,導致團隊內耗巨大,效率低下,它們足以影響一個產品的成敗。而當時我還深陷在技術人員的思維慣性里,沒有想到要去主動推動管理方式的變革,而選擇了被動退出,只能說這就是菜鳥進階路上要交的學費吧。
產品小白:責任大過一切
產品思維是我迄今為止最受用的思維工具。
15年初,我硬著頭皮承擔起了一個產品的產品經理職務,嗯,感謝領導如此大膽的信任。硬件產品、移動APP、項目管理、團隊建設、用戶溝通……這些,都!沒!接!觸!過!當時我的內心是奔潰的,然后百度了一下“產品經理”,發現很多技能包要補充,瞬間覺得人生充實了。其實現在回過頭看,從產品小白一步步到入門級產品經理的過程,本身就是一個產品誕生的過程。
從專注產品研發開始著手,團隊從最開始的3號人擴展到10號人,最開始的幾個版本是硬扛過去的。最困難的時候,沒有交互設計師,沒有UI設計師,沒有測試人員,甚至研發人員也還沒成長到獨當一面,怎么辦?我來做交互、做界面、做開發、做測試、寫文檔、做發布……把自己當塊磚,哪里需要哪里搬!交互設計不專業?改!界面設計不專業?改!文檔寫得不專業?改!設計不夠專業,都可以改,但我們沒有任意理由不認真、不盡力去做好每一處細節。產品研發沒有捷徑可走,全都是細節。多一次溝通,多一點考慮,多一次檢查,多一次測試,都會讓缺陷少一些,讓結果好一些。
從技術人員轉型產品人員,開始的時候最大的不適應,可能是工作方式的轉變。作為技術人員,重點關注的是自己的問題,每天都有大塊大塊的時間可以專注思考和解決問題。而作為產品人員,阻礙產品和團隊前進的問題你都要去解決,于是每天的工作時間就是完全碎片化的。每天早上上班前,要把今天要達成的目標整理出來,發送給大家。上班后,到任務看板前主持團隊晨會,鼓勵大家說現狀、拋問題。完會以后,到UI設計師的座位前,討論交互設計的細節,如何調整改善;到研發主管的座位前,討論研發進度和關鍵業務邏輯;到測試兄弟的座位前,討論測試發現的產品體驗缺陷、程序缺陷;到售前售后人員那,了解用戶反饋和優化需求;還有到領導那,討論最新的產品規劃和需求;還要處理時不時的緊急故障、客戶回訪……往往一個早上下來,才發現一口水都沒來得及喝。
團隊管理是建立在溝通的基礎上的,而溝通,最重要的是同理心。同理心,也就是感同身受、換位思考。你要了解對方的工作流程和方式,了解他們的立場和難處,才能彼此平等的接收信息和提出訴求,這才有利于達成彼此的目標。同時必須統一團隊的文化、目標和工作方法,讓信息傳遞透明高效,大家步調協調的往同一個方向走。
說實話,帶產品比做開發,壓力要大很多,因為責任重大。在別人想不到的地方多想一點,在不懂的地方多問一句,都可以避免做出錯誤的決策,導致團隊成員徒增工作量或者做無用功。很多時候都是責任在推著走,但所幸在一個好團隊里,大家互相理解幫助,才能夠不斷的成就彼此。
到后來,產品慢慢成熟以后,除了兼顧更多的產品之外,我也得以抽身專注于用戶研究、需求分析和產品運營,同時嘗試往更為高深莫測的產品戰略規劃方面去涉獵??偟膩碚f,一切才剛剛開始。
差旅:商務旅游也是旅游啊
出差作為工作的一部分,是不可避免的,既然如此,那就享受它美好的一部分,然后忘記苦逼的那一部分吧。
四年來,去過全國大大小小的十幾個城市,算是領略了各地的風土人情,可惜差旅一般都是行色匆匆,很少體會到那種生活在別處的新鮮感。短差一般是兩三天,也有時一日游,一般是去做客戶訪談和需求調研,也可能是重要會議或是合作廠商洽談之類,目標明確,完事就走,由于時間趕,反而是相對最累的。如果去到縣級地市的話,火車汽車來回幾趟倒騰是少不了的,或者山路十八彎,夠你一天折騰的。碰上天氣不好,航班延誤,能讓你在機場等個通宵。車旅勞頓、水土不服、飲食差異、人身安全得不到保障,這些都是難免的,只能靠自己慢慢去克服。長差的話一般兩三周,當然超過一個月的也有,一般都是現場駐點開發。這種情況還好一些,團隊可以更加專注,也是培養團隊感情的最好機會。同時,周末也可以組團到附近的旅游景點吃喝玩樂,好好過把旅游癮。
健康:身體是革命的本錢
最近一段時間身體狀況保持的還算是比較好,從去年開始,通勤改為騎車之后,每天都至少有十公里的騎行運動量,也保留著打籃球的習慣,所以畢業到現在身材沒走樣。
不過幾年下來也并非沒有病倒過。12年底由于肺炎,反復高燒不退,住院兩個星期,后來被肺病反復折騰了一年多,X光、MR、支纖鏡做了很多次,現在想起來,那段時間真是苦不堪言。另外比較深刻的一次是14年中,左手腕腱鞘炎,兩三個星期都無法彎曲手腕和大拇指,不能著力,而且無時無刻不在痛,只能用專門的手套固定住手腕。還有去年年初腰椎也痛了一段時間,都是職業病,只能想辦法避免。最簡單的就是把顯示器墊高到眼睛可以平視或者仰視,避免頸椎病,然后加個鍵盤托避免鍵盤手,多起身走走,不要一直坐著。對于職場人如何保持身體健康,大概就是量力而行吧,年輕的時候是要拼,但是不要過度透支身體健康。
親朋好友:人不只為自己而活
“拳不能只有眼前路,沒有身后身”——《一代宗師》
人也一樣,不能只盯著你的眼前路,卻忘了一路上支持你的親人朋友。幸運的是,親人一直都無條件的理解和支持我,讓我沒有后顧之憂。昔日一起共事的同事領導,也成為了一起奮斗的知心朋友,或者作為我的導師,給予我支持信任,在我迷惘失去方向的時候,可以有人為我指出問題所在,引導我往前走。這些都是最珍貴最難得的。
思者無域,行者無疆
保持好奇心,保持求知欲,不斷開闊眼界,不斷思考總結,在實踐中在證明自己。思者無域,行者無疆,在思考中前行,才得以不斷超越。
蔡子聰
2016-3-22