揭秘IT人才特點:中美印日四國程序員比較

揭秘IT人才特點:中美印日四國程序員比較


最近以裁判的身份參加了公司舉辦的編程大賽,發現高手云集,對公司內部的程序員能力也有了更深入的了解。我覺得編程能力對程序員而言,雖然很重要,但并不是全部。那么作為一個程序員,到底應該具備什么樣的能力呢?這個話題顯然太大。不過我覺得可以看看其它國家的程序員,也許可以得到一些借鑒。我有幸和中國,美國,印度和日本四國程序員有比較深入的合作過。雖然他們不一定有代表性,但我覺得他們的共性還是比較明顯的。以下的比較純屬個人見解,歡迎指正。
首先是日本程序員。他們的特點是非常仔細。我認為很主要的一個原因是日本公司的需求非常細致。細致到在網頁上,連一個像素都不能偏差的地步。另外,日本人的執行力非常強,對老板的承諾比命還重要。一個項目可以做到連續3個月天天加班,每天只睡4個小時。然而,高執行力背后的代價是低創造力。在日新月異的互聯網今天,很少聽說日本工程師發明了哪些重要的技術。與其說這些特點是日本程序員的,不如說是大部分日本人的。因為在日本文化中,追求品質和遵守等級制度是根深蒂固的。另外,技術領域中的很多專業詞匯是外來語,以英語(論壇)為主。這些專業詞匯往往會被翻譯成片假名。而片假名的發言有時候和英語大相徑庭,導致溝通的困難。比如病毒一詞在英語中是Virus,發音為歪儒斯,而日語的發音是味魯斯。再例如服務器(Server)一詞在日語中的發音是薩巴,和英文發言簡直風牛馬不相及。因此與日本程序員溝通是比較痛苦的,除非你懂日語。
其次來看看印度程序員。我所接觸的印度工程師都是在美國工作的。雖然他們和印度本地的工程師肯定有區別,不過相似的地方應該更多一些吧。我覺得他們的普遍優點就一個:流程做得好,文檔寫得好。但是他們寫代碼的能力,我個人的觀點是一般般。我想這里面有兩層原因。一是有相當一部分在美國工作的印度程序員是半路出家。轉行做程序員是為了生存而已。二是印度程序員在算法,數據機構等基本功方面的水平明顯低于中國程序員的。這就導致他們寫的很多代碼邏輯性不強和性能不優(以我的標準來看)。不過這兩個問題在一定程度上被大量的文檔和高性能的硬件設備彌補和掩蓋了。在溝通方面,印度人的英語發音對西方人而言幾乎沒有問題,但很難被中國人聽懂,甚至往往被國人懷疑他們是不是在說英文。
從某種意義上講,日本程序員和印度程序員十分相似。他們都很敬業,都能讓領導比較滿意,但不要過多地期望他們能做得更好,因為他們的目標就是完成領導指派的任務。日本程序員讓領導滿意的方法是不折不扣的執行和狂熱的加班。而印度程序員讓領導滿意的方法是通過大量的文檔來告訴領導他們的工作意義重大,流程嚴謹,資料齊全,而且成本很低。夸張一點地講:日本程序員善于做領導想做的事,印度程序員善于說領導想聽的話。
接下來說說美國程序員。美國程序員千奇百怪,好像很難只用幾個詞來定義他們。可能是因為美國是一個移民國家吧,本來就千奇百怪。但大部分程序員有一個共同的特點:喜歡技術,甚至崇尚技術。這點在硅谷尤為突出。這就導致每個技術領域中都有一些人會廢寢忘食地鉆研。其實這和打游戲一樣,如果你著了迷,自然會忘了吃,忘了喝,拼命地玩。我所認識的美國程序員還有一個特點,才藝能力都不錯。以前在波士頓工作的一家公司中,幾十位工程師居然可以組成一個交響樂團。有小提琴,大提琴,小號,豎琴,打擊樂等各種各樣的西洋樂器手。而且這些哥們姐們還不是一般地玩玩,周末都有自己的固定樂隊,經常參加社區的表演。更有甚者,在硅谷工作時的一位同事,白天寫程序,晚上在自家的車庫里練習乒乓球,竟然代表美國參加了悉尼和雅典的兩屆奧運會。說起寫文檔的能力,美國程序員絕對不亞于印度人。但是美國人寫文檔不是為了老板,而是為了自己,為了分享。因此他們的文檔往往讀起來很有趣,很實用。當然,這會讓老板有時候很頭疼,因為程序員不那么“聽話”。他們不是給老板交差,而是要實現自己的想法,自己的設計,自己的完美。說白了,就是美國程序員有時候想法多了點。
最后是我們中國的程序員。和其他國家的程序員相比,我覺得他們的特點還是比較明顯的。他們的算法能力普遍高于其它幾個國家的。這可能是我們的教育體制導致的,比較注重理論知識。反過來,實踐能力就相對差些。我們的程序員執行能力并不差,但在解決問題的能力上明顯不足。往往需要把任務分解得很細以后才能完成,獨立解決問題的能力不夠。另外在表達能力上也相對差些。相信大家一定見過技術水平很高,但表達能力很差的工程師。最好笑的是,我見過不少工程師拿著一支寫不出字的白板筆(我們的白板筆質量也確實不咋樣),有模有樣地在白板上寫字。仿佛聽眾可以看得到他/她寫得是什么。因為他/她完全沉浸在自己的邏輯中,完全不去體會聽眾的感受。不過我認為這些缺點并不嚴重。
因為這些是屬于技能和經驗方面的東西,是可以通過實際工作或者培訓來提升的。我認為國內程序員最大的問題還是所處的環境不利,導致相當一部分人比較浮躁和急功近利。真正能夠沉下心來鉆研技術,熱愛技術的是鳳毛麟角。我在面試的時候,常常發現工程師知識面還挺廣,但深度幾乎沒有。這樣的人很難在技術領域有所作為。我希望找到的人是,敢于承認自己不會的地方,但是只要會的東西,哪怕就一樣,就要一定比別人理解得透,鉆研得深。我相信一個人如果在某一個問題上比別人做得好,在其它問題上也一定有能力超越別人。
雖然比較下來,看到中國程序員不少的問題。但作為群體,中國的程序員可能是全世界最聰明的工程師群體。因為環境的原因,使得他們不得不想法很多,顧慮很多,無法最大程度地將聰明才智發揮在技術上。改變這種狀況首先要從公司的管理層開始。只有技術負責人熱愛技術,追求卓越,才可能為技術人員創造環境,激勵他們鉆研和創新。技術負責人需要深入項目,和工程師們一起討論技術設計,從而通過具體問題來提升工程師的能力,同時也防止自己的技術能力滑坡。在技術管理上,很多國內的公司把工程師簡單地作為資源,過于強調流程管理和資源管理。我的觀點是:工程師不是高級藍領,不能以管理生產線的方式來進行管理。優良的環境只有靠大家一起來創造。中國工程師一定可以成為世界上最優秀的工程師群體。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453514.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453514.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453514.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

BaseColumns類的作用

這個類只是提供了兩個字段,一個是"_id"一個是"_count",便于調用數據庫時導致拼寫錯誤,你也可以擴展它,或者自定義這么個,然后直接調用它的常量名,防止寫sql語句時把列名拼錯 /** Copyr…

java如何限制輸入值_[限制input輸入類型]常用限制input方法

常用限制input的方法1.取消按鈕按下時的虛線框,在input里添加屬性值 hideFocus 或者 HideFocustrueinput type"submit" value"提交" hidefocus"true"2.只讀文本框內容,在input里添加屬性值 readonlyinput type"text" readonly3.防止退…

如何規范 CSS 的命名和書寫

我開始學前端的時候也是對于規范問題頭疼,后來看了網易的NEC規范,驚呼牛逼 NEC : 更好的CSS樣式解決方案 只遵循橫向順序即可,先顯示定位布局類屬性,后盒模型等自身屬性,最后是文本類及修飾類屬性。 →顯示屬性自身屬性…

app性能測試指標

性能測試在軟件的質量保證中起著重要的作用,它包括的測試內容豐富多樣。中國軟件評測中心將性能測試概括為三個方面:應用在客戶端性能的測試、應用在網絡上性能的測試和應用在服務器端性能的測試。通常情況下,三方面有效、合理的結合&#xf…

《學做程序經理》完整版

文/Joel Spolsky 譯/羅小平 指派一名優秀的程序經理,是團隊產出優秀軟件的重要前提之一。你的團隊里可能沒有這樣的人,其實絕大多數團隊都沒有。 Charles Simonyi,這位曾與MarthaStewart(譯者注:美國女富豪&#…

java工程mvn引用jar_maven 項目加載本地JAR

將jar安裝到本地的maven倉庫1.首先確定本地有maven環境。2.安裝本地jar模板:mvn install:install-file -Dfile -DgroupId -DartifactId -Dversion -Dpackaging示例:mvn install:install-file -DfileF:\jave-ffmpegjave-1.0.2.jar -DgroupIdffmpegjave -D…

compress()方法

boolean compress(Bitmap.CompressFormat format, int quality, OutputStream stream) 把位圖的壓縮信息寫入到一個指定的輸出流中。如果返回true,可以通過傳遞一個相應的輸出流到BitmapFactory.decodeStream()來重構該位圖。注意:并非所有的格式都直接支…

token的三點注意項

token的安全是極度重要的 1:token的唯一性, 它代表著來自某應用系統用戶的一次成功登錄。我們可以利用java util包工具直接生成一個32位唯一字符串來實現。 String token UUID.randomUUID().toString(); 同時,我們定義一個javabean&#xff…

0.1 js復習

1.1 JavaScript的用途 JavaScript用來制作web頁面交互效果,提升用戶體驗。 能夠制作的頁面效果:輪播圖,無限瀑布流,tab切換,定位地圖,表單驗證等。 web前端三層來說: 結構層 HTML 從語義的角度&…

優秀的軟件企業為何倒下?

最近不到一個月,就看到兩家著名公司——SUN公司和Borland公司相繼被收購,引起IT界不小的震動,讓人感慨萬分。在此之前有北電(Nortel)、摩托羅拉的衰退,再往前有 美國數字設備公司Digital(Digita…

python 列表的推導器和內置函數

# 列表的推導式# li []# for i in range(1,11):# li.append(i)# print(li)## lis [i for i in range(1,11)] #列表的推導式# print(lis)#[變量(加工后的變量) for 變量 i in 可迭代的數據類型】 列表的推導式# li2 []# for i in ran…

Android service 中的stub類

stub是為了方便client,service交互而生成出來的代碼。 AIDL(android 接口描述語言)是一個IDL語言,它可以生成一段代碼,可以使在一個android設備上運行的兩個進程使用內部通信進程進行交互。如果你需要在一個進程中(例如:在一個Activity中)訪…

kafka exporter v0.3.0 發布: Prometheus官方推薦,歡迎試用

2019獨角獸企業重金招聘Python工程師標準>>> 時隔1個半月,kakfa exporter v0.3.0于今日正式發布,歡迎大家試用。 項目地址 Github: https://github.com/danielqsj/kafka_exporter Docker Hub: https://hub.docker.com/r/danielqsj/kafka-expo…

java手動切換成獨立顯卡_JAVA設計模式之調停者模式

在閻宏博士的《JAVA與模式》一書中開頭是這樣描述調停者(Mediator)模式的:調停者模式是對象的行為模式。調停者模式包裝了一系列對象相互作用的方式,使得這些對象不必相互明顯引用。從而使它們可以較松散地耦合。當這些對象中的某些對象之間的相互作用發…

2018.2.8 php實現qq登陸接口

PHP實現QQ登錄的原理和實現過程 2018-02-08 學習與分享 PHP自學中心 第三方登錄,就是使用大家比較熟悉的比如QQ、微信、微博等第三方軟件登錄自己的網站,這可以免去注冊賬號、快速留住用戶的目的,免去了相對復雜的注冊流程。下邊就給大家講一…

關于積累的一點看法

這是vip那邊發表的一篇帖子,今天整理,發現可能有一點代表性,就再發在這里,供各位同學參考。 壇子里有人討論小公司要不要積累框架的問題,有感而發,寫了點自己的看法,一家之言,歡迎拍…

去除vue項目中的#及其ie9兼容性

一、如何去除vue項目中訪問地址的# vue2中在路由配置中添加mode(vue-cli創建的項目在src/router/index.js) 1 export default new Router({2 mode: history,3 routes: [4 {5 path: /,6 name: menu,7 component: menu,8 …

sendBroadcast與sendStickyBroadcast的區別

前提條件:此處我主要討論兩種廣播在代碼中動態注冊時的一些細節問題。 正常情況下,廣播通常都是執行一次注冊代碼,就會觸發各接收器接收一次,無論是在onCreate里注冊還是onResume里注冊:若在onCreate里注冊&#xff0…

java 線程池 初始大小_為什么tomcat的默認線程池大小如此之大? - java

我注意到默認的tomcat 7線程池大小似乎是200。但是普通的CPU似乎有16個內核。因此只能并行執行16個線程為什么tomcat使用那么多線程。參考方案多年以來,許多單核計算機問世,并且能夠以“偽并行”模式運行功能,也就是說,您可能有16…

Hadoop2.6.0完全分布式安裝

1、修改主機名稱 對master/slave1/slave2同時配置為Master/Slave1/Slave2 masterMaster:~$ sudo gedit /etc/hostname 上述3個虛機結點均需要進行以上步驟 2、填寫主機IP 對master/slave1/slave2同時配置 masterMaster:~$ sudo gedit /etc/hosts 192.168.48.128 master192.168.…