對當前軟件行業的一點點感想
應朋友的要求寫一篇對于當前軟件行業的理解,以及當前現狀。好久沒有寫這方面的文章了,所以一上來還真不知道從哪里開始,不過想想也確實是一個好的題材,所以計劃也發布到自己的博客上,算是給自己在軟件行業中打拼的一個交代吧。
注:本文只代表個人的一點理解。
經過這兩天的思考,計劃分為幾部分:
1. 簡單介紹我的工作軌跡
2. 結合3個中國城市(北京,上海,西安),1個國外的城市(硅谷Sunnyvale)進行對比。
3. 從軟件領域縱覽
4. 從技術角度看發展
5. 個人對一些國內公司的拙劣意見
好,不多廢話
1. 工作軌跡
- 最開始用的是 C++ 開發了一套酒店管理系統,這個應該是n年前的事情了。
- 之后用過 VB, 以及 Delphi 寫了一些小的軟件,這不值得一提,都是曾經了。
- 從這之后就從原來的 C/S(Client/Server)開發轉向 B/S(Browser/Server)開發,第一個 Web 項目是 ASP,當時用了3天的時間學習 ASP,有人要問了,3天?就能用 ASP 寫東西了?呵呵,別急,其實早在我15-16歲之間自己就自學了一些 HTML,CSS 以及 JavaScript 相關的東西,我說的3天,只是能開始用 ASP+HTML+JavaScript+CSS 去工作了,之后的經驗也是從工作中不斷積累的,因為個人認為好多事情都是要在實踐中學習的。
- ASP 寫了大概2-3個項目吧,其中包括給公司寫的,也包括幫朋友做的免費小系統:) 這話應該是在06年左右了吧,J2EE開始盛行,雖然當時還沒有達到鼎盛的期間,自己選擇是需要固定自己大方向的時候了,所以開始自學 Java 以及 J2EE 相關的知識,就這樣開始了我的 Java 之旅,一直延續到2個月前把,都在做 Java 相關的項目。當時效力是電力行業,為大唐國際發電股份有限公司做了生產管理系統,科技信息系統,人事系統,短信收發系統,還為一些電廠做了生產管理系統等 等吧。這個期間用到的一些技術從語言上來說有 Java,FoxPro(哈哈,很少有人還記得它吧,很古老,但是也為很多企業提升過效率,我們借此機會向微軟致敬)以及 HTML 等,數據庫的話呢包含 Oracle,SQL Server, PI(不知道大家聽過這個沒,很NB的一個數據庫),哦對,甚至還有 Access,腳本呢用的最多就是 JavaScript 了,因為畢竟是做J2EE的項目,VBS 也用過,解決過一些小的問題。當時運用了大量的開源,包括 Yahoo UI,DWR,Spring,Hibernate,Struts,iBatis, Tomcat 等等吧,一時想不起來太詳細。Web 容器呢,用了 Weblogic 以及 Tomcat 。其實操作系統也就那么2個,Linux當時用的是 Red Hat 和 Windows Server 2000(其實這個 Server 完全可以用來當開發機以及娛樂機,一直認為他的娛樂功能比XP強多了,沒XP那么臃腫)。做這些項目的時候都是要負責和客戶溝通,更改需求的確認,需求分 析,代碼編寫,帶新人等,注意,這里有一項就是需求的變動,我想這也是很多人對中國軟件行業感到萬般無奈的一個最重要的因素吧。哈哈
- 當做完最后一個電廠的信息系統之后感覺自己的提高不會很大了,所以選擇了離開,想到一個新的城市去看看世界,哈哈。在這個新的城市找到的第一份工 作還是 J2EE 的開發,不過公司性質是當地一家本土企業,號稱在前幾年曾經是當地本土企業中數一數二的了,現在也只能用瘦死駱駝比馬大去形容了,也許是由于哥們去的時間 不對吧哈哈(太背了),給的工資完全達不到我的心里底線(錢其實對于一個追求提高的人來說真的不算是最重要的,可是如果連基本的生活都幫正不了的情況下, 我想再有追求百分之八九十的人都會選擇離開吧),所以呢3個多月之后就離開了這家公司,哦忘了說了,這里做的是工作流系統,參與了一些小的模塊,以及單點 登錄,當時還研究了一下 Liferay。
- 其實本沒有進入移動互聯網開發的計劃,可是有時候就是這樣,身不由己,進了一家外資企業,這里做的是 Location Based Service,我主要負責手機導航相關的工作,覆蓋的手機平臺有 J2ME, BlackBerry 以及 Android,說到這里貌似哥們不知不覺的又回到了 C/S 的開發,不過在這同時,給公司內部也做了很多 J2EE 的項目,例如公司的門戶網站,公司內部的 release 平臺,以及 team 內部用的小工具。不過好景不長,從開發就轉向了管理,一管就是3年,在這三年中不夸張的說去趟廁所都是跑著去跑著回,這還不是最杯具的,最杯具的是根本沒 有時間寫任何代碼!!!作為一個“不思進取”的人來說,是多么痛苦的事情。所以自己選擇在自己空余的時間找一些項目做做,順便創個收什么的,這樣就接觸了 很多 Outsourcing 的項目,也了解了很多關于 Outsourcing 這個行業。
- 最近呢,感覺自己會的東西越來越少,也許聽起來很矛盾,不過我的想法是這樣的,作為一名軟件工程師來說,我們的目標是管理,這個沒錯,但是個人建 議還是最少要寫上15年以上的代碼之后再去考慮管理,要不然你會很快被淘汰。所以好消息就是,哥們又能繼續開發了,管理的事情交出去,哈哈,大度不:)。 所以現在又開始學習 C++, Linux, Makefile, CMake, Python, HTML5 等知識,目前做的事情是車載導航,這個行業很少人接觸,不過很給力的。
2. 北京-上海-西安-Sunnyvale
從工作環境上來說,其實所有公司都差不多,為了給自己申請一臺高配置的電腦要煞費苦心,甚至有很多代碼瘋子選擇自己掏錢買高配置電腦,不過我工作過的幾家公司還好,這方面吝嗇的只占50%吧,所以我感覺很幸福。
從工作機會上來說,不用說最好的就是硅谷了,各種世界級大公司,主要說一下國內 的,北京上海都差不多,很多好公司,包括國內的,國外的分公司以及子公司,數量之巨大我想很多人都了解。在西安華為中興已經成為了很多人眼中的最好軟件公 司,一個原因,就是給的錢多,因為華為他們在各個城市給的價錢都差不多,所以我們可以想一下,把北京的工資拿到西安來花是個什么感覺。其實西安也有聊聊幾 個很優秀外企,例如Thoughtworks,IBM, Emerson,被 IBM 收購的 SPSS,NEC,Newegg 等等吧,我就不一一列舉了。下面就說一下我對以上公司的個人感覺,我們就用工作3年以上的一個 Java 程序員來去對比吧:
Thoughtworks -- Java 程序員的天堂,工資1W以上沒有問題,不過據說管理方面被西安本土化了。
IBM -- 聽起來挺唬人的,工資應該是在7k-9k左右,平時非常閑,不打卡,沒有固定的工作時間(這點很人性),住房公積金會相對豐厚,我了解的幾個team完全木有斗志(不代表所有),沒有學習的激情,給人的感覺是混日子拿工資的天堂。
Emerson -- 工資不是很給力6k+吧
原SPSS -- 很 Cool 的公司,有強大的技術實力,福利待遇沒得說,可惜被IBM收購以后很多東西都縮水了。
NEC -- 工資和Emerson應該差不多吧,面試過好多NEC的技術以及一些PM,個人不是很滿意。
Newegg -- 前幾年很不錯,現在好像蕭條了很多。
華為 -- 工資很可觀,工作3年以上之后會有拿到更多內部股份的機會,年終獎豐厚,常年加班,包括周六周日,很是熱鬧,面試過很多華為的,一個都沒招進來。
中興 -- 比華為差那么一點點的公司,剩下都一樣,也面試過很多,還是一個都沒招進來。
以上西安的公司的管理以及工作方式都非常的本土化,個人感覺進取的激情很少,管理混亂,PM各種不專業,甚至讓我感覺西安根本就沒有真正意義上的PM。
3. 軟件領域分析
給政企單位提供服務的領域,這個是鐵飯碗,但是存在很多不公平競爭,不多說這個,再說下去保不齊這篇文章審核都不過了。你懂的。
互聯網,很火,很熱,甚至已經很成熟了,多少之前的創業者實現夢想的地方,有成功的,有失敗的,競爭激烈,因為肉太多了。
移動互聯網,現在很熱,也很火,我將重點談談對移動互聯網的個人看法。
在這里能賺到錢的卻很少很少,多少投資也都砸進去了,收回的卻微乎其微,也是導致很多創業者夢想破滅的“搖籃”,個 人認為移動互聯網開始很混亂,大家都看到了這片商機,也都付諸了行動,可是都是在兩眼一抹黑地在這片混亂的戰場上廝殺,當我們看到 Nokia,Motola,Blackberry 這樣的巨人也在這片戰場上倒下的時候,難免都會有些替他們感到惋惜。
現在炙手可熱的 iOS,Android 的出現導致了很多人的退出,同時也有很多人參與了進來。Android 作為一個開源的平臺,為自己爭取了很大的市場份額,優秀的程序架構加上快速開發的 APIs,也吸引了無數的開發者,我就是其中之一,可是個人對 Android 的擔憂就是由于開源而沒有統一并且明確的標準,這難免讓人擔心會重走 J2ME 的老路(前段時間看到了一個新聞,說是 Google 也注意到了這方面的不足,已經開始研究策略了);還有就是 Android market,現在叫做 Play store,雖然換了圖標換了名字也換了排名算法,可是大家能看到的還是一堆一堆的垃圾軟件排名非常的靠前,這難免讓我這種有各種潔癖的人感到難受。相比 較之下,目前最好的 Software sotre 應該就是 App store 了,感覺至少會比 Play store 公平那么一點點,嗨。。這種混亂不好避免,各種水軍,各種刷,其實也能理解,都是為了利益。iOS 的應用開發很快速,尤其是它的 xCode,簡直是開發者的天堂(個人感覺),可是從技術角度上來說,個人感覺 Android 的整體架構要比 iOS 強。但是 Apple 給我的感覺就是把現有的產品做到極致的一家公司,哪怕是一個非常微小的細節,是我們在工作和生活上學習的榜樣。
4. 從技術角度看發展
對于開發語言簡單的說,Java 的鼎盛已快過去,C++ 王者要歸來。為什么這么說?
Java 現在覆蓋的領域最大的市場份額現在來看應該是 J2EE 相關的項目,可是 PHP 還是能搶走很大一部分市場的,唯一 J2EE 能保住的就是企業級的開發了(雖然這就是 J2EE 出現的根本原因,雖然當時 J2EE 搶走了很多 website 的市場份額)。J2ME 呢,隨著 Android 和 iOS 的出現、Blackberry 的倒下,已經快不復存在。J2SE 來說(這里只是指 client 的開發,用 Swing 和 AWT),超級慢的運行速度早就沒有任何的競爭能力。
C++ 就像是一個家庭的主人,永遠要負責這個家庭的安全一樣,應用在各個領域,從各種開發板子,到我們看到的UI,無所不能,在這里對于開發者來說,唯一的挑戰就是時間問題,不過隨著越來越多的lib的積累,我想開發速度也是會慢慢提高的。
剛才提到UI,讓我想到了 OpenGL,這項技術也會更大面積的興起,雖然覆蓋面已經很大了。
對于腳本呢,個人比較推薦Python,高效率的開發,是每一個程序員的夢想,不是嗎?
好了,說了這么多關于語言方面的,下面說一下關于開源項目的那點事兒吧。
開源項目是推動整個軟件行業的一個完全不能忽略的一大塊,要說整個軟件行業是汽車的話,我想開源項目最少是發動機的 一部分。可是我們在選型的時候往往面對的態度不對,當前大部分人用開源組件,都只是用,其中會有一部分人會對之有所改動,但是這就是我們的誤區,我們一直 在我們的項目基礎上進行選擇、進行對比,這時往往忽略了里面的代碼實現,這樣最終也只是用人家的項目而已。開源,什么是開源,開源就是別人寫的代碼你不用 寫了,但是不是你完全不用寫了,你要知道,如果你不用開源,你同樣要寫和人家一樣的代碼,如果寫不出來人家一樣的代碼,我想你還是先不要用開源,自己寫 吧,還能提高自己的能力,不知道我表達清楚沒,如果理解到這一點,我想,你會用開源項目了。
對于測試,哈哈,這個應該是整個軟件行業不論是國內還是國外都很頭疼并且必須要做的事情,它決定著你的產品的成敗!
很多國內的軟件公司招了一堆號稱叫做QA的人,每個人分上幾百甚至幾千的 cases,之后坐在電腦前,輸入-->點擊-->觀察結果,如果是預期的 pass,如果不是預期的,打開 Bug tracking 工具,報 bug。個人更喜歡和這類人叫做 UE(User Experience)哈哈,完全自己給起的名字,其實也挺好聽的。我心目中的QA應該是了解項目的整體代碼架構的(說到這我插一句,大家都在做什么單元 測試,之后呢,當作完了總結的時候都說意義不大,為什么會出現這種情況?因為還沒有真正意義上了解測試的概念),我們的單元測試首先要從架構的測試開始, 之后測試業務代碼框架,測試完業務代碼框架,再之后測試業務代碼,這幾個環節中用到的最多的是什么? Mockup data 吧?好,具體怎么生成 Mockup data 我就不用多說了吧,每個項目不同,架構不同,這些 data 的結構都不同,這些 data 也確實是比較枯燥,但是非常有用!
5. 個人對一些公司的拙劣意見
- 真正意義上的QA team,一定要選擇技術強大的人,這個很重要的,還是那句話,決定產品的成敗。
- 不要盲目追求什么敏捷開發,因為不是所有人都適合,也不是所有公司,所有項目都適合,我們要做的首先就是要選好人。
- 讓每一個職位上的每一個人了解他們的職責,并且告訴每一個人你當前階段對他的預期是什么。
- 從公司到部門到每一個小team,都要由上至下定期的樹立當前的目標。
- 讓每一個人養成的 Follow through 習慣
- 建立強大的 Review 機制
好了,就先寫這么多吧,這次沒有多說關于敏捷開發的事情,因為個人認為這個工作方式取決于“人”,強求不來。
原文鏈接