|
這是一位軟件工程師關(guān)于該行業(yè)由程序員上長(zhǎng)升到軟件工程師的步驟經(jīng)歷,給諸多IT行業(yè)的迷茫者指點(diǎn)迷津。
2 r" ~6 q3 W% i9 o: ]: J5 T P" V. z" {: k
1,、分享第一條經(jīng)驗(yàn):“學(xué)歷代表過(guò)去、能力代表現(xiàn)在,、學(xué)習(xí)力代表未來(lái),。”其實(shí)這是一個(gè)來(lái)自國(guó)外教育領(lǐng)域的一個(gè)研究結(jié)果,。相信工作過(guò)幾年,、十幾年的朋友對(duì)這 個(gè)道理有些體會(huì)吧。但我相信這一點(diǎn)也很重要:“重要的道理明白太晚將抱憾終生,!”所以放在每一條,,讓剛剛畢業(yè)的朋友們?cè)琰c(diǎn)看到哈!
; R& L: y k1 k/ ]2,、一定要確定自己的發(fā)展方向,,并為此目的制定可行的計(jì)劃。不要說(shuō)什么,,“我剛畢業(yè),,還不知道將來(lái)可能做什么?”,,“跟著感覺(jué)走,,先做做看”。因?yàn)�,,這樣的觀點(diǎn)會(huì)通過(guò) 你的潛意識(shí)去暗示你的行為無(wú)所事事,、碌碌無(wú)為。一直做技術(shù),,將來(lái)成為專家級(jí)人物,?向管理方向走,成為職業(yè)經(jīng)理人,?先熟悉行業(yè)和領(lǐng)域,,將來(lái)自立門戶?還是先 在行業(yè)里面混混,,過(guò)幾年轉(zhuǎn)行做點(diǎn)別的,?這很重要,它將決定你近幾年,、十年內(nèi)“做什么事情才是在做正確的事情,!”。) m7 F k0 X+ T9 L3 W
3,、軟件開(kāi)發(fā)團(tuán)隊(duì)中,,技術(shù)不是萬(wàn)能的,,但沒(méi)有技術(shù)是萬(wàn)萬(wàn)不能的!在技術(shù)型團(tuán)隊(duì)中,,技術(shù)與人品同等重要,,當(dāng)然長(zhǎng)相也比較重要哈,尤其在MM比較多的團(tuán)隊(duì)中,。在軟件項(xiàng)目團(tuán)隊(duì) 中,,技術(shù)水平是受人重視和尊重的重要砝碼。無(wú)論你是做管理,、系統(tǒng)分析,、設(shè)計(jì),、編碼,,還是產(chǎn)品管理、測(cè)試,、文檔,、實(shí)施、維護(hù),,多少你都要有技術(shù)基礎(chǔ),。算我孤 陋寡聞,我還真沒(méi)有親眼看到過(guò)一個(gè)外行帶領(lǐng)一個(gè)軟件開(kāi)發(fā)團(tuán)隊(duì)成功地完成過(guò)軟件開(kāi)發(fā)項(xiàng)目,,哪怕就一個(gè),,也沒(méi)有看到。倒是曾經(jīng)看到過(guò)一個(gè)“高學(xué)歷的牛人”(非 技術(shù)型)帶一堆人做完過(guò)一個(gè)項(xiàng)目,,項(xiàng)目交付的第二天,,項(xiàng)目組成員扔下一句“再也受不了啦!”四分五裂,、各奔東西,。那個(gè)項(xiàng)目的“成功度”大家可想而知了。7 d V3 t# G. b" N
4,、詳細(xì)制定自己軟件開(kāi)發(fā)專業(yè)知識(shí)學(xué)習(xí)計(jì)劃,,并注意及時(shí)修正和調(diào)整(軟件開(kāi)發(fā)技術(shù)變化實(shí)在太快)。請(qǐng)牢記:“如果一個(gè)軟件開(kāi)發(fā)人員在1,、2年內(nèi)都沒(méi)有更 新過(guò)自己的知識(shí),,那么,其實(shí)他已經(jīng)不再屬于這個(gè)行業(yè)了,�,!辈灰嬖V自己沒(méi)有時(shí)間。來(lái)自時(shí)間管理領(lǐng)域的著名的“三八原則”告誡我們:另外的那8小時(shí)如何使用 將決定你的人生成�,�,!本人自畢業(yè)以來(lái),,平均每天實(shí)際學(xué)習(xí)時(shí)間超過(guò)2小時(shí)。
) E" D* x# D8 F1 r5 R5 o4 o7 n5,、書籍是人類進(jìn)步的階梯,,對(duì)軟件開(kāi)發(fā)人員尤其如此。書籍是學(xué) 習(xí)知識(shí)的最有效途徑,,不要過(guò)多地指望在工作中能遇到“世外高人”,,并不厭其煩地教你。對(duì)于花錢買書,,我個(gè)人經(jīng)驗(yàn)是:千萬(wàn)別買國(guó)內(nèi)那幫人出的書,!我買的那些 家伙出的書,100%全部后悔了,,無(wú)一本例外,。更氣憤的是,這些書在二手市場(chǎng)的地?cái)偵隙己茈y賣掉,�,!皳碛袝⒉槐硎緭碛兄R(shí);擁有知識(shí)并不表示擁有技 能,;擁有技能并不表示擁有文化,;擁有文化并不表示擁有智慧�,!敝挥袑咀兂傻淖约褐腔�,,才算是真正擁有了它。
3 F9 ^( k/ H' Y9 J' h6,、不要僅局限于對(duì)某項(xiàng) 技術(shù)的表面使用上,,哪怕你只是偶爾用一、二次,�,!皩�(duì)任何事物不究就里”是任何行業(yè)的工程師所不應(yīng)該具備的素質(zhì)。開(kāi)發(fā)Windows應(yīng)用程序,,看看 Windows程序的設(shè)計(jì),、加載、執(zhí)行原理,,分析一下PE文件格式,,試試用SDK開(kāi)發(fā)從頭開(kāi)發(fā)一個(gè)Windows應(yīng)用程序;用VC++,、6 n8 l7 R( W6 X/ m* h1 B1 s
Delphi,、Java、.Net開(kāi)發(fā)應(yīng)用程序,,花時(shí)間去研究一下MFC,、VCL,、J2EE、.Net它們框架設(shè)計(jì)或者源碼,;除了會(huì)用J2EE,、 JBoss、Spring,、Hibernate等等優(yōu)秀的開(kāi)源產(chǎn)品或者框架,,抽空看看大師們是如何抽象、分析,、設(shè)計(jì)和實(shí)現(xiàn)那些類似問(wèn)題的通用解決方案的,。 試著這樣做做,你以后的工作將會(huì)少遇到一些讓你不明就里,、一頭霧水的問(wèn)題,,因?yàn)椋芏鄸|西你“知其然且知其所以然”,!* `) r) ?' f/ E7 Z
7,、在一種語(yǔ)言上編程,,但別為其束縛了思想,。“代碼大全”中說(shuō):“深入一門語(yǔ)言編程,,不要浮于表面”,。深入一門語(yǔ)言開(kāi)發(fā)還遠(yuǎn)遠(yuǎn)不足,任何編程語(yǔ)言的存在都有其自身的理由,, 所以也沒(méi)有哪門語(yǔ)言是“包治百病”的“靈丹妙藥”,。編程語(yǔ)言對(duì)開(kāi)發(fā)人員解決具體問(wèn)題的思路和方式的影響與束縛的例子俯拾皆是。! \' ^5 [ M5 c. f1 o
我的經(jīng)驗(yàn) 是:用面對(duì)對(duì)象工具開(kāi)發(fā)某些關(guān)鍵模塊時(shí),,為什么不可以借鑒C,、C51、匯編的模塊化封裝方式,?用傳統(tǒng)的桌面開(kāi)發(fā)工具(目前主要有VC++,、Delphi) 進(jìn)行系統(tǒng)體統(tǒng)結(jié)構(gòu)設(shè)計(jì)時(shí),為什么不可以參考來(lái)自Java社區(qū)的IoC,、AOP設(shè)計(jì)思想,,甚至借鑒像Spring、Hibernate,、JBoss等等優(yōu)秀 的開(kāi)源框架,?在進(jìn)行類似于實(shí)時(shí)通信、數(shù)據(jù)采集等功能的設(shè)計(jì),、實(shí)現(xiàn)時(shí),,為什么不可以引用來(lái)自實(shí)時(shí)系統(tǒng),、嵌入式系統(tǒng)的優(yōu)秀的體系框架與模式?為什么一切都必須 以個(gè)人,、團(tuán)隊(duì)在當(dāng)然開(kāi)發(fā)語(yǔ)言上的傳統(tǒng)或者經(jīng)驗(yàn)來(lái)解決問(wèn)題,??,?“他山之石,、可以攻玉”。
3 N5 `' B4 C( E( T4 L8,、養(yǎng)成總結(jié)與反思的習(xí)慣,,并有意識(shí)地提煉日常 工作成果,形成自己的個(gè)人源碼庫(kù),、解決某類問(wèn)題的通用系統(tǒng)體系結(jié)構(gòu),、甚至進(jìn)化為框架。眾所周知,,對(duì)軟件開(kāi)發(fā)人員而言,,有、無(wú)經(jīng)驗(yàn)的一個(gè)顯著區(qū)別是:無(wú)經(jīng)驗(yàn) 者完成任何任務(wù)時(shí)都從頭開(kāi)始,,而有經(jīng)驗(yàn)者往往通過(guò)重組自己的可復(fù)用模塊,、類庫(kù)來(lái)解決問(wèn)題(其實(shí)這個(gè)結(jié)論不應(yīng)該被局限在軟件開(kāi)發(fā)領(lǐng)域、可以延伸到很多方 面),。這并不是說(shuō),,所有可復(fù)用的東西都必須自己實(shí)現(xiàn),別人成熟的通過(guò)測(cè)試的成果也可以收集,、整理,、集成到自己的知識(shí)庫(kù)中。但是,,最好還是自己實(shí)現(xiàn),,這樣沒(méi) 有知識(shí)產(chǎn)權(quán)、版權(quán)等問(wèn)題,,關(guān)鍵是自己實(shí)現(xiàn)后能真正掌握這個(gè)知識(shí)點(diǎn),,擁有這個(gè)技能。3 Q1 k/ R( p3 f8 W
9,、理論與實(shí)踐并重,,內(nèi)外雙修。工程師的內(nèi)涵是:以工 程師的眼光觀察,、分析事物和世界,。一個(gè)合格的軟件工程師,是真正理解了軟件產(chǎn)品的本質(zhì)及軟件產(chǎn)品研發(fā)的思想精髓的人(個(gè)人觀點(diǎn)、歡迎探討),。掌握軟件開(kāi)發(fā) 語(yǔ)言,、應(yīng)用語(yǔ)言工具解決工作中的具體問(wèn)題、完成目標(biāo)任務(wù)是軟件工程師的主要工作,,但從軟件工程師這個(gè)角度來(lái)看,,這只是外在的東西,并非重要的,、本質(zhì)的工 作,。學(xué)習(xí)、掌握軟件產(chǎn)品開(kāi)發(fā)理論知識(shí),、軟件開(kāi)發(fā)方法論,,并在實(shí)踐中理解、應(yīng)用軟件產(chǎn)品的分析,、設(shè)計(jì),、實(shí)現(xiàn)思想來(lái)解決具體的軟件產(chǎn)品研發(fā)問(wèn)題,才是真正的軟 件工程師的工作,。站在成熟理論與可靠方法論的高度思考,、分析、解決問(wèn)題,,并在具體實(shí)踐中驗(yàn)證和修正這些思想與方式,,最終形成自己的理論體系和實(shí)用方法論。/ U1 ^. Z+ c+ b# X' u u
10,、心態(tài)有多開(kāi)放,,視野就有多開(kāi)闊,。不要抱著自己的技術(shù)和成果,,等到它們都已經(jīng)過(guò)時(shí)變成垃圾了,才拿出來(lái)丟人現(xiàn)眼,。請(qǐng)及時(shí)發(fā)布自己的研究成果:開(kāi)發(fā)的 產(chǎn)品,、有創(chuàng)意的設(shè)計(jì)或代碼,公布出來(lái)讓大家交流或者使用,,你的成果才有進(jìn)化和升華的機(jī)會(huì),。想想自己2000年間開(kāi)發(fā)的那些Windows系統(tǒng)工具,5,、6 年之后的今天,,還是那個(gè)樣子,今天流行的好多Windows系統(tǒng)工具都比自己的晚,,但進(jìn)化得很好,,且有那么多用戶在使用。并且,不要保守自己的技術(shù)和思 想,,盡可能地與人交流與分享,,或者傳授給開(kāi)發(fā)團(tuán)隊(duì)的成員�,!芭c人交換蘋果之后,,每個(gè)人還是只有一個(gè)蘋果;但交換思想之后,,每個(gè)人都擁有兩種思想”,,道理大 家都懂,但有多少人真正能做到呢,?
: J v3 r& ?: ?2 U' }11,、盡量參加開(kāi)源項(xiàng)目的開(kāi)發(fā)、或者與朋友共同研制一些自己的產(chǎn)品,,千萬(wàn)不要因?yàn)闆](méi)有錢賺而不做,。網(wǎng) 絡(luò)早已不再只是“虛擬世界”,網(wǎng)上有很多的開(kāi)源項(xiàng)目,、合作開(kāi)發(fā)項(xiàng)目,、外包項(xiàng)目,這都是涉獵工作以外的知識(shí)的絕好機(jī)會(huì),,并且能夠結(jié)識(shí)更廣的人緣,。不要因?yàn)楣?作是做ERP,就不去學(xué)習(xí)和了解嵌入式,、實(shí)時(shí),、通信、網(wǎng)絡(luò)等方面的技術(shù),,反過(guò)來(lái)也是一樣,。如果當(dāng)別人拿著合同找你合作,你卻這也不會(huì),,那也不熟時(shí),,你將后 悔莫及。3 h8 q# ]+ R# h+ i# x( H
12,、書到用時(shí)方恨少,,不要將自己的知識(shí)面僅僅局限于技術(shù)方面。諾貝爾經(jīng)濟(jì)學(xué)獎(jiǎng)得主西蒙教授的研究結(jié)果表明:“對(duì)于一個(gè)有一定基礎(chǔ)的人來(lái)說(shuō),,他只要真正肯下功夫,,在6個(gè)月內(nèi)就可以掌握任何一門學(xué)問(wèn)�,!苯逃睦韺W(xué)界為感謝西蒙教授的研究成果,,故命名為西蒙學(xué)習(xí)法,。
% N0 ?- U& b' A: u" V可見(jiàn),掌握一門陌生的學(xué)問(wèn)遠(yuǎn)遠(yuǎn)沒(méi)有想象的那么高難,、深?yuàn)W,。多方吸取、廣泛涉獵,。極力夯實(shí)自己的影響圈,、盡量擴(kuò)大自己的關(guān)注圈。財(cái)務(wù),、經(jīng)濟(jì),、稅務(wù)、管理等等知識(shí),,有空花時(shí)間看看,,韜光養(yǎng)晦、未雨綢繆,。* j3 K/ H G- S! W
13,、本文的總結(jié)與反思:
- z2 J6 K; ?5 \. L, `( w" E( A3 T& wA:不要去做技術(shù)上的高手,除非你的目標(biāo)如此,。雖然本文是關(guān)于提高軟件開(kāi)發(fā)知識(shí)的建議,,做技術(shù)的高手是我一向都不贊同的。你可以提高自己的專業(yè)知識(shí),,但能勝任工作即止,。
9 C* q5 h7 i2 L# f7 WB:提高軟件知識(shí)和技術(shù)只是問(wèn)題的表面,本質(zhì)是要提高自己認(rèn)識(shí)問(wèn)題,、分析問(wèn)題,、解決問(wèn)題的思想高度。軟件專業(yè)知識(shí)的很多方法和原理,,可以很容易地延伸,、應(yīng)用到生活的其它方面。
6 j) t! v! g/ |/ f" R4 z1 n6 kC:在能勝任工作的基礎(chǔ)上,,立即去涉獵其它領(lǐng)域的專業(yè)知識(shí),,豐富自己的知識(shí)體系、提高自己的綜合素質(zhì),,尤其是那些目標(biāo)不在技術(shù)方面的朋友。雖然是針對(duì)IT行業(yè)的,,但感覺(jué)變通一下也是適用于機(jī)械行業(yè)的,。
/ {6 K9 y1 h% J. T0 U5 S. H" Q; C
; j9 |: L; ?3 X* |; J$ t |
|