從super coder 如何到架構師

   爲什麼很多程序員寫了十多年程序,也做不了架構師?

   你覺得你對一門語言掌握得如何?可以如魚得水的實現各種苛刻的功能?還是可以不加思索的就動手寫代碼?還是各種偏方你都能在代碼中巧妙地使用?


   當一門語言的靈活性越高,實現的方式就越多,各種實現途徑之間的優劣差距就越大,C++就是這樣一門語言。而人的慣性思維就是用最熟悉、最不需要動腦筋的方式去實現所有功能,並且大部分coder討厭重寫自己非常熟悉的代碼,就像你討厭吃冷飯一樣痛苦。但完成了功能不代表永遠地可以不用再去回顧那些代碼了,因爲這對後面來維護代碼的人來說可能會重寫你的代碼N次,能寫出沒有必要重構的代碼那纔是好代碼。因爲很多項目在後期花了超過整個項目一半的時間修改bug或重構代碼。


   能使用一門語言高效的實現所有的功能,可以說很會寫程序,而且這種coder經常被人稱之爲"super coder", 但這個稱謂不見得就是真真的稱讚,也許深層意思是指你只會寫代碼,這個時候你就得小心了。應該暫停敲代碼,思考一下方法,以及在別人眼中你的代碼是O(1)還是O(n)。


   你也許就如上文所說的很會寫代碼,寫的代碼永遠只有自己看得懂,被深度重構的概率非常之高,我想這就是你不能做架構師的主要原因。有事沒事,回頭看看自己的代碼,有沒有必要從結構或設計上做優化,不要等到哪天別人打算重構你的代碼時才感覺沒有面子。


   能高效的實現功能,不一定就是技術精英,因爲你高效的原因只是因爲你用了固定的實現手段,節約了很多對設計上的思考。並且不是通用的設計方法或前人抽象出來開放模型,可以說是你的自己獨創的設計模式,至於好壞,你自己也沒有考察過。這種人放到上世紀九十年代那是絕對的super coder。但目前的軟件開發已經不再是一個人的戰鬥了,你寫的代碼就代表你這個人對外的一種交流方式。你是難以交流的人,還是容易交流的人,還是被學習的人。這都跟你的代碼給人的感覺有直接的關係。


   程序員往往注重的是功能實現沒有,架構師注重的是代碼複雜度、代碼重用性、代碼可維護性等上層要素,無關實現細節。如果你希望在不久的將要能從super code升級爲架構師,那從現在開始,你在完成功能的過程中,請多留些時間去思考系統結構、設計方式等。更加需要潛心研讀設計相關的理論知識,前人的總結是我們思考之依據。


   更沒有必要每次都得從鑽木取火開始做到打火機。即不要花太多時間去思考別人已經總結出來的經驗。不要把太多的時間花在如何實現雙向鏈表;如何實現一個Tree;如何安全的copy一個字符串等。這些思考應該是在你讀大學時就已經思考過了。要做架構師你需要思考的是更加抽象的層次。


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