IDC最近一份關(guān)于移動(dòng)應(yīng)用開(kāi)發(fā)的調(diào)查報(bào)告顯示,Androdid開(kāi)發(fā)者對(duì)谷歌的移動(dòng)操作系統(tǒng)平臺(tái)的興趣正在下降。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),新建企業(yè)網(wǎng)站建設(shè),新建品牌網(wǎng)站建設(shè),網(wǎng)站定制,新建網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,新建網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
盡管依然有79%的開(kāi)發(fā)者表示對(duì)Android“非常感興趣”,但I(xiàn)DC的調(diào)查報(bào)告顯示,一些跡象表明在2012到2013年間,Android將隨著遇到的問(wèn)題,市場(chǎng)份額會(huì)出現(xiàn)大的變化。
解決這些問(wèn)題,對(duì)于谷歌如何維持Android生態(tài)系統(tǒng)的活力來(lái)說(shuō)意義重大。
同樣,獨(dú)立開(kāi)發(fā)者也要意識(shí)到這些問(wèn)題將給自己的商業(yè)計(jì)劃帶來(lái)困難。
1、Android的碎裂化問(wèn)題現(xiàn)如今,用戶手中的Android系統(tǒng)版本各異。
相信你已經(jīng)看到過(guò)有很多關(guān)于開(kāi)發(fā)者如何為最低通用版本編碼的文章(現(xiàn)在可能是2.3版本了)。
但是,不止在操作系統(tǒng)方面存在Android版本碎裂化這個(gè)問(wèn)題。
在SDK開(kāi)發(fā)工具上,也沒(méi)有統(tǒng)一的標(biāo)準(zhǔn)。
你可能要為六種尺寸的屏幕編碼,不同的按鈕、鍵盤,有的可能根本就沒(méi)有按鈕??好吧,你可以在一個(gè)代碼分支上為所有的這些設(shè)備編碼(這種方案即笨拙又不容易實(shí)現(xiàn)),或者開(kāi)發(fā)多個(gè)版本(聽(tīng)起來(lái)就很糟糕)。
當(dāng)然,如果回報(bào)還不錯(cuò)的話,這么做也未嘗不可,可事實(shí)上并非如此。
2、投資的回報(bào)這似乎是既定的法則:Android應(yīng)用的利潤(rùn)一般都比iOS應(yīng)用的利潤(rùn)少。
這可能是因?yàn)槿藗冊(cè)谫I手機(jī)時(shí)更關(guān)注它的功能而不是應(yīng)用的質(zhì)量,但是這意味著開(kāi)發(fā)者將獲得較少的利潤(rùn)。
如果開(kāi)發(fā)者擁有的時(shí)間和資源有限,在需要選擇平臺(tái)時(shí),平臺(tái)已經(jīng)建立的基礎(chǔ)將變得不再重要,他們更關(guān)心的將會(huì)只是:“我能否賺到錢?”3、克隆應(yīng)用的數(shù)量讓我們先假設(shè)你有一款優(yōu)秀的應(yīng)用,它能做一些與眾不同的工作,可能是能夠聯(lián)機(jī)到社交網(wǎng)絡(luò)上、處理PIM數(shù)據(jù),或者能提供一種新的游戲玩法。
然后你有辦法讓你的應(yīng)用從成千上萬(wàn)個(gè)應(yīng)用里脫穎而出。
但是,接下來(lái)就會(huì)有數(shù)不清的開(kāi)發(fā)者開(kāi)發(fā)出克隆版本,從而拉低你的應(yīng)用的價(jià)格,和你展開(kāi)競(jìng)爭(zhēng)。
Android商店幾乎是一個(gè)無(wú)法無(wú)天的社會(huì)。
如果不解決這一問(wèn)題,讓開(kāi)發(fā)者面對(duì)不公平的競(jìng)爭(zhēng),還有多少開(kāi)發(fā)者愿意在里面做應(yīng)用推廣呢?4、選擇哪家商店銷售你的應(yīng)用?GooglePlay商店、亞馬遜的Android商店、BarnesandNoble’sNookApps??有很多地方你可以選擇用來(lái)銷售你的應(yīng)用。
這是市場(chǎng)方面的碎裂化問(wèn)題,而且,有時(shí)候它也會(huì)讓設(shè)備型號(hào)變得紛亂繁雜。
這就意味著要建立更多的版本、協(xié)議等等,這些都會(huì)是令你頭痛的工作。
與此相反的是,iOS和Windows手機(jī)就沒(méi)有這么多繁雜的工作要做。
像EA和Ubisoft這樣的公司或許可以應(yīng)付這些問(wèn)題,但是那些個(gè)人開(kāi)發(fā)者是不可能把他們所有的時(shí)間都花在應(yīng)用商店的管理上的。
有時(shí)候,電腦培訓(xùn)認(rèn)為當(dāng)平臺(tái)已經(jīng)不再處于快速發(fā)展階段時(shí),開(kāi)放和免費(fèi)并不是做好的選擇。
Android和JAVA區(qū)別:
Android是主流智能手機(jī)的操作系統(tǒng),JAVA是一種開(kāi)發(fā)語(yǔ)言,兩者沒(méi)有好壞優(yōu)勢(shì)之分,只是兩種職業(yè)崗位選擇,學(xué)安卓從事移動(dòng)互聯(lián)方向開(kāi)發(fā),學(xué)JAVA從事軟件方向開(kāi)發(fā),主要看個(gè)人選擇,從學(xué)JAVA轉(zhuǎn)移到安卓,學(xué)安卓轉(zhuǎn)移到JAVA都是可以的。完美空間認(rèn)為:從職業(yè)角度出發(fā),想要快速?gòu)氖萝浖袠I(yè)的開(kāi)發(fā),對(duì)大多數(shù)計(jì)算機(jī)不好的人員,安卓Android開(kāi)發(fā)是最合適的選擇。
從整體來(lái)講,java和android的區(qū)別在于android程序是基于組件和配置的,而且android開(kāi)發(fā)以java語(yǔ)言為開(kāi)發(fā)工具,表面上看他們有點(diǎn)同宗不同門,但實(shí)際上區(qū)別十分大,android是一個(gè)主流智能手機(jī)操作系統(tǒng),java是一種開(kāi)發(fā)語(yǔ)言,兩者沒(méi)有好壞之分,而且兩者也是不同的崗位,從工作崗位來(lái)看,安卓從事的是移動(dòng)互聯(lián)方向,java則是從事開(kāi)發(fā)方向。
java和android都是可以做手機(jī)開(kāi)發(fā)的;在以前半智能機(jī)的時(shí)代,手機(jī)應(yīng)用的最多的就是java、塞班操作系統(tǒng)了,這兩個(gè)操作系統(tǒng)在三年以前應(yīng)該和今天的安卓、IOS系統(tǒng)差不多,當(dāng)時(shí)認(rèn)為很完美了,不過(guò)時(shí)至今日,java系統(tǒng)相對(duì)較少,隨著3G時(shí)代的到來(lái),人們最重要的網(wǎng)絡(luò)終端設(shè)備一定是手機(jī),而移動(dòng)終端設(shè)備中3G系統(tǒng)的android手機(jī)又最多,android手機(jī)又以java為基礎(chǔ),所以二者都可以說(shuō)能做手機(jī)開(kāi)發(fā)。
現(xiàn)在安卓能占智能系統(tǒng)的50%左右的市場(chǎng)份額,當(dāng)然智能系統(tǒng)或者是移動(dòng)終端不僅僅是指手機(jī),因?yàn)閺腶ndroid3.0以后就開(kāi)始應(yīng)用于平板電腦了,android也是在快速的發(fā)展,從目前勢(shì)頭上來(lái)看,好像android要略勝一籌,但是其實(shí)這兩者并沒(méi)有可比性,因?yàn)榘l(fā)展方向并不一樣,側(cè)重點(diǎn)也不一樣,java按照實(shí)際的開(kāi)發(fā)產(chǎn)品來(lái)看,至少有三個(gè)方向可以發(fā)展;手機(jī)終端、電腦客戶端、web服務(wù)器斷,而android只適用于手機(jī)終端,因此java的發(fā)展范圍相對(duì)要廣一些,也就是我們所說(shuō)的工作崗位更多一些,而android范圍小一些,但是從待遇上來(lái)看普遍稍高,各有各的好處,再說(shuō)學(xué)習(xí)來(lái)看,從android轉(zhuǎn)java和從java轉(zhuǎn)android都是可以的,不管哪個(gè)行業(yè)都存在金字塔頂端的人,如果做好的話兩者都是不錯(cuò)的方向。
在成為Android開(kāi)發(fā)程序員的這幾年時(shí)間內(nèi),從一個(gè)什么都不懂的菜鳥(niǎo),成長(zhǎng)成為一名資深的Android開(kāi)發(fā)程序員。
雖然這一路感觸很多很辛苦,但是我依然熱愛(ài)這個(gè)行業(yè)。
第一就是技術(shù)要扎實(shí)在從事這個(gè)行業(yè)之前我參加過(guò)Android軟件開(kāi)發(fā)培訓(xùn),在北大青鳥(niǎo)學(xué)習(xí)了一段時(shí)間,雖然之前沒(méi)有接觸過(guò),但是在這一段時(shí)間內(nèi)學(xué)會(huì)了很多的知識(shí)。
每天學(xué)習(xí)到很晚,教室里依然有老師的陪伴,這一段時(shí)間的學(xué)習(xí)為我之后的工作,打下了很好的基礎(chǔ)。
所以無(wú)論是在哪個(gè)行業(yè),扎實(shí)的技術(shù)首先是排在第一位的。
如果之前在學(xué)校里面已經(jīng)接觸過(guò)這一塊的知識(shí),那么在今后的工作中你也會(huì)受到這段時(shí)間學(xué)習(xí)的幫助。
第二你要有計(jì)算機(jī)思維在it行業(yè)工作肯定是要有計(jì)算機(jī)思維的,這也是亙古不變的道理。
很多時(shí)候當(dāng)事情非常的亂,這時(shí)候你需要有計(jì)算機(jī)思維。
它會(huì)幫助你快速的解決當(dāng)前的問(wèn)題,恢復(fù)正常的工作。
這個(gè)思維要在你的頭腦里固化,以后遇到事情就可以快速解決。
第三思維的跳躍性當(dāng)你每天都在面對(duì)枯燥的代碼時(shí),難免會(huì)產(chǎn)生負(fù)面的情緒。
這時(shí)你需要思維的跳躍性,緩解當(dāng)時(shí)的情緒,以便更好的工作。
在遇到問(wèn)題時(shí)依舊是如此,跳躍的思維會(huì)給你帶來(lái)意想不到的收獲。
IT培訓(xùn)認(rèn)為當(dāng)你一直在堅(jiān)持這幾件事情的時(shí)候,你會(huì)發(fā)現(xiàn)自己已經(jīng)成為了一名專業(yè)的Android開(kāi)發(fā)程序員。
Android程序員的職業(yè)規(guī)劃,怎么說(shuō)呢?一句話叫做:早知如此,又何必當(dāng)初。命運(yùn)有些是自己可以掌握的,有些可能需要運(yùn)氣和機(jī)會(huì)。
一、路徑可達(dá)
先說(shuō)說(shuō)路徑可達(dá)這個(gè)詞吧?有些人會(huì)覺(jué)得他的路看不到未來(lái),有些人就可以清晰的看到他的方向。如果你現(xiàn)在所做的工作過(guò)兩年會(huì)不會(huì)有所成長(zhǎng),達(dá)到你的目標(biāo)。如果答案是否定的,那么說(shuō)明現(xiàn)在的工作是沒(méi)有上升通道的,就需要改變。當(dāng)然安于現(xiàn)狀不思進(jìn)取是另外一回事。時(shí)刻反思自己所走的路,然后迅速調(diào)整,可能會(huì)少走很多彎路,畢竟時(shí)間不可逆。
二、時(shí)間規(guī)劃
我有時(shí)候會(huì)想我五年后在哪里?做什么?大部分人對(duì)于這個(gè)都會(huì)比較模糊。因?yàn)闀r(shí)間跨度太大。五年時(shí)間相當(dāng)于整個(gè)生命長(zhǎng)河其實(shí)比較短,但在職業(yè)規(guī)劃中確是很長(zhǎng)的段,特別是剛畢業(yè)的那五年。從時(shí)間規(guī)劃來(lái)講肯定會(huì)用到時(shí)間的切分。宏觀的東西只有落地到一件件事上才是有效的,才算得上完整的規(guī)劃。但是話又說(shuō)回來(lái)人是有惰性的,人對(duì)于這種有限制的東西有天然的排斥感,執(zhí)行起來(lái)非常痛苦,即使開(kāi)始執(zhí)行起來(lái)很有激情,過(guò)不了幾個(gè)月,所有的計(jì)劃都縮水了,這同時(shí)也導(dǎo)致了很多時(shí)間的浪費(fèi)和做事情的盲目性。所以計(jì)劃的時(shí)效性和執(zhí)行很重要,這里又會(huì)涉及一個(gè)詞:“執(zhí)行力”。
沒(méi)有計(jì)劃也導(dǎo)致學(xué)習(xí)變成一個(gè)一個(gè)孤立的點(diǎn),完全沒(méi)有串連性。因?yàn)槟闶窍氲綄W(xué)什么學(xué)什么,而不是計(jì)劃著學(xué),一段時(shí)間后可能會(huì)有一些積累,但是永遠(yuǎn)深度不夠。這可以做一個(gè)簡(jiǎn)單的實(shí)驗(yàn),把自己腦子里的東西理一理,如果時(shí)間需要很長(zhǎng)說(shuō)明整體知識(shí)體系已經(jīng)有些混亂,可以對(duì)比一下操作系統(tǒng)的磁盤整理。如果一個(gè)人能很好的管理時(shí)間那么必成大牛。好學(xué)生好在哪里,排除智商的因素外,就是時(shí)間管理和善于思考。我覺(jué)得我自己最大的問(wèn)題:時(shí)間管理,自律性,溝通能力。這三塊是我覺(jué)得自己最缺乏一定程度上是致命的,很大程度上會(huì)決定我未來(lái)的所發(fā)展的高度。
三、項(xiàng)目經(jīng)理還是架構(gòu)師
在程序員中一直有個(gè)討論就是將來(lái)要做項(xiàng)目經(jīng)理還是做架構(gòu)師。這兩條路的側(cè)重點(diǎn)不一樣,所以積累的東西也可能不同。項(xiàng)目經(jīng)理更強(qiáng)調(diào)綜合能力,比如說(shuō)協(xié)調(diào)能力,溝通能力等一系列偏管理的能力。而架構(gòu)師可能更專注于技術(shù)本身,技術(shù)上的宏觀方向。兩條路有重疊,但是更多的是區(qū)別。有些項(xiàng)目經(jīng)理可能就不會(huì)寫代碼。但是同樣可以帶好一個(gè)項(xiàng)目,一個(gè)團(tuán)隊(duì)。
我曾經(jīng)也問(wèn)自己要是以后這兩條路走哪條,其實(shí)都可以嘗試一下。比如說(shuō)給一個(gè)項(xiàng)目讓我?guī)В夷芊癜阉鼛Ш茫鋵?shí)需要機(jī)會(huì),同時(shí)也需要自己去爭(zhēng)取這樣的機(jī)會(huì)。所以我的答案就是如果有機(jī)會(huì)的話兩條路都可以嘗試走走,就是兩個(gè)方向的一些能力都可以進(jìn)行積累。很多人認(rèn)為項(xiàng)目經(jīng)理是一個(gè)職位,我倒覺(jué)得是動(dòng)態(tài)的,這個(gè)項(xiàng)目中你做項(xiàng)目經(jīng)理,另外一個(gè)項(xiàng)目中可能又是開(kāi)發(fā)工程師。所以不永遠(yuǎn)是項(xiàng)目經(jīng)理,也不永遠(yuǎn)是開(kāi)發(fā)工程師。
就程序員而言,專注技術(shù)是沒(méi)有任何問(wèn)題的,先技術(shù)后管理。管理這個(gè)東西總的說(shuō)有點(diǎn)虛無(wú)飄渺,各都有各的一套理論,比較難以評(píng)估。但是技術(shù)是可測(cè)量的,通過(guò)一定的努力技術(shù)水平都會(huì)有定的躍升。記得在《肖申克的救贖》里面說(shuō)到地質(zhì)的形成只需要兩個(gè)條件:壓力和時(shí)間。其實(shí)對(duì)于學(xué)技術(shù)也是一樣的。只要肯學(xué)一定會(huì)達(dá)到某個(gè)水平。到大牛級(jí)別的確實(shí)需要一些悟性和天分。
四、我的選擇
我為什么覺(jué)得自己應(yīng)該走架構(gòu)師這條路,這和我職業(yè)終極目標(biāo)是契合的。這里先說(shuō)一下架構(gòu)師做什么?架構(gòu)師負(fù)責(zé)整個(gè)項(xiàng)目甚至整個(gè)系統(tǒng)的構(gòu)架(這一句話等于廢話)。一般型的項(xiàng)目可能這個(gè)設(shè)計(jì)項(xiàng)目就做掉甚至可能就不需要架構(gòu)。但是系統(tǒng)復(fù)雜度上升的時(shí)候,會(huì)涉及到系統(tǒng)之間的交互,還有技術(shù)的可行性和整個(gè)設(shè)計(jì)的方案。這個(gè)時(shí)候架構(gòu)師就出場(chǎng)了。另外的工作就是承擔(dān)一定的培養(yǎng)新人的工作。所以架構(gòu)師都需要具備比較好的口才,很多人都說(shuō)程序員不會(huì)說(shuō)話,錯(cuò)了,那是低端的,到了高端的程序員口才都很好,看一下那些程序員大會(huì)中侃侃而談的架構(gòu)師們,是不是有種“高端大氣上檔次”的感覺(jué)。這后面會(huì)發(fā)現(xiàn)有一個(gè)發(fā)展方向就是“培訓(xùn)師”,還可以寫書(shū),其實(shí)這些都可能是一些“副產(chǎn)品”。技術(shù)到一定的境界很多事情到都是水到渠成。
架構(gòu)師寫代碼嗎?當(dāng)然寫。他們肯定不會(huì)寫那些簡(jiǎn)單的代碼,他們一般寫什么代碼?框架,一般來(lái)講優(yōu)秀的框架都是一個(gè)人或者極少人寫出來(lái)的。比如說(shuō)Linux的核心就是一個(gè)人寫出來(lái)的。好的代碼絕不是人堆出來(lái)的。你給100個(gè)初級(jí)程序員也整不出一個(gè)Struts來(lái)。這里會(huì)衍生出另外一條路,就是開(kāi)源框架,很多牛人都是開(kāi)源社區(qū)的愛(ài)好者。都或多或少的參與了一些開(kāi)源項(xiàng)目。甚至把自己寫的一些東西開(kāi)源出來(lái)。一般來(lái)講能做到這個(gè)級(jí)別那是相當(dāng)厲害的了。
五、領(lǐng)域方向
我記得以前總有人問(wèn)我你最擅長(zhǎng)的領(lǐng)域是什么?這個(gè)問(wèn)題一問(wèn)我就懵了,因?yàn)槲覐膩?lái)就沒(méi)想過(guò)這個(gè)問(wèn)題??赡鼙旧磉€沒(méi)到分領(lǐng)域的級(jí)別,還處于一種“原始積累”階段。技術(shù)學(xué)到一定階段的時(shí)候是分領(lǐng)域的。領(lǐng)域之間會(huì)有一些交叉。
我所知道的大方向是“高性能,大數(shù)據(jù)量,移到平臺(tái)“。這是我給Java這所分的三個(gè)方向。其實(shí)我上面所說(shuō)的三個(gè)方向不一定是同一個(gè)維度。但是我認(rèn)為寫Java的如果沒(méi)有沾上這三個(gè)方向中的一個(gè),一定沒(méi)有前途。高性能和大數(shù)據(jù)量的處理需要比較多的技術(shù)儲(chǔ)備。很多人說(shuō)寫個(gè)Java就是CRUD(嚴(yán)格來(lái)講,對(duì)于計(jì)算機(jī)本身所有的操作都是CRUD)??墒窃诟咝阅芮闆r下所涉及的問(wèn)題一下成指數(shù)級(jí)增長(zhǎng)。各種“水平擴(kuò)展”,“服務(wù)化”,“容災(zāi)”,”緩存”等各種牛B的詞匯就來(lái)了,你寫一般的CRUD最多也就知道個(gè)SSH,這是不一樣的。比如說(shuō)做大數(shù)據(jù)量的處理一定會(huì)知道Hadoop,然后就是云計(jì)算,云存儲(chǔ)。反正什么牛B什么來(lái)。移動(dòng)平臺(tái)和上面我所說(shuō)的維度不一樣,因?yàn)橐苿?dòng)平臺(tái)相對(duì)應(yīng)的是PC平臺(tái)。但是由于移動(dòng)平臺(tái)的發(fā)展時(shí)間很短。所以能搭上這趟快車也有不錯(cuò)的發(fā)展。要是早些年(2012年以前)進(jìn)入移動(dòng)平臺(tái)的開(kāi)發(fā),現(xiàn)在同水平的程序員工資肯定更高。這是平臺(tái)發(fā)展所帶來(lái)的紅利。雖然三年前我預(yù)見(jiàn)到了移動(dòng)平臺(tái)的無(wú)可限量,但是那時(shí)候就像一個(gè)一無(wú)所有的人,還管它什么移動(dòng)平臺(tái)還是PC平臺(tái),能寫代碼做項(xiàng)目就OK。以至于我學(xué)了一個(gè)月的Android就偃旗息鼓。
不管怎么樣技術(shù)的底層都是一樣的,所以扎實(shí)的基礎(chǔ)是必要的,這就是為什么算法和數(shù)據(jù)結(jié)構(gòu)是永恒不衰的。很多人說(shuō)算法和數(shù)據(jù)結(jié)構(gòu)無(wú)用那就是無(wú)知的表現(xiàn)。這個(gè)無(wú)知就像在討論讀大學(xué)有沒(méi)有用一樣。
六、總結(jié)
上面所說(shuō)的一些東西可能都會(huì)比較虛,很多人都可能明白其中的道道,比如說(shuō)到時(shí)間管理,這個(gè)估計(jì)從學(xué)生時(shí)代就在講。但是真正的執(zhí)行還是千差萬(wàn)別。所以又回歸到哪里?回歸到人本身。后來(lái)我想明白一件事情,即使道理再明白,沒(méi)有好的執(zhí)行仍然等于空談。這里我回想起劉未鵬的《暗時(shí)間》。里面非常細(xì)致的講了對(duì)于時(shí)間的管理。這個(gè)我讀大學(xué)的時(shí)候同樣在一本書(shū)《讀大學(xué),究竟讀什么》里面也有所論述。當(dāng)然兩個(gè)方向是不一樣的,一個(gè)是程序員的思維,另外一個(gè)是文科生的思維。但是道理只有一個(gè),時(shí)間利用率的本質(zhì)是什么。
另外就是實(shí)踐,強(qiáng)烈的實(shí)踐。我記得大學(xué)的時(shí)候讀《人性的弱點(diǎn)》真是心潮澎湃,可是過(guò)不了多久我就忘了書(shū)中的內(nèi)容。所以沒(méi)有把書(shū)中的一些東西深刻的印記在腦海里并轉(zhuǎn)化成你自己的東西,它永遠(yuǎn)只是知識(shí)。
作一個(gè)真正合格的程序員,或者說(shuō)就是可以真正合格完成一些代碼工作的程序員,應(yīng)該具有的素質(zhì)。
1:團(tuán)隊(duì)精神和協(xié)作能力把它作為基本素質(zhì),并不是不重要,恰恰相反,這是程序員應(yīng)該具備的最基本的,也是最重要的安身立命之本。把高水平程序員說(shuō)成獨(dú)行俠的都是在囈語(yǔ),任何個(gè)人的力量都是有限的,即便如linus這樣的天才,也需要通過(guò)組成強(qiáng)大的團(tuán)隊(duì)來(lái)創(chuàng)造奇跡,那些遍布全球的為linux寫核心的高手們,沒(méi)有協(xié)作精神是不可想象的。獨(dú)行俠可以作一些賺錢的小軟件發(fā)點(diǎn)小財(cái),但是一旦進(jìn)入一些大系統(tǒng)的研發(fā)團(tuán)隊(duì),進(jìn)入商業(yè)化和產(chǎn)品化的開(kāi)發(fā)任務(wù),缺乏這種素質(zhì)的人就完全不合格了。
2:文檔習(xí)慣說(shuō)高水平程序員從來(lái)不寫文檔的肯定是乳臭未干的毛孩子,良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),作為代碼程序員,30%的工作時(shí)間寫技術(shù)文檔是很正常的,而作為高級(jí)程序員和系統(tǒng)分析員,這個(gè)比例還要高很多。缺乏文檔,一個(gè)軟件系統(tǒng)就缺乏生命力,在未來(lái)的查錯(cuò),升級(jí)以及模塊的復(fù)用時(shí)就都會(huì)遇到極大的麻煩。
3:規(guī)范化,標(biāo)準(zhǔn)化的代碼編寫習(xí)慣作為一些外國(guó)知名軟件公司的規(guī)矩,代碼的變量命名,代碼內(nèi)注釋格式,甚至嵌套中行縮進(jìn)的長(zhǎng)度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫習(xí)慣,不但有助于代碼的移植和糾錯(cuò),也有助于不同技術(shù)人員之間的協(xié)作。
有些coding fans叫囂高水平程序員寫的代碼旁人從來(lái)看不懂,這種叫囂只能證明他們自己壓根不配自稱程序員。代碼具有良好的可讀性,是程序員基本的素質(zhì)需求。
再看看整個(gè)linux的搭建,沒(méi)有規(guī)范化和標(biāo)準(zhǔn)化的代碼習(xí)慣,全球的研發(fā)協(xié)作是絕對(duì)不可想象的。
4:需求理解能力程序員需要理解一個(gè)模塊的需求,很多小朋友寫程序往往只關(guān)注一個(gè)功能需求,他們把性能指標(biāo)全部歸結(jié)到硬件,操作系統(tǒng)和開(kāi)發(fā)環(huán)境上,而忽視了本身代碼的性能考慮,有人曾經(jīng)放言說(shuō)寫一個(gè)廣告交換程序很簡(jiǎn)單,這種人從來(lái)不知道在百萬(wàn)甚至千萬(wàn)數(shù)量級(jí)的訪問(wèn)情況下的性能指標(biāo)是如何實(shí)現(xiàn)的,對(duì)于這樣的程序員,給他深藍(lán)那套系統(tǒng),也做不出太極鏈的并訪能力。性能需求指標(biāo)中,穩(wěn)定性,并訪支撐能力以及安全性都很重要,作為程序員需要評(píng)估該模塊在系統(tǒng)運(yùn)營(yíng)中所處的環(huán)境,將要受到的負(fù)荷壓力以及各種潛在的危險(xiǎn)和惡意攻擊的可能性。就這一點(diǎn),一個(gè)成熟的程序員至少需要2到3年的項(xiàng)目研發(fā)和跟蹤經(jīng)驗(yàn)才有可能有心得。
5:復(fù)用性,模塊化思維能力經(jīng)常可以聽(tīng)到一些程序員有這樣的抱怨,寫了幾年程序,變成了熟練工,每天都是重復(fù)寫一些沒(méi)有任何新意的代碼,這其實(shí)是中國(guó)軟件人才最大浪費(fèi)的地方,一些重復(fù)性工作變成了熟練程序員的主要工作,而這些,其實(shí)是完全可以避免的。
復(fù)用性設(shè)計(jì),模塊化思維就是要程序員在完成任何一個(gè)功能模塊或函數(shù)的時(shí)候,要多想一些,不要局限在完成當(dāng)前任務(wù)的簡(jiǎn)單思路上,想想看該模塊是否可以脫離這個(gè)系統(tǒng)存在,是否可以通過(guò)簡(jiǎn)單的修改參數(shù)的方式在其他系統(tǒng)和應(yīng)用環(huán)境下直接引用,這樣就能極大避免重復(fù)性的開(kāi)發(fā)工作,如果一個(gè)軟件研發(fā)單位和工作組能夠在每一次研發(fā)過(guò)程中都考慮到這些問(wèn)題,那么程序員就不會(huì)在重復(fù)性的工作中耽誤太多時(shí)間,就會(huì)有更多時(shí)間和精力投入到創(chuàng)新的代碼工作中去。
一些好的程序模塊代碼,即便是70年代寫成的,拿到現(xiàn)在放到一些系統(tǒng)里面作為功能模塊都能適合的很好,而現(xiàn)在我看到的是,很多小公司軟件一升級(jí)或改進(jìn)就動(dòng)輒全部代碼重寫,大部分重復(fù)性工作無(wú)謂的浪費(fèi)了時(shí)間和精力。
6:測(cè)試習(xí)慣作為一些商業(yè)化正規(guī)化的開(kāi)發(fā)而言,專職的測(cè)試工程師是不可少的,但是并不是說(shuō)有了專職的測(cè)試工程師程序員就可以不進(jìn)行自測(cè).