现代软件工程系列 学生精彩文章(7) 宝贵的教训
from http://codecanvas3706.spaces.live.com/blog/cns!5A77585898179960!205.entry?
[當(dāng)學(xué)生的時(shí)候, 最好犯一些錯(cuò)誤,? 經(jīng)歷一些失敗.? 不經(jīng)歷一些慘痛的失敗, 難道要到工作的時(shí)候才失敗么? ]
個(gè)人的失敗感言
記得在讀完了《夢(mèng)斷代碼》之后,我也只是為chandler項(xiàng)目感到一點(diǎn)點(diǎn)惋惜,感覺(jué)軟件有那么一點(diǎn)點(diǎn)難做。但是今天我卻從我的失敗中體會(huì)到了他們的另外一種心境。我不知道為chandler花費(fèi)了3年的精力,為chandler費(fèi)盡心血的卡普爾在項(xiàng)目失敗的時(shí)候,承受了多大的打擊。而我所能體會(huì)到得是:將近兩個(gè)星期,每天7個(gè)小時(shí)的精力付之東流之后,有一種讓人窒息的失落感。軟件難做,這不是假的!也許程序員必須在這種現(xiàn)實(shí)的無(wú)奈和郁悶中成長(zhǎng)。
今天凌晨。無(wú)意中搜到的MSDN對(duì)hook的定義把我對(duì)于分程序音量調(diào)節(jié)的想法,思路全都被給否定了,所有的工作必須從頭開(kāi)始,可是時(shí)間已經(jīng)不夠了,無(wú)奈,只能把它給砍了。
本來(lái)我是想通過(guò)api 鉤子勾住進(jìn)程向系統(tǒng)發(fā)送的特定請(qǐng)求,然后再調(diào)用自己的邏輯代碼來(lái)控制聲音消息的播放,來(lái)達(dá)到分程序音量調(diào)節(jié)的目的。可是,hook的定義是:
A hook is a point in the system message-handling mechanism where an application can install a subroutine to monitor the message traffic in the system and process certain types of messages before they reach the target window procedure.
Hook只能勾住系統(tǒng)向窗體發(fā)送的消息,不能勾住進(jìn)程向窗體發(fā)送的消息。我這顆幼小而脆弱的心靈就這樣被他深深地刺痛了。
現(xiàn)在只能總結(jié)一下教訓(xùn)了:
1. 基本上我從來(lái)就沒(méi)有用過(guò)windows API,對(duì)其一無(wú)所知,這使我花費(fèi)了大量的時(shí)間和精力在api的入門(mén)上。我覺(jué)得使用一種你完全不熟悉的技術(shù)從事開(kāi)發(fā),效率可能為負(fù)值。今后對(duì)于一些基本的主流技術(shù),都應(yīng)該有一些了解。
2. 從今天的局面來(lái)看,我一開(kāi)始的方向就是錯(cuò)的。我只是想當(dāng)然的認(rèn)為hook能夠滿(mǎn)足我的需要,而沒(méi)有仔細(xì)的去看他的官方定義,如果能夠早一點(diǎn)理解hook的官方定義,那么我也就不需要在這上面花費(fèi)大量沒(méi)用的精力了。我覺(jué)得,對(duì)于你想要使用的關(guān)鍵的技術(shù),一定要有深刻的認(rèn)識(shí),或者至少應(yīng)該理解其能干什么,不能干什么!而官方的定義顯然是最重要的參考依據(jù)!
3. 不管做什么你不能一開(kāi)始就是錯(cuò)的,方向性的錯(cuò)誤真的是會(huì)要了人的命呀!所以軟件開(kāi)發(fā)不應(yīng)該倉(cāng)促地 入手,你花在分析階段的時(shí)間越短,你開(kāi)發(fā)的時(shí)間可能會(huì)越長(zhǎng),因?yàn)榇蟛糠謺r(shí)間花在了無(wú)用功上面。而我基本上是沒(méi)有分析就入手了。
4. 一個(gè)人是很容易犯錯(cuò)的。在這一段時(shí)間里,基本上我是在孤軍奮戰(zhàn),因?yàn)槲覀兊捻?xiàng)目分了好幾個(gè)相互獨(dú)立的功能模塊,每一個(gè)人負(fù)責(zé)一部分。這就使得我對(duì)自己的東西只是有一種片面性的了解,團(tuán)隊(duì)其他人員沒(méi)能給予我?guī)椭?#xff0c;因?yàn)榇蠹一旧隙际沁@方面的新手。雖然說(shuō)web是最大的知識(shí)錦囊,但是盲目的搜索很難獲得實(shí)質(zhì)性的東西。我覺(jué)得項(xiàng)目的開(kāi)發(fā)小組中,至少應(yīng)該有一個(gè)人是某一個(gè)方向的專(zhuān)家,這樣的話(huà)才能夠給予開(kāi)發(fā)人員指導(dǎo)性意義的幫助。當(dāng)然,我們現(xiàn)在都還是學(xué)生,大家都在學(xué)習(xí),這個(gè)條件是不可能滿(mǎn)足的。
以此共勉,希望cc小組能做得跟好,加油!!!
———林江
6:31 AM | Blog it
Someone on Windows Live
Comments (6)
xin 鄒欣 - Nov. 28, 2009 - Delete
很好的總結(jié)!
很多同學(xué)畢業(yè)找工作的時(shí)候,在簡(jiǎn)歷上寫(xiě)自己“精通Windows 編程”,但是還不知道MSDN是什么東西。 你已經(jīng)比他們好多了。
健 - Nov. 28, 2009
江哥,說(shuō)實(shí)話(huà),看到這篇日志,面對(duì)你每天7個(gè)小時(shí)的經(jīng)歷投入,我很慚愧。
你比我執(zhí)著,我一周就放棄了檢測(cè)耳機(jī)插拔的工作。
感覺(jué)我上周末就這感覺(jué)吧。。。很失落!但是希望馬上轉(zhuǎn)向其他的方向,從新開(kāi)始一塊工作,一起加油!
說(shuō)點(diǎn)兒個(gè)人的小觀點(diǎn):可能咱們組的分工導(dǎo)致每個(gè)人單獨(dú)奮戰(zhàn),確實(shí)方向上和思路上容易出錯(cuò)和進(jìn)入死胡同。
這樣的分開(kāi)開(kāi)發(fā),確實(shí)感覺(jué)不是我們?cè)陂_(kāi)發(fā)一個(gè)軟件工程,而更像每個(gè)人開(kāi)發(fā)一個(gè)小軟件,然后最后拼在一起,少了相互的溝通促進(jìn),有些工作的落實(shí)和進(jìn)度、難度、出現(xiàn)的問(wèn)題,容易出現(xiàn)錯(cuò)誤判斷……
TEAM CC - Nov. 28, 2009
同樣身為小組成員之一,首先是對(duì)江哥深深的佩服,將最難的一塊接下,每天7小時(shí),這是我不敢想象的,慚愧慚愧。其次,說(shuō)實(shí)話(huà)我也感受到了計(jì)劃不足所帶來(lái)的困難,前一段時(shí)間幾乎天天都在群里向大家詢(xún)問(wèn)各種技術(shù)問(wèn)題,我覺(jué)得有很多如果在代碼之前的設(shè)計(jì)時(shí)就計(jì)劃好的,那后來(lái)的工作會(huì)高效很多。或許這學(xué)期繁多的大作業(yè)讓大家無(wú)心設(shè)計(jì),只想著趕緊開(kāi)始趕緊開(kāi)始。之后便導(dǎo)致了每天至少5小時(shí)在軟工上,可是進(jìn)度卻進(jìn)展比較緩慢。設(shè)計(jì)出的東西達(dá)不到大家期望的要求。
還有一個(gè)星期就要發(fā)布alpha版本了。我們要爭(zhēng)取把能做好的做好。小iDLE可能不一定會(huì)成為多么優(yōu)秀的軟件,但是它一定會(huì)記住我們CC小組每一位成員的成長(zhǎng)。江哥加油!!!
----HP
TEAM CC - Nov. 28, 2009
我的回復(fù)在下一篇日志里@ @
總之,對(duì)不起,以及萬(wàn)分感動(dòng)>____<
——成
超 周 - Nov. 29, 2009
讀過(guò),共勉!
Someone on Windows Live - Nov. 29, 2009
抱歉提出了hook的方向建議。相信江哥完成后就成這個(gè)方向的專(zhuān)家了!
?
?
PM之不得不說(shuō)的一些話(huà)
看了林江的那篇日志,感動(dòng)萬(wàn)分,也愧疚萬(wàn)分。從TeamWork正式開(kāi)始到現(xiàn)在的兩周時(shí)間里,從沒(méi)有方向一無(wú)所知,和大家一步一步的走到這里,有很多感慨都沒(méi)來(lái)得及說(shuō)。這篇日志,算是個(gè)人總結(jié),一表心聲吧。
一、道歉
在《移山之道》里,關(guān)于PM是這么描述的
Program Manager(程序經(jīng)理)做的是開(kāi)發(fā)和測(cè)試之外的所有事情。有些同學(xué)會(huì)問(wèn) “我寫(xiě)程序都不用測(cè)試,那么除了開(kāi)發(fā)和測(cè)試之外還有什么事兒?”在公司里開(kāi)發(fā)商業(yè)軟件可沒(méi)有那么簡(jiǎn)單,比如有10個(gè)Dev和5個(gè)Test 要在一起開(kāi)發(fā)下一個(gè)版本的MSN Messenger,那我們到底要做多長(zhǎng)時(shí)間才能完成?什么事情先做,什么后做?項(xiàng)目進(jìn)行了一半的時(shí)候,領(lǐng)導(dǎo)說(shuō)我們改名叫Live Messenger吧,那這一改名意味著什么?如何調(diào)整進(jìn)度?最后還剩下兩個(gè)月的時(shí)候,看起來(lái)我們的確完不成全部任務(wù),那要怎么辦?你又不是Dev和Test的老板,他們憑什么聽(tīng)你的呢?這也是PM的苦。PM的樂(lè)看起來(lái)在于,他們可以全盤(pán)掌控一個(gè)產(chǎn)品,廣泛了解一個(gè)行業(yè),和用戶(hù)打交道,代表團(tuán)隊(duì)出席各種會(huì)議,在公司內(nèi)部的曝光度也比較高。
老師在課上講到了,PM的工作,應(yīng)當(dāng)是總攬全局的。顯然,我個(gè)人的能力還遠(yuǎn)沒(méi)有滿(mǎn)足對(duì)PM的要求。首先,我沒(méi)有辦法提供技術(shù)性指導(dǎo),特別是在WindowsAPI以及線(xiàn)程的方面,我的了解也甚少。甚至是在分配任務(wù)的時(shí)候,我也對(duì)“耳機(jī)插拔感應(yīng)”以及“分程序調(diào)節(jié)音量”的難度沒(méi)有認(rèn)識(shí)。陳健和林江兩位同學(xué)遇到的困難,也有我的責(zé)任。他們兩個(gè)人的辛苦,我是看在眼里的;而那種從頭學(xué)起,資料難查又屢屢挫敗的感覺(jué),我個(gè)人又何嘗不理解呢。同時(shí),毋哲和張弓兩人也是憑著自己的毅力,克服了那么多困難,完成了兩個(gè)實(shí)際上很有難度的功能。
因此,在這里對(duì)CC組的全體成員們表示深深的歉意,以及敬意。
經(jīng)過(guò)了這些事情,我也獲得了很多教訓(xùn)。第一、選題上,不該在未了解難度的情況下,貿(mào)然定下一些功能,導(dǎo)致了小組成員的無(wú)謂辛苦。第二、分配工作上,同樣不該在不太了解難度的情況下分配任務(wù)。第三、也是最根本的,自身知識(shí)的不足,才是導(dǎo)致上面兩個(gè)問(wèn)題發(fā)生的原因。
二、感謝
感謝CC小組全體成員!雖然是很老套的話(huà),但是仍然要說(shuō)。
為了完成這次的TeamWork,小組的每個(gè)人都付出了很多的時(shí)間和精力。之于我個(gè)人,我從小組開(kāi)發(fā)的過(guò)程中獲得了很多快樂(lè)。并不是敷衍的謊話(huà),而是真的覺(jué)得,一個(gè)小組的人一起散發(fā)調(diào)查問(wèn)卷,一起寫(xiě)一個(gè)博客空間,一起在群里討論互助,一起去食堂吃飯,甚至在累的時(shí)候一起喊……這些,遠(yuǎn)比一個(gè)人去開(kāi)發(fā)一個(gè)軟件要快樂(lè)得太多。
似乎還沒(méi)到收工的時(shí)候,因此就先打住吧。
總之,能夠獲得大家的信任成為PM,我十分感動(dòng)。從此次經(jīng)歷中,我學(xué)到了很多。也希望今后,我能不再重蹈覆轍,成為一個(gè)真正值得信任的Program Manager。
4:24 PM | Blog it
Someone on Windows Live
Comments (2)
xin 鄒欣 - Nov. 29, 2009 - Delete
> 在《移山之道》里,關(guān)于PM是這么描述的...
我記得這些描述是在《編程之美》 中的。
TEAM CC - Nov. 29, 2009
說(shuō)實(shí)話(huà):感覺(jué)你做得相當(dāng)好了!我覺(jué)得咱們組的氛圍真的很好,尤其我從一開(kāi)始的由于自己的部分沒(méi)有進(jìn)展,而其他組員都進(jìn)展很快,不好意思參加小組的討論,到PM和組員的理解,積極加入咱們組的討論,當(dāng)時(shí)很感動(dòng)。。。
這次軟工,我一般多的時(shí)間也是在資料的查找上,盡管最后沒(méi)有結(jié)果,但是對(duì)一個(gè)軟件,或者功能的實(shí)現(xiàn)也有了進(jìn)一步的了解……
team cc 加油!
總結(jié)
以上是生活随笔為你收集整理的现代软件工程系列 学生精彩文章(7) 宝贵的教训的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在电脑上显示未知发布者怎么办_电脑提示未
- 下一篇: php 万分之一几率,那万分之一的概率啊