Categories
程式開發

給平庸程序員的12條建議


給平庸程序員的12條建議 1

我不是最牛的開發者,但我理解那些讓一名開發者脫穎而出的特性。

1.寫更多代碼

如果你想在某件事上做得更好,你就必須花時間去做這件事。

不管你讀了多少篇文章,讀了多少遍文檔,不付諸行動,你就不會進步。

這種設計模式一開始看上去很難,但當你在多種環境中實踐後,它就變得非常簡單。

2.編寫測試

當第一次開始為自己的代碼編寫測試時,我驚訝地發現:自己缺乏編寫良好測試的心態。

編寫測試讓你能以起初沒有想到的方式看看自己的代碼,因為在構思測試時,你必須考慮這個東西會出什麼問題。

你意識到,自己寫的那個函數做了太多的事情,分成多個函數可能更好,因為很難想出一個測試可以測試做這麼多事的函數。

讓我們看看下面的例子:

function postData(data) {
 boolean valid = true;
 // 检查data是否已定义
 if (data === undefined) {
   valid = false;
 }// 检查email的格式是否规范
 if (!regex(data('email')) {
   valid = false;
 }// 检查密码是否至少8位
 if (data('password').length  {
    //追加到列表
    this.users.append(response.userid);
   })
   .catch((error) => {
    // 显示错误
   });
 } else {
   showValidationError();
 }
}

如上所示,postData方法做了許多事情,比如驗證數據、在條件都滿足時追加到用戶列表並處理錯誤。

postData編寫單元測試會相當困難和混亂。你可以把它分解成多個方法,然後分別測試每個方法。

function postData(data) {
 return http
   .post(`example.com/user/create`, data);
}function validate(data) {
 // 检查data是否已定义
 if (data === undefined) {
   return false;
 }// 检查email的格式是否规范
 if (!regex(data('email')) {
   return false;
 }// 检查密码是否至少8位
 if (data('password').length >= 8) {
   return false;
 }  return true;
}function appendUsers(userId) {
  this.users.append(response.userid);
}function main() {
 if (validate(data)) {
  postData(data)
   .then(data => appendToList(data.userId))
   .catch(error => handleError(error))
 } else {
  showValidationError();
 }
}

你已經看到為什麼編寫測試會帶來更高質量的代碼。

你必須將長方法分割成多個更小的單元,並且每個單元都可以進行原子測試。

3.誠實

不管你是完全了解,還是不了解,都要誠實

假裝知道某個API的輸入和輸出,你就無法進步。相反,如果你因為對API或主題缺乏了解而說了一些愚蠢的話,你可能會在討論中出洋相。

4.為開源項目做貢獻

為開源做貢獻能讓你接觸到工作中可能永遠不會出現的場景,開拓視野。

這個過程中,你可以了解在分佈式場景中運行一個項目需要什麼,引入非破壞性更改和其他新的開源工具等。

總之,好處說不完,我們都知道開源如何直接或間接地改變了每個人的生活。

5.樂於助人

對自己知道的事情,幫助別人會讓你成為那個方面的“領路人”,並確定你在團隊中的價值和重要性。

如果是你可能不是最擅長的事情,也要樂於助人,因為你可能從中學到一些有價值的事情。

6.選擇一個個人項目

個人項目是學習新框架和新技術的好方法,而你可能在工作中沒有用到過它們。

對於一個個人項目,你既是產品經理,又是開發人員和架構師,因此可以想像要做多少決策。

你可以藉鑑在個人項目中的經驗,在工作或社區中建議新的框架和工具,如星星般閃耀。

7.放低姿態

不要讓自負和你的工作頭銜阻礙學習和進步。

少考慮你是誰,多想想你每天會變成什麼樣。這個組織中的架構師,可能是其他機構中的軟件開發人員。

對自己擅長的事情,嘗試去採取新的、不同的方式。否則,你可能錯過一個更有效的算法或一個更好的特性設計。

8.理解“為什麼”

在接受並堅定使用新框架、模式或API的信念前,請先理解它存在的“原因”。試著從直覺上理解一個概念的存在。

var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

以上是你在vue.js文檔站點上遇到的第一個代碼示例。即使在看這個非常基本的例子時,我也試圖在我的頭腦中推斷以下的事情:

  • 為什麼要用一個new關鍵字來創建組件?為什麼它們沒有一個工廠模式來創建對象?
  • 似乎el屬性獲取了元素的id,為什麼它使用# ?這是否意味著我可以添加其他元素選擇器,比如屬性和類?
  • data似乎是Vue對象的一個非常通用的屬性名,它究竟要表示什麼?

並不是說你應該對每件事都這麼挑剔,而是說培養這種習慣有助於更好地理解事物的哲學,從而提高你的理解力。

9.不要懶惰

懶惰會阻礙你展示自己的技能或關心的事,例如,如果你相信重構能提高性能,那就去做吧。

添加註釋節省其他開發人員的時間,記錄你新構建的API。

你在代碼中附加的時間等於為其他開發人員節省時間,他們正在嘗試理解你所編寫的內容。

10.解決編碼挑戰

解決編碼挑戰會迫使你去思考那些我們日常生活中習以為常的東西。

我說的是代碼的空間和時間複雜度。有些人認為,解決挑戰是不現實的,因為大多數東西都是抽象的,你只需要使用API​​。

但是我不同意!這不僅幫助你仔細查看代碼,也使你有信心想出性能最好的代碼,另一個好處是,你總是在準備面試。

一些解決挑戰的網站有hackerrankleetcodetopcoderspoj

11.鼓勵他人

如果你喜歡同事的提交,那麼不要猶豫,在StackOverflow上留言,感謝或支持那個對你有幫助的答案,或者在Medium上為那篇給你帶來免費知識的文章鼓掌,或者在GitHub上為你看中的有趣項目加星。

鼓勵別人可以幫助他們發揮出最好的自己,最終你也會發揮出最好的自己。

12.不要躲在技術棧的某一層後面

假如你發現了在視圖中使用API​​的一個問題,但卻不能修復它,因為你是一個“前端開發人員”。

在我看來,這是一種不好的態度。編程的基本原則,如保持代碼乾爽(DRY)、看到類的多個用例就使用抽象、捕獲所有流控制路徑的異常等等,幾乎適用於技術棧的每一層。

記住這些基本原則,它們可能會幫你解決自己認為無法解決的問題,因為你認為自己沒有處理代碼庫的這一部分。

結論

正如我上面所說的,閱讀本指南將幫助你意識到自己沒有做的事情,但要想從人群中脫穎而出,就需要付出努力和自律。

如果你喜歡這篇文章,請不要忘記與其他開發人員分享。希望本文對你有所幫助!

英文原文:

How not to be a mediocre developer!