程式設計師的4個能力水平和8個工作陋習,肯定有你哦
前言
在我十幾年的一線開發生涯里,我對寫程式碼的程式設計師再熟悉不過了,一個程式設計師的能力水平如何,看看他怎麼寫程式碼就知道了,在我看來,程式設計師基本上可以分為4個能力水平:線性級、邏輯級、架構級和工程級。
程式設計師在寫程式碼的過程中經常會出現一些陋習,包括我自己也是這樣一路跌跌撞撞過來的,有8個陋習很常見,今天來給大家說說,一起來看看你身上有沒有這種習慣!
線性級程式設計師的思維很簡單,寫程式的時候就像蓋房子似的,一塊磚一塊磚往上壘的,但是他不知道後面會壘成什麼樣,可能越壘越龐大,後面的程式碼組織、管理等會越來越混亂,最後導致後面的很多程式修改和維護很麻煩。
對於邏輯級程式設計師,已經掌握了一些演算法理論基礎,並且對於業務世界的邏輯有一個清楚的把握,能能夠撰寫出一些很好的模組和和函數,而且邏輯比較嚴密,bug比較少的這樣的一個狀態。
對於架構級程式設計師,因為除了對程式語言本身的了解和把握以外,還要對現實世界的所要解決的業務邏輯有一個清楚的把握和了解。
這樣的話才能夠對軟體進行架構和分層,然後指導團隊的其他成員來按照統一的目標來不斷的實現。
對於工程級程式設計師,因為本身軟體開發不僅僅是開發本身,這裡面還有很多其他的項目管理的要素在裡面。
比如說剛才提到的計劃、組織、管理和控制,如果有了一些項目管理的指導和原則的話,那麼對於一個軟體工程的過程管理就會有一個”一覽眾山小”的狀態。
根據以前的工作經驗呢,我覺得程式設計師身上的這些陋習是阻礙程式設計師進步的最大的一個障礙。
那麼首先程式設計師因為本身是一個腦力活動者,他那個是一個很重要的特性,就是非常自我。
很多時候就是說撰寫程式碼的時候,基本上是不願意去聽從別人的意見和建議的。
有的程式設計師很封閉,也就說它不夠開放。
如果是用一種開放和交流的心態來跟其他程式上來進行交互的話,那麼這樣的相互取得的促進效果會是非常明顯的。
有一些有經驗的程式設計師會有一些工作的慣性,經常會說”我以前是怎麼這麼做的”、「我以前是這樣這樣做的,我就覺得你現在這樣做的不對」…
其實這種慣性,也是阻礙溝通的一種很大的問題。
這是比較顯著的一類陋習,因為程式設計師整天面對電腦、只跟機器交互,所以說去跟其他產品經理和其他測試等等一些這些人去交流的時候,會有很明顯的溝通障礙。
這是最大的問題,就是說程式設計師經常一葉障目,只看到自己眼前的工作。
比如說有一些團隊協作開發的任務的時候呢,只依據自己為中心。那麼對於別人的一些請求,尤其有一些交互性的複雜的網路介面的開發的時候經常會下意識地去拒絕別人。
還有一個最重要的問題,就是說經常會把工作量估計漏完。
比如說拿到一個需求的時候,好,我一個星期就能完成結果,真正的實現的時候呢,發現需要花兩到三周乃至更長的時間來實現這項工作任務。
對於需求的變更來講的話,程式設計師的很大心態是有逆反心理的。
當我正在撰寫一個東西的時候,發現需求變更了,就會產生一種阻礙心態來拒絕變化。
但是拒絕變化的前提應該先進行客觀、合理的分析和判斷,最後再給出答案。其實它應該是要仔細衡量本身這個變化影響不影響我目前的軟體體系和架構?對我的工作量的增加有多大?這需要有一個好的估量來決定這個變化的取捨。
最後且最重要的一個問題,就是說很多時候我們是拒絕重構的,因為這個重構有些時候是很難取捨的一個問題。
比如說經常會想,哎呀我原來寫的這個軟體體系結構,跟後面的整個實現過程中,變化會越來越大,而且資訊學、新需求進來的時候呢,我就很難再保持一個良好的這樣的一個體系結構。那麼經常會糾結,我是重構呢還是按照這個原來的路敲敲打打呢?
是否重構其實是需要根據我實際性的。比如尤其我前幾個月寫的一個Android遊戲,我也是經常處於這種心態,我也在糾結到底重不重構的?後來一咬牙一閉眼還是重構了。
重構的話,前期可能會花費點時間,但是能夠在後期保證我這個軟體的目標實現,且擁有一個清晰、完整的架構和體系結構,並且後期會達到一個易於維護的這樣的一個狀態。
前面所說的這些工作陋習,其實是大多數程式設計師的天性,我們需要在工作中慢慢改進,首先需要意識到這是一個陋習,有意識地去不斷糾正自己,用一種很好的心態來避免這些問題的發生。