作為程式設計師,設計師或者架構師,我們的目標都是:解決問題。
但有些問題是很複雜的,現從4個角度分析 :語法,演算法,設計,眼見。
眼見,和經驗關係很密切的部分。表現為:遇到現實問題如何思考。如:跨系統的事務完整性的保證。
設計,基於眼見,假設我們明確了某個問題需要注意的點。也許能將問題解決。但同時需要考慮到日後的維護公升級而做的準備。主要體現在一些設計原則,以及常用的設計方法(模式)的總結。
語法,某項具體技術的知識點。如jdk提供的api,mysql對應的關鍵字、函式等,是我們解決問題的直接執行者。
演算法,語法層對應的內部原理,讓我們更清楚對語法層的選擇的優劣。同時也為解決具體的問題提供思路。
對於要進步的我們,如何均衡4者的關係?
很明顯,沒有具體的語法作為支撐,直接去提高眼見是沒有支撐點,是不行的。同時,設計和演算法,也對眼見有較大的影響。
當然,終日只研究語法,固然能成為不錯的碼農,但很難昇華自己的水平。而只思索演算法,顯得過於理論化,除非你是搞數學或科研。語法、演算法相結合,和明顯可以讓想法落地。當然,要解決工作中、現實中的具體實際問題,還需要有眼見為我們開路,指明方向才行。如果想讓問題解決的更好,那麼就需要讓系統變得易維護性、可公升級,具有高可用性。
貌似4者相互關聯,如何尋求突破口,去提公升自己得能力呢?
基於以上分析,暫先給出乙個建議得方法:
從實踐中分析。
1、明確需求。思考問題、思考需求。
2、依據自身眼見,給出解決問題得思路,方案。
3、結合技術選型,依據初步的思路給出初步的設計方案。
4、綜合考慮語法、演算法,是否對所提設計有很好的支援。反過來影響設計和眼見給出的方案。
5、此過程可能需要不斷的迭代,具體的完美程度,受到資源(時間、每位參與者的技術能力)影響。
程式設計師如何保持進步
小範圍的選擇一些有用技術,透徹的學習它們,擁抱它們。然後不斷的擴充套件這個範圍。理解各種資料結構的優點和缺點,包括它們在記憶體中和在硬碟上的各自表現。理解各種演算法的優點和缺點。了解你的工作領域。關上電腦,去做你的使用者們在做的事。有準備,有願望,有能力在任何時候投入到多種技術層面中。你必須知道表象...
程式設計師如何保持持續的進步
1.小範圍的選擇一些有用技術,透徹的學習它們,擁抱它們。然後不斷的擴充套件這個範圍。2.理解各種資料結構的優點和缺點,包括它們在記憶體中和在硬碟上的各自表現。3.理解各種演算法的優點和缺點。4.了解你的工作領域。關上電腦,去做你的使用者們在做的事。5.有準備,有願望,有能力在任何時候投入到多種技術層...
程式設計師如何提高抽象能力
之前寫過一篇文章,講合格程式設計師應該具備的能力,你是合格的程式設計師嗎?合格程式設計師應該具備的12種能力。裡面提到了抽象能力,就我看來,抽象能力是軟體從業人員最應該具備的能力。因為軟體開發領域涉及到的概念太多。正如brooks所說,為了獲得概念完整性,需要我們具備很強的抽象能力,需要我們運用抽象...