作者:tonewinner 畢業十年了,正值班級十周年聚會之際,我要回母?纯,同時也應邀做一個關于《如何塑造自己成為一名合格的軟件工程師》的講座。 各位都是從學生時代過來的,相信有很多經驗與建議要說,我就要聽聽各位的意見。 我個人的一些先說一說: 1、對編程著迷,好奇,有興趣,樂趣編程,快樂編程; 2、編碼編碼再編碼,最好的編碼都是從實踐中得來的,努力增加自已在校期間的有效代碼行;在學校里不要除了老師布置的作業之外,卻很少自己動手去寫程序;要自己多動手;創作從模仿開始,模仿不是創作; 3、要認真學好基礎理論,特別是操作系統,數據結構,算法等等; 4、邏輯思維要強,思考問題要嚴謹,自學能力要強; 5、性格和特長,做程序員的要沉下去,靜的下去,不能輕浮,眼高手低; 6、團隊協作,現在的軟件工程都是團隊協作的結果;嘗試與同學一起合作完成程序等等,傳幫帶的作風要繼承。 7、一定要多了解用戶體驗,不要只顧閉門造車,挖掘用戶的真正需求; 8、鉆研解決問題最簡單的辦法,而不是“最高級”的辦法; 9、多參與一些技術活動交流,比如:開源的工作。。。21世紀什么最重要,人才,通過活動可以結識圈內圈外的人。 最后,在學校里能做的就是,要把基礎打好,培養出強勁的自學能力,嚴謹的思維能力,只要基本素質練好了,在今后的工作當中,再投入相當的時間,自己的成長就很快了。就可以從一名合格的軟件工程師向優秀的軟件工程師邁進了。。。 暫時想到這一些,慢慢補充。各位一起來吧:) ------------------------------------------------------------ 不要在乎重寫代碼,寫出來的程序不要能用就算。當自己完成一個程序后,通常總可以有更好的實現方法,如果時間允許,不要怕麻煩,用你覺得更好的方式重寫一次,你將發現每一次的重寫,都會有很大的收獲。 老俞說的好: 我補充兩句我想到的方面,關于人人必須的領導力,責任和習慣: 領導力是人人都有的能力。。 不是領導才有領導力,只要在群體,團隊中生活,領導力是自然產生的責任感和團隊性,所謂one team ,one dream. 責任就是勇于細化,注重細節。不做表面工作; 習慣就包括:編程習慣,學習習慣啥的,特別是學習習慣,從小養成。。 還有: 記得平等待人,) 不要把自己當成高手,專家啥的。。 現實一點的: 1, 考試只是最基本不過的技能。學生容易放低要求,把考試當成目的。特別不要把考過C,java當成目標。 2,在學校里面,去參加數學建模比賽、挑戰杯、top coder或者其他有關的編程競賽。 3,學完操作系統、數據結構、體系結構、編譯原理后,先寫10萬行程序,再來讀他們,再寫20萬行,再來讀.... 4, 讀書前先看看是什么時候出的。在大學里面打基礎的時候,盡量少買5年內出的書。不要浪費時間,試圖搞懂一切,比如你沒可能同時精通excel,ppt, dreamwaver, 3ds max , linux kernel, java.另外,只通過看書是永遠不能掌握一門知識的。 5, 要是實在沒事情做,去寫個木馬、病毒玩。不過不要泄露出去。 ------------------------------------ 說說我的感受。 畢業的時候我是沒有搞過java jsp/servlet的。 當時準備面試asp的工作。 面試了幾家都沒有錄取。 反而被一家java公司錄取。 一進公司就搞tapestry spring hibernate。 eclipse也沒用過。 當時那個暈呀。。小公司沒有培訓。 就硬著頭皮上了。 只能是模仿別人的代碼,當然自己是非常努力的。 其他時間瘋狂的看著java基礎。 所以說我是從高層-----》基礎的。 ------------------------------------------ 如何成為一個優秀的軟件工程師總的來說就兩點。 1正確的學習方法 2堅持不懈的學習 學習沒有捷徑走,但卻是存在彎路的,講究正確的學習方法就是不要走彎路,首先是大學的基礎,基礎很重要,當時畢業的時候覺得基礎不是很重要,但是經過兩年多的工作發現基礎很重要。所以基礎要學習好。 但是只是基礎好是沒有用的,一定要多動手,要思考,要深度思考,邊思考邊實踐。那么在工作之后這一點尤其重要,一個問題不能只有一個解決方案,一定要多想幾個解決方案,這是鍛煉個人思維能力的好習慣。 ----------------------------------------------- 說點如何對待自己的事業和職業。其實不管你是做程序員還是做銷售,步入社會都要經過一個養成自己工作習慣的問題。這里先不要說什么是好習慣,什么是壞習慣,你至少要先有一個習慣。才步入社會最缺乏的就是一個能夠被別人也是被自己看明白的習慣了,經常是東一榔頭西一棒子,沒頭沒腦,想到啥就是啥。我想至少做為我,你不管現在交給我一個什么樣的工作,我絕對不會說我去了就絕對做不了,我至少可以做到做不好但是至少也能合格。我想大家工作久了,這個信心還都是有的。記得當初我做銷售,最羨慕老家伙們可以和客戶打出一片,總是問應該如何和客戶聊天。得到的答案,聊天就是聊天啊,隨便瞎說就行了。而自己帶第一個項目,問老人應該如何做領導,得到的答案是能帶著大家干活,讓大家知道各自該干啥就行了。第一次做設計,答案更加簡單,讓大家明白了就行。其實事情都是很簡單的,只不過年輕人都會膽怯,都害怕做不好,而且又沒有做事情的方法,不知道該從啥地方動手。其實這就是做事情前不會分析,也沒有一個做事情的大的思路。其實寫程序和寫文章,寫小說,畫畫,寫歌曲,沒啥在方法上的大區別;同時和做銷售,做領導也沒啥大區別。只不過是分工不同,做事情的思路都類似。 --------------------------------------------- 培養出興趣 優于 勤奮刻苦; 尋找一條平滑的學習曲線 優于 從難從嚴; 結合實踐學以致用 優于 鉆研理論知識和艱深技術; 雖然我認為后者也其有價值,但是前者更有可能取得成功 前者可以稱為“敏捷學習方法”,后者更像瀑布型 -------------------------------------- 補充下面幾點: 1、溝通很重要,要學會有效的溝通 2、算法數據結構是基礎,但實踐同樣重要,在大學要學好軟件開發最重要的一環就是實踐,找一個系統(或者跟一個老師做一個實際的應用系統)定一個計劃去實現,保證能學到很多東西。 3、思維方式進步的基石,要多借鑒別人解決問題的方法方式,特別是要培訓自己獨特有效的思維方式。 -------------------------------------- 其實讀書也是很重要的,不過自己一定要勤于思考和消化,并且逐漸養成選擇的眼光,清楚知道哪些書對于提升自己的境界是有幫助的。相同層次的書不必讀的太多,讀上兩三本足夠了。 例如GoF的《設計模式》和Martin Fowler的《重構》這兩本書對于應用軟件的開發人員非常重要,讀過的和沒有讀過的理解面向對象設計的能力差別非常大。 讀過《設計模式》之后,其余的《Java設計模式》、《C#設計模式》之類的書大多是以不同的語言重復圣人之言,沒有必要再讀很多這一類的書。 讀完了一本書并不是終點,一定要勤于思考和消化,在適當的時候學以致用,最終將其中的知識真正轉化為自己知識體系的一部分,并且融會貫通。當然不是說讀了一本書之后這本書中的內容一定要在任何地方都用到。其實《設計模式》中對于每種模式的適用場景都講的很清楚。具體某種模式是否適用,需要靠自己的思考來判斷。 以前看到過一個笑話,一位讀者寫信給GoF的老大Erich Gamma說他最近在一個項目中使用到了GoF 23種設計模式中的21種,還有兩種模式沒有用到,感覺很苦惱,希望Erich幫助他解決這個問題。 這就是一個非常極端的本本主義教條主義的例子了。另外以前看到某位同學羅列10余本他所認為的軟件架構設計方面的經典圖書,希望一年之內讀完這些書成為一名“優秀的軟件架構師”。這種學習精神值得鼓勵,但是具體的做法不值得提倡。一下子注入這么多的真氣進來,這些真氣還有可能相互排斥,運氣好的人可能最終像令狐沖一樣能夠全部化掉,運氣不好的人可能很快就會死掉。 |