一個企業需要的是什么樣的程序員?自然是高級程序員。他能夠完成系統的設計,并且運用已掌握的技能解決問題,同時還能適當的考慮到系統的穩定性、擴展性、安全性等問題。那么,如何成為企業需要的高手呢?
建議一:只有真正喜歡才能寫好程序
程序員的工作沒日沒夜,十分辛苦。但對于喜歡程序的人來說,再辛苦也值得,而不喜歡寫程序的人,感覺就像下地獄一樣,坐在電腦前極端無聊,被進度壓得喘不過氣來,天天為找bug改bug生氣。只有喜歡,只有熱愛,才能把程序寫好!
我建議不喜歡寫程序的人早點轉行,否則誤人誤己,得不償失。
建議二:把程序當藝術品,像寫詩一樣來寫代碼
現在很少有公司做code review(對寫好的程序做代碼級檢查),于是很多人在進度的壓力下潦草應付,只要測試通過就算搞定。表面上看,開發速度很快,進度有保障;但實際上,這樣的程序連開發者自己都很難讀懂,一旦有bug,很難調試,將來維護升級都非常困難。這樣的代碼多半只能重寫,浪費自然嚴重。
如果每個人寫程序的時候當藝術品來寫,寫每行都認認真真、干干凈凈的,雖然速度略微慢了一點,但綜合的開發成本會低很多。
如何寫像詩一樣美的代碼呢?方法也很簡單。
一、買幾本經典的編程書,把書上所有例程全部重新寫一遍,逐個比較和書上范例的差距,一步一步改善自己編程的風格和技巧。時間長了,自然就能寫出象書上例程一樣的代碼,甚至可以比書上寫得好。
二、基礎扎實后,多看看Linux等系統級的源代碼,看看高手是如何寫的,就有感覺了。
三、通讀一下MSDN中所有的資料,這樣,“讀書破萬卷,下筆如有神”。還有,一定要牢記軟件工程的鐵律:可能出錯的地方一定會出錯。每個變量都做初始化,引用每個參數都會做有效性檢查,在可能出錯的每個地方都會做邊界條件檢查,這樣開發出來的程序一定會穩固很多,就是出錯也會很容易修改。野路子出來的高手,一般開發速度很快,但做完后bug很多,經常需要很長時間修改。而真正的高手,追求的境界是bug free code(零缺陷代碼)。
建議三:必須寫夠十萬行代碼,不要心存僥幸
程序員象木工一樣,熟能生巧。程序員必須寫足夠代碼量的程序,才會有感覺,這是一個苦力活,沒有任何捷徑可走。
計算機是一門實踐性的科學,沒有動手能力做支撐,很難做出好的科研成果。我的一個學長是美國卡內基梅隆大學的博士,卡內基梅隆大學計算機系在全世界非常出名,他說每個博士生必須寫十萬行代碼才能畢業,卡內基梅隆大學博士進任何一個大企業基本不用面試。而國內培養的大部分研究生、博士生,動手能力都偏弱。
沒有寫過足夠代碼量的,想成為高手是不可能的,只能紙上談兵!
建議四:時刻保持好奇心
計算機技術更新換代非常快,每年都有各種各樣的新技術出現。在我過去的職業生涯中,僅編程語言,我就用過basic、masm、pascal、c++、vba、Delphi、java等。需要時刻保持好奇心,不斷學習各種新的東西,才能在未來的幾十年職業生涯中不落伍。你要理解為什么iPhone出來很多高手用iPhone,現在一天到晚惦記著換部IPhone玩玩。
人的精力有限,高手往往工作壓力也比較大,如何在有限的時間內掌握整個行業動態,的確是一個不簡單的事情。我的經驗是經常看業內的各種技術雜志,參加各種聚會,可以節約很多時間。最重要的是,交幾個博學的技術高手,多和他們交流,一定獲益匪淺!
建議五:不要局限在技術本身,多花點精力關注用戶
做到前面幾條,就已經是千金難求的高手了。但一個真正的高手需要知道用戶需要什么,如何做出讓用戶滿意的產品。
現在的軟件研發越來越強烈團隊協作,不少團隊都配置了專門的需求分析的工程師、用戶界面及用戶體驗的設計師,軟件研發的分工越來越細。很多程序員以為只要把技術搞好,不用管用戶需求和用戶體驗。實際上,需求方案及界面方案不可能寫得非常細,具體的實施還是程序員自己來實現的。這個時候,好壞的差距很快就體現出來了。
我們寫程序的最終目的是滿足用戶需求,不是簡單完成需求規劃方案中的功能。所以,程序員一定要認真揣摩用戶心理,能明白用戶的真實需求。
其次,怎么設計交互界面,讓用戶覺得好用,用起來舒服,這里面學問很大。我舉一個小例子,每個程序窗口右上角都有三個按鈕,如最小化、關閉等。喬布斯覺得不好看,不易用,他提出改用紅綠藍的交通燈。這樣修改后,果然MacOS漂亮和易用了很多。
目前互聯網和手機上的應用開發,都非常強調小團隊研發。這樣研發模式速度會快很多,但對程序員的綜合素質的要求也就更高了。
我強烈建議程序員不要僅僅局限在技術本事,還需要多點精力考慮和用戶相關的問題,學會洞察用戶的需求,并努力設計好用易用的產品。
轉注:據傳此文出自雷軍之手,是他以前給軟件開發2.0技術大會準備的演講稿,但由于某些原因沒有派上用場。這里跟大家分享下,希望對程序員來說有所幫助
想了解更多IT資訊,請訪問中培偉業官網:中培偉業