更新時(shí)間:2024-05-24 09:44:55作者:佚名
一般一個(gè)小組5個(gè)人左右,就意味著6個(gè)人中就能有一個(gè)人爬上來,成為小組的頭頭。至于高管,一切都更難了。程序員壓力太大,3到5年內(nèi)沒進(jìn)步,就要轉(zhuǎn)行。我也學(xué)過軟件編程,但現(xiàn)在不做了,感覺以后壓力太大。上班第一天老板讓我做的第一件事,就是看兩篇文章:《程序員的思考》雷軍我不是天生的程序員,也不是天生喜歡電腦,高中的時(shí)候根本沒想過以后會(huì)成為一名程序員,接觸電腦純屬偶然。我小時(shí)候的一個(gè)好朋友上大學(xué)選的是計(jì)算機(jī)專業(yè),為了和這個(gè)朋友有更多的“共同語言”,我選擇了計(jì)算機(jī)系。大學(xué)時(shí),我對(duì)計(jì)算機(jī)世界有了些了解,開始對(duì)它“狂熱”起來; 畢業(yè)之后,我開始了程序員的生涯,從開始寫程序到現(xiàn)在已經(jīng)快十年了,也寫了不少程序。這些年走過的坎坷坎坷,總歸要學(xué)會(huì)一些東西。說到學(xué)習(xí),最大的學(xué)習(xí)就是這條路太長了。 1、我寧愿你這一生吃點(diǎn)苦頭。我并不指望我們把編程和文學(xué)創(chuàng)作相提并論,但其中的苦頭不是一般人能體會(huì)到的。為了寫好程序,我們度過了太多不眠之夜。有朋友評(píng)價(jià)說“寫程序幾乎就是自殺,需要耗費(fèi)很多精力,很多腦子,很累。”但還是有很多人不怕吃苦,堅(jiān)持做下去。我一接觸電腦就發(fā)現(xiàn)了電腦的神奇之處:電腦遠(yuǎn)沒有人復(fù)雜。如果你寫好程序,你就能和電腦建立起非常融洽的關(guān)系,可以指揮電腦做你想做的事。這時(shí)候,你就是徹底的主人了。
經(jīng)常坐在電腦前,感覺自己仿佛游歷在一個(gè)王國里。電腦里的世界是巨大的,程序員就生活在自己想象的王國里,你可以把電腦里的每一個(gè)字節(jié)、每一個(gè)比特都細(xì)化到極致。這樣的生活簡直就像天堂一樣,很多人都愛上了這樣的生活。很多人覺得程序員最多35歲就可以退休,大腦也該休息了。覺得寫程序是年輕人干的工作,到了一定年齡,估計(jì)就沒幾個(gè)人再去做程序員了。剛畢業(yè)的時(shí)候,我斗志昂揚(yáng),想著先吃點(diǎn)苦頭,結(jié)果30歲就辭職了。年紀(jì)大了才意識(shí)到自己的無知。一個(gè)人21、22歲大學(xué)畢業(yè),等技術(shù)成熟了可能就25了。然后就是錢啊老婆啊房子啊等很多沒完沒了的事情,等一切都做完了,可能就35歲了。 如果在35歲就放棄,那你大可不必選擇程序員這條路。計(jì)算機(jī)在我國出現(xiàn)已久,但真正大規(guī)模使用還是在1985年P(guān)C登陸我國的中國。因此,國內(nèi)真正有人寫過計(jì)算機(jī)程序的時(shí)間最長也不過十幾年(不知道現(xiàn)在還有沒有這樣的人)。由于計(jì)算機(jī)在國內(nèi)使用時(shí)間較短,所以國內(nèi)程序開發(fā)的主力軍是35歲以下的年輕人,但這并不意味著程序員像風(fēng)月俏佳人一樣容易衰老。美國和臺(tái)灣的開發(fā)人員主要在30、40歲左右,當(dāng)我們開始寫程序的時(shí)候,覺得沒有什么是我們做不到的(現(xiàn)在還能聽到這樣熱情洋溢的演講),而且看起來我們好像特別聰明,特別適合開發(fā)軟件,比外國人厲害多了。
當(dāng)我們真正接觸到那些優(yōu)秀的國外開發(fā)者的時(shí)候,才發(fā)現(xiàn)他們是如此的了不起,他們都有著十幾年以上的開發(fā)經(jīng)驗(yàn),我敢肯定,絕大部分的產(chǎn)品都出自這些有著豐富開發(fā)經(jīng)驗(yàn)的程序員之手。畢業(yè)之后,編程不僅僅是一種愛好,更是一份終身的職業(yè),我絕對(duì)可能做一輩子,雖然我并不打算一輩子只做這一件事。用一生的時(shí)間編程,既容易,又困難。如果你平庸,為了度日而寫一些程序,有人寫兩輩子程序。但是如果你想一心一意地寫程序,寫十年也不是一件容易的事情。現(xiàn)在我很多朋友都洗手不干了。有時(shí)候我也有這樣的想法,但是一旦面對(duì)電腦,我馬上意識(shí)到電腦還是我最擅長的英語作文,最方便的。 2.我的未來不是夢(mèng),有些人努力學(xué)習(xí)編程技巧,努力提高自己的編程水平,把高級(jí)程序員作為自己追求的目標(biāo),甚至是自己一生的奮斗目標(biāo)。 后來,參與了真正的商業(yè)軟件開發(fā)之后,我感覺很迷茫,很無助。上大學(xué)的時(shí)候,高級(jí)程序員也是我的目標(biāo),當(dāng)時(shí)我通過了等級(jí)考試,考取了高級(jí)程序員證書,名片上印上了“高級(jí)程序員”幾個(gè)字。后來,我的水平提高了,好像成為了大家公認(rèn)的優(yōu)秀程序員。這時(shí)候,我開始迷茫了,希望自己的技術(shù)能夠得到別人的認(rèn)可,當(dāng)?shù)玫絼e人的認(rèn)可之后,我又能做什么呢?后來我發(fā)現(xiàn),程序員再高級(jí)也沒用,關(guān)鍵是你能不能拿出點(diǎn)子和產(chǎn)品,你的工作能不能得到社會(huì)的認(rèn)可,能不能為社會(huì)創(chuàng)造財(cái)富。
我的未來很明確,開發(fā)出適用于社會(huì)的優(yōu)質(zhì)產(chǎn)品,為社會(huì)創(chuàng)造財(cái)富。 3、每一個(gè)程序都是一件藝術(shù)品。 有人認(rèn)為程序員也沒什么特別的,只不過是一個(gè)技術(shù)性的工作而已;有人說編程是一種藝術(shù)創(chuàng)作,對(duì)它贊不絕口。這兩種觀點(diǎn)爭(zhēng)議頗大,甚至可以說互不相讓。 我們換個(gè)職業(yè)吧。石匠應(yīng)該是技術(shù)性的工作,看上去和藝術(shù)沒什么關(guān)系。但正是這些石匠給我們留下了無數(shù)的文物古跡,比如樂山大佛,莫高窟等等。應(yīng)該說這些石匠給我們留下了無盡的文化財(cái)富。 我覺得編程和石匠差不多,是一門技術(shù),也是一門藝術(shù)。現(xiàn)代軟件行業(yè)規(guī)劃得當(dāng),很多軟件的完成需要大規(guī)模的作業(yè)。一個(gè)熟練的程序員接受編寫某一塊的任務(wù)之后,往往只是寫代碼而已,幾乎沒有發(fā)展空間。 在大型項(xiàng)目中,很多程序員只能了解到自己編寫的模塊相關(guān)的一些細(xì)節(jié),加之受到開發(fā)環(huán)境的制約,他們確實(shí)很難意識(shí)到自己是在從事“藝術(shù)”創(chuàng)作,大多數(shù)時(shí)候都覺得自己是在從事繁重的體力勞動(dòng),有時(shí)還會(huì)擔(dān)心自己辛苦參與的項(xiàng)目是否有意義,在同類產(chǎn)品中是否有競(jìng)爭(zhēng)力,發(fā)布之后會(huì)不會(huì)因?yàn)橛布陌l(fā)展和操作系統(tǒng)的更新?lián)Q代而變得過時(shí)……編程是一項(xiàng)技術(shù)活,必須大規(guī)模地開展,并具備軟件工程的理論。正是因?yàn)榫幊叹邆渌囆g(shù)創(chuàng)作的特性,才使得我們生活中有那么多優(yōu)秀的軟件產(chǎn)品。
編寫程序需要付出腦力和體力的努力,當(dāng)我-我們-某個(gè)群體完成一個(gè)程序的時(shí)候,在我們眼里,每一個(gè)程序都是一件藝術(shù)品。程序員應(yīng)該具備的素質(zhì)。程序員是一個(gè)技術(shù)職業(yè),在IT的發(fā)展中占有非常重要的地位。從底層硬件通訊協(xié)議的建立,到數(shù)據(jù)傳輸層的處理,到操作系統(tǒng)的搭建,到數(shù)據(jù)庫渠道的建設(shè),到應(yīng)用層各種數(shù)據(jù)營銷渠道的建立,程序員在其中都扮演著舉足輕重的角色,為IT的發(fā)展做出了巨大的貢獻(xiàn)。我國有很多擅長編碼的人,但我國的軟件行業(yè),特別是在網(wǎng)絡(luò)應(yīng)用的開發(fā)方面存在很多誤區(qū),很難形成有計(jì)劃的軟件開發(fā)力量和產(chǎn)品能力,不僅遠(yuǎn)遠(yuǎn)落后于美國,也遠(yuǎn)遠(yuǎn)落后于印度。這些問題不是中國程序員的智商和工作努力的問題,也不是國家和民間在開發(fā)的投入水平的問題,而很大程度上是對(duì)技術(shù)、程序開發(fā)、項(xiàng)目規(guī)劃的一些誤解。 這些誤區(qū)導(dǎo)致了軟件工作缺乏產(chǎn)品化能力,缺乏開發(fā)大規(guī)模、可復(fù)用系統(tǒng)的能力。可以說,改變誤區(qū)是解決軟件工作小作坊模式、個(gè)人英雄模式帶來的局限性的重要任務(wù)。我國有很多孩子,小到十八九歲,大到二十一兩歲,通過自學(xué)寫出了很多代碼,他們有的代碼寫得很漂亮,有的技術(shù)細(xì)節(jié)寫得相當(dāng)高級(jí),也很有鉆研精神,但是受一些錯(cuò)誤知識(shí)和觀念的影響,缺乏對(duì)系統(tǒng)和程序充分理解的能力。這些人,正如網(wǎng)上一位朋友說的很好,其實(shí)只是一些粉,根本沒有資格叫程序員,但是據(jù)我所知,很多小型網(wǎng)絡(luò)公司的CTO都是這樣的粉,拿著嚇人的薪水,做著嚇人的項(xiàng)目,項(xiàng)目的結(jié)果一般也嚇人。
1、程序員的基本素質(zhì) 要成為一名真正合格的程序員,或者說真正能好好的完成一些編碼工作的程序員,應(yīng)該具備這些素質(zhì)。 1:團(tuán)隊(duì)精神與合作能力 把它當(dāng)成基本素質(zhì)并不是不重要,相反,它是一名程序員安居樂業(yè)最基本最重要的基礎(chǔ)。 那些把高級(jí)程序員叫獨(dú)行俠的人是在胡說八道,任何個(gè)人的力量都是有限的,即使是像Linus這樣的天才,也需要組建強(qiáng)大的團(tuán)隊(duì)才能創(chuàng)造奇跡,那些為全世界的Linux編寫內(nèi)核的高手,沒有合作精神是無法想象的。獨(dú)行俠可以做一些小軟件賺錢,但是一旦進(jìn)入一些大系統(tǒng)的開發(fā)團(tuán)隊(duì),進(jìn)入商業(yè)化、產(chǎn)品化的開發(fā)任務(wù),缺乏這種素質(zhì)的人是完全不合格的。 2:文檔習(xí)慣 說高級(jí)程序員從不寫文檔的人一定是不成熟的,好的文檔是正式開發(fā)過程中非常重要的一個(gè)環(huán)節(jié)。 作為一名代碼程序員,編寫技術(shù)文檔占工作時(shí)間的 30% 是常態(tài),而作為一名高級(jí)程序員和系統(tǒng)分析師,這個(gè)比例則要高得多。沒有文檔,一個(gè)軟件系統(tǒng)就會(huì)缺乏生命力,以后查錯(cuò)、升級(jí)、模塊復(fù)用都會(huì)變得十分困難。3:標(biāo)準(zhǔn)化。標(biāo)準(zhǔn)化的編碼習(xí)慣是一些知名國外軟件公司的規(guī)矩,代碼變量命名、代碼注釋格式,甚至嵌套代碼中的行縮進(jìn)長度、函數(shù)之間的空行數(shù)等都有明確的規(guī)定。良好的編碼習(xí)慣不僅對(duì)代碼移植、糾錯(cuò)有幫助,也有利于不同技術(shù)人員之間的協(xié)作。
有些粉絲宣稱高水平的程序員寫的代碼別人看不懂,這種說法只能證明他們自己不配被稱為程序員。代碼的可讀性好是程序員的基本必備要求,我們看看整個(gè)Linux的建立,沒有規(guī)范、標(biāo)準(zhǔn)化的代碼習(xí)慣,全球的研發(fā)合作肯定是不可想象的。4:需要理解能力。程序員需要理解一個(gè)模塊的需求。很多小孩子寫程序的時(shí)候往往只關(guān)注一個(gè)功能需求,把所有的性能目標(biāo)都?xì)w結(jié)于硬件、操作系統(tǒng)和開發(fā)環(huán)境,而忽略了自己代碼的性能考慮。有人曾經(jīng)說過,寫一個(gè)廣告交換程序很容易,這樣的人永遠(yuǎn)不知道在百萬甚至千萬級(jí)的訪問條件下,性能目標(biāo)是怎么實(shí)現(xiàn)的。對(duì)于這樣的程序員,你給他深藍(lán)系統(tǒng),他都做不到太極鏈的并行訪問能力。性能需求中山財(cái)文件交換,穩(wěn)定性、并行訪問支持能力、安全性都是很重要的。 作為一名程序員,需要評(píng)估模塊在系統(tǒng)運(yùn)行中所處的環(huán)境,會(huì)遇到的負(fù)載壓力,以及各種潛在的風(fēng)險(xiǎn)和遭受惡意攻擊的可能性。在這方面,一個(gè)成熟的程序員至少需要有2到3年的項(xiàng)目開發(fā)和跟蹤經(jīng)驗(yàn)才有經(jīng)驗(yàn)。5:可復(fù)用性和模塊化思維能力。經(jīng)常聽到一些程序員有這樣的抱怨,寫了幾年程序,已經(jīng)成為熟練工人,每天重復(fù)同樣的代碼,沒有任何新的想法。這其實(shí)是我國軟件人才最大的浪費(fèi),一些重復(fù)性的工作反而成了熟練程序員的主要工作,而這些其實(shí)是完全可以避免的。
可重用性設(shè)計(jì)和模塊化就是要求程序員在完成任何一個(gè)功能模塊或者功能的時(shí)候,要多思考,不要局限于完成當(dāng)前任務(wù)的單純想法。要思考模塊是否可以存在于本系統(tǒng)之外,是否可以通過簡單的修改參數(shù),在其他系統(tǒng)和應(yīng)用環(huán)境中直接引用。這樣可以大大避免重復(fù)性的開發(fā)工作。如果一個(gè)軟件開發(fā)單位和工作組在每一次開發(fā)過程中都能考慮到這些問題,那么程序員就不會(huì)在重復(fù)性工作上浪費(fèi)太多的時(shí)間,而有更多的時(shí)間和精力投入到創(chuàng)新性的代碼工作中。一些好的程序模塊代碼,即使是在70年代寫的,現(xiàn)在作為功能模塊,也可以很好的適應(yīng)一些系統(tǒng)。我現(xiàn)在看到的是,很多小公司一軟件升級(jí)或者改進(jìn),就把所有的代碼都重寫一遍,大部分重復(fù)性的工作都是在不必要地浪費(fèi)時(shí)間和精力。 6:測(cè)試習(xí)慣 對(duì)于一些商業(yè)化、正規(guī)化的開發(fā),專職的測(cè)試工程師是必不可少的,但是不代表程序員可以避免跟專職的測(cè)試工程師一起進(jìn)行自我測(cè)試; 軟件開發(fā)作為一個(gè)項(xiàng)目,一個(gè)很重要的特性就是問題發(fā)現(xiàn)得越早,解決的成本越低。程序員在完成每一個(gè)代碼段、每一個(gè)子模塊之后,可以盡量盡早的發(fā)現(xiàn)和解決一些潛在的問題,從而保證整體系統(tǒng)構(gòu)建的高效性和可靠性。在實(shí)際中,測(cè)試工作需要考慮兩個(gè)方面,一方面是正常調(diào)用的測(cè)試,也就是看程序在正常調(diào)用的情況下,是否能夠完成基本的功能山財(cái)文件交換,這是最基本的測(cè)試職責(zé),可惜在很多公司,這成為了唯一的測(cè)試任務(wù),實(shí)際中還遠(yuǎn)遠(yuǎn)沒有達(dá)到這個(gè)程度;第二方面就是異常調(diào)用的測(cè)試,比如高壓負(fù)載下的穩(wěn)定性測(cè)試、用戶潛在的異常輸入情況下的測(cè)試、整體系統(tǒng)局部故障下對(duì)模塊受影響狀態(tài)的測(cè)試、頻繁異常請(qǐng)求阻塞資源時(shí)的模塊穩(wěn)定性測(cè)試等等。
當(dāng)然,程序員沒必要對(duì)自己的每一段代碼都進(jìn)行這么完整的測(cè)試,但程序員必須清楚自己的代碼任務(wù)在整個(gè)項(xiàng)目中的位置和各項(xiàng)性能要求,有針對(duì)性地進(jìn)行相關(guān)測(cè)試,盡快發(fā)現(xiàn)問題、解決問題。當(dāng)然,這需要具備上面所說的理解能力和要求。 7:學(xué)習(xí)總結(jié)能力 程序員是容易被淘汰、容易被落下的人才,因?yàn)橐豁?xiàng)技能可能三兩年就領(lǐng)先了。程序員要想安居樂業(yè),就必須不斷跟進(jìn)新技能,學(xué)習(xí)新技能。善于學(xué)習(xí)是任何工作進(jìn)步的必備動(dòng)力,對(duì)程序員來說這個(gè)要求就更高了。但是學(xué)習(xí)也需要找準(zhǔn)目標(biāo),有些小迷弟也以學(xué)習(xí)能力為榮,一時(shí)學(xué)會(huì)了asp、php、jsp,以此作為吹噓的資本,一味追求一些淺薄、表面的東西和名詞,做網(wǎng)絡(luò)程序不懂通訊傳輸協(xié)議,做應(yīng)用程序不懂中斷向量處理。 這樣的技術(shù)人員,無論掌握了多少所謂的新語言,永遠(yuǎn)都不會(huì)有質(zhì)的提升。善于總結(jié)也是學(xué)習(xí)能力的體現(xiàn)。每完成一個(gè)開發(fā)任務(wù)或者一段代碼,都要刻意跟蹤程序的使用狀態(tài)和用戶反饋,隨時(shí)總結(jié),發(fā)現(xiàn)自己的不足。只有這樣,才能作為一名程序員逐漸提高和成長。
一個(gè)沒有成長潛力的程序員就算看上去是個(gè)專家也不要錄用,因?yàn)樗芸炀蜁?huì)落后。 具備以上所有素質(zhì)的人應(yīng)該算是合格的程序員。請(qǐng)注意,以上這些素質(zhì)不是由智商決定的,也不是從一些大學(xué)教科書上學(xué)不到的,需要的是程序員對(duì)自己工作的認(rèn)識(shí),這是一個(gè)認(rèn)知的問題。 二、高級(jí)程序員/項(xiàng)目策劃員需要具備的素質(zhì)。 作為一個(gè)高級(jí)程序員,甚至是系統(tǒng)分析員,也就是一個(gè)程序項(xiàng)目的策劃員,除了要具備以上所有的素質(zhì)之外,還需要具備以下幾個(gè)素質(zhì): 第一,需求分析能力。對(duì)于程序員來說,了解需求就能完成合格的代碼,但是對(duì)于開發(fā)項(xiàng)目的策劃者、管理者來說,不但需要了解客戶的需求,還需要自己制定一些需求。 為什么這么說呢?一般來說,在進(jìn)行開發(fā)任務(wù)的時(shí)候,可能是客戶提出需求,也可能是市場(chǎng)、市場(chǎng)部門提出需求。 這時(shí)候?qū)τ陂_發(fā)部門來說,他們看到的就不是一個(gè)完整的需求了,一般來說需求只是一些功能需求,或者比較正式,可以得到完整的用戶視圖;但是這樣也不行,因?yàn)榭蛻舴羌夹g(shù)的因素比較多,可能很難提出完整明確的,或者專業(yè)性能上的需求,但是對(duì)于項(xiàng)目規(guī)劃人員和設(shè)計(jì)人員來說,他必須能夠在完成需求分析報(bào)告的時(shí)候,能夠清晰的知道這些需求的存在,并且恰當(dāng)?shù)奶岢鰜恚瑫r(shí)還要完整清晰的體現(xiàn)在設(shè)計(jì)規(guī)范中,這樣程序員在編碼的時(shí)候才不會(huì)丟掉這些原則。
程序員必須正確理解用戶需求所處的環(huán)境,有針對(duì)性地進(jìn)行需求分析。例如,同一個(gè)軟件通過ASP租賃方式和直銷方式發(fā)布,可能對(duì)性能的要求就不一樣,前者注重更好的支持和穩(wěn)定性,而后者可能更注重通用性和在各種渠道下安裝使用的方便性。第二,項(xiàng)目規(guī)劃方法和流程處理能力。程序員必須能夠掌握不少于兩三種項(xiàng)目規(guī)劃方法(如自頂向下的規(guī)劃方法,如快速原型法等),能夠根據(jù)項(xiàng)目需求和資源配置選擇合適的規(guī)劃方法進(jìn)行整體項(xiàng)目規(guī)劃。規(guī)劃方法選擇不當(dāng)會(huì)拖延開發(fā)周期,浪費(fèi)開發(fā)資源,甚至影響開發(fā)效果。程序員還需要花費(fèi)大量的時(shí)間在流程圖的設(shè)計(jì)和處理上,需要制作數(shù)據(jù)流程圖,建立數(shù)據(jù)字典;需要處理邏輯流程圖,形成整體系統(tǒng)處理流程。一個(gè)流程有問題的系統(tǒng),無論代碼多么優(yōu)美,各個(gè)模塊多么精致,都不會(huì)成為一個(gè)好的系統(tǒng)。 當(dāng)然,要做好流程分析,選擇好的項(xiàng)目設(shè)計(jì)方式,需要對(duì)需求分析能力有足夠的掌握。第三,復(fù)用設(shè)計(jì)和模塊分解能力,看似是老生常談,上篇文章的基本要義不是已經(jīng)說明了這個(gè)問題嗎?作為一個(gè)從事模塊化任務(wù)的程序員,需要考慮所面臨的具體功能模塊的可復(fù)用性。而作為一個(gè)系統(tǒng)分析員,他面臨的問題要復(fù)雜得多,他需要按照模塊化分析能力,把整個(gè)系統(tǒng)分解成許多可復(fù)用的功能模塊和功能,并形成每個(gè)模塊獨(dú)立的設(shè)計(jì)需求。
例如在汽車生產(chǎn)中,起初每輛汽車都是獨(dú)立組裝的,每個(gè)部件都是量身定制的。但后來就不一樣了,隨著機(jī)械化大批量生產(chǎn)的到來,汽車廠開始通過流水線生產(chǎn)汽車,獨(dú)立的部件開始具備一定的可重用性。后來,標(biāo)準(zhǔn)化成為大趨勢(shì),不同類型、品牌,甚至不同制造商的汽車部件都可以方便地更換和升級(jí),這時(shí)汽車生產(chǎn)的效率就被最大化了。軟件工程也是如此,在一個(gè)成熟的軟件項(xiàng)目中,不同的部件可以在一些相關(guān)的項(xiàng)目和系統(tǒng)中隨意更換。例如微軟的很多桌面軟件在很多操作模塊(如打開文件、保存文件等)中都復(fù)用了同一套功能模塊,并通過一些類庫將這些接口提供給桌面應(yīng)用程序開發(fā)人員,方便連接。這就是復(fù)用模塊設(shè)計(jì)的明顯體現(xiàn)。將一個(gè)龐大而復(fù)雜的應(yīng)用系統(tǒng)分解成若干個(gè)相對(duì)獨(dú)立、復(fù)用性強(qiáng)、僅基于少量參數(shù)就能實(shí)現(xiàn)數(shù)據(jù)連接的模塊,是高級(jí)程序員和系統(tǒng)分析員最重要的任務(wù)。 恰當(dāng)?shù)捻?xiàng)目規(guī)劃方法、清晰的流程圖是實(shí)現(xiàn)這一目標(biāo)的重要保障。第四,整體的項(xiàng)目評(píng)估能力。作為系統(tǒng)設(shè)計(jì)師,要能夠從全局出發(fā),對(duì)項(xiàng)目整體有清晰的了解,比如公司的資源配置是否合理到位,項(xiàng)目進(jìn)度計(jì)劃是否能發(fā)揮最大效率,不至于不能按時(shí)完成。
評(píng)估整個(gè)項(xiàng)目、每個(gè)模塊的工作量,評(píng)估項(xiàng)目需要的資源,評(píng)估項(xiàng)目可能遇到的困難,都需要大量的經(jīng)驗(yàn)積累。也就是說,這是一個(gè)需要通過不斷總結(jié)、積累才能達(dá)到的狀態(tài)。在西方,一些軟件系統(tǒng)設(shè)計(jì)的領(lǐng)導(dǎo)者年齡非常大,比如40、50歲,甚至更大,他們?cè)诰幋a方面的活躍程度遠(yuǎn)不如年輕人,但就項(xiàng)目評(píng)估而言,他們幾十年的經(jīng)驗(yàn)積累是最重要、最寶貴的財(cái)富。我國缺少這樣一代程序員。第一不是缺少那個(gè)年齡的程序員,而是那個(gè)年齡的程序員基本都是科研單位培養(yǎng)出來的,不是專業(yè)產(chǎn)品軟件開發(fā)出來的,他們沒有能夠積累產(chǎn)品開發(fā)的經(jīng)驗(yàn),這也是一件無奈的事情。第五,團(tuán)隊(duì)組織管理能夠完成一個(gè)項(xiàng)目,需要團(tuán)隊(duì)的齊心協(xié)力,作為項(xiàng)目規(guī)劃者或者開發(fā)負(fù)責(zé)人,應(yīng)該能夠?qū)F(tuán)隊(duì)的整體實(shí)力發(fā)揮到最大。 技術(shù)管理由于其專業(yè)性,不同于一般的人事管理,因?yàn)橐恍┘夹g(shù)政策和因素是在這里設(shè)計(jì)的。第一是工作的量化,沒有量化就難以做到合適的績效考核。程序量化不能簡單地用代碼行數(shù)來計(jì)算,所以技術(shù)管理人員需要能夠真實(shí)評(píng)估一個(gè)模塊的復(fù)雜度和工作量。第二是團(tuán)隊(duì)協(xié)作的調(diào)整,一般來說,程序開發(fā)協(xié)作一般是分小組的,有主力程序員和民主小組,根據(jù)程序員之間的人才水平差距和項(xiàng)目開發(fā)的需要,選擇合適的組隊(duì)方式,并將責(zé)權(quán)與成員的工作任務(wù)緊密結(jié)合起來,發(fā)揮組隊(duì)的最大效能。
一個(gè)編碼能力高的人不一定能成為一個(gè)合格的項(xiàng)目開發(fā)主管,而這方面能力的缺乏往往很容易被人們忽視。綜上所述,作為一個(gè)負(fù)責(zé)開發(fā)的人員,一個(gè)項(xiàng)目規(guī)劃師,所需要的素質(zhì)和能力并不是會(huì)寫程序代碼的能力。當(dāng)然,一般情況下,當(dāng)一個(gè)程序員通過不斷的總結(jié)和提高達(dá)到這個(gè)素質(zhì)的時(shí)候,他的代碼編寫能力就已經(jīng)相當(dāng)高級(jí)了,但是請(qǐng)注意這里的因果關(guān)系。一個(gè)高水平的項(xiàng)目規(guī)劃師一般已經(jīng)是一個(gè)寫得一手好代碼的人了,但是不代表一個(gè)寫得一手好代碼的程序員就可以負(fù)責(zé)項(xiàng)目規(guī)劃。這里的問題不是智商和教科書,而是一個(gè)程序員在積累經(jīng)驗(yàn)逐漸提高的時(shí)候,沒有意識(shí)到自己該想些什么,沒有自覺去思考項(xiàng)目的布局和復(fù)用方案,沒有定期的文檔和總結(jié)的習(xí)慣。如果不改變這些,我們合格的項(xiàng)目規(guī)劃師還是很短的。另外,為了防止一些無聊的人跟我爭(zhēng)論,我補(bǔ)充一下,這篇文章是針對(duì)那些從事商業(yè)軟件項(xiàng)目和工程的人。 科研機(jī)構(gòu)里的編程專家,比如算法專家、圖像處理專家,他們的工作是研究課題而不是直接完成商業(yè)軟件(當(dāng)然最終都會(huì)成為商業(yè)產(chǎn)品,比如微軟研究院正在做的研究課題),所以他們所側(cè)重的本質(zhì)可能在別的方面。這些人(專家)不能說是程序員,不能用程序員的標(biāo)準(zhǔn)來衡量。
3.軟件項(xiàng)目開發(fā)設(shè)計(jì)流程最后我再補(bǔ)充一點(diǎn),軟件項(xiàng)目開發(fā)的設(shè)計(jì)流程是怎樣的呢?以一般的標(biāo)準(zhǔn)設(shè)計(jì)方法為例(不過筆者比較喜歡快速原型法)。第一個(gè)過程是市場(chǎng)調(diào)研技巧和市場(chǎng)相結(jié)合,展現(xiàn)出最大的價(jià)值。第二個(gè)過程是需求分析。這個(gè)階段需要三樣?xùn)|西:用戶視圖、數(shù)據(jù)字典和用戶手冊(cè)。用戶視圖是軟件用戶(包括最終用戶和管理用戶)能看到的頁面樣式,里面包含了很多操作流程和情況。數(shù)據(jù)字典是規(guī)定數(shù)據(jù)的邏輯關(guān)系,并組織起來的東西。數(shù)據(jù)字典完成后,數(shù)據(jù)庫的設(shè)計(jì)就完成了一大半。用戶手冊(cè)是明確操作流程的說明書。請(qǐng)注意,用戶操作流程和用戶視圖是由需求決定的,所以應(yīng)該在軟件設(shè)計(jì)之前完成。完成這些會(huì)為程序開發(fā)提供約束和規(guī)則。可惜太多公司沒有做到這一點(diǎn),因果顛倒,順序不分,開發(fā)工作和實(shí)際需求經(jīng)常變得脫節(jié)。 需求分析,除了以上工作之外,筆者認(rèn)為作為項(xiàng)目規(guī)劃者,還應(yīng)該對(duì)項(xiàng)目的性能需求做一個(gè)完整的描述,因?yàn)橥挥卸夹g(shù)的人才能看懂性能需求,這需要技術(shù)專家和需求方(客戶或者公司市場(chǎng)部門)有真正的溝通和了解。第三個(gè)過程是概要規(guī)劃,對(duì)系統(tǒng)功能模塊進(jìn)行初步劃分,并給出合理的開發(fā)流程和資源需求。
作為一種快速的原型方法,可以在概述設(shè)計(jì)完成后輸入編碼階段,因?yàn)樯婕暗拈_發(fā)任務(wù)屬于新領(lǐng)域,并且在開始時(shí),在詳細(xì)的過程中,詳細(xì)的過程并不重要。學(xué)習(xí)的詳細(xì)設(shè)計(jì)是測(cè)試技術(shù)專家的設(shè)計(jì)思想的重要階段線設(shè)計(jì)為完成詳細(xì)的設(shè)計(jì)說明完成,應(yīng)說軟件項(xiàng)目已完成。 換句話說,當(dāng)大型軟件系統(tǒng)完成時(shí),那些簡單地理解軟件的人。在編碼時(shí),需要關(guān)注不同模塊的開發(fā)協(xié)調(diào)和合作,也許在小型模塊中可能會(huì)影響整體發(fā)展,這迫使許多程序員停止工作和等待。
在編碼和緊急處理方法中,您的溝通始終存在,您必須永遠(yuǎn)面對(duì)這個(gè)問題測(cè)試條件可以根據(jù)測(cè)試的輸入范圍分為正常的運(yùn)行狀態(tài)測(cè)試。 ANCE并完成了一些最終的輔助文件,整個(gè)項(xiàng)目當(dāng)然已經(jīng)結(jié)束,升級(jí),維修等是不可避免的。 只要您不想通過一次性交易作弊,您必須繼續(xù)跟蹤軟件的操作狀態(tài),并繼續(xù)升級(jí)和升級(jí),直到完全消除了這些過程。在獲得足夠的學(xué)分后,沒有正式研究這些專業(yè)。
現(xiàn)在,互聯(lián)網(wǎng)非常浮躁,有些粉絲在互聯(lián)網(wǎng)上隨機(jī)發(fā)表了很多噪音,但實(shí)際上,我像我這樣的人都不是真正的專家。聰明的頭腦遠(yuǎn)非完全重視。