讀《一位資深程序員對當(dāng)前軟件行業(yè)的技術(shù)感悟》有感
今天早上坐車的時間正好讀完了這一篇文章《一位資深程序員對當(dāng)前軟件行業(yè)的技術(shù)感悟》,覺得有一點意思,可以拿來寫寫。
作者有15年的IT工作經(jīng)驗,3年的管理經(jīng)驗,想想自己,如果算上大學(xué)自己兩年做的項目,加上工作6年的經(jīng)驗,也有8年了。
作者說:“不過在這同時,給公司內(nèi)部也做了很多J2EE的項目,例如公司的門戶網(wǎng)站,公司內(nèi)部的Release平臺,以及Team內(nèi)部用的小工具。不過好景不長,從開發(fā)就轉(zhuǎn)向了管理,一管就是3年,在這三年中不夸張的說去趟廁所都是跑著去跑著回,這還不是最杯具的,最杯具的是根本沒有時間寫任何代碼?。?!”
其實很多人期待從技術(shù)轉(zhuǎn)向管理,技術(shù)人員轉(zhuǎn)讓管理人員最大的挑戰(zhàn)就是會有一種失去安全感的感覺,發(fā)現(xiàn)好像不看技術(shù)了,只做純管理,貌似沒有了生存的根本,當(dāng)初自己也在猶豫了很久,也做了差不多一年的管理,這段時間很累,在民企管人是一件很苦逼的事情,除了考核權(quán),發(fā)現(xiàn)沒有其他的權(quán)力了。后來堅決不做了,有從事技術(shù),不過大都數(shù)時間都很少在寫代碼了,現(xiàn)在學(xué)學(xué)Objective-C,自己業(yè)務(wù)時間做移動互聯(lián)網(wǎng)的開發(fā),覺得比較有意思。
作者建議:“還是最少要寫上15年以上的代碼之后再去考慮管理,要不然你會很快被淘汰”
這一點不是很認同,程序員并不是限定于寫代碼,我覺得代碼這個是寫不完的,而是從寫代碼中去提升自己的技術(shù)實力。有一些人寫一年代碼頂有一些人寫5 年代碼,當(dāng)你發(fā)現(xiàn)你寫代碼開始都是Control +C 和 Control + v 的時候,就應(yīng)該想辦法提升了,天天寫CRUD的時候,你也應(yīng)該考慮是不是該換個領(lǐng)域里。個人覺得應(yīng)該深入一門語言,然后擴展其他的編程語言。這一點我做的不是很好,直到現(xiàn)在,才開始接觸一些客戶端編程。如果是以前,我肯定會去學(xué)Python。同時多看看代碼比純粹的多寫代碼更好,看一些開源的代碼實現(xiàn),不僅僅能夠讓你使用他更輕松,也能夠增強你的設(shè)計能力。
作者關(guān)于編程語言的看法:相對來說比較認同
在目前主要的三個領(lǐng)域,傳統(tǒng)軟件,互聯(lián)網(wǎng),移動 ,Java的確不怎么占據(jù)優(yōu)勢,而且我覺得Java會在互聯(lián)網(wǎng)和傳統(tǒng)企業(yè)軟件領(lǐng)域慢慢丟失市場份額。
怎么說,我是學(xué)習(xí)Java的,在互聯(lián)網(wǎng),除了一些電商類和支付類等對大型復(fù)雜的,分布式 高并發(fā),事務(wù)型系統(tǒng),Java比較有優(yōu)勢,主要分析下來,優(yōu)勢包括:
- 1 開源提供的解決方案比較多,例如jpa,hadoop,jboss,esb,消息中間件
- 2 Java比較適合大型團隊,比如上百上千的開發(fā)團隊,因為語法死板,有一定的編程規(guī)范,每個人寫出的代碼的風(fēng)格不會有太大的差異。
- 3 因為開源,基本上所有的軟件資源都有免費的,開發(fā)工具eclipse,web服務(wù)器apache,j2ee容器jboss,消息中間件 activeMQ,數(shù)據(jù)庫mysql,操作系統(tǒng)Linux。阿里最近都在搞去oracle,全部替換成為mysql。
- 4 使用開源產(chǎn)品,發(fā)現(xiàn)問題可以自己看源代碼搞定,也可以對開源產(chǎn)品進行定制優(yōu)化。例如淘寶最近就開源了自己定制的 jvm。而沒有必要想服務(wù)廠商交服務(wù)咨詢費用。
所以亞馬遜,ebay,蘇寧,淘寶,支付寶 都主要采用Java作為開發(fā)平臺,京東也在往Java上面轉(zhuǎn)。
但是Java存在的問題也有很多
- 1 Java的框架太多,每個公司用的都不一樣,而且版本混亂,有一些很重量級的
- 2 開源產(chǎn)品同類的多,需要取舍,而且有一些自以為很牛逼的架構(gòu)師喜歡在開源的產(chǎn)品上封裝,搞自己的框架,搞的各個公司的框架都不一樣,學(xué)習(xí)成本高。光一個xml解析工具,都有幾十種。
- 3 開發(fā)效率向相當(dāng)?shù)?,遠遠比PHP,Python這些靜態(tài)語言低很多
所以對于web2.0這樣的網(wǎng)站來說,非常不適合用Java。我比較贊同使用PHP或者Python。比如豆瓣,優(yōu)酷。
在企業(yè)級市場,.net會是非常不錯的選擇。首先環(huán)境統(tǒng)一,開發(fā)效率高,微軟的開發(fā)工具非常強大,這一點我不得不佩服,而且微軟針對整個開發(fā)周期都有配套的工具,都能夠比較好無縫的結(jié)合,對開發(fā)人員來說比較友好。不像Java,東拉一點,西湊一點,這一塊不想互聯(lián)網(wǎng)市場,不會出現(xiàn)大規(guī)模集群。所以就算全部使用微軟的解決方案,軟件成本的支出也不會很高。而且微軟的服務(wù)據(jù)說特別好。
不過作者也忘記了一塊越來越重要的市場,就是云計算,Java在這個領(lǐng)域比較有優(yōu)勢,主要是還是因為開源世界的支持以及google,亞馬遜這些IT廠商的支持。學(xué)習(xí)Java的同學(xué)可以關(guān)注這一點,可以把Hadoop了解深入,我想去大公司應(yīng)該沒有太大的問題。不知道到微軟在云計算上目前的進展如何。
ps:這一篇只是自己的看法,編程語言沒有所謂的好與不好,只有在合適的地方使用合適的語言才好。對于編程語言之爭之類的,我是比較反感的,也是最沒有意義的。編程語言的背后是設(shè)計思想,這個才是最重要的。作為程序員,我覺得應(yīng)該多學(xué)習(xí)幾門風(fēng)格不同的編程語言,這樣可以加強你對編程的認識和理解。
上一幅搞笑的圖,大家輕松一下:
