標籤:

關於編程能力的思考

編程能力

在一次面試中與主管聊到了什麼是編程能力,這是一個值得思索和回味的話題。什麼才是一個程序員真正的編程能力?或者,非科班程序員與科班程序員相比差在哪裡?

作者認為,編程能力分為兩個方面:理論基礎和系統設計能力。在當前的技術水平上,繼續提高實力需要一「上"一"下":"上"是往宏觀方向走提高系統設計能力,「下」是往微觀方向深挖夯實基礎。

理論基礎

理論基礎是指程序員需要掌握的關於計算機和編程的基礎知識,包括計算機組成原理、操作系統原理、編譯原理、數據結構與演算法等。如果往機器學習、大數據、圖像識別領域發展,還需要掌握高等數學、線性代數、概率分析、離散數學等數學知識。

雖然工作中,絕大多數開發任務都不會用到太多基礎知識,但這些基礎知識作為根基,決定了一個程序員能否成為優秀的程序員。編程是一種抽象,程序是人類與計算機交流的載體,了解計算機才能更好地交流。數學是程序的基礎,擁有良好的數學功底才能設計出合理、高效的演算法去解決問題。

系統設計能力

系統設計能力是對問題進行抽象並設計出合理實現方案的能力。擁有良好的系統設計能力是成為軟體架構師的基本要求。雖然有很多成熟的框架可供程序員使用,如 spring、MyBatis、dubbo 等,但通用框架解決的是一類常見場景的抽象問題,工作中遇到具體需求仍然要求程序員自主設計。

系統設計的好壞直接影響項目的長遠發展。隨著業務的發展,對兼容性、並發性、可用性、擴展性、伸縮性等會有越來越高的要求。真正達到極限的時候,不可能推倒重來、不可能冒著風險進行大規模的重構,因此系統設計終將成為瓶頸,必須有好的程序員進行良好的設計才能支撐起不斷發展的業務規模。

流行的開源框架往往規模巨大,凝聚了很多優秀程序員的智慧,模塊劃分合理,擁有良好的架構設計、恰到好處的設計模式、安全高效的並發處理、值得學習的編程思路。深入研究開源框架能夠提供系統設計能力。

每周 3 篇學習筆記或技術總結,面向有一定基礎的 Java 程序員,內容涉及 Java 進階、虛擬機、MySQL、NoSQL、分散式計算、開源框架等多個領域。關注作者或微信公眾號 backend-develop 第一時間獲取最新內容。

關於編程能力的思考 | 後端開發那點事兒


推薦閱讀:

如何用nodejs開發爬蟲程序?
走迷宮——來做道題?
關於如何做好APP概要設計的一些想法
蕭井陌的直播筆記 - 打磚塊(1)

TAG:編程 |