1. 程式人生 > >也談中外程式設計師的差別

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

        這個題目比較大,我不想作什麼評論,只是說說自己工作中的一些經歷,拿來與大家分享,希望對那些已經進入軟體開發的或者正準備進入這一行業的有些啟發。

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

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

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

    那麼都有那些細節的問題呢?我大致分成三類。
    1. 程式碼風格 我們雖然在程式設計時也遵循編碼規範,但時間長了,往往在一些小的地方表現出各自的喜好來,而他們則在任何時候都表現出嚴格的遵守編碼規範,比如,大括號的對齊,要求大括號要單獨佔一行,if,else語句必須用大括號括起來,即使只有一句表示式。而我們常常在if,else只有一句表示式的時候,不加大括號,而他們則不,每處都規規矩矩的加上。還有就是變數的命名,大家都知道程式的可讀性非常重要,我們在命名函式和一些全域性變數時非常注意,但在函式內部的區域性編碼命名時候比較隨意,這是他們所不能接受的,比如看到我們程式碼中出現這樣的語句就會非常氣憤:int temp1,temp2;他們馬上就說不明白temp1,temp2代表了什麼,在讀這個函式時容易混淆。要求即使區域性變數的名稱也要儘可能的代表它的意義。 關於可維護性,還有一個例子,大家都有這樣的經驗,有些部分的程式碼是要改上很多次的,不管程式碼的好壞,如果已經通過測試了,通常在改這部分程式碼的時候,大家不會直接刪除掉,而是將這部分程式碼註釋起來,這個大家都知道,但他們對註釋起來的程式碼也有要求,就是需要加上註釋說明為什麼要註釋掉。記得當時有個老外指著我的一行註釋的程式碼問我為什麼,其實很簡單,我和他講為什麼,為什麼,他卻對我說,他需要的不是我講的內容,而是要我把講的內容加上去。
        2. 效能優化 我們做的是嵌入式系統的開發,執行速度是使用者非常關注的一個因素,可以這麼講,比如我們的系統執行速度比競爭對手慢,不代表我們拿不到訂單,但如果拿不到訂單,很明顯,執行速度慢是一個最好的理由。所以從一開始我們就非常關注效能的優化,比如設計最好的演算法等等,但還有一些細節是我們開始時沒有注意到的,最常見的例子,在很多判斷條件下,我們通常的做法是按照設計時的Use Case來寫,這樣有的時候就出現這樣的情況,最有可能發生的事情,也是最常見的判斷條件,沒有放在判斷的起始位置,而是在中間,倒是沒有出現在最後的情況。老外們則比較注意,他們把使用者使用時最常出現的判斷都寫在了程式碼的開始,這樣軟體在使用上的整體效能就比較好。
 
        3. 程式碼穩定 這個我忘記有什麼具體的例子了,只是記憶中他們對異常情況的處理有時近乎苛刻,按照我們那時的說法,什麼變態的情況他們都想得出來,也都要在程式上做處理。

        工程師之間的差別,決定了他們開發出的產品的差別,通過這個專案,我明白為什麼很多外國的產品要比中國的產品好,不光是軟體,其他別的產品,飛機,汽車,或是一個吃飯的勺子,我們的產品和外國的差異往往也在這些細微的地方。 另外讓我比較感慨的是,在國內,很多程式設計師不知道自己三十歲後幹什麼。而且最要命的,這不僅僅想法而已,而是現實的環境就是這樣,三十還繼續程式設計序被認為沒有出息,非得升到去作一個什麼經理才成,才能有所發展,自己的事業才能發展,自己的工資才能有個新的躍升,但好像國外並沒有這種現象,上面提到專案裡的專家已經四十多歲了,還在程式設計,大家對他都很佩服,有段時間近乎崇拜。他寫的框架非常優雅,我們在這個框架基礎上能非常容易的實現各個模組,程式碼寫的乾淨漂亮,層次感很強,讀起來感覺很舒服。他寫的核心模組也很少出錯。沒有多年的功力是寫不出那樣的程式碼的。
 
        當然,我們中方的員工也有優點,我們都很勤奮,好學,而且聰明。老外們把生活看的很重,上班和生活分得很清楚,不願意加班。而我們晚上常常加班到很晚,完成的模組比他們多很多,這是他們感到很驚訝的。同時在和他們的程式碼整合,評審過程中,學到了很多東西,程式設計水平提高的很快,在專案末期基本上就沒有遇到什麼challenge了。

相關推薦

中外程式設計師差別

        這個題目比較大,我不想作什麼評論,只是說說自己工作中的一些經歷,拿來與大家分享,希望對那些已經進入軟體開發的或者正準備進入這一行業的有些啟發。        我在一家外企的軟體中心工作,有四年的時間了,公司是通訊行業的歐洲公司,我們的工作主要是根據中國的客戶需

十年IT,淺那些程式設計師面試的熱門話題【精華篇】

我自己從08年實習以來,先後經歷了幾家軟體公司,全部是外企,其中有世界500強的通訊企業,有從事期權期貨交易的歐洲中等規模的金融公司,也有為新興公司開發iOS。跨入IT行業以來,我在求職過程中經歷過多次面試,最近兩年也有過多次面試別人的經驗。我感覺現在到了對這個問題發表自己看法的時候,這篇文

程式設計師面試被要求徒手寫程式碼?你與頂級程式設計師差別就在這!

在面試中,你被要手寫程式碼,原本自信心爆棚的你突然間提筆忘字。在一張紙上反覆塗塗畫畫,最後勉強的寫出了一個功能。結果卻漏洞百出。面試過程相當不順利,丟下筆,敷衍的結束了這場面試,回去對周圍的朋友苦澀地說:這都什麼時代了,還要求手寫程式碼?這家公司落後了。 然而,這就是你與頂級程式設計師最根本的差

阿里P8資深架構師淺Java程式設計師由初級-中級-高階進階詳細介紹

Java從業者職業生涯規劃   Java進階之路-從初級到架構 java技術的學習階段有三 第1個是java基礎,比如對集合類,併發,IO,JVM,記憶體模型,泛型,異常,反射,等有深入瞭解。 第2個是全面的網際網路技術相關知識,比如redis,mogodb,ng

如何準備阿里社招面試,順 Java 程式設計師學習中各階段的建議

引言 其實本來真的沒打算寫這篇文章,主要是LZ得記憶力不是很好,不像一些記憶力強的人,面試完以後,幾乎能把自己和麵試官的對話都給記下來。LZ自己當初面試完以後,除了記住一些聊過的知識點以外,具體的內容基本上忘得一乾二淨,所以寫這篇文章其實是很有難度的。 但是,最近問LZ的

阿里P8架構師淺——Java程式設計師的路該怎麼走?(九點概括)

第一:提醒自己還有多少沒有學習 學習新東西的第一步是自己認識到哪些不足。這聽起來很簡單,但是有一些經驗的程式設計師要克服這個假設需要很長時間。有很多計算機專業的學生畢業時昂著頭傲慢地說:“這不算什麼,我全都知道”類似這般的虛張聲勢, 剛到工作崗位上,似乎在向每個同事證明自

程式設計師寫三十行程式碼,被應屆生懟:我能三行搞定!配叫程式設計師

現在的程式設計師都知道,學習對於自己職業的重要性。如果一個好幾年開發經驗的程式設計師不去學習新知識的話,可以說在技術方面都不如現在的新手程式設計師,因為現在的網際網路迭代速度實在是太快了。 這不,近日就有一位程式設計師寫出瞭如下程式碼: 可以看到,這是一段程式碼。

iOS程式設計師的成長與進階

iOS高階工程師是如何進階的 說實話這個話題說的有點大了,其實我有時候也是非常的迷茫的,工作忙的時候還能跟著工作的節奏走,閒下來時間一長就有點迷茫,不知做什麼。這當然是非常恐怖的了,所以現在在迷茫過、在不知所措過之後,想想還是應該寫寫文章屢屢思路再上路,希望自

分享8年開發經驗,淺java程式設計師職業規劃

在中國有很多人都認為IT行為是吃青春飯的,如果過了30歲就很難有機會再發展下去!其實現實並不是這樣子的,在下從事.NET及JAVA方面的開發的也有8年的時間了,在這裡在下想憑藉自己的親身經歷,與大家一起探討一下。 明確入行的目的 很多人幹IT這一行都衝著“收入高”這一點的,

優秀程式設計師和一般程式設計師差別在哪?

摘要:在這個世界上有兩種程式設計師:Day Programmers(白班程式設計師)和Night Programmers(夜貓子程式設計師),你知道優秀程式設計師和一般程式設計師有哪些差別嗎?你又是哪一型別的呢?俗話說不想當CEO的程式設計師,不是好的產品經理。程式設計師們,

Java程式設計師-----java程式設計師成長之路

引言 其實本來真的沒打算寫這篇文章,主要是LZ得記憶力不是很好,不像一些記憶力強的人,面試完以後,幾乎能把自己和麵試官的對話都給記下來。LZ自己當初面試完以後,除了記住一些聊過的知識點以外,具體的內容基本上忘得一乾二淨,所以寫這篇文章其實是很有難度的。 但是,最近問LZ的人實在是太多了,為了避免重複回

伊始--淺C++程式設計師進階歷程(一)

最近看了一篇《回答阿里社招面試如何準備,順便談談對於Java程式猿學習當中各個階段的建議》,心中有一些感觸。 在看這篇文章前幾周,還挺迷茫的。不知不覺也工作了很久,雖然在上班期間,每天或多或少地都在寫程式碼,但是很多都是僅僅增加熟練度,或者說是將別人現有的

入行多年的程式設計師敲的程式碼竟被應屆生嘲笑,這配叫程式設計師

程式設計師是靠技術吃飯的職業,如果的技術水平,那也就意味著你即將被這個行業所淘汰,在網際網路時代,發展實在太快了,所以你必須不斷的去學習新知識,不然你遲早會被新人打敗。 這不,某工作已久的程式設計師寫的一段程式碼引起了大家的關注。 看著這些程式碼,你有什麼想說的嗎? 顯然,這

Linus優秀程式設計師的三種品質

引言今天我們的嘉賓,是分散式版本管理系統Git的主要維護者,同時也是《入門Git》一書的作者,濱野純先生。而這次的訪談,也從濱野先生談自己從Linux核心的開發者,Linus Torvalds手中接過Git維護工作的原委開始了。小飼彈(以下簡稱彈)濱野純(以下簡稱濱)訪談內容

入行多年的程式設計師敲的程式碼被應屆生嘲笑:這配叫程式設計師

程式設計師是靠技術吃飯的職業,如果的技術水平,那也就意味著你即將被這個行業所淘汰,在網際網路時代,發展實在太快了,所以你必須不斷的去學習新知識,不然你遲早會被新人打敗。 這不,某工作已久的程式設計師寫的一段程式碼引起了大家的關注 看著這些程式碼,你有什麼想說的嗎?

大公司和小公司的程式設計師差別在哪?

對於一名程式設計師來說,在大公司和小公司的工作體驗差別還是挺大的,比如: 關於大小公司的劃分,在此我們暫且把BAT這類公司理解為大公司,把大部分創業型的公司理解為小公司。大公司的標籤多為規範可循的工作流程、充足的人才、穩定的福利待遇、清晰的發展規劃等,而小公司的標籤則是

而立之年再大齡程式設計師要不要轉管理路線

引子        很多程式設計師都有一點技術情節,喜歡“專心搞技術”,不喜歡管理,尤其管人。甚至為自己是“專注於技術”而自感清高,有點看不起那些“外行管理內行”或者急於轉型管理的Leader。 而且IT這個行業,有些時候確實是擁有技術就擁有很大的話語權,這個行業中確實不乏一

做什麼職業,別做程式設計師,尤其是java程式設計師

    千萬別做程式設計師,尤其別做Java這種門檻低,入門快的程式設計師(別跟我說Java搞精通了也很牛之類的,原因不解釋,做5年以上就知道了),程式設計師本來就是我見過最坑爹的職業了。。。Java程式設計師更是,現在滿地都是Java培訓機構,不出3年,你就不值錢了,就像

中年程式設計師

前言 至今為止 從98年左右開始的網際網路行業 也已經有20年了, 第一批從業者已經從青年步入了 中老年, 有些已經成為了知名企業cto 或者 成為上市公司股東  或者 成為小公司額大boss , 有些人可能還在做底層的coding 工作、 更有些人可能已經去做毫不相干的工

程式設計師的職業道德

這一點不僅僅是我們這一行的,它應是各行各業一個最基本的職業道德,我們從小就被灌輸“五講四美三熱愛”的思想,儘管如此,你在大街小巷還是經常看到亂吐口水亂丟垃圾亂撞紅燈的現象,這不得不讓我們懷疑中國的教育模式與質量,回到IT行業,氾濫成災就是盜版問題,沒有使用過盜版軟體的IT人員真的是極少極少,可能沒有,呵呵,在