親愛的開發(fā)者們:你們是否因?yàn)樽约褐痪ㄓ谌笤O(shè)備平臺(tái)的八種編程語言而惴惴不安?又發(fā)現(xiàn)一個(gè)JavaScript框架是否會(huì)讓你不寒而栗、愁眉苦臉?你是否曾經(jīng)因?yàn)闊o法確定哪個(gè)云平臺(tái)最適合而把業(yè)余項(xiàng)目一再推遲?
或許你也換上了開發(fā)癱瘓癥(Developaralysis)。顫抖吧,這個(gè)病是治不好的。
如今開發(fā)者們可選的技術(shù)方案多到令人發(fā)指,讓人眼花繚亂,透不過氣來。過去幾年里,我拿著別人給我的酬勞,寫過Java、Objective-C、 C、C++、Python、Ruby、JavaScript、PHP(對(duì)不起,這個(gè)也算),用過各種各樣的SQL/鍵值/文件數(shù)據(jù)存儲(chǔ)技術(shù)(MySQL、 PostgreSQL、MongoDB、BigTable、Redis、Memcached等等)。我是否自我感覺良好?上帝啊,一點(diǎn)也沒有。我反而感覺 到愧疚,因?yàn)槲疫€沒有用過Erlang、Clojure、Rust、Go、C#、Scala、Haskell、Julia、Scheme、Swift或者 是OCaml。
我就是一名開發(fā)癱瘓癥患者:軟件產(chǎn)業(yè)發(fā)展太快、任何一個(gè)人都無法跟上,從而對(duì)我的意識(shí)造成了毀滅性打擊。
上面提到的幾乎任何一種語言,你都會(huì)找到無數(shù)可選的框架、套件和庫——看得頭都要爆炸了。如今僅僅是把JavaScript的框架和庫的所有排列認(rèn) 真評(píng)估一遍就要花上幾個(gè)月的時(shí)間。另外,你知道Ruby語言有多少種gem包嗎?有多少種iOS框架嗎?有多少種NewSQL或NoSQL的數(shù)據(jù)庫技術(shù) 嗎?更不用說從Hadoop、Spark與Google Dataflow中進(jìn)行選擇了,究竟是用Avro,還是Thrift,還是協(xié)議緩沖區(qū),等等,等等……
還好,移動(dòng)領(lǐng)域已經(jīng)簡(jiǎn)化到了Android、iOS兩大壟斷平臺(tái)——盡管也隱藏著一些交叉代替方案,比如Xarmarin或 者PhoneGap、Sencha這樣的跨平臺(tái)HTML技術(shù)——但是確定在哪個(gè)平臺(tái)上部署后端、如何部署又會(huì)讓你頭大。我開發(fā)過的各個(gè)系統(tǒng)部署在 Heroku、Amazon Web Services、Google App Engine、Google Compute Engine以及Parse上面……這讓我感覺非常糟糕,因?yàn)槲覍?duì)OpenStack、Force.com、Azure、Appfog一無所知,好多 AWS服務(wù)我也從來沒有真正用過,說多了都是淚。
I Am Devloper @iamdevloper
2014年編寫簡(jiǎn)單網(wǎng)站的步驟:
1. 安裝Node
2. 安裝Bower
3. 選擇CSS框架
4. 選擇敏捷的方法
……
47. 寫幾行HTML代碼
如今的開發(fā)者面臨著太多的選擇,以至于使用的許多工具僅僅是用來管理另一堆工具:比如Bundler、Bower、CocoaPods、Pip等 等。這些東西太棒了!我完全離不開它們!別高興得太早。你開始使用另一堆工具后,等用到一半的時(shí)候你真正理解了它們的內(nèi)容,你開始覺得這樣的配置還不夠 用,你有點(diǎn)想要把它們重寫一遍了……也許再找另一個(gè)工具代替……
可悲的是,如今開發(fā)者可用的語言、工具、框架以及平臺(tái)的多樣性和絕對(duì)數(shù)量龐大到讓人畏懼。當(dāng)然沒人會(huì)承認(rèn)這一點(diǎn)。所有人都想裝作精通所有語言的編程大師。然而事實(shí)卻是,我們都已經(jīng)深陷于開發(fā)癱瘓癥之中無法自拔。
即便收集了各種信息做出了最明智的選擇,結(jié)果往往也適得其反。比如說,在項(xiàng)目開始前,你真的花時(shí)間分析了所有的可能,克服了由此產(chǎn)生的學(xué)習(xí)曲線,結(jié)果卻被一些用著PHP、Swift這樣易于上手的語言,寫著表情符號(hào)變量名的小屁孩搶了市場(chǎng)先機(jī)——
——不過另一方面,如果你選擇使用Swift和PHP的話,你就會(huì)生活在無休止的恐懼之中,擔(dān)心一些C#/Haskell程序員高手很快就會(huì)做出更好的產(chǎn)品幾百你,就像保羅·格拉漢姆(Paul Graham)很多年前用Lisp語言編寫Viaweb那樣?;貞浲?,他這樣寫道:
當(dāng)你選擇了技術(shù)之后,你必須要忽略其他人在做什么,全心全意思考怎樣做到最好……事實(shí)上我們確實(shí)有一個(gè)秘密武器……我們開發(fā)軟件的速度超出了所有人的想象……我們用一種全是括號(hào)的語法奇怪的AI語言編寫出了我們的軟件。
再說回開發(fā)癱瘓癥。我們應(yīng)該選擇已經(jīng)掌握的技術(shù)嗎?這樣我們就能立刻動(dòng)手開發(fā),無需克服學(xué)習(xí)曲線,但是需要生活在恐懼之中,擔(dān)心其他 人在以更好、更快、更優(yōu)雅的方式實(shí)現(xiàn)同樣的產(chǎn)品,擔(dān)心到了明年我們的技能就跟不上時(shí)代、喪失競(jìng)爭(zhēng)力了。還是應(yīng)該選擇未知的新技術(shù)?因?yàn)槲覀儫釔蹖W(xué)習(xí),更好 的工具使用起來不僅更加有趣,而且能夠帶來巨大的競(jìng)爭(zhēng)優(yōu)勢(shì)……付出的代價(jià)則是大量的時(shí)間、精力和認(rèn)知負(fù)荷。
這個(gè)問題太難回答了!不存在絕對(duì)正確的答案。因此每個(gè)月都是開發(fā)癱瘓癥發(fā)作月。我馬上會(huì)做好五顏六色、閃閃發(fā)光的絲帶給你們佩戴,只要等我選好用哪種3D打印機(jī)、哪種微控制器、哪種LED軟件、哪種無人機(jī)系統(tǒng)就行了。恐怕要麻煩你們期待很久很久了。
聯(lián)系客服