日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

如何成為強(qiáng)大的程序員?

 lfcperliab 2013-02-18

如何成為強(qiáng)大的程序員?

來(lái)源:infoq 發(fā)布時(shí)間:2013-02-18 閱讀次數(shù):275

  Aaron Stannard是新創(chuàng)公司MarkedUp的CEO,他最近花費(fèi)大量時(shí)間雇傭、評(píng)估很多不同的程序員,并和他們一起協(xié)作。在這個(gè)過(guò)程中他發(fā)現(xiàn)并總結(jié)了十種程序員無(wú)法意識(shí)到自己潛力的原因,意在讓更多程序員發(fā)掘出自己的潛力,從而成為強(qiáng)大的程序員。

  Aaron提到,他的公司中所使用的技術(shù)非常復(fù)雜,某些大型企業(yè)都很難掌握,所以對(duì)于想要加入團(tuán)隊(duì)的程序員來(lái)說(shuō),入門門檻非常高。因此,盡管他們非常仔細(xì)地雇傭新人,但還是很難找到足夠天才的程序員。于是,他總結(jié)出十種阻礙程序員職業(yè)生涯發(fā)展的行為,并據(jù)此來(lái)幫助想要提升自身的平凡的程序員們。

  1. 太害怕學(xué)不會(huì)新的工具、語(yǔ)言和框架

  一般的程序員會(huì)墨守他們最喜歡的工具,而不希望學(xué)習(xí)新的,因?yàn)樗麄冋J(rèn)為,離開(kāi)了那些語(yǔ)言和工具,多年的經(jīng)驗(yàn)就會(huì)付諸東流。而強(qiáng)大的程序員會(huì)擁抱那些挑戰(zhàn)和機(jī)會(huì),積極地學(xué)習(xí)新的工作方式。

  2. 直到特性“完成”的時(shí)候才會(huì)提交。(但永遠(yuǎn)都不會(huì)完成?。?/H3>

  他在MarkedUp公司中把這種行為叫做“囤積提交(commit hoarding)”。有些程序員沒(méi)有足夠的信心來(lái)承受團(tuán)隊(duì)中其他成員的批評(píng)和審查,因此會(huì)把自己的工作藏起來(lái),直到“完成”狀態(tài)才提交。

  這種開(kāi)發(fā)者會(huì)損害團(tuán)隊(duì)中其他人員的生產(chǎn)力,因?yàn)閳F(tuán)隊(duì)看不到他每天的成果,而且他也不會(huì)在正常開(kāi)發(fā)的過(guò)程中尋求幫助,這樣就會(huì)造成很多“最后一分鐘”的缺陷,從而讓交付延遲。而強(qiáng)大的程序員會(huì)知道,代碼并不是他們自己,因此會(huì)把代碼經(jīng)常自信地呈現(xiàn)在其他團(tuán)隊(duì)成員的眼前,獲得批評(píng)和建議。

  3. 只是“知其然”會(huì)很危險(xiǎn)

  在這里Aaron舉了微軟最近在C# 5.0中引入的async和await關(guān)鍵字為例,這兩個(gè)關(guān)鍵字會(huì)讓創(chuàng)建和管理異步調(diào)用變得很容易,但是也會(huì)造成上下文切換、對(duì)共享資源進(jìn)行多線程訪問(wèn)的成本,僅僅對(duì)此有基本了解的程序員會(huì)盲目地使用這些特性,把所有I/O調(diào)用都封裝成C#中的Task對(duì)象,這會(huì)創(chuàng)建出危險(xiǎn)的、不可預(yù)測(cè)的而且非常難以測(cè)試的代碼。

  好的開(kāi)發(fā)者不僅“知其然”,而且會(huì)了解為什么這么做以及應(yīng)該在什么樣的條件下使用。

  4. 分析癱瘓(Analysis paralysis)

  分析癱瘓是指在程序開(kāi)發(fā)初期進(jìn)行系統(tǒng)分析,常因?yàn)樘^(guò)執(zhí)著于控制所有可能的變化和意外,而造成大量時(shí)間的浪費(fèi),裹足不前。這是一種很經(jīng)典的問(wèn)題,會(huì)影響很多一般的程序員。它通常是由過(guò)度分析造成的,但是Aaron認(rèn)為其根本原因在于不敢做出壞的決定。一般的程序員會(huì)擔(dān)心犯錯(cuò),只想一次成功。

  而強(qiáng)大的程序員不會(huì)害怕,他們會(huì)編寫很爛的代碼,對(duì)其進(jìn)行單元測(cè)試,如果認(rèn)為無(wú)法達(dá)到目的,就會(huì)在45分鐘之內(nèi)把它拋棄。強(qiáng)大的程序員會(huì)積極地限制用來(lái)研究的時(shí)間,因?yàn)樗麄冎滥鞘莻€(gè)陷阱——看起來(lái)是有效的,但經(jīng)常都無(wú)效。

  5. 沒(méi)有對(duì)工具和開(kāi)發(fā)過(guò)程投入

  如果你想要成為天才程序員,那么就需要投入時(shí)間提升技能和知識(shí),而將你和普通的代碼工人區(qū)分開(kāi)來(lái)的是快速編寫出生產(chǎn)級(jí)別代碼的能力。你可以同時(shí)擁有好的代碼和速度,但是你需要先對(duì)你用于構(gòu)建的過(guò)程投入。

  一般的程序員不會(huì)對(duì)工具、過(guò)程和環(huán)境投入,只會(huì)使用大量的時(shí)間學(xué)習(xí)新的語(yǔ)言特性和API如何工作,但那并不會(huì)改變什么。

  通常,你作為程序員所能夠做出的最大改進(jìn)并不是專注于你所編寫的代碼,而是優(yōu)化你編寫代碼的過(guò)程。

  6. 羞于請(qǐng)求幫助

  一般的程序員羞于或者不想讓人知道自己不懂,所以他們裝作什么都知道,但這樣就有可能提交某種非??膳碌拇a到庫(kù)中。說(shuō)“我不知道怎么做。”沒(méi)什么錯(cuò),強(qiáng)大的程序員知道這一點(diǎn),所以當(dāng)被問(wèn)題難住的時(shí)候就會(huì)請(qǐng)求幫助。

  7. 不知道如何讓其他程序員更容易使用你的代碼

  在所有技術(shù)團(tuán)隊(duì)中,工作很重要的一部分就是人員的并行(human parallelism),也就是多個(gè)人能夠同時(shí)對(duì)同一代碼庫(kù)工作的能力。但是對(duì)于團(tuán)隊(duì)來(lái)說(shuō),能夠異步工作也很重要,當(dāng)你不在的時(shí)候我可以修改你的代碼,反之亦然。

  一般的開(kāi)發(fā)者并不這么認(rèn)為,他們會(huì)開(kāi)始對(duì)一項(xiàng)任務(wù)編寫代碼,認(rèn)為他們會(huì)永遠(yuǎn)擁有這段代碼。而強(qiáng)大的開(kāi)發(fā)者會(huì)知道技術(shù)債務(wù)的說(shuō)法,從而試圖通過(guò)設(shè)計(jì)代碼來(lái)對(duì)其限制,讓它盡可能可維護(hù)和自解釋。

  編寫可讀的代碼需要程序員改變他們的看法——你的代碼要比你在組織中存在的時(shí)間長(zhǎng)。

  8. 不知道如何閱讀其他人的代碼(或者不想讀)

  當(dāng)一位一般程序員看到用他所不熟悉的語(yǔ)言或框架編寫的代碼庫(kù)時(shí),就想立刻重寫,而不考慮業(yè)務(wù)價(jià)值或者推向市場(chǎng)的時(shí)間。而強(qiáng)大的程序員會(huì)接受這樣的觀點(diǎn),重寫所導(dǎo)致的業(yè)務(wù)成本通常是不可接受的,所以應(yīng)該避免這種行為。他們會(huì)試圖坐在計(jì)算機(jī)前,理解、學(xué)習(xí)然后修改現(xiàn)有的代碼。

  閱讀代碼要比編寫代碼還難,但是強(qiáng)大的程序員會(huì)投入時(shí)間來(lái)學(xué)習(xí)如何超越。

  9. 不能從最終用戶的角度編碼(你考慮的范圍太狹窄)

  有句話說(shuō)得好:作為程序員,你的工作不是解決技術(shù)問(wèn)題,你之所以解決技術(shù)問(wèn)題,是為了解決業(yè)務(wù)問(wèn)題。

  一般的程序員只會(huì)陷在技術(shù)問(wèn)題之中,而不知道最初是為什么要解決這個(gè)問(wèn)題。更嚴(yán)重的是,一般程序員無(wú)法從頭開(kāi)始創(chuàng)建出具有業(yè)務(wù)價(jià)值的東西。當(dāng)被要求基于簡(jiǎn)單的用戶設(shè)計(jì)新特性的時(shí)候,他們會(huì)死板地、照著字面對(duì)故事或者說(shuō)明書做出解釋,這樣交付的產(chǎn)品用戶根本無(wú)法使用。因?yàn)樗麄儾粫?huì)考慮相關(guān)的用例;不會(huì)考慮最終用戶的體驗(yàn);并且在做面向用戶的內(nèi)容時(shí),設(shè)計(jì)都會(huì)很笨重。這導(dǎo)致他們無(wú)法編寫業(yè)務(wù)應(yīng)用,只能做產(chǎn)品。

  好的程序員會(huì)從最終用戶的角度來(lái)看他們的代碼。我怎樣才能讓它更輕松地解決用戶的問(wèn)題呢?故事的文字內(nèi)容之外有哪些方面會(huì)讓這個(gè)特性給用戶帶來(lái)更多收益呢?

  10. 無(wú)法判斷任何編程任務(wù)的業(yè)務(wù)價(jià)值

  這個(gè)問(wèn)題和上一個(gè)是相關(guān)的,很多技術(shù)上很強(qiáng)的程序員之所以無(wú)法意識(shí)到自己的潛力,是因?yàn)樗麄儾粫?huì)停下來(lái),從業(yè)務(wù)或者組織本身的角度去看一下他們的工作。

  強(qiáng)大的程序員能夠自我管理,對(duì)選擇如何投入時(shí)間做出很好的業(yè)務(wù)決定,他們會(huì)問(wèn)這樣的問(wèn)題:這是我現(xiàn)在應(yīng)該做的最有價(jià)值的事情嗎?我應(yīng)該為之投入多少時(shí)間?離交付日期有兩個(gè)星期,我現(xiàn)在能做什么,從而更容易滿足那個(gè)日期呢?

  一般的程序員不會(huì),他們只會(huì)拿著說(shuō)明書,然后盲目地實(shí)現(xiàn),直到結(jié)束,不關(guān)心他們的工作和公司的業(yè)務(wù)目標(biāo)有什么關(guān)系,以及對(duì)其他團(tuán)隊(duì)和業(yè)務(wù)組會(huì)產(chǎn)生什么樣的影響。這樣,他們就會(huì)在業(yè)務(wù)價(jià)值很低的技術(shù)任務(wù)上浪費(fèi)大量開(kāi)發(fā)時(shí)間。

  Aaron在最后做出總結(jié):如果你想要成為更好的程序員,那么就要從改變你看待代碼以及編碼的方式開(kāi)始。你需要理解所編寫的每行代碼背后的業(yè)務(wù)成本;你需要從客戶或者最終用戶的角度來(lái)看待工作;你需要接受代碼會(huì)比你在組織中存在的時(shí)間更長(zhǎng),所以要以其他開(kāi)發(fā)者能夠繼承的方式來(lái)設(shè)計(jì);最重要的,永遠(yuǎn)都不要害怕新的挑戰(zhàn),也不要害怕請(qǐng)求幫助,你無(wú)法獨(dú)居一隅來(lái)提升工作效果,軟件開(kāi)發(fā)也是社會(huì)化的工作。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多