也談中外程式設計師的差別

2021-03-31 08:56:59 字數 2589 閱讀 9138

我在一家外企的軟體中心工作,有四年的時間了,公司是通訊行業的歐洲公司,我們的工作主要是根據中國的客戶需求,在公司的產品上作一些客戶化的工作。人們都說外企比較人性化,特別是歐洲的公司,但在客戶的需求壓力和與國內本地廠商激烈競爭下,我們還是常常加班的,而且很多時候不能遵循公司的開發流程,如果按照流程來辦,那麼意味著專案交付期要延長,需要的人員也更多,編碼時很多細節也就不太在意,只求能夠比競爭對手早實現需求,早交付專案。這樣的事情一直延續了三年之久,直到我參與到了一特殊的專案,這個專案從專案管理到實現的各個方面都給我很大感觸,我在這裡只說一些開發過程中很小,很細微的事情,但我認為這些和乙個工程師的素質有很大關係。

去年,客戶提出了乙個比較新的產品需求,要實現的話,在原有的產品上修改是不可能的,只能重新開發,按照常理,這樣的任務是需要在公司的總部完成的,但需求是中國客戶提出的,原文都用中文寫成,所以在中國這裡組成了乙個中外混合的開發隊伍,從公司總部的研發中心來了五個工程師,我們這裡也有五個人參加。專案經理,技術專家都是外國人,這個專家年齡已經超過四十歲了,有兩個女兒。另外三個是年輕人,都是正宗的計算機專業畢業,在公司最少的也工作了兩年,我們這邊是清一色年輕的工程師,工作年齡最長的五年,最少的只有不到一年的時間,三個計算機專業畢業,另外兩個是自學轉到程式開發上的。 專案在一開始我們就感受到的很大的不同,這些主要是專案管理上的事情,留待以後再講。

按照各個人的工作背景,我們劃分了任務,核心模組和框架由這個專家來寫,其餘的去完成劃分好的模組。**定期的整合,然後提供給測試組去測試。我們都知道外國人做事情比較認真,而且專業素質非常高,雖然沒有商量過,但我們都有乙個共同的意識,好好幹,不要讓他們看貶了,所以在程式設計上非常注意自己的**質量,而且反覆推敲,優化。但在我們還是感受到了差距,尤其是在專案初期的幾次整合中。因為大家都對客戶的需求了解的清楚,也都掌握了實現這些需求的技術。在**的功能實現上我們很少受到(challenge)置疑,主要在很多的細節上,而且外國同事非常直接,我們雖然處得不錯,但發現**中有錯誤或者不好的地方,他們都會直接當面指出來,絲毫不留情面。這讓我們開始很難接受,不免有些情緒,背地裡常常咒罵這些雞蛋裡面挑骨頭的老外,但情緒歸情緒,平心而論,沒有他們這麼直接的意見,我們也不會在技術有乙個較大的提公升。

那麼都有那些細節的問題呢?我大致分成三類。

1. **風格 我們雖然在程式設計時也遵循編碼規範,但時間長了,往往在一些小的地方表現出各自的喜好來,而他們則在任何時候都表現出嚴格的遵守編碼規範,比如,大括號的對齊,要求大括號要單獨佔一行,if,else語句必須用大括號括起來,即使只有一句表示式。而我們常常在if,else只有一句表示式的時候,不加大括號,而他們則不,每處都規規矩矩的加上。還有就是變數的命名,大家都知道程式的可讀性非常重要,我們在命名函式和一些全域性變數時非常注意,但在函式內部的區域性編碼命名時候比較隨意,這是他們所不能接受的,比如看到我們**中出現這樣的語句就會非常氣憤:int temp1,temp2;他們馬上就說不明白temp1,temp2代表了什麼,在讀這個函式時容易混淆。要求即使區域性變數的名稱也要盡可能的代表它的意義。 關於可維護性,還有乙個例子,大家都有這樣的經驗,有些部分的**是要改上很多次的,不管**的好壞,如果已經通過測試了,通常在改這部分**的時候,大家不會直接刪除掉,而是將這部分**注釋起來,這個大家都知道,但他們對注釋起來的**也有要求,就是需要加上注釋說明為什麼要注釋掉。記得當時有個老外指著我的一行注釋的**問我為什麼,其實很簡單,我和他講為什麼,為什麼,他卻對我說,他需要的不是我講的內容,而是要我把講的內容加上去。

2. 效能優化 我們做的是嵌入式系統的開發,執行速度是使用者非常關注的乙個因素,可以這麼講,比如我們的系統執行速度比競爭對手慢,不代表我們拿不到訂單,但如果拿不到訂單,很明顯,執行速度慢是乙個最好的理由。所以從一開始我們就非常關注效能的優化,比如設計最好的演算法等等,但還有一些細節是我們開始時沒有注意到的,最常見的例子,在很多判斷條件下,我們通常的做法是按照設計時的use case來寫,這樣有的時候就出現這樣的情況,最有可能發生的事情,也是最常見的判斷條件,沒有放在判斷的起始位置,而是在中間,倒是沒有出現在最後的情況。老外們則比較注意,他們把使用者使用時最常出現的判斷都寫在了**的開始,這樣軟體在使用上的整體效能就比較好。

3. **穩定 這個我忘記有什麼具體的例子了,只是記憶中他們對異常情況的處理有時近乎苛刻,按照我們那時的說法,什麼**的情況他們都想得出來,也都要在程式上做處理。

工程師之間的差別,決定了他們開發出的產品的差別,通過這個專案,我明白為什麼很多外國的產品要比中國的產品好,不光是軟體,其他別的產品,飛機,汽車,或是乙個吃飯的勺子,我們的產品和外國的差異往往也在這些細微的地方。 另外讓我比較感慨的是,在國內,很多程式設計師不知道自己三十歲後幹什麼。而且最要命的,這不僅僅想法而已,而是現實的環境就是這樣,三十還繼續程式設計序被認為沒有出息,非得公升到去作乙個什麼經理才成,才能有所發展,自己的事業才能發展,自己的工資才能有個新的躍公升,但好像國外並沒有這種現象,上面提到專案裡的專家已經四十多歲了,還在程式設計,大家對他都很佩服,有段時間近乎崇拜。他寫的框架非常優雅,我們在這個框架基礎上能非常容易的實現各個模組,**寫的乾淨漂亮,層次感很強,讀起來感覺很舒服。他寫的核心模組也很少出錯。沒有多年的功力是寫不出那樣的**的。

當然,我們中方的員工也有優點,我們都很勤奮,好學,而且聰明。老外們把生活看的很重,上班和生活分得很清楚,不願意加班。而我們晚上常常加班到很晚,完成的模組比他們多很多,這是他們感到很驚訝的。同時在和他們的**整合,評審過程中,學到了很多東西,程式設計水平提高的很快,在專案末期基本上就沒有遇到什麼challenge了。

也談中外程式設計師的差別

我在一家外企的軟體中心工作,有四年的時間了,公司是通訊行業的歐洲公司,我們的工作主要是根據中國的客戶需求,在公司的產品上作一些客戶化的工作。人們都說外企比較人性化,特別是歐洲的公司,但在客戶的需求壓力和與國內本地廠商激烈競爭下,我們還是常常加班的,而且很多時候不能遵循公司的開發流程,如果按照流程來辦...

也談程式設計師

對於從事程式開發的人員來說,今後的前景問題了,應該算的上自身最關心的乙個問題了。最近也開始比較有空了,看了些文章,本來是想學點jbpm的,可是始終沒認真看完。道是對自己的前程開始有些擔心。大學畢業的時候,就聽說乙個問題,做程式開發員人,一般都超不過30的。30後再做開發,估計就比較難了。一想在想這是...

軟體之路 也談「程式設計師不超過30歲」

總是不斷地在論壇 部落格乃至報刊 雜誌上看到關於 程式設計師是否可以乾到30歲之後 或者 程式設計師30歲以後能夠做什麼 這樣的討論。這樣的討論多了,似乎在校念計算機的學生也沒出校門就開始嚴肅思考自己30歲之後應該轉行幹什麼的問題。這個觀點對整個產業影響不小,然而,我似乎無法為 不能乾到30之後 這...