iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
1
Modern Web

跟著 YDKJS 作者 Kyle Simpson 打造全新 JavaScript Mindset系列 第 2

[day01] 誰是 Kyle Simpson ? Code is for ... ? (上)

Universal (problem)

Kyle Simpson 原本也是開發者,他做過「各種工作」。
我的意思是各種各樣的公司,從大公司到小型創業公司,各種不同的 technology stack(PHP, .NET or Python)。
甚至是不同類型的公司,例如顧問公司和產品公司,或是介於兩者之間的所有公司。

但是他自己承認他是一個爛員工。

畢竟,有那麼多工作經驗是因為,每一個都待不久(6-8個月)。


不知道大家有沒有這種經驗,
一遇到問題解決不掉,卡著很久,然後感到沮喪,
因為你認爲問題的產生是因為用某個技術,
你不想碰那個技術,或是碰很久還是不了解,
最後就認為「這間公司技術債太多,爛公司!」,就換一間公司,完全不同技術的公司,
這樣你就不會遇到那個問題了。

Kyle Simpson 一開始就類似這樣,然後一直換到最後,他發現無論換到什麼技術棧(technology stack)、什麼程式語言,有些問題某種程度上都是一樣的。

舉例來說

  • 你有沒有遇到一段 code ,它忽然壞掉了,但是你不知道原因 (它本來沒問題,現在突然它壞掉了,但你不知道為什麼它壞掉了)。
  • 你有沒有遇到一段 code ,它可以 work ,但是你不知道它為什麼可以 work。

有時候遇到上面問題,有時候意外可以動,然後你就趕快註解

/**
 * @description 不要修改,不然後果自負
 * */

如果你不知道,為什麼你的 code 可以運行,有 bug 的時候你就不可能修復它 (捨棄運氣的因素)

Kyle Simpson 小劇場

Woow, 你寫 code 寫得像是專業的猜測員,你知道嗎,少數可以靠猜測當專業的大概只有天氣預報了!
你寫 code 比我好? 哦,不! 是你猜測準確機率比我高!所以你是 senior !

(你不知道為什麼可以動,用猜的)

Kyle Simpson 小劇場 (二)

「bug 怎麼還沒修好!!」,可能是 PM 或是老闆問的。
『如果要趕時間的話,我重寫比較快,可以讓我重寫嗎?』 因為這樣你就不用去管為什麼有 bug 或是花時間去釐清邏輯,而且你剛寫好一定可以動。

順帶一提,這個 bug 可能是別人的,但是更有可能是三週前的你自己。

如果你有重寫過任何 code,你有算過幾次嗎?如果用系統來算,重寫十次?百次?還是有問題有 bug 就重寫?
或是「誒!大夥我們來用新框架改寫,這樣就可以減少 bug 了!」 ⋯⋯ 你還是在不斷重寫。

開始寫 code 以前 , code 是給誰看?

  • 回想你自己寫過的 code ,你有沒有寫過 沒有 elseif statement ?
if(isLoggedIn()){
    session = pullFromCache();
}
// what, no else here!?

為什麼沒有 else ? 因為 linter 會報錯? 還是你寫的當下不用寫 else 也不會有問題?

如果你的回答是「我思考過所有狀況,只需要 if,不用寫 else 條件」,
woooow,你是專家,那我問你,你要怎麼用 code 交流,或是說⋯⋯「我」怎麼知道?

先不要急著解釋,這個問題很有可能是三週後的你問的。
蛤?你還是知道?那⋯⋯三年後的你自己呢?

三年後有個 bug,大家都找不到,有人就懷疑你,「為什麼沒有 else ?」
你可能花 2 小時,回來看這段三年前的 code ,然後告訴對方為什麼沒有 else。
也有可能你忘了,這個 bug 最後鍋算你的,儘管可能和「為什麼沒有 else ?」無關。

註:
我沒有一開始就講 JS,因為先認識講者 Kyle Simpson 才能對理解後面的內容,
很多東西都圍繞 Kyle Simpson 思考的方法,可以先當作初步調整自己的 mindset。

Reference: Kyle Simpson Presents: Code is for Humans


上一篇
[day00] 跟著 YDKJS 作者 Kyle Simpson 打造全新 JavaScript Mindset
下一篇
[day02] Kyle Simpson :「 Code is for Humans 」(下)
系列文
跟著 YDKJS 作者 Kyle Simpson 打造全新 JavaScript Mindset31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言