對當前軟件行業的一點點感想

 

應朋友的要求寫一篇對於當前軟件行業的理解,以及當前現狀。好久沒有寫這方面的文章了,所以一上來還真不知道從哪裏開始,不過想想也確實是一個好的題材,所以計劃也發佈到自己的CSDN上,算是給自己在軟件行業中打拼的一個交代吧。

注:本文只代表個人的一點理解。

 

經過這兩天的思考,計劃分爲幾部分:

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 server2000(其實這個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機制

好了,就先寫這麼多吧,這次沒有多說關於敏捷開發的事情,因爲個人認爲這個工作方式取決於“人”,強求不來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章