黑客大牛告訴你在IT開(kāi)發(fā)的道路上要注意哪些要點(diǎn)?軟件開(kāi)發(fā)是一個(gè)非常嚴(yán)肅的過(guò)程,一點(diǎn)點(diǎn)的錯(cuò)誤就會(huì)導(dǎo)致軟件無(wú)法正常運(yùn)行。那么,在軟件開(kāi)發(fā)過(guò)程中我們應(yīng)該注意哪些事項(xiàng)呢?現(xiàn)在我們就來(lái)仔細(xì)地分析一下吧!
1、代碼很重要
我在很多地方工作過(guò),發(fā)現(xiàn)成功之中隱藏著這樣一種普遍現(xiàn)象:早期的代碼看上去像是一群程序猿喝醉之后寫(xiě)的。
這聽(tīng)上去似乎有悖常理,那是因?yàn)槟愕媒弑M全力讓企業(yè)成長(zhǎng),所以就沒(méi)有時(shí)間去追求軟件的完美。從另一方面講,失敗的企業(yè),卻會(huì)花很多很多時(shí)間來(lái)修正其代碼庫(kù)。
打個(gè)比方:
如果你是一個(gè)壽司師傅。作為你工作的一部分,你收集了一套絕版的刀具。你花時(shí)間花精力來(lái)完成收藏,它們提升了你作為一名廚師的競(jìng)爭(zhēng)力。
但無(wú)論你每天用多少時(shí)間去打磨你的道具,你就不是一個(gè)鐵匠。你的工作依然是做壽司。你雖然擁有了世界上最好的刀具,但如果做不好壽司,那么你的客戶服務(wù)就是差評(píng)。你的餐館生意永遠(yuǎn)不會(huì)成功。
軟件也是同樣的道理。當(dāng)你運(yùn)營(yíng)公司的時(shí)候,你的業(yè)務(wù)目的是滿足客戶。代碼只是一個(gè)能達(dá)到目的的工具,它本身并不是目的。
你可以,也應(yīng)當(dāng)關(guān)心你的代碼,因?yàn)檫@能有助于提升客戶服務(wù)。但是,如果錯(cuò)將工具當(dāng)作了目標(biāo),那么注定你將一敗涂地。
經(jīng)驗(yàn)教訓(xùn):你的客戶并不關(guān)心什么測(cè)試覆蓋率、技術(shù)堆棧,版本控制系統(tǒng),也不在乎你使用了什么算法。你的工作就是解決客戶的問(wèn)題,越方便越好。
2、關(guān)注實(shí)現(xiàn),而不是點(diǎn)子。
這聽(tīng)起來(lái)似乎違背了傳統(tǒng)的創(chuàng)業(yè)須知:
快速發(fā)布!執(zhí)行!迭代!執(zhí)行,不需要?jiǎng)?chuàng)意!快速失!
上面這些都是偉大的忠告。
但是,“不需要?jiǎng)?chuàng)意”,并不意味著我們能通過(guò)卓越的執(zhí)行矯正一個(gè)糟糕的點(diǎn)子。成功就是發(fā)現(xiàn)好的問(wèn)題,再好好地解決這個(gè)問(wèn)題。所以,點(diǎn)子好卻沒(méi)有好好實(shí)現(xiàn)或者完美實(shí)現(xiàn)了一個(gè)壞點(diǎn)子,都是不行的,當(dāng)然前者還有得救。
很多程序員被困實(shí)現(xiàn)的死亡漩渦中,花了大量的時(shí)間去創(chuàng)建各種功能或者修復(fù)bug,相信再添一個(gè)功能就能成功。我告訴你,這是錯(cuò)覺(jué)。
你只需要解決某個(gè)重要的問(wèn)題,否則你這樣不斷為產(chǎn)品添加功能根本是沒(méi)有意義的,除非你添加的功能確實(shí)能解決需要的。
點(diǎn)子好卻沒(méi)有好好實(shí)現(xiàn),總比完美實(shí)現(xiàn)了一個(gè)壞點(diǎn)子要好。
經(jīng)驗(yàn)教訓(xùn):如果你添加的功能是用來(lái)修復(fù)一個(gè)失敗的產(chǎn)品,那么最好先問(wèn)問(wèn)自己這能不能真正地解決問(wèn)題。
3、代碼是寫(xiě)給計(jì)算機(jī)的?
我總是想不通為什么這一錯(cuò)誤會(huì)如此之歷久彌堅(jiān)。無(wú)論程序員是第幾次因?yàn)橥碌脑愀馕臋n和溝通習(xí)慣而陷入困境,他們因此而得出的結(jié)論往往還是——程序員天生不擅長(zhǎng)這類事情,也不應(yīng)該做這些事情。大錯(cuò)特錯(cuò)啊。
如果你是一個(gè)團(tuán)隊(duì)的一部分,那么提升團(tuán)隊(duì)效率最大的一個(gè)障礙就是溝通——這不是夸張,團(tuán)隊(duì)面對(duì)的是O(n2)問(wèn)題。
如果代碼是你的主要輸出,那么你需要改變你對(duì)編程的看法:
代碼是寫(xiě)給人看的,然后又剛好能在計(jì)算機(jī)上運(yùn)行。
很多時(shí)候,我看到程序員花了幾個(gè)小時(shí)孜孜不倦地寫(xiě)代碼,但是卻省略了用于更新代碼文檔的十分鐘。這是因?yàn)樗麄冇X(jué)得:“殺雞焉用宰牛刀,這種事情留給以后的人就行了,我的時(shí)間寶貴著呢。”