本文為良少原創文章,遵循 CC 4.0 BY-SA 版權協議?
原文鏈接:https://blog.csdn.net/shendl/article/details/43835421
編程技能,指的程序員設計和編寫程序的能力,這是程序員的根本。接下來我們將按段位討論一下各段位程序員的特征。同學,對號入座一下,你現在在哪個段位啊?
0段--非程序員
初學編程者,遇到問題,完全是懵懵懂懂,不知道該怎么編程解決問題。也就是說,還是門外漢,還不能稱之為“程序員”。計算機在他面前還是一個神秘的黑匣子。
1段--基礎程序員。
學習過一段時間編程后,接到任務,可以編寫程序完成任務。
編寫出來的代碼,正常情況下是能夠工作的,但在實際運行中,碰到一些特殊條件就會出現各類BUG。也就是說,具備了開發Demo軟件的能力,但開發的軟件真正交付給客戶使用,恐怕會被客戶罵死
程序員程序是寫好了,但到底為什么它有時能正常工作,有時又不行,程序員自己也不知道。
運行中遇到了bug,或者需求改變,需要修改代碼或者添加代碼,很快程序就變得結構混亂,代碼膨脹,bug叢生。很快,就連最初的開發者自己也不愿意接手維護這個程序了。
2段--數據結構
經過一段時間的編程實踐后,程序員會認識到“數據結構+算法=程序”這一古訓的含義。他們會使用算法來解決問題。進而,他們會認識到,算法本質上是依附于數據結構的,好的數據結構一旦設計出來,那么好的算法也會應運而生。
設計錯誤的數據結構,不可能生長出好的算法。
3段--面向對象
再之后,程序員就會領略面向對象程序設計的強大威力。大多數現代編程語言都是支持面向對象的。
但并不是說,你使用面向對象編程語言編程,你用上了類,甚至繼承了類,你就是在寫面向對象的代碼了。
我曾經見過很多用Java,Python,Ruby寫的面向過程的代碼。
只有你掌握了接口,掌握了多態,掌握了類和類,對象和對象之間的關系,你才真正掌握了面向對象編程技術。
就算你用的是傳統的不支持面向對象的編程語言,只要你心中有“對象”,你依然可以開發出面向對象的程序。
4段--設計模式
曾經在網上看到這樣一句話:“沒有十萬行代碼量,就不要跟我談什么設計模式”,深以為然。
記得第一次看Gof的設計模式那本書的時候,發現雖然以前并不知道設計模式,但在實際編程過程中,其實還是自覺使用了一些設計模式。
設計模式是編程的客觀規律,不是誰發明的,而是一些早期的資深程序員首先發現的。
不用設計模式,你也可以寫出滿足需求的程序來。但是,一旦后續需求變化,那么你的程序沒有足夠的柔韌性,將難以為繼。而真實的程序,交付客戶后,一定會有進一步的需求反饋。而后續版本的開發,也一定會增加需求。這是程序員無法回避的現實。
5段--語言專家
經過一段時間的編程實踐,程序員對某一種常用的編程語言已經相當精通了。有些人還成了“語言律師”,擅長向其他程序員講解語言的用法和各種坑。
這一階段的程序員,常常是自己所用語言的忠實信徒,常在社區和論壇上和其他語言的使用者爭論哪一種語言是最好的編程語言。
他們認為自己所用的語言是世界上最好的編程語言,沒有之一。
他們認為,自己所用的編程語言適用于所有場景。他們眼中,只有錘子,因此會把所有任務都當成是釘子。
6段--多語言專家
這一個階段的程序員,因為工作關系,或者純粹是因為對技術的興趣,已經學習和掌握了好幾種編程語言。已經領略了不同編程語言不同的設計思路,對每種語言的長處和短處有了更多的了解。?
他們現在認為,編程語言并不是最重要的,編程語言不過是基本功而已。他們現在會根據不同的任務需求,或者不同的資源來選擇不同的編程語言來解決問題,不再會因為沒有使用某一種喜愛的編程語言開發而埋怨。
7段--架構設計
最后,還需要掌握架構設計的能力,才能設計出優秀的軟件。?
架構是一個博大精深的領域,也是很多程序員努力成長的方向,到達這一步已經不為具體環境所限,出于編程而超脫編程,從更宏觀的角度看待程序。
同學,看你那么能打,你現在編程技能幾段呢?歡迎留言討論~
敬請期待下一篇文章《程序員練級指標-同學你領域知識幾段啊?》
歡迎關注我的微信公眾號:沉思的猿某人 ID:xiaomageshuo,及時獲取最新分享