"Coder or Designer?"這個命題一直萦繞在我心間。在經曆了一連串的角色轉換(畢業、找工作、實習、帶人、帶團隊、參與面試、技術經理、架構師、面試主考官、創業公司CTO、公司的負責人)之後,對于這個命題的感悟,也越來越深刻。
現在,終于鼓起勇氣,嘗試将這一切寫下來,希望對大家的成長曆程,有更多的幫助吧。
在個人這些年的經曆,算是相當幸運的,在學習初期,雖然并不明白所謂Coder,或者Designer。各階段的導師,都有意無意的,将我引上了Designer之路,以至于我可以快速的成長,達到一個比較好的水準。
現在,我清楚的意識到,我們的學校教育,大部分情況下,并沒有讓學生意識到,自己是一個Designer。學習過程中,學到了很多“術”的東西,卻忽視了最重要的“道”。而通常情況下,很少有人臨界于Coder和Designer之間,悟與不悟,天上地下。
現在網際網路中,比較流行的程式員自嘲稱呼“碼農”,更是給大家烙上了深深的思想印痕,學軟體,就是寫代碼,就是一個Coder。
但是,請不要忘記,我們專業的名字——軟體工程!我們是軟體工程師!我們是驕傲的設計者!如果認為自己畢業之後,隻是去寫寫代碼,做一個地道地道的“碼農”,那麼,請不要浪費4年的時間,玷污了軟體工程這個神聖的專業,直接到外面讀一個教育訓練班就是可以,3個月就可以上崗。
再次強調,在你選擇了計算機軟體想關專業,那麼,從第一天起,你就是驕傲的設計者,你在構築着一座宏偉的代碼大廈,這是一個神聖的職業,請不要用“碼農”來玷污它!
Coder和Designer,是一種心态上的差異,一種思維方式的差異,由此帶來的學習方法、思維方式,截然不同。在設計師的世界裡面,Coding隻是一項基礎能力,用于實作自己的設想,而在Coder心中,Coding則是全部。
大學的課程裡面,大部分地方會選擇以“C”語言為入門第一課,之後是C++/Java、資料結構與算法、計算機組成、計算機網絡、作業系統……這種方式,一開始就是帶給人,寫代碼是最重要的思維慣性。“如何用代碼實作?”成為了學習的全部。卻忘記了,其實這些課程背後的思想,才是可以用一輩子的東西,才是設計師真正應該具備的素質。
是以,我在建構《從“零”開始設計Android系統》時,将從面相對象思想、UML模組化開始,講常見的設計思想,貫穿于整個項目,以期達到,用到什麼知識,學什麼知識的目的。程式語言,将成為實作設計的工具和手段,由思想指導實踐,使所寫的每一行代碼,都更有意義。
最後,請明确的告訴自己:“我是一個驕傲的設計師,我不是碼農,我将用我思想,鑄造一座偉大的軟體大廈!”
————————————————————————————————————————————————————————————————————
在這裡,必須要感謝各階段的導師們(按照對我影響的先後順序排序)。
高中的胡文彬老師,經典的四個字“基礎、反複”,告訴我如何踏實的學習,現在我明白,“認真,是一種能力”;
楊俊生導師,大學學習的引路人,帶給我最初的努力方向;
劉發久教授,讓我初窺了“思想”的重要性;
俞敏洪,在學校的演講,我記住的最重要的内容就是“你是什麼樣的人,就看你身處什麼樣的圈子”,第一次明白圈子的重要性。
孫禮教授,用最通俗易懂的方式,讓我明白了計算機組成的奧秘;
胡淼導師、冷鍵導師,分别為我引薦了兩位關鍵的指導人,張成老師和金建設教授;胡淼老師,幫我組建了e-space社團,後更名為UIT,還帶給了我到軟體學院上課的機會。
張成導師,指導我編寫了第一個小的遊戲引擎,幾千行的代碼,第一次讓我體會到了架構的重要性;
李彤院長,彙編語言、特批的學習機會、在我畢業多年之後,在我創業過程中,引薦自己的同學提供重要的幫助;
姜國海教授,帶我領略了JavaEE完整的設計曆程,第一次體會到架構的玄妙,設計的樂趣;
原旭教授,資料庫原理,E-R圖,第一次意識到,UML是一個輔助思考的工具,而不是累贅;
金建設教授,嚴謹的思維、做事風格,假期一個月的時間,持續指導我修改同一篇論文,您的心血,讓我終身受益不僅。大二開始至今,一直在關心和指導我,有求必應,傾力相助。您對學生的好,永生不忘。