看了Joel的《給計(jì)算機(jī)系學(xué)生的建議》這篇文章,覺得講的還是比較精辟的.Joel正好也是我剛聽到的名字.因?yàn)樽罱槐緹衢T的圖書《Joel說軟件》,手邊就有這本書,大家的評價(jià)很高.我也正在看.

 

Joel對于計(jì)算機(jī)系的學(xué)生給出了七條建議:

1.       畢業(yè)前學(xué)會(huì)寫作

2.       畢業(yè)前學(xué)會(huì)C語言

3.       畢業(yè)前學(xué)習(xí)微觀經(jīng)濟(jì)學(xué)

4.       不要因?yàn)槟承┓怯?jì)算機(jī)課程枯燥無趣就敬而遠(yuǎn)之

5.       學(xué)習(xí)有大量編程實(shí)踐的課程

6.       不要擔(dān)心工作都跑到印度去了

7.       好好做夏季實(shí)習(xí)

下面再截取一些Joel的經(jīng)典的解釋,每一點(diǎn)都和上面的建議對應(yīng):

1.       會(huì)寫作就更能闡述自己的思想.軟件開發(fā)組織中,最有權(quán)力和影響力的人是那些可以用自信,準(zhǔn)確,舒適的英語腳爐的人.
一個(gè)合格的程序員和一個(gè)偉大的程序員的區(qū)別不在于懂得多少中變成語言,而在于他們是否善于表達(dá).能夠說服他人,就能夠獲得權(quán)力.
會(huì)寫作的人,能夠?qū)懬逦挠脩羰謨?/SPAN>,還有代碼的注釋,用戶明白了軟件的用途,明白了他的工作價(jià)值.
最后,Joel建議學(xué)生要重視寫作方面的課程,給自己建立一個(gè)網(wǎng)絡(luò)日志.寫的越多,寫地越容易;寫地越容易,寫地就越多,這是一個(gè)良性循環(huán).

2.       C語言比某些現(xiàn)代語言更接近及其語言.不會(huì)C語言,你不可能使用高級語言寫出高效的代碼,別人不相信你能夠?yàn)榇箜?xiàng)目設(shè)計(jì)架構(gòu).

3.       微觀經(jīng)濟(jì)學(xué)是現(xiàn)代商業(yè)的理論基礎(chǔ).理解商業(yè)基本規(guī)律的程序員對于商業(yè)界來說是更有價(jià)值的程序員.

4.       你需要讓你的學(xué)分平均分看起來漂亮一點(diǎn),許多招聘主管就喜歡看這個(gè).有時(shí)候編程同樣是很枯燥的,每份工作都會(huì)有讓人厭煩的時(shí)候.我是不會(huì)聘請那些只愿意感有趣工作的人.

5.       計(jì)算機(jī)科學(xué)和軟件開發(fā)不一樣.如果你想成為一個(gè)程序員,你可以進(jìn)計(jì)算機(jī)系,這是一個(gè)非常好的專業(yè),但是你學(xué)的不是軟件開發(fā).如果你喜歡編程,不要為你不能理解教授諸如lambda算子或者線性代數(shù)等課程重點(diǎn)而沮喪,在這些課程里你連摸一下計(jì)算機(jī)的機(jī)會(huì)都沒有.要注重去學(xué)習(xí)一些和事件相關(guān)的課程.

6.       首先,根據(jù)眼前的商業(yè)時(shí)尚選擇事業(yè)是非常愚蠢的.
其次,即使編程的工作真的都跑到印度和中國去了,編程對于其他有趣的工作來說都是極好的訓(xùn)練
第三,無論是在美國還是在印度,好的程序員還是非常短缺的,請相信我.好的程序員找工作還是非常容易的.

7.       明知的招聘者會(huì)知道:真正熱愛編程的人,初中就為當(dāng)?shù)氐难泪t(yī)寫數(shù)據(jù)庫程序,工作暑假就在計(jì)算機(jī)夏令營教課,為校報(bào)開發(fā)內(nèi)容管理系統(tǒng),并在某個(gè)軟件公司做暑假實(shí)習(xí).
當(dāng)你畢業(yè)時(shí),你的建立上應(yīng)該羅列上一堆的編程實(shí)習(xí)工作.

 

看過Joel的建議后,感覺自己好多問題之前也有認(rèn)識(shí),不過還是有些沒有意識(shí)到的地方.但是,自己雖然有認(rèn)識(shí)但是還是做的很不到位或者沒做,說來慚愧呀,好多的機(jī)會(huì)沒有把握.針對Joel的七點(diǎn),我總結(jié)一下我在學(xué)校的時(shí)候是如何實(shí)踐的,做的不好的地方,請大學(xué)生朋友提高警惕,吸取經(jīng)驗(yàn):

1.       對于寫作,我沒有專門得學(xué)習(xí),在學(xué)校的時(shí)候也有這方面的選修課,但當(dāng)時(shí)認(rèn)為這種課程沒有什么用處.其實(shí)在高中的時(shí)候語文就不好,作文也是一塌糊涂,所以,真的是錯(cuò)過了學(xué)習(xí)提高的機(jī)會(huì),一位大學(xué)還是很有時(shí)間的,我想這點(diǎn)大家都會(huì)認(rèn)同.

2.       說起C語言更是慚愧,一開始學(xué)習(xí)的是Pascal,這也是我接觸的第一門編程語言,其實(shí)說實(shí)在的學(xué)完了那門課程后,除了了解了點(diǎn)語法之外,根本就不知道編程是怎么一回事!學(xué)校語言方面的課程都教的很差,老師水平平平,每門課程頂多就是教個(gè)語法就ok.C語言在我們學(xué)校及其不重視,我覺得很重要的原因就是老師都不熟悉.C語言作為選修課開,記得當(dāng)時(shí)只上過不到十次的課,知識(shí)嘛也沒學(xué)會(huì).最后考試,成績非常悲慘,60,還得感謝老師的照顧.這門課也是我大學(xué)所有成績中最最低的一門課程,其他的再差也沒低于70分的時(shí)候.現(xiàn)在想想就這水平怎么好意思在程序員里面混.

3.       當(dāng)時(shí)在學(xué)校的時(shí)候也有意識(shí):不能一心只搞技術(shù),還要有管理/經(jīng)濟(jì)方面的知識(shí).當(dāng)時(shí)只是一種很淺的意識(shí)和需求(也可以理解為一種需求),但是并不是很清楚,應(yīng)該怎么去做,什么知識(shí)需要學(xué)習(xí),需要學(xué)好.正好學(xué)校有機(jī)會(huì)修雙學(xué)位,我馬上就選擇了修工商管理專業(yè),一方面原因是因?yàn)?/SPAN>:可以拿到兩個(gè)學(xué)位,另一方面原因是:我那淺薄的意識(shí).但是,真正到了上課的時(shí)候,那點(diǎn)淺薄的意識(shí)全無,對什么微觀經(jīng)濟(jì)學(xué)/宏觀經(jīng)濟(jì)學(xué)/財(cái)務(wù)管理/企業(yè)管理等課程毫無興趣,最后這些課程幾乎沒有學(xué)到知識(shí),只是了解了一些名次和概念,浪費(fèi)了好多的時(shí)間.換來了一張毫無分量的學(xué)位證書,現(xiàn)在想想證書是次要的,重要的是能力和學(xué)到有用的知識(shí),又一次好的機(jī)會(huì)錯(cuò)過了.

4.       對于這一點(diǎn),我更想說的就是計(jì)算機(jī)方面一些基礎(chǔ)課程的學(xué)習(xí).當(dāng)時(shí)老師總是一個(gè)勁得講數(shù)據(jù)結(jié)構(gòu)很重要,很重要,但是對于我們對于計(jì)算機(jī)編程還沒有任何感性認(rèn)識(shí)的人來說理解數(shù)據(jù)結(jié)構(gòu)的重要,那簡直是不可能的.之所以認(rèn)為它重要是因?yàn)橛?jì)算機(jī)研究生要考這門課程,老師跟我們也是這樣說的.之后又是一些很基礎(chǔ)很重要的課程,比如:操作系統(tǒng)/編譯原理/計(jì)算機(jī)組成/數(shù)據(jù)庫/網(wǎng)絡(luò),老師說很重要,但是我們依然重視不起來,因?yàn)檫@幾門課都是非常抽象/理論的,學(xué)起來味同嚼蠟,巨枯燥.所以,同樣被我一一混過了!
還有一點(diǎn)在大學(xué)里面學(xué)習(xí)計(jì)算機(jī),一定要想想自己是不是對計(jì)算機(jī)這個(gè)專業(yè)很有興趣,搞軟件開發(fā)興趣和好奇心非常重要.如果感覺沒有興趣,那么趕緊想別的出路,省得到時(shí)候后悔.如果非常感興趣,那我只能祝賀了!

5.       學(xué)習(xí)軟件開發(fā)一定要實(shí)踐-上機(jī)!這方面我一直比較積極的.不過這里也得感謝我姨,無償?shù)脼槲姨峁┝艘慌_(tái)嶄新的電腦,所以一開始我就有了比較好的條件.其實(shí),對于現(xiàn)在的大部分計(jì)算機(jī)系的學(xué)生來說條件真的已經(jīng)是非常優(yōu)越了,不論是學(xué)校和個(gè)人都有豐富的資源,宿舍里有寬帶網(wǎng)絡(luò),機(jī)房都是嶄新的機(jī)器,而且記得到了大三,我們班30個(gè)人,已經(jīng)擁有了20多臺(tái)電腦,男生僅有三個(gè)人沒有.但是事實(shí)卻非常令人遺憾,大部分人的電腦都成了電視機(jī)/VCD/DVD,聊天工具,外加游戲機(jī).所以后果也是非常殘酷的,我們班到現(xiàn)在為止也就有四五個(gè)人還從事著軟件開發(fā)的工作.其實(shí)不是有些同學(xué)不想搞軟件開發(fā),而是真的是沒學(xué)到多少知識(shí).

6.       在學(xué)校里面也是聽到了好多關(guān)于畢業(yè)的學(xué)生太多,就業(yè)難之類的報(bào)道.但是我當(dāng)時(shí)沒什么感覺,因?yàn)槲以诖髮W(xué)最后的兩年里面還是積累了一點(diǎn)實(shí)踐的經(jīng)驗(yàn).我是比較順利在CSDN論壇上通過一篇招聘的帖子找到了工作,一個(gè)是第一家公司當(dāng)時(shí)比較缺人,加之我美工和PHP都會(huì)一些,也有項(xiàng)目經(jīng)驗(yàn),所以比較順利的就找到了第一份工作,然后我就只身一人從山東來到上海,我也參加了幾場招聘會(huì),主要是看看有沒有更好的機(jī)會(huì),還是有幾個(gè)公司有了意向.所以我的感覺也是這樣的,工作并不難找,學(xué)歷學(xué)位不是最重要的,關(guān)鍵是看你的能力和有沒有相關(guān)的工作經(jīng)驗(yàn).

7.       找機(jī)會(huì)實(shí)習(xí).這方面要從我參加我們學(xué)校的網(wǎng)絡(luò)教育中心開始.我從大一下學(xué)期就開始學(xué)習(xí)網(wǎng)頁制作,然后就學(xué)習(xí)了一些PHP開發(fā)web程序的知識(shí).大二的下學(xué)期有機(jī)會(huì)加入到了網(wǎng)絡(luò)教育中心,我加入后主要也就是4個(gè)人,我們負(fù)責(zé)開發(fā)和維護(hù)學(xué)校的學(xué)生信息管理系統(tǒng).在那里我還是學(xué)到一些軟件開發(fā)實(shí)踐方面的知識(shí),后來我到了大四之后,我們成立了藍(lán)天工作室,我們的隊(duì)伍也壯大的起來,最多的時(shí)候達(dá)到了十多個(gè)人,但是我們做的項(xiàng)目卻沒有什么太多的進(jìn)展,主要還是繼續(xù)開發(fā)和維護(hù)學(xué)生信息管理系統(tǒng),本來要做一個(gè)校園的社區(qū),結(jié)果只做了一半的功能就放下了沒有完成.現(xiàn)在想想當(dāng)時(shí)的機(jī)會(huì)和資源真是浪費(fèi)了,其實(shí)可以好好組織工作室的,可以學(xué)到更多的知識(shí),拉到更多的項(xiàng)目來做,但是現(xiàn)在想想也不知道當(dāng)時(shí)都忙什么去了.大學(xué)四年軟件開發(fā)方面的知識(shí),大部分都是從我們的這段經(jīng)歷中學(xué)到了.
之前我也有為我們學(xué)院設(shè)計(jì)主頁,為別的學(xué)校的學(xué)院設(shè)計(jì)主頁的經(jīng)歷,這樣的經(jīng)歷也很好,可以認(rèn)識(shí)更多的人,還有就是有小費(fèi)的呵呵.大四上學(xué)期最后的接近兩個(gè)月的實(shí)踐,我們工作室的幾個(gè)人有機(jī)會(huì)和外面的一家軟件公司合作為地稅局開發(fā)一套web系統(tǒng),這也是一次難得的經(jīng)歷,因?yàn)樽鲰?xiàng)目可以學(xué)到很多實(shí)踐方面的知識(shí),雖然會(huì)比較辛苦.大四的下學(xué)期我已經(jīng)開始到公司上班了.所以,我一直還是比較重視實(shí)踐的機(jī)會(huì)的,如果在學(xué)校里面學(xué)不到東西,那就盡快走出來學(xué)習(xí).

 

最后,我想再針對我現(xiàn)在的情況和切身的感受,給自己,也給在校學(xué)生一點(diǎn)符合國情的建議:

1.       真正工作的時(shí)候表達(dá)和溝通能力是非常非常重要的,每個(gè)公司都非常重視員工的溝通能力.而據(jù)我觀察程序員由于長期從事編程工作都變得非常內(nèi)向,不善于與人溝通.所以的確很容易發(fā)現(xiàn),公司里面懂技術(shù)會(huì)溝通,表達(dá)能力好的人,往往都會(huì)提升.所以,我現(xiàn)在也是要積極溝通,多看一些相關(guān)的書,參加一些培訓(xùn),還有就是多跟同事朋友交流.網(wǎng)絡(luò)日志就是非常好的平臺(tái),要養(yǎng)成寫網(wǎng)絡(luò)日志的好習(xí)慣,因?yàn)閷懢W(wǎng)絡(luò)日志可以激發(fā)思考,可以總結(jié)經(jīng)驗(yàn),可以記錄知識(shí),可以鍛煉寫作和表達(dá)能力,同時(shí)可以結(jié)交朋友.所以這么多好處就不要再猶豫了.還有一點(diǎn)就是盡量爭取和利用公司內(nèi)部培訓(xùn)的機(jī)會(huì),主要要求提供為別人培訓(xùn)的機(jī)會(huì),這樣既可以鍛煉自己的演講和表達(dá)能力,也能夠鞏固自己的知識(shí),樹立自己的信心和在別人心中的形象,如果你善于表達(dá),你就能更好地分享自己的知識(shí),這樣很多人就會(huì)喜歡你,人際關(guān)系也會(huì)搞得不錯(cuò).

2.       現(xiàn)在我真的能夠清楚的知道一些計(jì)算機(jī)方面的基礎(chǔ)課程的重要了.所以,我現(xiàn)在還是要把基礎(chǔ)打好首先是一些基礎(chǔ)理論方面的知識(shí)比如操作系統(tǒng)/TCP/IP協(xié)議/數(shù)據(jù)庫等.同時(shí)要重視學(xué)習(xí)面向?qū)ο?/SPAN>/UML/設(shè)計(jì)模式相關(guān)的知識(shí),還有就是軟件工程方面的知識(shí),例如:極限編程/測試驅(qū)動(dòng)開發(fā)/RUP.同時(shí)也包括其他一些實(shí)用的技術(shù),所以作為程序員一定要不斷地充實(shí)自己.

3.       我現(xiàn)在才發(fā)現(xiàn),只有懂得商業(yè)你才能更好得理解客戶需求,你就不會(huì)對產(chǎn)品或者業(yè)務(wù)部門的需求感到莫名其妙.還有也是要多關(guān)注經(jīng)濟(jì)方面的知識(shí)和現(xiàn)象,懂得一些經(jīng)濟(jì)原理.最好對于財(cái)務(wù)知識(shí)和理財(cái)知識(shí)也要掌握.

4.       端正態(tài)度,要么不做,做就要全心全力地做,追求卓越.學(xué)計(jì)算機(jī)興趣和好奇心非常重要.興趣和好奇心是你不斷學(xué)習(xí)新技術(shù)的驅(qū)動(dòng)力.

5.       積極實(shí)踐,對于出現(xiàn)的新技術(shù)新的框架,不要只是簡單看看,或者聽別人說好或者說壞.自己寫個(gè)實(shí)例試試,然后自己來判斷.別偷懶!!!!同時(shí)結(jié)合著項(xiàng)目進(jìn)行實(shí)踐,不斷嘗試,不斷思考.最近我就會(huì)看一些架構(gòu)方面的書,發(fā)現(xiàn)問題我就會(huì)在項(xiàng)目中積極調(diào)整,還有就是我在看設(shè)計(jì)模式的知識(shí)的時(shí)候我就會(huì)想我手頭的項(xiàng)目中是不是也有同樣的問題,是不是可以用設(shè)計(jì)模式進(jìn)行優(yōu)化.

6.       軟件公司還是非常缺人的,特別缺優(yōu)秀的開發(fā)人員,什么是優(yōu)秀的軟件開發(fā)人員呢?我認(rèn)為無非就是包括兩方面:能力和態(tài)度.任何人做好這兩方面都會(huì)是一位非常優(yōu)秀的程序員.其中能力主要包括了:軟件開發(fā)的技術(shù)能力,分析解決問題的能力, 團(tuán)隊(duì)合作的能力,學(xué)習(xí)能力,溝通協(xié)調(diào)能力.態(tài)度方面主要包括了:工作態(tài)度,工作要認(rèn)真負(fù)責(zé),積極主動(dòng)地發(fā)現(xiàn)問題解決問題,任勞任怨的高質(zhì)量完成工作任務(wù).

7.       大學(xué)生朋友要積極尋找實(shí)習(xí)的機(jī)會(huì).軟件開發(fā)人員把工作做到卓越,然后利用個(gè)人的空閑實(shí)踐不斷充實(shí)完善自己.養(yǎng)成好的習(xí)慣,做好計(jì)劃,嚴(yán)格執(zhí)行!

 

看過了Joel的文章,我馬上把感想寫了下來.因?yàn)槲乙e極改變自己,勤于總結(jié).