search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

突破程序員思維

在過去幾年中,政府和社會一直在努力使「Geek」再次酷起來。總統和總理提倡計算機程序設計成為學校課程的一部分。今天,除了政治,成為一個合格的程序員比以往任何時候都更具挑戰性。只是一個內向的天才不再合格。

過去我曾一直認為程序員是依靠他們的技術在編程,也是因為技術使得程序員的水平有高低之分,但隨著我寫代碼的時間越來越長,也接觸到更多的程序員,我漸漸發現程序員們其實是依靠他們所特有的程序員思維在進行編程的,而他們中的佼佼者正是那些有著更高思維成熟度的優秀程序員們。

什麼是程序員思維

那麼,什麼是程序員思維呢?我曾讀到過一些文章,試圖給它下一個明確的定義,比如,具備抽象和邏輯思維的能力,擁有面向對象編程和設計的能力等等。我對這些所謂定義有些不以為然,因為,我所體會的程序員思維更像是一種感覺,它是由常人的思維+編程思維,長期相互作用下產生的一種思維模式,它能夠幫助程序員快速找到以程序方式解決現實問題的最優解。

那麼,程序員們又是如何獲得這種思維的呢?我想說,從你學習編程並寫下你的第一個HelloWorld程序的時候,程序員思維就已經不知不覺地建立起來了,而隨著你不斷深入地學習與實踐,它也變得越來越完整和成熟。下面就是我認為對於提升程序員思維有所幫助的幾點建議,雖然不做展開,但相信每個程序員都會認同吧。

如何突破程序員思維

  • 長期不間斷的編程實踐

  • 持續地學習與借鑒(參考)

  • 學會反思,並像專家一樣思考

在成為架構師以及開始做IT管理之前,我也是一個完全用程序員思維去進行思考的人。但我通過一些方法逐漸突破了程序員思維,相信這些方法也能給你以啟發。

透過技術發現問題的本質

我時常會組織開發團隊做一些技術問題的討論,但當一個問題被拋出時,比如:用戶時常會在段時間內重複地點擊某一個功能,導致系統壓力的上升。團隊的大部分程序員都會很快給出他們的解決方案,比如增加流量閥的控制或在用戶會話中加入某些Token來防止用戶的頻繁重複提交等等。但幾乎很少有程序員會問,用戶為什麼會在短時間內頻繁點擊這個功能呢?是啊,解決問題的關鍵,往往不是如何通過技術手段禁止用戶這樣做,而是理解用戶這樣操作的原因,從而得出解決的辦法。

多年的開發工作,使程序員們不自覺地首先想到如何用技術手段去解決問題,然而,真正優秀的程序員一定善於透過技術發現問題的本質。我想這就是我們突破程序員思維的第一步,也是最容易實現的一步吧。而說到方法,我最常使用的便是,反覆地追問一件事的原因,比如剛才這個例子,最終我們找到原因可能是系統沒有給用戶一個友好的提示,導致用戶錯誤地認為系統並沒有處理他的請求,而嘗試反覆點擊。而我們的解決方案也與之前團隊程序員們所提出的完全不同,只需花上幾分鐘,給系統加上一句友好的提示就行了。

像專家一樣給出意見

我發現在很多場合下,比如與用戶溝通需求、與產品經理溝通方案時,程序員總是處於比較弱勢的一方。他們只是被動地去接受這些需求和方案,然後回去將它們轉換為代碼的實現。

而那些真正優秀的程序員在與用戶進行溝通時,總是試圖去理解用戶所提出需求背後的真正原因,因為,他們知道用戶往往會按照自己對問題的理解去給出他們認為正確的方案,而很多情況下,這並不是正確或最優的解決方案。優秀的程序員會站在用戶的角度,認清問題,並像專家一樣給出他們認為最優秀的方案。

如果你對一個問題有充分的理解,並具有足夠的信心,你就應該站出來像專家一樣給出自己的意見,這會讓你顯得與眾不同。而如果你每次提出的意見都被證明是正確的,那麼不需要多久,你也會被大家認同為是一名真正的專家了。

雜學並從中獲得不同的視角

要做到看清問題的本質和像專家一樣給出意見,其實並不簡單,這不僅需要你具備極強的技術功底,更需要你對問題所涉及的相關領域有足夠的認識。你必須通過大量地學習編程之外的各種知識來完善自己的知識體系,並從中獲得不同的視角。

我經常聽到程序員會抱怨用戶提的需求質量有多差,設計師做的設計根本無法實現等等。這其中一定有一些客觀的原因,但程序員無法跳出程序員思維,站在用戶或設計師的角度看待問題,也是一個重要的原因。

我在自學設計之後,獲得的不僅僅是一項技能,對我幫助更大的是自己能夠從一名設計師的角度來待看問題,這反過來也促進了我的編程能力的提升。同樣的,你也可以學習某個行業的知識,即使你無法成為這個領域的業務專家,但這些知識能夠幫助你更好地理解用戶的需求,從而得到更優秀的技術解決方案。這也是為什麼我總是鼓勵身邊的程序員們去嘗試學習除編程之外不同東西的原因。

找回創造力

雖然編程是一項腦力活動,但程序員們可能都知道,在大多數情況下這並不需要我們發揮創造力。也就是說,我們在按部就班地完成那些開發工作的同時,我們正在失去我們的創造力。

創造性地解決問題是優秀程序員所需要具備的能力,但我恰恰發現很多具有多年編程經驗的程序員,他們的思維卻好像受到了限制似的,只能憑著那些已經有些過時的經驗去給出他們的方案,而很難創造性地去解決問題。

其實,有很多方法都能讓我們找回創造力,關鍵是你是否願意堅持那樣去做。而我的方法也很簡單,每天進行閱讀,每周寫一篇博客記錄自己想到的東西。另外,我也有一本小本子用來記錄那些轉瞬即逝的想法,有些看起來是那麼不切實際,但我都把他們記錄下來,沒事的時候就去翻翻,這個過程中我可能會得到一些新的不錯的可行的點子,然後,我再嘗試著花些時間把它做出來。雖然,他們中的大部分都不會產生什麼價值,但我知道下一個優秀的創意或想法,可能就來自於它們。

突破程序員思維並不是要摒棄它,恰恰相反,突破正是建立在成熟的程序員思維之上的,這將幫助程序員以更全面的視角去思考和解決問題,同時也能為我們程序員這個職業創造出更多可能。

我們為什麼要突破程序員思維

既然程序員思維對程序員來說如此重要,我們又為什麼要突破它呢?在我看來,主要有以下一些原因:

  • 隨著技術的進步和專業領域的融合,程序員的職能正在不斷擴展,你一定也聽到過DevOps,全棧工程師,增長黑客這些詞吧,新一代的程序員不僅需要具備很強的編程能力,同時還需要具備從設計、運營、測試等各種不同角度去進行分析和判斷的能力。

  • 從程序員的發展角度來說,當你從一名程序員轉變為高級程序員、架構師、系統分析師、項目經理、產品經理的時候,需要你突破程序員思維,而從更人性化的角度去識別和解決問題。

  • 突破程序員思維對你的生活也會有所幫助,有很多過於技術的程序員,隨著編程時間的增加,他們會越來越不善與人溝通,甚至排斥與人交流。他們也往往無法扮演好自己在生活中的角色。

程序員思維對程序員來說是一把雙刃劍,它既能幫助程序員寫出優秀的代碼,去解決一個又一個複雜的問題,但有時候它也會阻礙程序員們的發展,成為進階路上過不去的一道坎。

有興趣的朋友可以加入群:230419550 一起來提升進步 備註好信息!注意沒有基礎或者說沒有工作經驗的盡量不要來阿里Java高級大牛直播講解知識點,分享知識,五大階段都是各位老師多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦