天天看點

寫給未畢業或者畢業不久的程式員

一、隻會程式設計是不夠的

    隻思考在哪種技術上投資是不夠的。畢竟,技術隻是一種商品,你不可能隻掌握一種程式設計語言,或者隻能夠操作一種系統,然後把生意交給老闆打理。如果他們隻想找個懂代碼的機器人,那不如到雇個國外廉價的程式員。如果你想站穩腳跟,必須要深入了解你所處的領域。

    事實上,軟體工程師不能隻會開發軟體,應該要成為這個業務領域的專家。在我之前工作過的一家公司,就有這麼一個團隊。我第一次見到這個公司資料庫管理團隊的時候有點震驚,因為這個團隊裡的成員都相當厭煩資料庫技術,他們算不上出色,但這個團隊有他們的特别之處。作為企業資料庫的儲存和維護人員,他們比起那些商業分析師更加了解這個行業。他們的知識和對這個行業的了解使他們成為資料庫管理方面的搶手人才。我們這些愚人居然還看不起人家。他們做的工作正是他們的價值所在。

    你的行業經曆應該成為你的重要才能。如果你是搞音樂的,當你描述你的才能時,不能隻說我能演奏某首曲子,而要說你真正了解這首曲子的内涵。商業領域的經驗也是一樣。比方說,如果你正在做一個醫療保健項目,你能區分出HIPAA835和HIPAA837這兩種電子資料交換(EDI)協定有什麼不同嗎?同是軟體開發人員,這個知識不就能決定誰更适合這個職位嗎?

    或許你隻是一名程式員,但是如果你能用客戶所處行業的專業語言與他們交流,那這就是一項非常重要的技能。就像如果與你工作的人都真正了解軟體開發是怎麼回事,你會不會覺得一切都會變得更加得心應手呢?你再也不用向他們解釋為什麼不能再web應用程式中的頁面上傳回30 000條記錄,或者解釋為什麼他們不能向開發服務商發送連結。你的客戶也有同感。換位思考一下,如果你是客戶,為你服務的程式員了解你的行業,不用什麼都由你來做決定,你也不用緊張擔心那些小細節會出問題,你會不會覺得工作起來更容易呢?你從事的行業也是這樣。

    現在的軟體開發界,java和.net大行其道。如果你會這兩門技術,那就能在使用這兩門技術的公司找到工作。選擇商業領域也是同樣的道理。在選擇從事哪個行業的時候,你應該像選擇掌握哪門技術一樣謹慎。

    鑒于行業選擇是十分重要的,那麼選擇在哪個公司,哪個領域工作對你來說也是十分重要的。如果你還沒有仔細考慮過這個問題,那麼現在開始思考吧。機遇每天都在流逝,就像利息馬上又要漲了,但你卻把錢存在了一個低利率的死期賬戶裡。把自身的發展限制在一個靜止不前的行業裡,可不是什麼好地投資選擇。

二、一些建議

 第1:工作的重心在于溝通,軟體開發的本質是溝通的技術。作為剛開始開發的新員工,一定要記得,有問題就問,而且要知道問問題的ルール、首先應該問身邊的老員工,然後再問擔當,最後向上司彙報,有效的将問題提出和解決,能夠提高自己的工作效率和成果

第2:式樣設計不是萬能的,式樣設計必然會有錯誤,在coding中間,要學會用質疑的眼光發現式樣的問題,然後做好證據,去找式樣确認,千萬不要貪圖自己一時爽快,把問題掩蓋下去,等最後測試時發現問題的時候,問題就會變得不可收拾,當初隻要花一個小時解決的,現在可能要花1天,1周

第3:coding的時候,要注意自己的式樣裡面是不是有共同的機能,這點,式樣不會說明,但是自己要認識到,如果有共同的機能,就要抽出來寫成共同函數,抽成共同函數能減低程式的耦合性,提高程式的結構,以後的再開發和改修都會有好處

第4:寫程式的時候,請一定寫注釋,一個沒有注釋的程式就不是好程式,不要指望自己能永遠記住自己的程式的含義,如果以後有其他人幫你對應bug的時候,你的注釋就是他的引路燈,但是如果你沒有注釋,你的程式就是别人的惡夢

第5:所有的變量申明要在程式開始的地方寫出來,變量的定義要符合規約,函數名也要,我在日本遇到過一個日本人寫的帳票程式,因為沒有式樣書,是以我隻能閱讀程式,但是程式裡面的函數名字是xxxx1,xxxxx2,xxxxx3這種樣子的,導緻的結果就是,一個4000行的程式,我看了整整3天,最後隻能報告日本人,重寫程式。如果是你遇到這種該死的source,你也一定會很不爽,是以,規約對自己和别人都有好處

第6:程式中經常出現bug的一個問題就是,資料的邊界值,這也是測試中重點測試的問題。打個比方,前面一個程式,傳一個[3,3]的數組給你,結果你在自己的程式裡面,循環取每一個元素,取到了[3,4]這自然是會出錯的,尤其在循環的條件判定上面,如果你是用到計算出來的判定值,那就更要小心計算的正确性

第7:程式中間經常出現bug的一個問題就是,資料類型的轉換,比如在vb.net下面,有這麼一段程式

dim x as integer = CINt(a) (其中a是前面傳過來的string)

大家覺得這段程式怎麼樣?

其實有很大的問題,因為在a是空的情況下,這種條件轉換就會抛出exception

是以正确的做法是

if (a = string.empty) then

x = 0 '具體賦什麼值要看具體的式樣

else then

x = Cint(a)

end

第8:checkin 和 checkout的時候,一定要小心,小心,再小心。一般不推薦,全體下新版本,很多時候伺服器上面的版本不是穩定的,如果你下來之後,就會沖掉自己的環境。checkin的時候,如果發生沖突,千萬,千萬不要把人家的東西删掉,加上自己的東西,再上傳。這是一種非常不負責的行為。

第9:做什麼事情都最好在機器做個list,比如今天自己今天改了那幾個配置檔案,再source上面修改了幾個case,這樣如果以後有問題,可以按圖索引,彙報進度的時候也好說清楚

第10:有時候工作的時候,會遇到老員工心情不好的時候,發脾氣的時候,這個時候還是多體諒一下老員工吧。大家都是一個team,團結才能做好軟體

三、行動:

(1)安排一次與業内人員的午餐,問問他們是如何工作的。交流中,思考如果你來做他們的工作,你會做什麼改變或者你從他們身上學到了什麼?詢問他們日常工作中的細節。問問他們技術是如何幫助(或者阻礙)他們工作的。從他們的角度出發,思考你的工作。

(2)選擇一本與你公司行業有關的雜志。你甚至都不用買,大多數公司都有些過期的行業雜志。試着閱讀它們,雖然有些東西你可能不懂,但是要堅持。列出你可以向客戶詢問的問題。不要擔心你的問題很傻,客戶會大為欣賞你的學習态度。

(3)找一個你可以随時登入的行業網站。無論是浏覽網站時,還是閱讀雜志時,注意大事件和專題文章。你所處的行業正在做什麼努力?現在的熱門是什麼?不管是什麼,把他們介紹給你的客戶。請他們說說觀點看法。思考這些潮流是如何影響你的公司,你的部門,你的團隊,以及自己的工作的。

快樂、思考、------------------------