一個(gè)程序員的一生
我在程序員的時(shí)候,我一開(kāi)始追逐這個(gè)API怎么用,數據庫SQL怎么寫(xiě)更優(yōu)化,Dcom技術(shù)的細節,然后我發(fā)現我寫(xiě)出來(lái)的產(chǎn)品為了符合客戶(hù)需求必須要大量修改,但是我的代碼卻粘在了一起,第一個(gè)感覺(jué)就是一個(gè)函數太長(cháng),一看就頭痛,而且一個(gè)函數干了好多事。這些事本來(lái)可以一段一段的,每段寫(xiě)上注釋?zhuān)缓笥幸饬x命名,自己管理錯誤和內存,然后把這些函數連在一起,
然后我作了這些:
1、小函數;
2、寫(xiě)上注釋?zhuān)?
3、有意義命名;
4、自己管理錯誤和內存;
5、流程函數;
最后我發(fā)現我這些函數可以組合成各種各樣的流程,我的程序終于好修改了,我很高興。但是我又發(fā)現,我的界面和我的流程混在了一起,另一個(gè)程序也想使用我的函數,但是我的函數中有對我的特定界面關(guān)聯(lián)的代碼,我不能連界面一起都給他,因為他有他的界面,但作的事我已經(jīng)實(shí)現了,于是我把功能函數和界面控制分開(kāi)了
我就作了這些,我的代碼很容易理解,即使新員工,只要他看完業(yè)務(wù)手冊和數據結構,他就明白我代碼為什么這么寫(xiě)。而且我的函數由于都是自己負責輸入參數和輸出參數的校驗,有明確和統一的報錯信息,所以很容易找到錯誤進(jìn)行BUG修復。由于我的程序都是小函數組成的,都有明確報錯,所以錯誤很容易找到,經(jīng)過(guò)測試組的專(zhuān)業(yè)測試后,我的代碼很穩定,即使出錯,也擴散不大,都是小bug,對系統整體沒(méi)有大影響
雖然我在前進(jìn)的過(guò)程中也經(jīng)歷過(guò)困惑,一心鉆在OOP和設計模式中。但是有可能是功力不夠,不得其解??粗?zhù)Delphi的源碼,應用了很多的OOP和模式,并且他的類(lèi)庫多年發(fā)展也沒(méi)有多大的改變,所以深信OO和模式的威力,而對自己的能力很灰心。但是代碼還得繼續寫(xiě),還想進(jìn)一步提高,于是才摸索出現在的一套做法。既實(shí)用又簡(jiǎn)單應用,每個(gè)人都能辦到。
我認為我的代碼方法已經(jīng)可以滿(mǎn)足現在的產(chǎn)品制造,并且在軟件性能調整上也積累了一些珍貴的經(jīng)驗。我發(fā)現性能最容易提高也效果最明顯的就是用SQL profilter,優(yōu)化SQL。優(yōu)化代碼,因為涉及到業(yè)務(wù),很不好著(zhù)手。優(yōu)化數據庫結構,由于代碼都是構建在特定數據表之上,所以這是最難改的地方,但是我高興了沒(méi)多久,我又遇到問(wèn)題了。因為我的程序即使再好改,但是客戶(hù)的需求真是千奇百怪,我每天在接聽(tīng)用戶(hù)的電話(huà),并且修改用戶(hù)千奇百怪的問(wèn)題。我很煩。于是我作了實(shí)施員。我想真正看看客戶(hù)到底怎么回事。于是我理解了很多。我明白了很多的事情不是技術(shù)和軟件所能解決的,而是現實(shí)環(huán)境的弊病。但是這個(gè)弊病還不是一個(gè)工程就能解決的,這是一個(gè)復雜的網(wǎng)。所以這些問(wèn)題我就說(shuō)服用戶(hù)不要用軟件來(lái)處理,因為軟件是死的,而人的做法是靈活的。而且我發(fā)現用戶(hù)雖然提了很多需求,但是有的需求他一個(gè)月用不了一次,但是修改起來(lái)卻不容易。有的需求修改完,在實(shí)際應用中卻發(fā)現不可行,那個(gè)需求只是客戶(hù)想解決過(guò)去的問(wèn)題而想的一個(gè)辦法根本沒(méi)有經(jīng)過(guò)實(shí)際的校驗。有的需求修改來(lái)修改去都是表面問(wèn)題,在實(shí)際應用中才發(fā)現重點(diǎn)問(wèn)題沒(méi)有提需求所以上線(xiàn)又擱下了,我作了總結:
1、軟件擅長(cháng)大數據量計算和查詢(xún),還有數據聯(lián)網(wǎng)共享,如果需求不能發(fā)揮軟件特點(diǎn),就不讓軟件實(shí)現。這樣我少修改了一些;
2、有的需求都是表面需求,修改了也用處不大,反而耽誤了重點(diǎn)需求的提出和修改,所以告訴用戶(hù)只修改核心功能。但是用戶(hù)提了很多需求,不修改完不上線(xiàn)。后來(lái)發(fā)現,由于他們沒(méi)有深刻理解我們系統的整體思想,所以沒(méi)有上線(xiàn)實(shí)際用,根本不知道新改的功能是否好用。用戶(hù)只是脫離了整體,單獨思考想怎么就怎么,沒(méi)上線(xiàn)根本他不知道后果,怎么說(shuō)也不行,就得讓他看見(jiàn)教訓他才反悔,但是已經(jīng)修改了。往往出現這樣的情況。最后得出一個(gè)結論:一次只提三個(gè)需求,并且用書(shū)面提出,免的說(shuō)了不算算了不說(shuō)。核心功能的需求修改可以滿(mǎn)足80%的日常使用就上線(xiàn)。這樣我少修改了很多;
3、并且我在實(shí)際做工程中,積累了大量的經(jīng)驗,寫(xiě)成FAQ,各種成功案例,讓用戶(hù)在沒(méi)有提需求之前先看看自己到底有多少老軟件實(shí)在不能解決而才買(mǎi)新軟件幫助的事。新軟件就是解決你過(guò)去解決不了的事。如果你沒(méi)有解決不了的事,提什么需求;
我的產(chǎn)品終于可以很快完成上線(xiàn),所以可以大規模推廣市場(chǎng)了,但是我們的產(chǎn)品制造又出問(wèn)題了。因為客戶(hù)越來(lái)越多,客戶(hù)的需求越來(lái)越多。我們需要開(kāi)發(fā)更多的系統,但是我們的時(shí)間有限,我們的人手有限,而且我們的人手大多是新手。怎么辦。我們遇到了災難。我們的代碼質(zhì)量因人而異。我們的版本管理混亂。我們的文檔沒(méi)有人編寫(xiě),大家都被分配到用戶(hù)處去上線(xiàn)。怎么準備數據字典,怎么切換系統,怎么記錄客戶(hù)需求,怎么管理系統,怎么修改代碼,我們沒(méi)有任何記錄?,F場(chǎng)不能離開(kāi)程序員一步,一離開(kāi)用戶(hù)出事了就不知怎么辦,沒(méi)有任何可查的資料。于是我又做了項目管理,我們缺少很多規范。事有千萬(wàn),先從緊處來(lái)。寫(xiě)文檔費時(shí)間,就開(kāi)會(huì )給大家講做事的經(jīng)驗。實(shí)施和代碼修改需要什么必要規范就制定什么規范。在這期間最容易犯的錯就是中央集權,什么事都必須自己做主。下屬不管大事小事都請示你。我被搞的什么都干不了,都成了救火隊員。我的團隊陷入了混亂之中,因為我煩亂之中作了很多飲鴆止渴的決定。我于是又犯了一個(gè)錯誤,我說(shuō)你們能決定的事盡量自己決定,不要問(wèn)我,我權利下放。結果是:各自作各自的事,互相不通知。有的事沒(méi)人管,有的事多人修改,各有一套。
我終于明白了,我作了以下總結:
1、項目經(jīng)理是找到得力的人,指導他們做事的方向。如果下屬不知如何作時(shí),及時(shí)提供給下屬做事方法;
2、制定規范,其實(shí)也就是做事方法;
3、制定計劃,分配人力去作。檢查結果;
4、有緊急事務(wù)立刻做出果斷解決,繼續前進(jìn);
我的團隊終于平靜了下來(lái),但是大家都很疲憊。大家干的很累,但是由于實(shí)施和修改消耗了大量的錢(qián),我們沒(méi)有賺錢(qián),大家什么都沒(méi)有得到。團隊很灰心,也很失望。我下了計劃,我自己都很灰心,大家認為再努力也不會(huì )再有結果,所以拖拖拉拉,進(jìn)度和成本已成不可再提的事情。人,缺少了精氣神,就什么都沒(méi)有了。我們就是缺少了這些。我就開(kāi)始重新建立團隊的精神。我發(fā)現有人為了跳槽開(kāi)始學(xué)習新的技術(shù),而這種技術(shù)是公司現有產(chǎn)品不需要的,但是他們卻在上班時(shí)間作。我先從此下手。我講了技術(shù)的方向,讓他們認清他們現在所學(xué)將會(huì )很快淘汰。我又講了現在市場(chǎng)的實(shí)況,讓他們認清外面公司也不好過(guò)。我還講了我們所從事的行業(yè)多有潛力,我們公司將有新的舉措。人心又開(kāi)始一點(diǎn)一點(diǎn)收回了。
但是我們仍然需要完成那些未收尾的工作,仍然需要去奔赴新的客戶(hù)市場(chǎng)。雖然員工很疲憊,雖然我們剛從飄搖中過(guò)來(lái),但是我們不能止步,因為我們?yōu)橛嬖?,我們別無(wú)選擇。我能夠將代碼寫(xiě)的很好,性能很高,產(chǎn)品制造很有計劃和成本控制,團隊很有戰斗力。但是我發(fā)現了一個(gè)問(wèn)題,我們的產(chǎn)品市場(chǎng)不再擴大了。市場(chǎng)份額大規模開(kāi)拓已很艱難,因為新產(chǎn)品的新鮮感已經(jīng)過(guò)去了。我們在動(dòng)蕩的日子作的項目給公司帶來(lái)了陰影,公司一直沒(méi)有大賺錢(qián),投資方很生氣。我明白了。公司畢竟是為利潤而存在的。公司不是為產(chǎn)品制造而存在,不是為了解決別人的問(wèn)題而存在。賺錢(qián)是第一位。不賺錢(qián)即使你在媒體上作的很風(fēng)光也一文不值。有人靠手賺錢(qián),有人靠嘴賺錢(qián),有人靠腦子賺錢(qián),有人靠身體賺錢(qián),不管黑貓白貓,只要抓住老鼠就是好貓。成在營(yíng)銷(xiāo),敗在管理。我開(kāi)始關(guān)注資本運作,聯(lián)盟伙伴建設,市場(chǎng)營(yíng)銷(xiāo),客戶(hù)關(guān)系營(yíng)運。
我知道,生活才剛剛開(kāi)始。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。