程序員進階之道(一)

最近一個月都在在大廠華爲出差跟進項目,工作一直是996或者997,所以最近一個月沒怎麼更新文章。
週末抽點時間,爭取把耽誤的,想寫的文章儘快補上。

我本身做開發很多年,也算是一個資深的程序員。同時工作中也接觸了很多的程序員,有優秀的,也有平庸的,接觸下來,發現但凡優秀的程序員,都有很多優秀的通用特質。
所以想寫一個系列的文章,講講程序員的進階之路。

本篇是第一篇,本篇文章主要從程序員的思維模式和心態來講述初級程序員的進階之道。如果你想成爲一個優秀的程序員,可以參考其中對你有價值的東西。爲啥把思維模式和心態放到首篇呢,因爲我覺得思維模式和心態是決定一個人成長最主要的因素。

閉環思維

閉環思維體現了一個人的責任心和職業素養。你接受到一個任務,不只是完成代碼這麼簡單。而是需要推進整個任務的最終完成。比如你完成了任務,應該轉測,並主動給測試人員留下測試方案。
遇到一些開發能力還算不錯程序員,但是在閉環思維方面很差。很多時候就是完成了代碼編寫,就溜之大吉。不對基本的結果負責,甚至不做基本的自我測試或者單元測試。
領導交給你任務,你完成了,或者階段性完成了,需要主動向領導彙報,或者定期寫進度報告,或者在管理系統提交你的進度報告,這也是閉合思維的一個體現。也是靠譜的一種表現。
實際工作中,遇到的各種麻煩可能遠遠超過你的預期。你會遇到很多人,很多公司,很多項目。其中遇到的問題,林林總總。很多時候難題可能不是技術本身層面的,還涉及到不同的流程協調層面的。
有的時候,除了完成自己手上的工作,你還的去驅動和其他人的集成對接工作。比如有的大型項目,涉及到多個部門甚至多個公司的研發團隊。此時的各種對接流程未必那麼完善和自動化,這個時候閉合思維顯得尤爲重要。
比如A部門(公司)負責前端部分,B部門(公司)負責後端部分。前端開發完成了,就得主動去驅動前端和後端的集成和對接;並且要主動驅動後續的測試。而不是開發完成了,然後以甩手不管,領導或者客戶來諮詢的時候,卻一臉無辜的說:已經開發完成了呀。
總之,所謂的閉環思維就是,對最終結果負責。就是盡最大努力,得到領導和客戶想要的結果。

不要逃避難點

遇到困難時的態度,決定了你技術之路的高度。
遇到一些還算聰明的人,平時開發的時候,技術都還不錯,開發效率和質量也還可以。但是一旦遇到技術難題,就會選擇逃避。這其實是放棄了提升自己的機會。
你遇到難題的時候,說明你已經在某個方面開始深入了,此時如果你堅持下去,不要放棄難點,就會真正的深入。只要你堅持,你的思維能力和某個方面的專業性一定會大大的提高。等你上升一個臺階之後,再回過頭來看你曾經覺得難的問題,就會發現已經變得簡單。
怕的就是你泛泛的學,都不深入。遇到難題就逃避,這樣你永遠都可能在門檻外面。
說一句雞湯的話就是:遇到了坑就繞過,你的人生就全是坑。遇到坑你就去填坑,你的人生路可能會越來越平順。
說說我的經驗,我一般遇到難題,如果暫時不能解決。我就會把它加入到TODO List,同時在腦中把它加入到ToThink List(待思考的問題列表)。只要空閒的時候,我就會投入時間來思索。有很多問題,我都是在上下班的路上想出來的。比如 大數據量繪製,2.5D解決方案等(後續我可能會寫一篇2.5D誕生錄的文章)。
要相信絕大多數你遇到難題,只要你對其抱有熱情,不放棄,不斷的思索,相信就總有找到解決方案的時候。
這世上沒有舉手可得的星辰,也沒有一蹴而就的成就。

上面提到了一個詞:”熱情“。 經過這麼多年的研發生涯,我發現,一個人能達到的高度,與智商、天賦的關係其實沒有人們想象的那麼大,決定因素反而是對一件事情的持續的熱情,信心和決心。 這一點我願和大家共勉之。

不要抱怨

養成抱怨的習慣很有害。complain makes you weak。抱怨和情緒不能解決任何問題,只能讓你變弱。抱怨浪費你的時間,情緒消耗你的能量,並讓你不能正視問題。

有的人偶爾抱怨一下,還可以理解,畢竟我們很多人都是普通人,當然你可以挑戰自己,永遠不抱怨,不過難度很大,在此並不想灌永不抱怨的雞湯。但是如果抱怨多了,而且不能夠及時調整自己的心態改變自己,讓抱怨成了一種習慣性的大腦反饋,那麼你就會變得讓人討厭,當然也不會得到上司的喜歡。從我個人的角度來說,如果一個員工偶爾向我抱怨,我可以接受,並且認同其中的一些傾訴,理解一些客觀的困難和不公平,並想辦法去消除這些客觀的因素。但是如果一個員工就某個事情,總是抱怨,或者說習慣性抱怨,我一定認爲就是這個員工自己的問題。

抱怨是一種情緒,而且是一種有害的負面情緒。管理不好自己的情緒,就一定管理不好自己的工作。管理不好自己的負面情緒,就一定管理不好自己的工作,是一個人不成熟的表現,絕不會被提拔重用,這是很多上司的共識。因此要想樹立自己成熟,穩重和值得信賴的個人形象,就要從避免個人情緒化外露開始着手。

當你想要抱怨的時候,冷靜下來,問問自己,抱怨可以最終解決問題嗎。 如果是答案是NO,那麼請放下抱怨。積極面對問題和不公平,事實上當你放棄抱怨,做出積極的努力的時候,你會發現你的大腦會更加快樂,而且在你積極面對的時候,一定會給你自己帶來提升。

學會say no的正確姿勢

我不會給大家灌輸 never say no的雞湯。 因爲有的事情,在有限的條件下,確實是沒法達成結果的。
但是,大家還是要養成正確的say no的姿勢。先看看什麼樣的姿勢是錯誤的,以下是常見的錯誤姿勢:
”這個方案技術沒法實現“,恩,技術沒法實現,多麼熟悉的聲音。
”這個時間點肯定不能交付“,恩,確實沒法交付,我們都懂。
”對不起,你的需求超綱了,不做“。如果你做過項目,就會懂得客戶的需求就沒有不超綱的,各種條款限制都沒有用的。
上面的所有的say no,問題在於,都是直接否定,態度太過強硬,完全沒有商量的餘地。 這一定會讓產品經理,或者領導,或者客戶很不爽。
那麼以上問題,正確的say no姿勢是怎麼樣的呢?
第一條,這個方案技術沒法實現。stop,先停止你的習慣性拒絕吧。首先想一想,真的是沒法實現嗎。或許你不用一種輕易拒絕的心態,積極思考,就能想到好的實現方式。此時你不需要say no。
還是沒想到實現方法?或許並不是不可以實現,只是你不知道如何實現,或者應該說,是你暫時不知道如何實現。這個時候你的say no 應該是:
”這個方案我暫時還沒有想到解決方案,我需要下去研究一下,所以我還不確定是否可以實現“ 這兒的關鍵就在於,你沒有直接拒絕對方(可能是產品經理,領導或者客戶),會讓對方覺得舒服很多;同時,你也沒有拒絕掉你自己的成長之路,因爲你真的應該下來好好摸索一番。在筆者看來,很多不能實現的問題,絕大多數時間是可以找到解決方案的。
如果最終發現確實沒法實現,但是你經過了前面的探索,也可以說明白真正的理由是什麼,真正的困難點在哪裏。同時,你可以提出變通的方案爲最佳。
第二條,”這個時間點沒法交付“。確實,時間太緊,沒法交付。但是態度還是太生硬。對方也未必瞭解真正的工作量,你此時最好是列出工作量,並說明能夠交付的部分。相信大部分人都會做出妥協和退讓,並不會死摳不放。
第三條,”對不起,你的需求超綱了,不做“。恩,理解你,前面就說了,客戶(產品經理)的需求就沒有不超綱的。 但是,你如果直接說不做,會讓客戶很難看。結果就是可能在後面的交付給你製造麻煩。事實上,你應該仔細去了解和傾聽客戶需求,瞭解客戶的真正的需求和痛點所在。如果真的存在痛點,而工作量不太大的情況下,就請幫忙改了吧。如果工作量太大,可以考慮讓公司有關部門協商,有償增加需求。請珍惜客戶的痛點,因爲這是你的價值機會。

可能還會有其他的情況,總之,say no的態度不能太硬。另外,確實不要輕易直接拒絕,多研究研究再說。更不能養成慣性say no的習慣,在我看來,習慣性say no就把say no變成了你懶惰或者無能的藉口。

技術自信力

我從事開發工作10多年,期間也做出了一丁點業績。如果說這些年開發工作,對我帶來了什麼改變的話,我想有一個很重要的點,就是技術自信力。什麼叫技術自信力,這其實我自己創造的一個詞。啥意思呢,我相信技術能夠解決99.9的需求,只要你願意去鑽研和研究,這就是技術自信力。當然不是盲目自信,類似讓你造火箭這樣的需求,你應該還是需要有自知之明。問題是,很多時候,不會真有這種需求吧。這也是前面一條所強調的,不要輕易say no的原因。
希望每個程序員都有這種技術自信力。
最近讀了心理學家卡羅爾·德韋克的經典作品《終身成長》。裏面說到了人的兩種思維模式,成長性思維模式和固定性思維模式。固定型思維模式中,成功來源於事情的結果,能夠證明自己的天賦和能力。而成長型思維模式中,成功來源於儘自己最大努力做事,來源於學習和自我提高。
建議有興趣的讀者,可以去讀一讀這本書,很有啓發。
如果你是一個擁有技術自信力的程序員,說明你是成長性思維模式。這種思維模式將終身影響你的成長。

重視思考

孔聖人都說過,學而不思則罔,思而不學則殆。一個不願意思考的程序員是沒有前途的。不論你多麼的忙,都需要留下時間思考。 因爲思考可以讓你在紛繁瑣碎的日常工作中,找到自己成長上升的階梯。
有這麼一句話,不要用戰術上的努力,掩蓋戰略上的懶惰。 懶於思考,其實就是戰略上的懶惰, 勤于思考,就是一種戰略上的努力。
對於程序員來說,可以有很多思考的東西。
比如對於已經做過的東西,進行復盤,可以思考哪些地方我們做的好,哪些地方我們可以改進,應該如何改進。工具、效率、代碼質量和規範。
對於我們暫時沒有做出來的東西,不斷反思,應該如何才能做到。
做的項目多了,寫的代碼多了,我們可以考慮歸納,總結,提取有價值的東西。把常用的功能封裝成工具庫,工具函數。進而提高我們的工作效率,也是一個沉澱的過程。
把類似的東西,經過抽象,形成更加通用的產品。事實上,很多著名的開源庫/框架,相信都是通過抽象加工,開發出來的。
還有就是,能否對於一些問題,思索出一些創造性的解決方案。
思考的過程,可以提升我們的思維能力,提升我們的認知和能力。
如果你不會思考,每天機械似的幹着同樣重複的工作,就不能怪別人叫你碼農。更要命的是,你得不到成長。

做好終身學習的準備

如果想成爲一個優秀的程序員,就必須做好終身學習的準備。因爲這個世界爲程序員準備了太多需要學習的東西,多到這輩子都學不完。
不過我發現絕大多數程序員都是愛學習的,所以此點,我不打算多做表述。不過我想要說的一點是,請務必享受學習的過程,而不是痛苦的去學習,因爲這不是長久之道。

接受平凡的事情

很多人對很多事都是這樣:剛開始的時候充滿了熱情,雞血滿滿,但是隨着時間的推移,這種熱情就會淡去。我們對於自己看似熟練的東西,再也提不起來興趣。技術也想像圍城,你總是這山望着那山高,總是討厭當下的境地,而嚮往所謂的讓人仰止的高山,因爲那總是讓自己激動,可是或許也就僅僅停留在內心的激動。只是就算你到了另外一座高山,它終究也會變成你討厭的當下。

很多人學習新知識的熱情很高,卻對於工作中遇到的問題視而不見,不聞不問。其實你要知道,在職場上,你的價值在於你能夠解決多少問題,而不是學會了 多少門新的技術。 當然我不是讓大家不要學習,而是要大家先把本職工作做好的基礎上再去學習新的東西,如果本職工作一大堆問題你置之不理,而饒有興趣的去淺嘗輒止的學習新的東西,就是本末倒置。

能堅守平凡的人,才能不凡。因爲任何事情,都終究變得平凡而瑣碎。你再喜歡的女神,終究也會容顏老去。
我們總是羨慕那些大牛們,他們有豐富的學識,有高超的技藝,有不凡的魅力。 只是你不知道,大牛的今天,是無數個默默付出的夜晚、無數個敲擊鍵盤的清晨累計而來的。他們不曾放棄過任何一個當下的問題,永遠能夠在變得枯燥的日常中找尋到新的樂趣、能夠在當下的平凡中探索出不凡之路。
對每一行代碼的執着,對每一個問題的深入探索,終究是你我都需要經歷的。
相信我,你的快速成長可以來自於平凡而瑣碎的工作,來自於你對司空見慣的代碼的優化、對日常的每個問題的執着的探索、對於難點的苦苦思索。

臨淵羨魚,不如退而結網,而很多人選擇了退而卻步。希望你能夠沉下心來,好好的解決好當下的問題。我們要做的就是堅持不懈的履履而行。
正如保羅.柯艾略的《朝聖》一書所言,超凡之境恰在平凡之路上,願以此與諸君共勉。

歡迎關注公衆號“ITman彪叔”。彪叔,擁有10多年開發經驗,現任公司系統架構師、技術總監、技術培訓師、職業規劃師。熟悉Java、JavaScript。在計算機圖形學、WebGL、前端可視化方面有深入研究。對程序員思維能力訓練和培訓、程序員職業規劃和程序員理財投資有濃厚興趣。

ITman彪叔公衆號

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