色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

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

  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ì)完成!)

  他在 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)求幫助

  一般的程序員羞于或者不想讓人知道自己不懂,所以他們裝作什么都知道,但這樣就有可能提交某種非常可怕的代碼到庫(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ì)化的工作。

it知識(shí)庫(kù)如何成為強(qiáng)大的程序員?,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 南宁市| 湖南省| 涟源市| 南投县| 独山县| 乳山市| 潼关县| 凤山县| 南投市| 揭东县| 中阳县| 新建县| 全南县| 钟祥市| 应城市| 株洲市| 平原县| 昭苏县| 开鲁县| 丘北县| 林西县| 冕宁县| 睢宁县| 新野县| 灵丘县| 富民县| 沈阳市| 云龙县| 班玛县| 晋城| 新津县| 剑河县| 会东县| 嘉义市| 洛川县| 江门市| 濉溪县| 沽源县| 景东| 沐川县| 大同市|