- 相關(guān)推薦
修煉一名程序員的職業(yè)水準[4]
]四、天生神力:成為系統(tǒng)分析員 本來就論述如何成為一名職業(yè)程序員而言,本文已基本完成任務(wù)了,但《菜根譚》有言:竭世機樞,似一滴投于巨壑,窮諸玄辯,若一毫置于太虛,
修煉一名程序員的職業(yè)水準[4]
。既已乘興到此,何妨多置一毫于太虛呢,作者不才,干脆盡興寫算了。 你要是運氣好,直接進入了一個嚴格規(guī)范生產(chǎn)的軟件企業(yè)就業(yè),剛開始就應(yīng)該是按別人做好的軟件設(shè)計來實現(xiàn)編程,你可以有機會直接學習軟件設(shè)計,當你積累的足夠多了,能夠?qū)ζ渲械囊恍┰O(shè)計提出好的改進建議,而且干得又快又好,就會漸漸地展露頭角,我相信你終有一天成為一名軟件設(shè)計人員(注意,不是軟件產(chǎn)品設(shè)計人員),步入系統(tǒng)分析員的行列,但這還需其它的一些條件和自我修煉。如果你在一個不規(guī)范的軟件企業(yè)工作,那也不錯,你很可能直接就有機會進行軟件設(shè)計,然后開發(fā)、測試,甚至還不得不自己定義需求,把軟件開發(fā)過程的各個環(huán)節(jié)走一個遍,當然這樣對你的要求更高,而且你也不容易得到及時有益的指點,在正態(tài)分布的情況下,你應(yīng)該是成長的很慢。但不管就業(yè)的單位如何,如果你決心要成為頂尖軟件職業(yè)選手,通常什么客觀困難都阻擋不了你,然而你個人的因素可能會阻止你的前進。下面提出的觀點純屬一己之見,傷人自尊之處作者在此提前道歉,并建議你除非對本文有強烈的興趣,否則就請直接看第五節(jié)或放下別看了。丑話已說在前頭了,在各種軟件開發(fā)組織的發(fā)展過程中的事實也證明,只有少數(shù)程序員能成為系統(tǒng)分析員,我想這一點不是我杜撰的吧,因此你要是在看接下來的部分時感到氣憤難當,那也實在沒著,純屬活該,因為作者只是在說明自己的觀點而已,你最多可以呲之以鼻,表示一下你的輕蔑好了,但沒有任何理由可以罵人! 作者自己沒有到微軟面試過,但身處軟件行業(yè),關(guān)于微軟的許多東東當然還是有耳聞的,據(jù)說微軟招聘一名程序員要過五個已經(jīng)成為微軟程序員的面試關(guān),而且是一票否決制,又據(jù)說大多數(shù)面試題并非編程,而是一些有關(guān)邏輯和智力的題,作者私下也做過許多流傳的微軟面試題,并對此做法深以為然。程序的本質(zhì)就是邏輯,所以幾十年前就有人提出編程是一門藝術(shù),而藝術(shù)是要靠天份的,這一點少有人反對。一個人的邏輯能力可以不斷提高,但其能到達的終極邏輯能力的層次必定為其天生智力所限制,這一點就讓人不易接受了。好笑!人們可以公開承認自己沒有某種或全部的藝術(shù)天份,但要說自己邏輯天份不夠,換句話說承認自己笨、IQ不夠高,往往是要怒發(fā)沖冠的,其實這又有什么區(qū)別呢?話都說到這兒了,再次建議你如果不夠自信,就跳過這一節(jié)吧,直接看第五節(jié),好嗎? 好了,把話題說回來,你已經(jīng)成為一門合格的職業(yè)程序員了,如果要想成為從事軟件系統(tǒng)設(shè)計的職業(yè)系統(tǒng)分析員,第一件事就是悄悄找一個標準智商測試的網(wǎng)站或其它渠道,嚴格認真的測一測自己的智商,如果IQ低于130 (正常智商是110),就請別費勁了,打消掉成為系統(tǒng)分析員的念頭吧!好!好!先請你冷靜一下,好好想想,其實微軟面試時就是在測你的智商和邏輯數(shù)學素質(zhì)呢,這就是本節(jié)的標題為"天生神力"的原因,因為設(shè)計就是從無到有地進行創(chuàng)造,無論是軟件還是其它行業(yè)都一樣,可以有借鑒的,沒有現(xiàn)成的,設(shè)計就是創(chuàng)造!如果你IQ在130以上,又決心要當一名職業(yè)軟件系統(tǒng)分析員,其實你不過是要準備好吃更大的苦而已,有什么好虛榮的呢? 修煉還是從基本功開始的,過程和成為一名職業(yè)程序員差不多。必須使用設(shè)計工具這一點是不用多說的。在工作中,你基本上遇到的是兩類方式的設(shè)計,一個是結(jié)構(gòu)化設(shè)計,另一個是面向?qū)ο笤O(shè)計,就個人經(jīng)驗而言,面向?qū)ο蟮脑O(shè)計更好。如果你工作中不得不采用結(jié)構(gòu)化的設(shè)計,你必須熟練地掌握數(shù)據(jù)流圖和控制流圖的分析和設(shè)計,一般來講,如果你把一個軟件中用到的數(shù)據(jù)模型設(shè)計好了,針對功能化的流程,不難設(shè)計出數(shù)據(jù)流圖,但下一步設(shè)計控制流圖才是挑戰(zhàn),如果你按照需求走不通設(shè)計好的控制流圖,那么你或別人在按照這個設(shè)計編程實現(xiàn)時,必定也走不通,沒有奇跡會發(fā)生,還是在設(shè)計階段嚴格要求吧,又有一點需要牢記:返工是最慢的,資料共享平臺
《修煉一名程序員的職業(yè)水準[4]》(http://www.dameics.com)。當你在進行控制流圖的設(shè)計時,也不要妄想得到需求人員提供給你明確的指點,通常他們要是能夠把需求的功能和操作次序?qū)懲暾脑,你?yīng)該就感恩戴德了,從需求中整理出功能、操作的拓撲次序和條件是你作為系統(tǒng)分析員的職責?纯,要是沒有一點圖論的基礎(chǔ)和拓撲學的入門知識,你是當不好一個職業(yè)系統(tǒng)分析員的,即使你天賦不錯,必要的數(shù)學和邏輯素質(zhì)仍然不可或缺。也不用氣餒,永遠沒有最好的設(shè)計,只有更好的設(shè)計,反復(fù)地進行設(shè)計迭代,勇于推翻舊的設(shè)計,你將快速進步。如果你在工作中是采用面向?qū)ο筮M行設(shè)計的,那就更有利了,有關(guān)面向?qū)ο笤O(shè)計的書太多了,不用作者在此多費口舌,建議精讀一本經(jīng)典的書,比如北大邵維忠等編譯的《面向?qū)ο蟮姆治觥,有些方法和技巧可能過時,但其邏輯的基本原理是非常正確的,其本質(zhì)是,你在邏輯上是如何認識這個世界的,你就是如何設(shè)計軟件體系結(jié)構(gòu)的,然后讀讀其它書,觸類旁通,自己創(chuàng)造機會多實踐,成功自然會到來的,總之,不管是結(jié)構(gòu)化設(shè)計還是面向?qū)ο笤O(shè)計,評價一下自己的軟件系統(tǒng)設(shè)計方案吧,有好多指標呢,比如是否均勻和平衡?局部獨立性強不強?有沒有歧異的結(jié)構(gòu)?有沒有層次太多或太少?有沒有某個層次太大、太廣?是不是邏輯結(jié)構(gòu)先復(fù)雜了再化簡的?還是只會設(shè)計簡單的,復(fù)雜不起來(這一點是笨哦,如果出現(xiàn)多次,請你不要意氣用事,轉(zhuǎn)行吧)?最重要的一點,是否容易理解、實現(xiàn)和改進?你自己會得出評價的。如果有機會看到別人的設(shè)計,一定不要錯過學習的機會,自己推導一遍,認真比較比較,獲益會較多。 走到這一步,你就應(yīng)該關(guān)注設(shè)計模式了,首先還是學習,這方面的好書有的是,但一般在工作中用到的設(shè)計模式較為單一,應(yīng)該多嘗試一下其它的設(shè)計模式。其次必須要明白設(shè)計模式不是設(shè)計思路,也不能代替設(shè)計思路,比方你要從A到B修一條路,設(shè)計模式只是讓你選擇,是修水泥的還是柏油的?是高架路還是普通的,但線路必須你自己定,而線路就是設(shè)計思路,模式對思路是有影響,但不能代替,所以如果你的智商高達250,我相信你直接用匯編語言也能寫出面向?qū)ο蟮某绦騺。第三在此有一個陷阱,很多系統(tǒng)分析員生搬硬套設(shè)計模式,全然不懂如何融會貫通,在你的一項具體工作中,往往是以一種設(shè)計模式為主,其它模式為輔的,思維不拘泥于形式才是關(guān)鍵,而且也為你到達更高的軟件設(shè)計的境界做好準備。 唉!都不知該怎么向下寫好了,因為已達到作者水平的極限了,我胡亂說一點,你湊合看吧。軟件設(shè)計最終的層次是:以無法為有法、以無限為有限,這句話是李小龍說的,不是我說的。再拾人牙慧一把,類比一個故事吧,金大俠在《倚天屠龍記》里講到張無忌初學太極,學會的標志是把剛學的招數(shù)全忘了,記住的是太極的道理和精神,和李小龍有些相似喔,軟件設(shè)計也一樣,忘記所有的設(shè)計模式,隨心所欲進行設(shè)計才是至高境界,所以你能到達多高的軟件設(shè)計的境界最終將取決于你的哲學素質(zhì),這一點實在是不好寫啊,你自己領(lǐng)悟吧!作者只有祝福了!五、職業(yè)人的終極目標:全面修煉,成為Leader 這一節(jié)更不好寫,涉及到太多其它非技術(shù)方面的因素,特別是個人人生觀和世界觀的修煉,如果本帖的點擊率超過作者私下期望的一個數(shù)值,那我就爭取盡力厚著臉皮再補上吧。我只說一句,雖然大家都知道軟件開發(fā)是一個團隊性的工作,但追求參與一個大型軟件系統(tǒng)的成功開發(fā),是一名軟件人員的本能,就像拿破侖說的不想當元帥的士兵不是好士兵,所以不追求實現(xiàn)大系統(tǒng)的軟件人員,也不是一個好的職業(yè)軟件人員,但你只有成為Leader,領(lǐng)導一個優(yōu)秀的軟件開發(fā)團隊,才有機會實現(xiàn)這個終極職業(yè)目標,對不對? 好吧,不管你現(xiàn)在的感受如何,我都謝謝你能讀到這里!我不習慣假歉虛,就不說什么作者水平有限,本文拋磚引玉,歡迎大家批評斧正之類的客套話了,雖然作者水平確實有限。所以我認為你盡管有權(quán)砸磚,但實在沒必要搞回帖、或回罵、或頂之類的玩意兒,我只是盡興寫一點多年從事軟件開發(fā)工作的體驗,因此接下來我就高掛免戰(zhàn)牌,不回復(fù)任何回帖了。再次謝謝你能有耐心讀到這里!希望本文對你有所裨益,祝你成功!再見!
【修煉一名程序員的職業(yè)水準[4]】相關(guān)文章:
職業(yè)人的植物修煉法則10-04
TFBOYS青春修煉手冊歌詞06-03
職場女性的成功修煉手冊10-03
職場女王修煉法則09-23
辦公室里要修煉的功夫07-30
職場之路的自我“定位”修煉術(shù)09-15
怎樣把自己修煉成高薪人才10-03
向上青年的五項修煉06-22
IBM總架構(gòu)師:話說程序員的職業(yè)生涯[1]07-29
不得不修煉的職場EQ10-27