如何成为一名优秀的程序员?
1、理解技術(shù)債務(wù)
技術(shù)債務(wù)就像信用卡一樣,會(huì)有很高的利息率,時(shí)間越長(zhǎng),修復(fù)所花的代價(jià)就越大,程序員對(duì)這個(gè)要有深刻的認(rèn)識(shí)。同時(shí)團(tuán)隊(duì)?wèi)?yīng)該培養(yǎng)一種保證設(shè)計(jì)質(zhì)量的文化,應(yīng)當(dāng)鼓勵(lì)重構(gòu)、同時(shí)也應(yīng)當(dāng)鼓勵(lì)其它有關(guān)代碼質(zhì)量的實(shí)踐,在開(kāi)發(fā)時(shí)間中應(yīng)當(dāng)專門(mén)抽出一部分以解決技術(shù)債務(wù)。如果沒(méi)有合適的照料,代碼會(huì)變得越來(lái)越復(fù)雜難懂,最后沒(méi)人想碰它。
2、保持對(duì)原理的好奇心
不僅知道怎么用,還知道是什么原因。比如你做 Android,可以了解一下他的事件分發(fā)機(jī)制是什么樣的,它的 Measure/Layout 是怎么 work 的,有時(shí)間讀一讀它的源代碼,看看他的原生控件是怎么實(shí)現(xiàn)的。學(xué) iOS,了解一下它的內(nèi)存管理,autorelease 是怎么工作的,runtime 是怎么工作的,runloop 的原理是什么。做 Server 開(kāi)發(fā),可以了解一下 Nginx 為什么性能好,Redis 的工作原理如何,有時(shí)間也可以讀讀其源代碼。 做前端,也可以讀一讀 Angular 或 React 的源代碼。
3、專注
程序員的工作效率可以相差很大,其中區(qū)別很大的一點(diǎn)就是是否專注,就像線程切換一樣,恢復(fù)上下文有很高的代價(jià)。建議合理安排好自己的時(shí)間,盡量在上午/下午留大塊的專注時(shí)間來(lái)做設(shè)計(jì)和編程,關(guān)掉 IM/郵件/微信,把面試/會(huì)議等安排在大塊時(shí)間之外,同時(shí)也建議可以嘗試一下番茄工作法。
4、同理心
寫(xiě)代碼時(shí)要有同理心,考慮一個(gè)有少量上下文甚至完全不了解上下文的另外一個(gè)程序員他會(huì)怎么樣讀這個(gè)代碼,這樣自然就知道怎么寫(xiě)出可讀性好的代碼,該怎么命名,什么地方該加注釋。 考慮以后維護(hù)代碼的這個(gè)人就是你自己,這樣在偷懶做一些臨時(shí)的 workaround 時(shí)就會(huì)三思。 交付給測(cè)試人員時(shí)也要有同理心,有沒(méi)有做基本的質(zhì)量保證,有沒(méi)有跟測(cè)試溝通改動(dòng)可能的影響范圍,讓測(cè)試人員可以更有針對(duì)性的測(cè)試。
5、謀定而后動(dòng)
好的程序員不是拿到需求就開(kāi)始寫(xiě)代碼,而是先考慮清楚。 需求是否合理,是否能解決用戶的問(wèn)題,邏輯上是否有模糊或不完備的地方。 然后考慮設(shè)計(jì)的問(wèn)題,流程圖是什么樣的,類圖是什么樣的,接口是什么樣的,對(duì)架構(gòu)和模塊的影響是什么樣的,考慮清楚后才開(kāi)始寫(xiě)代碼。
6、架構(gòu)思維/全局思維
理解整體架構(gòu)是什么樣的,你開(kāi)發(fā)的模塊在架構(gòu)中的層次,新增的改動(dòng)會(huì)不會(huì)對(duì)架構(gòu)有污染,是否需要調(diào)整架構(gòu),所開(kāi)發(fā)的模塊可否抽象成通用模塊或者可否復(fù)用已有模塊,或則重構(gòu)已有模塊達(dá)到可復(fù)用目的。
7、設(shè)計(jì)語(yǔ)言
掌握適當(dāng)?shù)脑O(shè)計(jì)語(yǔ)言,比如 Plantuml 或 Visio,或者是一些設(shè)計(jì)模式,知道如何以簡(jiǎn)單清晰的方式去跟其他程序員描述和溝通你的設(shè)計(jì)和架構(gòu),大家理解一致了,才能更有效率的合作。
8、追求代碼質(zhì)量
代碼質(zhì)量是程序員的立足之本,在這一點(diǎn)上,要有精益求精的“匠心”。 我看到很多普通程序員做了不少項(xiàng)目后水平提升仍然不明顯,無(wú)它,對(duì)代碼質(zhì)量沒(méi)有精益求精的精神。 代碼規(guī)范,健壯性,可讀性,可維護(hù)性,無(wú)重復(fù)代碼等等,都要精益求精。
9、代碼審查
代碼審查是保證代碼和工程質(zhì)量的最有效手段,優(yōu)秀的公司(比如 Facebook,Google)和優(yōu)秀的團(tuán)隊(duì)(比如我們,歡迎關(guān)注團(tuán)隊(duì)公眾號(hào) mtydev)都非常重視代碼審查。如果你還不能認(rèn)識(shí)到它的重要性,可以查看這里。
10、自動(dòng)化
好的程序員都應(yīng)該有自動(dòng)化思維和工具思維,都應(yīng)該會(huì)一門(mén)腳本語(yǔ)言,有自己的工具庫(kù)。我們應(yīng)該通過(guò)工具及自動(dòng)化來(lái)改善我們的工作效率,以及避免一些人為的失誤。
歡迎關(guān)注我的公眾號(hào)(同步更新文章):DoNet技術(shù)分享平臺(tái)
閱讀原文
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的如何成为一名优秀的程序员?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mint-ui 写一个下拉滑动选择,mt
- 下一篇: 一个游戏策划案(仅供参考)