我老爸常對(duì)我說(shuō),「孩子,別太著急。慢點(diǎn)來(lái),你完成工作的速度會(huì)更快?!?/p>
我曾在舊金山灣區(qū)的很多高科技創(chuàng)業(yè)公司工作過(guò)?,F(xiàn)在已經(jīng)有52歲,我編程的速度不快,卻經(jīng)過(guò)深思熟慮再開(kāi)始。我就像是一個(gè)寫(xiě)代碼的設(shè)計(jì)師;隨著你的深入閱讀,這一點(diǎn)將會(huì)變得非常顯而易見(jiàn)。
最近,我和一些年輕的程序員一起做項(xiàng)目,他們信仰快速開(kāi)發(fā),迭代修改,這使得我緩慢的編程遇到了困難。這份工作,鼓勵(lì)我們?cè)谕粋€(gè)代碼倉(cāng)庫(kù)里面工作,就好像是一大鍋湯,如果我們一起不停的大力攪動(dòng),一個(gè)奇跡就會(huì)從中誕生。
實(shí)際上并不會(huì)
這幫程序員信仰“所有的工程師都是可以被取代的”這種謬論,因而沒(méi)有人需要為這些代碼的任何方面負(fù)責(zé);任何一個(gè)程序員可以在任何時(shí)候,改變代碼的任何部分。畢竟,我們有像Github 這樣特別贊的服務(wù),來(lái)管理和合并來(lái)自任意數(shù)量的程序員們提交的任意數(shù)量異步開(kāi)發(fā)的代碼。只要每個(gè)人都頻繁的提交(commit),不破壞任何東西,那么所有的東西都會(huì)好好的。
扯犢子
你不能期許省略設(shè)計(jì)過(guò)程。這一過(guò)程在人類(lèi)文明開(kāi)始時(shí)就存在了。當(dāng)下最新最靈巧的開(kāi)發(fā)工具,不論它多么靈巧,也不能替代那些建造了大教堂、鐵路和拍出長(zhǎng)篇電影的最佳實(shí)踐和現(xiàn)實(shí)中的合作。
任何編程都沒(méi)能創(chuàng)造這樣一個(gè)工具,可以減少軟件開(kāi)發(fā)的時(shí)間,讓一群猴子以它們可以接受的速度來(lái)工作。
心律不齊
在這樣一群信仰快速開(kāi)發(fā)的程序員中,做一個(gè)我這樣緩慢編程的程序員的代價(jià),就是某種形式的心律不齊——因?yàn)槲易约旱木幊坦?jié)奏都被其他程序員那機(jī)槍似的迭代開(kāi)發(fā)搞亂了。我的編程風(fēng)格是這樣,由一些不同尺寸和時(shí)間尺度的弧線組成,開(kāi)始是時(shí)候是探索、試驗(yàn)和出錯(cuò),使用一些hacks和臨時(shí)變量?;旧鲜窃谧鲆恍?gòu)建工作。程序初露端倪。稍后,我會(huì)回頭去做些修改。最后結(jié)束的時(shí)候,是完整實(shí)現(xiàn)的代碼(「打掃戰(zhàn)場(chǎng)」是完成我這個(gè)工作循環(huán)的一個(gè)必要的部分)我編寫(xiě)代碼的這一流程與策略、設(shè)計(jì)方案、架構(gòu)的出現(xiàn)是同步的。
有時(shí)候,當(dāng)一個(gè)成熟的方案出現(xiàn)后,我會(huì)回頭重新開(kāi)始。因?yàn)槲矣X(jué)得我會(huì)有更好的點(diǎn)子。有時(shí)候我錯(cuò)了,有時(shí)候我是對(duì)的。在一個(gè)方案完整的呈現(xiàn)在我面前之前,我是沒(méi)有辦法去知道對(duì)錯(cuò)的。
總之,先回到“一鍋湯程序員”吧。問(wèn)題是這樣的:總體上,軟件生態(tài)系統(tǒng)并沒(méi)有停一停的意思——沒(méi)有機(jī)會(huì)去引入設(shè)計(jì)過(guò)程,那么怎么能有人,而且是快速開(kāi)發(fā)程序員,做出好的設(shè)計(jì)呢?
那些認(rèn)為快速編程和慢速編程一樣(除了速度以外)的程序員,他們并不理解設(shè)計(jì)過(guò)程。同樣,神經(jīng)學(xué)家現(xiàn)在認(rèn)為,像流體一樣穿過(guò)大腦的神經(jīng)元放電會(huì)產(chǎn)生顳混響,這和思考,意識(shí)息息相關(guān),好的設(shè)計(jì)是需要花費(fèi)時(shí)間的。
慢速編程運(yùn)動(dòng)
維基百科記載:「慢速編程運(yùn)動(dòng)是慢速運(yùn)動(dòng)的一部分。這是一種軟件開(kāi)發(fā)哲學(xué),強(qiáng)調(diào)仔細(xì)的設(shè)計(jì),高質(zhì)量的代碼,軟件測(cè)試 和思考。 盡量避免豆腐渣工程,垃圾代碼和過(guò)快的軟件發(fā)布。」
維基百科同時(shí)還這樣描述「慢速軟件開(kāi)發(fā)」:「作為『敏捷開(kāi)發(fā)』運(yùn)動(dòng)的一部分,世界上各個(gè)軟件開(kāi)發(fā)者團(tuán)體期待更有預(yù)見(jiàn)性的項(xiàng)目,意在獲得可持續(xù)的職業(yè)生涯,同時(shí)保持工作和生活的平衡。他們進(jìn)行了諸如結(jié)對(duì)編程,代碼審查和代碼重構(gòu)等實(shí)踐。這產(chǎn)生了更多可靠的,健壯的軟件」
在舊金山灣區(qū),那些由風(fēng)險(xiǎn)投資支持著的軟件開(kāi)發(fā),火急火燎地開(kāi)在快車(chē)道上。
資金被投資在研發(fā)過(guò)程中的那些非自然的需求上,實(shí)際上應(yīng)該把它留給設(shè)計(jì)演進(jìn)過(guò)程中那些符合自然節(jié)奏的點(diǎn)??欤⒉豢偸且患檬?。實(shí)際上,放慢速度有時(shí)候意味著快。數(shù)字科技是如何侵占我們自然的節(jié)奏的,這一個(gè)主題在 Rushkoff 的Present Shock 中有所闡述。
還有一個(gè)問(wèn)題:對(duì)科技近乎宗教般的癡迷——以及對(duì)工具的迷戀。人們想知道為什么軟件很糟糕(沒(méi)錯(cuò),它很糟糕)。軟件之所以這樣糟糕,主要是因?yàn)榧埳险劚???焖匍_(kāi)發(fā)的程序員會(huì)編寫(xiě)一些工具,來(lái)幫助他們使用其他的一些工具,他們利用這些工具來(lái)編寫(xiě)自己的代碼。
這就是我為什么認(rèn)為我們需要一些年長(zhǎng)的人,女性、教育者和藝術(shù)家參與到軟件開(kāi)發(fā)中。更多人與人的交流,更少工具與人的交流。我指的不是做一些外圍的工作,提供問(wèn)詢(xún)或是裝飾UI。我的意思是深入內(nèi)部——確保軟件能夠和用戶(hù)產(chǎn)生共鳴。
我慶幸自己不是打字員
我的一位朋友是一個(gè)成熟的女程序員,她曾有過(guò)這樣精彩的吐槽:「軟件開(kāi)發(fā)不是比誰(shuí)打字快?!姑總€(gè)人都明白這一點(diǎn),但是時(shí)常這樣提醒自己也不是什么壞事。
Brendan Enrick討論過(guò)這樣的問(wèn)題。實(shí)際上,程序員們不停地用手指在鍵盤(pán)上猛戳,就好像這種肢體活動(dòng)是和編程同步的。但是實(shí)際上編程是這樣一種行為,它把思考、設(shè)計(jì)、語(yǔ)言、邏輯和一些心理層面的東西變成某種可以存放在電腦內(nèi)存中的形式。
我的夫人經(jīng)常會(huì)走到小院里,問(wèn)我:「你在編程嗎?」通常情況下我的回答是「是的」。實(shí)際上我正在用鉗子修剪枝葉,或是到處施肥。
植物、泥土和剪刀和編程有很大的關(guān)系,就像與鍵盤(pán)和發(fā)光的屏幕一樣。
我們正在從工業(yè)時(shí)代和經(jīng)濟(jì)紀(jì)元過(guò)渡到一個(gè)可持續(xù)發(fā)展的年代。是的,新的軟件和新的商業(yè)需要增長(zhǎng)。但是需要具有可持續(xù)性,它們要慢慢的,有愛(ài)的增長(zhǎng)。就像美酒,就像寶貝。
-
工程師
+關(guān)注
關(guān)注
59文章
1590瀏覽量
69456 -
編程
+關(guān)注
關(guān)注
88文章
3689瀏覽量
95187
發(fā)布評(píng)論請(qǐng)先 登錄


硬件工程師看了只會(huì)找個(gè)角落默默哭泣#硬件工程師 #MDD #MDD辰達(dá)半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師
【華秋DFM】V4.6正式上線:工程師的PCB設(shè)計(jì)“好搭子”來(lái)了!

(仰天長(zhǎng)嘯)為什么受傷的總是硬件工程師...#MDD#MDD辰達(dá)半導(dǎo)體 #電子工程師



一位老電子工程師的十年職場(chǎng)感悟


硬件工程師的終極幻想:焊板子焊上人生巔峰!#半導(dǎo)體器件 #硬件工程師 #MDD辰達(dá)半導(dǎo)體
嵌入式軟件工程師就業(yè)好不好?

不同時(shí)期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過(guò)于真實(shí) #YXC晶振 #揚(yáng)興科技

當(dāng)你的工程師朋友失聯(lián)時(shí),別氣,ta真的是在忙工作 #搞笑 #電子愛(ài)好者 #硬件工程師 #晶振 #揚(yáng)興科技

硬件工程師VS軟件工程師|硬件工程師看到這都淚目了!#硬件設(shè)計(jì) #硬件工程師 #電子工程師 #軟件工程師
尋求專(zhuān)業(yè)工程師幫助設(shè)計(jì)USB多口充電器

評(píng)論