軟件開(kāi)發(fā)的世界里充滿了不理解,
客戶不理解軟件是怎樣開(kāi)發(fā)的、經(jīng)理不理解開(kāi)發(fā)人員、開(kāi)發(fā)人員不理解指揮者。問(wèn)題在于軟件開(kāi)發(fā)驚人的困難,造成很少有開(kāi)發(fā)人員能夠說(shuō)出軟件自始至終是怎樣開(kāi)發(fā)的,并能夠?qū)@個(gè)過(guò)程中會(huì)遇到的不同選擇所隱含的結(jié)果表現(xiàn)出適度的理解。
在軟件開(kāi)發(fā)人員還很年輕的時(shí)候(十幾歲或二十出頭),他們通常集中精力學(xué)習(xí)和使用技術(shù),稱自己為perl程序員、Linux專家、EJB開(kāi)發(fā)人員、.NET開(kāi)發(fā)人員等。對(duì)他們來(lái)說(shuō)技術(shù)是最重要的事情。因?yàn)榧夹g(shù)在不斷的變化,年輕的程序員傾向于大致學(xué)習(xí)一個(gè)技術(shù),在一到兩個(gè)項(xiàng)目中使用,然后重新開(kāi)始學(xué)習(xí)新技術(shù)或者是學(xué)習(xí)以前使用過(guò)的技術(shù)的最新發(fā)展。這里的問(wèn)題是,他們一遍又一遍的重復(fù)的學(xué)習(xí)的不過(guò)是同樣的低層次基本技能的不同風(fēng)味。
幸運(yùn)的是,很多開(kāi)發(fā)人員在經(jīng)過(guò)了幾輪技術(shù)學(xué)習(xí)之后逐漸意識(shí)到:一旦用COBOL、Java、C#等語(yǔ)言為事務(wù)控制編寫過(guò)代碼,就會(huì)開(kāi)始認(rèn)識(shí)到基本的、本質(zhì)的東西是不變的。不同環(huán)境下的數(shù)據(jù)庫(kù)訪問(wèn)、用戶界面設(shè)計(jì)等領(lǐng)域也是同樣的情況。不久以后,開(kāi)發(fā)人員逐漸認(rèn)識(shí)到無(wú)論具體的技術(shù)怎樣,很多基礎(chǔ)性的東西是保持不變的,這些基礎(chǔ)性的東西有的在學(xué)校里講過(guò),有的沒(méi)有。
這種認(rèn)識(shí)經(jīng)常發(fā)生在開(kāi)發(fā)人員接近三十歲或剛過(guò)三十歲的時(shí)候,通常是人們開(kāi)始穩(wěn)定下來(lái),結(jié)婚、買房的時(shí)候。這是比較幸運(yùn)的情況,因?yàn)樯厦嫣岬降倪@些新的個(gè)人需求意味著他們不可能再投入大量的時(shí)間去學(xué)習(xí)新的技術(shù),他們需要用這些時(shí)間和家庭成員在一起。突然的,高層次的角色如項(xiàng)目負(fù)責(zé)人、項(xiàng)目經(jīng)理、(非敏捷的)建模人員等對(duì)他們變得非常有吸引力,因?yàn)檫@些角色不需要持續(xù)花費(fèi)大量的時(shí)間和精力去學(xué)習(xí)新技術(shù)。于是,等到開(kāi)發(fā)人員開(kāi)始真正學(xué)到技藝的時(shí)候,他們已經(jīng)處于離開(kāi)開(kāi)發(fā)人員角色的轉(zhuǎn)變過(guò)程中了。所幸的是,新的“小年輕”不斷的跟上來(lái),這個(gè)過(guò)程在不斷的循環(huán)重復(fù)。最終的結(jié)果是:大部分最活躍的正在開(kāi)發(fā)軟件的人通常不是最稱職的做這件事的人,而他們自己甚至還不知道。