在我寫技術博客所使用的簡書平臺上,每天都能看到很多關于職場的文章,而寫這些文章的大多是各個行業的所謂職場達人。但我卻發現,程序員作為一個很大的群體,卻極少有人寫這類文章。回想自己的職業生涯,在擔任程序員或架構師的十年時間里,很少會去思考或總結那些職場經驗,或許大多數年輕程序員也和當年的我一樣一門心思只關注于技術,而對這些所謂的職場法則后知后覺了吧!
這幾年,當我開始作IT管理工作后,反而有了更多時間,回顧自己以及從身邊更多年輕程序員的身上看到并體會到一些東西,而我覺得讓更多程序員也能夠盡早明白這些,或許對他們未來的職涯發展也會有所幫助吧!
你的薪酬與工作量無關
這第一條或許就會讓你感覺有些沮喪,但仔細想想這是不是一個普遍的事實呢?當你大學畢業后進入一家公司,每天非常努力地工作,還時常加班,而同一個團隊中的一些老員工看上去卻一點也不忙,更可氣的是,他們的工資可能還比你高出幾倍。此時,你的內心是否會有些許不平衡,甚至心生不滿呢?
你的薪酬其實取決于很多因素,技術能力、經驗資歷、工作量等等,但最本質的卻是,你對公司是否重要,換句話說你是否容易被取代。公司很容易找到一個應屆畢業生,但對于那些對公司產品非常熟悉,起著關鍵作用的老員工,要替代他們,公司所需要付出的代價或是需要承擔的風險就會更高。
所以,不妨擺正心態,正確認識到自己在公司中的位置,努力修煉內功,讓自己變得越來越重要,相信你的薪資也會隨之提升的。
盡可能持續做一件事
既然你對于公司的價值來自于你的不可替代性,那又該如何有效提升它呢?我的建議是盡可能持續做一件事。這既指技術上的積累,也是指你能完整或較長時間參與同一個項目、或開發一個產品。雖然,有時候你所做的工作并非你個人所能決定,但你仍需要有意識地去主動把握那些能讓你持續積累技術或項目經驗的機會。
經常有年輕程序員朋友向我訴說他們所遇到的一些困惑,比如覺得自己在工作中用到的技術太舊了,詢問是否應該轉向其他技術甚至轉行。或是對公司里做的項目不感興趣,覺得沒有前途,是否應該跳槽等等。我其實總是鼓勵他們去學習更多不同的東西,比如說新的技術,框架,甚至是UI設計,但我同時也會提醒他們,技術深度以及完整項目經驗的重要性,如果你總是在跟隨那些新出現的技術和框架,那你很難在某一項技術上達到理想的深度,同樣,在一個公司里,如果你總是在更換項目,那你也很難提升自己的價值。參與10個項目,不如完整參與一個項目。持續做一件事是要你把每一件事做透、做好,而不是蜻蜓點水,淺嘗即止。
唯一不變的就是變化本身
在這十幾年的工作時間里,我唯一看到不變的恰恰是變化本身。我們使用的技術在變,軟件領域的實踐方法在變,我們所做的項目在變,公司的組織架構在變,我們自己的職位和角色在變,當然還有我們的老板也如走馬燈般換來換去。
作為程序員,我們又應該如何應對這些變化呢?我想說,你很難去改變所處的環境,或是阻擋那些變化的大趨勢。你所能做的恰恰是培養自己持續學習的能力。在我之前的文章里,曾多次提到過10,000小時定律——要成為一個領域的專家一定要花費10,000小時以上的時間,而對于程序員來說,所謂的100小時定率同樣重要——花100小時學習或修煉一門新的技術,往往就能超過一般人很多。你需要提升自己快速學習的能力,當你學得越多,往往就能夠學得越快,因為知識之間總是存在關聯性的。慢慢地,你會發現自己能夠非常從容地面對那些不斷出現的變化,甚至可以提前預判趨勢,當機會來臨時,總能成為那個有準備的人。
你的聲譽非常重要
聲譽對于一個程序員來說非常重要。我看到的那些優秀的程序員都有一個共同點,那就是他們在團隊和公司內部都有著良好的聲譽,而這幫助他們的職業生涯取得一個又一個迭代式的發展。而反觀那些缺乏聲譽的程序員,往往會進入到一系列的惡性循環之中,很難在公司中獲得發展,最終往往只能選擇跳槽。
聲譽本身與很多方面有關,但對于年輕程序員或是剛剛畢業的菜鳥來說,除了那些經常掛在嘴邊的誠實守信、踏實肯干等等之外,有一點特別重要,那便是嚴謹。因為它往往能夠成為判斷一個程序員是否具備優秀潛質的重要因素。嚴謹的程序員對于分配給自己的任務會認真理解,對于自己的產出會仔細檢查,這些都能大大減少工作中的出錯概率,給團隊或公司中的其他人留下良好的印象。你可能需要很長的時間來建立自己的聲譽,而一次因不夠嚴謹所導致的錯誤,就可能讓你徹底失去它。養成嚴謹的習慣,將使你從中受益。
理解溝通的意義
剛成為一名程序員時,我認為技術就是一切,只要能夠快速開發出高質量的程序,我就會有一種滿足感。因此,我很排斥與用戶溝通,對那些需求討論也很是敷衍,一心想著盡快進入開發階段。而這樣做的結果往往適得其反,用戶并不認可我對系統的設計,我也時常被要求返工,這使得我的工作效率變得很低,心情也因此一度非常低落。
改變源于我對溝通意義的重新認識,其實我們所開發的所有功能都是為了解決某些問題,或為用戶提供特定的工具。當我們沒有對問題有深入理解的時候,我們很難寫出正確的程序來,因此我們需要向用戶虛心求教,去真正理解他們所希望解決的問題,同樣,如果我們已經是某一方面的專家,我們也有責任去引導最終用戶接受我們提出的專業方案或設計。我想這才是我們需要更好地與用戶或其他關聯方溝通的目的吧。
你的右腦將是你成功的關鍵
在我之前寫的每個程序員都應該知道的一件事中,談到那些我們眼中非常成功的技術大牛、IT高管都會出人意料地將一些非技術能力作為自己獲得成功的關鍵,比如編寫文檔或做PPT的能力,演講的能力,說服他人的能力等等。我雖然并不完全贊同最優秀的程序員不寫代碼這種觀點,但我確信你的右腦將是決定你能否成功的關鍵。
我所能感受到的最近一次較大的提升,恰恰來自于自學設計。并不是說我的設計能力達到了什么程度,而是當我學會以一個設計者的角度去分析和解決問題時,我的思路得到了很好的擴展,這使得我既可以用左腦來想出那些技術方案,也可以用右腦來為用戶提供更人性化和具備良好用戶體驗的設計方案。
你可能會問,我是一名程序員,我該如何鍛煉我的右腦呢?是不是一定要學習設計或者一門樂器之類呢?完全不需要,在工作中你就可以找到很多途徑來提升你運用右腦的能力。比如,在你編寫一個文檔或PPT時,除了內容之外,能否再多考慮一下字體和排版,讓人讀起來更加舒服呢?在你與用戶討論需求時,能否嘗試著從程序員思維轉換到用戶的角度來看待問題呢?在團隊內部開會時,是否能提前做些準備,多爭取在大家面前進行講演的機會呢?當你持續這么去做以后,你會發現自己在各個方面都變得越來越好,這其中也包括了你的編程能力。因為,它們總是在你看不見的地方互相作用和促進的。
不要輕易說簡單或不可能
初入職場的年輕程序員往往不注意自己的表達,這當然是一種率真的表現,但有時候卻可能會給你減分。記得這還是08年,公司通過校招吸收了一批應屆畢業生,其中有10個被分配到了我所在的部門。其中有一個男孩學東西很快,性格也很開朗,因此顯得特別突出,我們也都認為他是這一批應屆生中天資最好的。在一次部門會議上,部門領導有意識地詢問每一個人,對于一些系統改造的建議和看法,而這個男孩在回答時多次用到了“XXXX很簡單“,”XXXX不可能實現“,這樣的表達。雖然我們都知道他沒有任何惡意,但很明顯他的這些看上去有些草率的回答是不恰當的,這也使他在部門領導那里的印象分打了一個大大的折扣,導致了后面的一些不必要的麻煩。
我舉上面這個例子并不是希望大家變得非常世故,而是提醒年輕程序員們不應該輕易作出那些過于絕對的判斷,盡可能去使用科學的方法進行分析和論證,然后用不易被人誤解的方式進行有效地表達,這樣你提出的觀點才能讓大家感到信服。
你不應該成為一匹獨狼
很多程序員會訴苦說他們遇到的產品經理、PM、設計師、用戶甚至是其他程序員有多么地爛,與他們一起工作簡直像是與一群蚊子在一個房間里搏斗一般,讓人感到抓狂,他們更希望能夠一個人安安心心地編程。當你是一名初級程序員時,你的工作可能會比較單純——編程。然而,隨著你能力和職位的提升,你會被賦予團隊中更加重要的角色,比如架構師、團隊負責人、項目經理等等。
如果你真的希望做出一些具有影響力的東西,光靠個人是很難實現的。你需要和團隊中不同角色的人進行合作,有時候你需要說服別人,有時候你則會被別人說服,在這期間,你可能會因為被否定,而受到挫折,這種感受讓程序員們有一種挫敗感,但這卻是你成長的機會。不要做一匹獨狼,學會在團隊中協作,并盡可能讓優秀的人圍繞在你身邊,這將擴展你的能力范圍,讓你變得更加強大。
你的能力顯而易見
我在前一家公司擔任架構師時,經常參與公司的人員招聘和年底的人員技能考核。關于如何招到一名優秀的程序員,我之前已經寫過文章,這里就不詳述了,而對于個人能力的評判,我想說你的能力是顯而易見的,而這完全來源于你自身的努力。
那些優秀的程序員無時無刻都在體現他們的能力,從輕松地解決技術難題,到會議上提出被一致認可的解決方案,以及他們寫出的那些優雅且完善的代碼,這些都讓他們顯得與眾不同,仿佛是天生的優秀程序員。但我想說,他們其實都是那些努力并使用了正確方法的人。程序員的能力來自于大量的編碼實踐,以及持續學習的能力和勤于思考的習慣。任何自作聰明,不懂裝懂以及投機取巧在明眼人看來都只會是東施效顰,顯得如此微不足道。
以上這些是我今天感受到并記錄下來的東西,有些你可能覺得有所啟發,而另一些則不以為然。但我相信在閱讀的過程中,你一定會思考并得到了自己的答案,堅信那些你所堅信的東西,你會變得越來越好。
簡書簽約作者:技匠,以上內容歡迎大家分享到朋友圈/微博等。