1. 程式人生 > >程式設計師成長的10個階段

程式設計師成長的10個階段

第一階段,最初是在學校裡學習計算機基礎知識,學習經典的程式設計語言,編寫測試用的小程式。這個過程可以說是對計算機和程式設計的入門階段。這個階段主要是培養了自己對計算機軟體的興趣,打下了良好的計算機基礎知識。 


第二階段,而後參加工作,從事計算機軟體開發工作。按照工作要求,一邊學習,一邊程式設計,終於可以讓自己的程式投入運行了。在這個階段我突然感覺到了自己的價值,感覺到了軟體的神奇,並且自己編寫的軟體成為了實用產品。這個階段實現了學習到生產的過渡。 


第三階段,隨著工作的增加,開始編寫各種程式,開發各種系統,這時候忙於程式設計知識的積累和應用。應該說在這個階段自我感覺很充實,好像有做不完的事,程式設計水平還處在語言級階段。


第四階段,隨著積累了一定程式設計技巧之後,我開始想這樣的問題:我是不是最好的程式設計師?我能否編寫出最好的程式?這個過程是一個反思的階段。我對自己的要求是:不但要會程式設計序,而且要編好程式,從關注程式數量開始轉向關注程式質量。 


第五階段,開始在提高自己的軟體開發水平上做文章。經過各種系統開發,尤其是大型系統的開發,發現了軟體中有許多功能是重複的。因此,有一段時間把精力花在編制各種庫函式上,通過不同系統呼叫相同的函式,以便減少重複開發,實現功能共享。當時比較得意的是庫函式不是我一個人在呼叫,而是整個專案小組都在呼叫,甚至不同的系統也能呼叫,從而體會到編寫庫函式特別有價值。這個階段的標誌是庫函式,程式設計師水平上升到庫函式那一級。 


第六階段,到了庫函式那一級後,很快就發現,單單實現程式函式級的呼叫是遠遠不夠的。當你做了很多專案,包括大專案和小專案,尤其是做過跨行業的專案之後,你就會把庫函式的共享思想用於專案開發。你就會想這樣一個問題:為什麼不同專案不能有相同的架構?如果有相同的架構,那麼開發就有了相對的標準,我們就有可能通過配置的方法實現相同架構的系統。於是我提出了IASG(互動式軟體自動生成器)思想,並在C語言和其他一些語言中實現了IASG例項。記得最快的一次是編寫一個系統(公安部門的自行車資訊管理系統,主要用於丟失自行車資訊登記)只用了3個小時(從需求到安裝盤)。這個事情對我影響很大。我在這個階段上升了一個很大的臺階,從程式上升到軟體。核心思想就從庫函式共享上升到軟體共享。具體過程是建立一個通用的系統架構,架構中有許多共同的功能,例如,引數設定、使用者許可權管理、庫表管理等。另外還提供資訊建立查詢開發模板,通過配置和特殊功能的編制就能很快完成了一個系統的開發。現在想起來IASG距離我已經有20年了。 






第七階段,到了IASG階段後,我發現無論技術如何提高,都無法改變開發落後於需求的現實。通俗地說就是:程式設計師水平再高,僅僅是拉車水平高,但是,應該在什麼路上拉車程式設計師並不知道。如果這條路是一條光明的路,則程式設計師越拉越有勁,有前途;如果這是一條死衚衕,則程式設計師白費工夫;如果這是一條漫長的路,前途不明,則程式設計師可能要累倒在路上。現實中程式設計師水平低、收入低;系統需求不明確,系統開發週期一拖再拖;系統重複開發多,資訊甚至不能在一個企業內實現共享,更不用說在企業之間、行業之間實現共享了;各種企業級的軟體 ERP、CRM、BI層出不窮,也沒有哪個能滿足中國的市場;各種新技術、新概念不斷出現,卻沒有哪種技術或概念能真正發揮其內在價值,最終還是處於被學習、被運用的階段。 這個過程是程式設計師脫離技術本身,開始思索、開始求源的階段。在這個階段的程式設計師的思想有了質的飛躍。以前光拉車不看路,現在要擡頭看路了。 


第八階段,有了擡頭看路的想法,於是我踏上尋路征程。我首先弄明白了我們腳下的路是什麼樣的,為什麼這條路那麼不平坦、不寬廣。從軟體生命週期來看,軟體主要由使用者需求發起,使用者需求是軟體生存的根本理由。由於企業、使用者的不同而導致不同的需求——大量的無序的需求,這種需求驅動方式必然造成了我前面介紹的各種現象。這個階段是尋找根源的階段。只要我們找到了根源,就可以有機會解決問題。這個過程相對來說比較困難,這不僅需要程式設計技術,還需要很多方面的知識。若要了解這個根源,就迫使你學習和積累更多程式以外的知識。 


第九階段,當我找到軟體是需求驅動方式之後,就開始考慮什麼是使用者需求?使用者為什麼要提出這些需求?我們可以更深入地分析使用者需求產生的根源,我們能否讓無序需求變成有序需求呢?當然針對這些問題我們都進行了深入分析,其過程也很難在這裡展開說明。我只能說,最後結論是使用者的需求來源於企業的經營。很多人思考問題還是就需求而論,並沒有站在企業經營角度去考慮問題。千萬不要小看這個變化,這個變化最終會產生一個理論。於是我們儘可能地站在企業經營角度看待企業經營方式、企業管理、企業資訊化等。但是,我們最終要解決企業經營這個概念問題,如果我們都不能明確企業經營這個概念,或者我們不能科學地定義企業經營這個概念,那一切基於企業經營的各種具體現象就如同無本之源一樣無序氾濫。就像ERP、CRM等所謂企業資訊化產品一樣,由於沒有一個企業經營定義的支撐,只能就企業經營的某個方面提出解決方案。這些產品不缺乏需求的支援,缺乏的是最基本的企業經營定義的支援。而這個概念就是EOM。 EOM是從定義企業經營角度入手,把我們今後要開展的各種研究和開發活動都放在一個理論可支援的基礎上。只有定義了企業經營之後,我們才有可能分析我們需要什麼軟體,我們的軟體採用什麼技術才能實現企業經營的目標。而程式設計師則通過EOM瞭解到企業經營需要什麼樣的軟體,這個軟體有多大的價值,這個軟體採用什麼技術才能實現,自己要提高哪方面的技術水平才能獲得更大的價值。 這個過程就是EOM階段,通過EOM瞭解軟體的根源和有價值的軟體所在,進而選擇自己未來的方向。 


第十階段,當我建立了EOM之後,便開始了EOM實現階段。這個實現階段分為兩部分,通過這兩部分的結合,我們就可以逐步看到EOM軟體產品的例項,看到EOM的真正價值。 


第一部分是EOM的業務實現。當我們明確了EOM之後,就可以根據EOM來重新規劃企業資訊化的整體架構,可以細分這個架構中的各種平臺產品、通用產品、專業產品,可以細分出這個架構實現的各種技術架構和實現手段,可以細分出這個架構中的各種標準功能和標準資訊。通過這樣的分析,我們的程式設計師就可以根據自己的特長和愛好以及價值的判斷來選擇其中的軟體產品和技術。在明確目標和方向的情形下,通過自己的努力,不斷提高自己的各種技能水平,讓自己的價值和企業經營價值有機地結合在一起,從而實現自己的理想。 


第二部分是EOM的技術實現。有了EOM並根據EOM理論構建企業資訊化的架構後,我們就必須從技術上實現這個架構,否則這個架構將永遠停留在理論階段,不具有可行性。我們可以採用現有的各種技術來實現這個架構,但是,現有的技術都是基於原有的業務需求而建立和發展的,它適用於原來的應用物件。目前的EOM是一個全新的企業經營理念,因此,我們必須建立一種新的軟體架構來適應和最好地實現這個理念。幸運的是,我們找到了稱作NSS(New Software Structure)軟體新架構的技術,該技術體現了適應企業經營發展方向,將軟體合理分層,用最新的軟體技術按照架構的方式規範軟體開發的模式,可以實現最大範圍的功能共享,實現軟體的可擴充套件性。 這個階段可以讓程式設計師在軟體產品業務設計或軟體產品技術實現上等多個方面進行深入鑽研,並且成為領域專家。這和我們平時涉及的簡單的需求分析和簡單的技術實現有著本質區別。 


從我的程式設計師經歷可以看出,程式設計師的成長是無止境的,只要有的放矢地努力,就會一步步登高向上。我認為程式設計師成長經歷主要有三大階段,即通用技術階段、市場階段、專業技術階段。 1)通用技術階段是程式設計師專注程式設計水平提高的階段,也就是說“只拉車不看路”階段。這個程式設計師能做的事情那個程式設計師也能做,程式設計師的替代性很強,程式設計師市場價值相對較低,程式設計師只關注程式設計技術本身。 2)市場階段是程式設計師跳離技術層面開始考慮為什麼要開發這個軟體,這個軟體有什麼價值的階段,通過求軟體之源來重新認知自己的方向。 3)專用技術階段是程式設計師認知了這個軟體和技術有很大的市場價值,全身心投入到這個領域中去,並在這個領域成為專家的階段。程式設計師不但要懂技術,更要懂得客戶業務,不同的程式設計師的技術和業務變得沒有可比性,這種稀缺性造就了程式設計師極大的價值。 這三個階段其實就是三個過程,每一個過程都是一次飛躍。


程式設計師知道自己可以飛多高,依靠的是程式設計師的學習和眼界;而程式設計師能飛到哪裡,那就要靠程式設計師自身的努力。一個程式設計師可以沒有能力,但是不可以沒有眼界。 

相關推薦

關於程式設計師的幾階段 轉,好的文章就要分享

因為和同事有約定再加上LZ自己也喜歡做完一件事之後進行總結,因此有了這篇文章。這篇文章大部分內容都是面向整個程式設計師群體的,當然因為LZ本身是做Java開發的,因此有一部分內容也是專門面向咱們Java程式設計師的。 簡單先說一下,LZ座標杭州,13屆本科畢業,算上年前在阿里巴巴B2B事業部的面

IT路要如何走?——老程式設計師10忠告(新手的程式設計師一定要知道)

        [1]好好規劃自己的路,不要跟著感覺走!根據個人的理想決策安排,絕大部分人並不指望成為什麼院士或教授,而是希望活得滋潤一些,爽一些。那麼,就需要慎重安排自己的軌跡。從哪個行業入手,逐漸對該行業深入瞭解,不要頻繁跳槽

java 關於程式設計師的幾階段

前言 因為和同事有約定再加上LZ自己也喜歡做完一件事之後進行總結,因此有了這篇文章。這篇文章大部分內容都是面向整個程式設計師群體的,當然因為LZ本身是做Java開發的,因此有一部分內容也是專門面向咱們Java程式設計師的。 簡單先說一下,LZ座標杭州,13屆本科畢業,算上

成為高階程式設計師10 步驟

What 軟體工程師的職業生涯要歷經以下幾個階段:初級、中級,最後才是高階。這篇文章主要是講如何通過 10 個步驟助你成為一名高階軟體工程師。 Why 得到更多的報酬!因為你的薪水會隨著你水平的提高而增加 提升你的職業生涯。成為了高階軟體工程師之後,就可以朝著

高效程式設計師10習慣

習慣一:對事不對人 習慣二:跟蹤變化 習慣三:讓設計指導而不是操縱開發 習慣四:提早實現自動化部署 習慣五:度量真實的進度 習慣六:用程式碼溝通 習慣七:編寫內聚的程式碼 習慣八:根據契約進行替換 習慣九:報告所有的異常 習慣十:做程式碼複查

程式設計師10人生感悟

1. 永遠會有學不完的東西 2. 讀書不是最重要的,生活中有太多的東西,遠遠不是100分能搞定的。 3. 如果你有好東西,先給別人,你會得到更多。 4. 人際關係可以理解為拉關係,也可以理解為良好的人際關係有助於溝通,有助於形成一個有效的團隊。 5. 如果你想要別人怎麼對

高效程式設計師10習慣之二 跟蹤變化

“軟體技術的變化如此之快,勢不可擋,這是它的本性。繼續用你熟悉的語言做你的老本行吧,你 不可能跟上技術變化的腳步。”  赫拉克利特說過:“唯有變化是永恆的。”歷史已經證明了這句 真理,在當今快速發展的IT時代尤其如此。你從事的是一項充滿激情且不停變化的工作。如果你畢業於

程式設計師成長10階段

第一階段,最初是在學校裡學習計算機基礎知識,學習經典的程式設計語言,編寫測試用的小程式。這個過程可以說是對計算機和程式設計的入門階段。這個階段主要是培養了自己對計算機軟體的興趣,打下了良好的計算機基礎知識。  第二階段,而後參加工作,從事計算機軟體開發工作。按照工作要求,一

程式設計師成長需要經歷那幾階段,都需要掌握哪些內容

對於程式設計師的成長,我們一半可以分為三個大的階段,一是初級(0到3年);二是中級(3到5年);三是高階(5年以上)。這其中不僅僅需要的是時間的錘鍊,還有技術上的提升。 ​ 階段一:初級階段。 這個階段的學習可能是科班出身的學生在本碩博階段完成的,也可能是半路出家的學生線上下IT教育培訓機

細說高階程式設計師的幾成長階段

軟體開發是一個奇怪的行業,市場遠遠供不應求。這是一個已經存在多年的問題,而且隨著時間的流逝,愈演愈烈。我們嚴重缺乏能夠滿足需求的人才。這個行業相當年輕。大多數軟體專案是失敗的。幾乎所有的專案都會超出預算。我們解決問題的最佳指導方針可以歸結為——“用一些通用方法去解決問題,當然

程式設計師成長曆程的四階段

本文轉自http://www.jianshu.com/p/6f25611c5032 階段一:不知道自己不知道(Unconscious incompetence) 大學期間,我和老師做過一些小專案,自認為自己很牛,當時還去過一些公司面試做兼職,但是就是不知道為什麼沒有回覆

總結程式設計師成長的幾階段的心態

程式設計師成長的幾個階段 題外話:堅持,堅持是一件非常了不起的事情,前段時間每天花點時間在學習python,學了一段時間後,被xposed打擾,這段時間專心研究xposed。差點荒廢了每天一篇python的偉大計劃,今天做這段時間的回顧,才撓頭:咦,pytho

一位程式設計師工作10年總結的13忠告

展望未來,總結過去10年的程式設計師生涯,給程式設計師小弟弟小妹妹們的一些總結性忠告。   走過的路,回憶起來是那麼曲折,把自己的一些心得體會分享給程式設計師兄弟姐妹們,雖然時代在變化,但是很可能你也會走我已經做過的10年的路程,有些心得體會你可以借鑑一下,覺得說得有道理的你就接納

程式設計師成長的四簡單技巧,你 get 了嗎?

最近拜讀了“阿里工程師的自我修養”手冊,12 位技術專家分享生涯感悟來幫助我們這些菜雞更好的成長,度過中年危機,我收穫頗多,其中有不少的方法技巧和我正在使用的,這讓我覺得我做的這些事情是對的,我走在了一條正確的道路上。我們程式設計師這個行業不像醫生、律師等其他行業,那些行業可謂是越老越吃香,但是我們不一樣,我

程式設計師的99實用時間管理技巧

下面給大家分享一套時間管理方法,日常工作生活中的**99個時間管理技巧**,方法很簡單、直白,但是確實有效。 1.周/日目標—(效率法)分解工作,完成定量即刻休息;納入不緊急但重要的事情 2.限定時間—(效率法)30~90分鐘的高度注意力集中,開始專注做了就可以專注 3.分解任務—

讀書筆記之《高效程式設計師的45習慣----敏捷開發之道》 摘錄

 讀書筆記之《高效程式設計師的45個習慣----敏捷開發之道》摘錄        此次原創的意思是指這個文章中的內容是由筆者從《高效程式設計師的45個習慣----敏捷開發之道》書中摘錄,而不是別人摘錄的,但是內容並非筆者原創,所摘錄的內容的

李開復給程式設計師的七建議(轉摘)

https://blog.csdn.net/fly8377/article/details/2060485 1.練內功。不要只花功夫學習各種流行的程式語言和工具,以及某些公司招聘廣告上要求的科目。要把資料結構、演算法、資料庫、作業系統原理、計算機體系結構、計算機網路、離散數學等基礎課程學

新入行程式設計師成長的一點思考

最近接觸剛畢業的學生比較多,本科生和研究生都有,總感覺他們現在和剛畢業的自己很像,一個人摸索,別人的建議只是建議,悟性似乎還沒有到那個境界,似乎必須經歷過,才能長大,難道成長有沒有捷徑? 先說說在做Android的幾個學生身上碰到的問題: 1、資料庫操作,db開啟後沒有關閉,cur

程式設計師教程-10章-C++程式設計

  本來這章是不打算寫了的,畢竟自己學的是JAVA,C++就不想看了,但畢竟還有一點時間,就把C++也看一下吧   目錄結構   10.1 C++程式基礎     10.1.1 資料型別       1 基本資料型別       2 常量和變數       3 複合資料型別       4 引用

程式設計師的十

歡迎使用Markdown編輯器 你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。 新的改變 我們對Markdown編輯器進行了一些功能拓展與語法支援,除了