寫一些本身從作開發到如今一路走來所看到的種種。不知是否能幫助那些正處於起步或者半路迷茫的朋友。如下內容只表明我的觀點,有意義的能夠吸取,無趣的能夠拋棄。程序員
由於我一直在搞.NET俱樂部,並且咱們山西.NET俱樂部經營的還算不錯。500人的羣滿員了,再加人只有把那些不參與交流的朋友給請退了。 常常能在羣裏有正在從事開發者工做的朋友抱怨種種,最多的不外乎就是作爲程序員之後的前途問題。在聊天記錄中,多數朋友選擇轉行。這個狀況對於我這個作了近八年的開發者來說,有點難以想象。可能每一個人對於開發者的認識不一樣吧。所以,我想有必要分析一下咱們所在這個行業裏的各類角色,是否真的沒有前途呢?算法
1.職業及職責
(1)程序員:俱有較好的編碼能力,對各處算法及俱體細節技術熟練掌握。須要有必定的抽象、執行、抗壓、學習、總結等能力。程序員通常不會要求較高的溝通能力,可是如今社會,若是想要成長爲資深者,就須要表現本身,獲得別人的認同。那就須要有必定的寫做能力。編程
(2)分析師:清晰軟件業務,要精通行業領域,如醫藥、建材、×××等。俱有至關的溝通與描述能力,能夠將客戶的需求進行分析並能反饋給團隊其餘成員(項目經理、架構師等)。架構
(3)架構師:俱有至關的項目經驗,有較好的抽象能力和大局觀。可根據需求設計出整個系統的大框架。能夠設計出用例、UML及應用各類模式到框架中。架構師要對軟件的功能實現、延展、複用等負責。框架
(4)項目經理:軟件開發項目經理,須要負責項目計劃與里程碑的制定、執行、檢查。在這中間所涉及的東西較多,項目經理的管理範圍包括了整個項目進程中全部的人員與事務的管理(包括軟測)。因此項目經理要求較高:編碼能力、測試能力、溝通能力、執行能力、人員管理能力等等。也就是除了項目管理以外還要對人員進行管理。ide
(5)技術總監:負責技術管理團隊的建設與維護,團隊工做標準的制定與檢查,完成公司賦予的工做任務,爲公司創造價值。須要對軟件行業的前延技術有較多的瞭解,時刻把握軟件行業的趨勢。能根據這些信息,清晰的認清本身團隊現狀,而且合理的進行調整。相對於項目經理來說,技術總監更注重團隊人員的管理與技術執行標準的制定與檢查,還有新技術應用變革的時機等等。學習
2.養成流程圖:測試
3.作一些分析:
從圖中所看到的每一個職位都有俱體的一些能力要求,咱們每一個人首先要作的就是認清本身。看到本身短板,從而選擇本身應該走的程序員之路。有人說作爲程序員30歲之後精力就不夠了,我的認爲這是個笑話,寫程序真正靠的是積累。也許不善溝通和交流是性格形成的,咱們不適合去作分析或架構等工做,可是較好的學習力與積累會讓你成爲行業內的資深者,甚至成爲技術專家。this
請不要爲本身的不思進取找理由。人生在世須要不斷的學習,無論你跳到任何行業,都是須要新的學習。我有一個朋友原來一直從事開發,在06年的時候轉行去開了個店,後來由於地段很差關門了。據說最近好像又去賣藥了,俱體是否掙到多少錢咱們不討論,關健是難道在這個中間,他所要學的各類新的東西比繼續學習編程所花費的精力要少?怕是不見得吧。有他那些折騰的力氣,不如就在開發行業裏發展,那怕是本身開公司,也有必定的行業資源和認識吧。還有一個朋友,也搞開發,他沒有轉行,到如今一直在作,不過我歷來沒見過他跳槽。搞了這麼多年開發,工資沒上過3000。說來你們不信,此事真實存在,那這又是爲何呢? 很簡單,沒有學習力!原有技術固步自封,也不會與人交流分享,別人都不知道有這樣一我的存在。好笑的是他還有「懷才不遇」的情節。編碼
軟件開發領域內,須要你能專精一門技術,瞭解它底層運行機制、數據存放方式以及一些必要的設計思想。那麼你在學習其餘技術時會很輕鬆的學會,「引而伸之,觸類而長之,天下之能事畢矣也」古人都已經把「舉一反三」這個詞解釋的很清楚了,咱們爲何不能認清這個事實呢?
作爲有的程序員朋友來說,可能本身並不太善於語言溝通,那並不表明你不可使用文字寫博客或者論壇回帖這一類的交流。咱們知道各個技術領域內的技術較多,新東西也不少,如SOA、WCF、WPF等等。而且這些技術有可能讓你立刻應用到要開發的項目中時,咱們須要有較好的心態,去學習認識,交流。把知識放到本身的腦子裏,比什麼都強。