自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

10+年程序員總結(jié)的20+條經(jīng)驗教訓(xùn)

開發(fā) 后端 前端
以下是我作為一名程序員經(jīng)過10幾年時間總結(jié)出的一些有關(guān)于軟件開發(fā)的經(jīng)驗規(guī)則:

以下是我作為一名程序員經(jīng)過10幾年時間總結(jié)出的一些有關(guān)于軟件開發(fā)的經(jīng)驗規(guī)則:

10+年程序員總結(jié)的20+條經(jīng)驗教訓(xùn)

開發(fā)

1.從小事做起,然后再擴展

無論是創(chuàng)建一個新的系統(tǒng),還是添加功能到現(xiàn)有的系統(tǒng)中,我總是從一個簡單到幾乎沒有任何所需功能的版本啟動,然后再一步一步地解決問題,直到滿意為止。我從來沒有妄想過能夠一步登天。相反,我一邊開發(fā)一邊學(xué)習(xí),同時新掌握的信息還可以用于解決方案中。

我很喜歡John Gall的這句話:“復(fù)雜系統(tǒng)總是源于簡單系統(tǒng)的演化。”

[[134555]]

2.一次只改變一件事

當(dāng)我們在開發(fā)時,碰到測試失敗和功能無效的情況,如果你一次只研究一個問題,那將會更容易找到問題的關(guān)鍵。換言之,就是使用短迭代。必須確保這個問 題解決之后,再轉(zhuǎn)移到另一個問題上。這適用于向下提交。如果在你添加新功能之前需要先重構(gòu)代碼,那么先提交重構(gòu),然后再添加新的功能。

3.盡早地添加日志記錄和錯誤處理

在開發(fā)新系統(tǒng)時,我做的***件事就是添加日志和錯誤處理,因為這兩者從一開始就非常有用。如果系統(tǒng)不能照常工作,那么你就需要知道程序中發(fā)生了什么——這是日志的作用。錯誤處理也是如此——錯誤和異常越早處理越好。

4.每一行新代碼必須至少執(zhí)行一次

在你真正完成一個功能之前,你必須對它進行測試。不然,你怎么知道它是不是按照你的想法在執(zhí)行呢?通常情況下,***的方法是通過自動測試,但并非總是如此。不過,不管怎么說,每一行新代碼必須至少執(zhí)行一次。

5.在整體測試之前先進行模塊測試

先進行部分模塊測試可以節(jié)省時間。通常說來,我們在整合不同的模塊時也會出現(xiàn)問題,例如模塊之間的接口不匹配。但是如果我們能夠信任各個組件的話,那么跟蹤集成問題就會變得簡單得多。

[[134556]]

6.所有事情所花費的時間總是比你預(yù)期的要長

特別是在編程中,即使一切進展順利,我們也很難對功能所需的時間做出正確的預(yù)算。并且,開發(fā)軟件時碰到各種意想不到的問題是非常常見的。

侯世達定律其實道出了真諦:做事所花費的時間總是比你預(yù)期的要長,即使你在預(yù)期中已經(jīng)考慮了侯世達定律。

7.先了解現(xiàn)有的代碼

大多數(shù)的編碼都需要以某種方式改變現(xiàn)有的代碼。即使是新功能,也需要適應(yīng)現(xiàn)有的程序。所以,在你加進去新的內(nèi)容前,首先需要了解當(dāng)前的解決方案。否 則,你一不小心就很有可能會打破現(xiàn)有的功能。這意味著,閱讀代碼和編寫代碼都是必要的技能。這也是為什么看似微小的變化仍可能需要很長時間才能解決的原因 之一——你首先必須了解上下文。

8.閱讀和運行

幸運的是,對于理解代碼,我們有兩種互補的方法。你可以閱讀代碼,也可以運行代碼。運行代碼的確是個非常棒的好方法。所以,請確保充分利用這兩種方法。

#p#

故障排除

9.bug總是難免的

我不喜歡那些宣稱軟件開發(fā)可以“一蹴而就”的高談闊論。不論你再怎么費盡心機,bug總是難免的。***能夠做成可以快速故障排除、修復(fù)bug和部署修復(fù)的系統(tǒng)。

10.解決故障報告

每個開發(fā)人員都應(yīng)該花時間去處理來自客戶的故障報告,并修復(fù)bug。這能讓你更好地理解客戶的意圖,明白如何使用系統(tǒng),知道排除故障的難易程度,了解系統(tǒng)的設(shè)計情況。這也是為自己的開發(fā)成果負責(zé)的好方法。

11.重現(xiàn)問題

修復(fù)bug的***步就是重現(xiàn)問題。然后你得確保修復(fù)之后,問題能夠徹徹底底地消失。這樣一個簡單的規(guī)則可以確保你不會誤將非問題當(dāng)作是問題,并確保解決方案真的能夠奏效。

12.修復(fù)已知錯誤,然后再看看有沒有遺漏的地方

有時候,可能同時存在著幾個不同的問題。它們之間的互相作用,可能會讓你毫無頭緒,束手無策。不要糾結(jié)于搞清楚發(fā)生了什么,先去解決所有已知的問題,然后再看看還有什么不對的地方。

13.沒有巧合

在測試和故障排除時,不要相信會出現(xiàn)什么巧合。就像你改變了定時器的值,那么就會改變系統(tǒng)重啟的頻率。所以一切都并非是巧合。添加新功能,另一個不相干的功能變慢了?這絕對不是巧合。相反,是你應(yīng)該仔細調(diào)查的內(nèi)容。

14.關(guān)聯(lián)時間戳

在故障排除時,事件的時間戳可以作為你的好幫手。尋找偶數(shù)增量。例如,如果系統(tǒng)重啟了,并且剛剛發(fā)出過一個3000毫秒左右的請求,那么可能是觸發(fā)了某個定時器,才導(dǎo)致出現(xiàn)重啟的動作。

#p#

團隊合作

15.面對面的交流最有效

當(dāng)我們需要討論如何解決問題時,那么面對面的交流比視頻、打電話和電子郵件都要好。

[[134557]]

16.橡皮鴨法

遇到你絞盡腦汁也解決不了的問題時,不妨找一個同事,然后將問題解釋給他們聽。很多時候,當(dāng)你在敘述時,即使你的同事一言不發(fā),你可能也會突然靈光乍現(xiàn)找到問題的關(guān)鍵。

17.問問題

閱讀和運行代碼往往非常有助于指出代碼的目的和它的工作原理。但是如果你有機會咨詢那些更為了解的人(例如原來的程序員),那么千萬不要錯過。

18.共享榮譽

不要貪圖榮譽,該是誰的就是誰的。例如:“Marcus想出了這個主意……”(如果真是他想的話),而不要說“我們想出的……”。

其他

19.嘗試

如果你不知道某種編程語言功能的工作原理,那么不妨寫一個小程序來理解它是如何工作的。這同樣適用于測試你正在開發(fā)的系統(tǒng)。如果我將參數(shù)設(shè)置為-1,會發(fā)生什么?當(dāng)我在重啟系統(tǒng)時,如果服務(wù)當(dāng)?shù)簦瑫l(fā)生什么?以此來研究它的工作原理。

20.帶著問題睡覺

如果你正在解決一個很難的問題,那么不妨帶著問題睡覺。有科學(xué)研究表明,這樣做雖然你表明上并沒有在主動思考,但你的潛意思卻這么做了。其結(jié)果就是,第二天再去研究問題,解決方案已經(jīng)呼之欲出了。

21.跳槽

不要害怕跳槽。和不同的人共事,開發(fā)不同的產(chǎn)品,感受不同的公司文化是非常有意思的。

[[134558]]

22.不斷學(xué)習(xí)

我們需要不斷地學(xué)習(xí)和了解軟件開發(fā)。你可以嘗試不同的編程語言和工具,閱讀軟件開發(fā)的書籍,接受MOOC課程。相信我,量變才能達到質(zhì)的飛躍,這些小小的學(xué)習(xí)積累,終有一天會大大地提高你的知識和能力。

希望這些經(jīng)驗?zāi)軐Υ蠹矣杏谩H缬胁划?dāng)之處,敬請指正。

責(zé)任編輯:王雪燕 來源: 碼農(nóng)網(wǎng)
相關(guān)推薦

2017-11-17 08:00:03

軟件開發(fā)程序員前輩經(jīng)驗

2015-09-14 08:43:42

程序員谷歌經(jīng)驗教訓(xùn)

2015-09-15 09:14:10

程序員經(jīng)驗教訓(xùn)

2016-04-08 15:25:55

程序員職業(yè)生涯經(jīng)驗教訓(xùn)

2018-03-06 10:14:55

程序員找工作經(jīng)驗教訓(xùn)

2019-06-25 10:02:44

程序員經(jīng)驗編程

2010-05-10 18:22:03

2015-07-29 10:39:33

代碼審查經(jīng)驗教訓(xùn)

2011-12-26 17:18:25

程序員

2016-02-24 09:41:44

IT人士經(jīng)驗教訓(xùn)

2020-11-16 01:48:04

網(wǎng)絡(luò)安全零信任網(wǎng)絡(luò)攻擊

2014-12-11 09:09:47

2019-07-05 10:24:33

云計算技術(shù)開發(fā)

2013-07-12 10:44:54

2015-05-18 14:49:27

2018-04-11 11:00:56

混合云云安全數(shù)據(jù)

2016-03-29 09:54:23

項目經(jīng)理經(jīng)驗教訓(xùn)總結(jié)

2018-04-12 11:42:48

混合云

2015-08-26 10:50:12

資深程序員編程經(jīng)驗

2012-03-05 13:08:35

編程
點贊
收藏

51CTO技術(shù)棧公眾號