[爆卦]Linter是什麼?優點缺點精華區懶人包

雖然這篇Linter鄉民發文沒有被收入到精華區:在Linter這個話題中,我們另外找到其它相關的精選爆讚文章

在 linter產品中有6篇Facebook貼文,粉絲數超過2,850的網紅矽谷牛的耕田筆記,也在其Facebook貼文中提到, 今天不聊科技,來聊聊日常工作中的優先度選擇。 作者認為每當你對一件事情說 Yes,其實你就是對其他的事情說 No,因為我們時間有限,不可能每件事情都想要盡善盡美,而那些被你自動說 NO 的事情,其實有些可能反而能夠為你帶來更大的效益。 整篇文章都圍繞於機會成本的概念,探討到底什麼是機會成本,其中顯...

 同時也有2部Youtube影片,追蹤數超過12萬的網紅prasertcbs,也在其Youtube影片中提到,ดาวน์โหลดไฟล์ที่ในในคลิปได้ที่ ► https://github.com/prasertcbs/basic_pytest เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่ ► https://www.youtube.com/subscription...

  • linter 在 矽谷牛的耕田筆記 Facebook 的精選貼文

    2021-01-16 09:00:08
    有 29 人按讚

    今天不聊科技,來聊聊日常工作中的優先度選擇。
    作者認為每當你對一件事情說 Yes,其實你就是對其他的事情說 No,因為我們時間有限,不可能每件事情都想要盡善盡美,而那些被你自動說 NO 的事情,其實有些可能反而能夠為你帶來更大的效益。

    整篇文章都圍繞於機會成本的概念,探討到底什麼是機會成本,其中顯性機會成本以及隱性機會成本的差異是什麼。

    就我個人來看,其實日常工作中也是充滿各種選擇,舉例來說,今天要有一個新的專案要開發,你要負責對其處理 CI/CD 等相關工作,你會怎麼安排自己的 Task ? 這些彼此間的優先順序會怎麼選擇?

    也許你腦中會想到有下列的事情要完成

    1. 打通 CI/CD 流水線
    2. 完善 CI 系統,增加各種檢查,譬如 unit test, linter 或是其他種類
    3. 完善 CD 系統,自動上版本,自動更新

    但是仔細看會發現,其實(3)這點真的一開始就可以辦到嗎? 需不需要一個手動部署的版本先撐住? 然後根據這些結果再跟(2)去比較,到底開發團隊一開始需要什麼?

    其實時間有限的情況下,我們往往都需要進行選擇,困難的是這些選擇永遠都沒有一個標準答案,不同團隊不同環境下,相同選項都會有不同答案。

    我個人也滿認同作者提到的概念,時間有限,將精力與時間放到更具有價值的開發與工作上,那些可以展現你個人價值與光芒的工作,未來可能都會是你職涯的推手。
    更多的工作團隊中,你的價值是自己帶出來的,而不是別人指派給你的,因此我認為如果你有機會獨當一面去處理一系列的工作,如何展現出你的價值就是一個值得訓練也值得培養的能力與議題

    原文:
    https://dariusforoux.medium.com/say-no-anything-thats-not-a-priority-9ed70064d0b6

  • linter 在 愛流浪的小風 Facebook 的精選貼文

    2020-10-16 11:00:41
    有 40 人按讚

    這週的分享來跟大家聊聊一些軟體建設的基礎,因為常常在和朋友聊天的時候,談到一些公司導入敏捷開發,但執行起來卻不是很順暢的情境,所以想趁這個機會和大家聊聊我的一些想法。

    使用敏捷方法進行開發最大的好處是能夠盡快的交付價值,並且收集反餽,作為快速疊代的基礎。但往往敏捷失敗最大的原因,是忽略了先建立好能夠支持敏捷方法的基礎建設,舉例來說,如果今天沒有足夠的單元測試、自動化測試,那怎麼可能保證在快速交付的同時,維持產品的品質呢?

    舉一個很實際的例子,假設今天我們是一個 ”成熟” 的敏捷開發團隊,每一個 Sprint (兩週) 固定可以完成 20 個 User story,而目前團隊已經完成 100 個 User story 功能上線,我們每一個 Sprint 的目標是,在盡可能交付新的 User story 的同時,要確保原本既有的功能使用正常,這樣才能夠對客戶帶來最良好的使用者體驗。這樣的情境假設應該是每一個敏捷團隊希望達成的目標,甚至是希望能夠透過持續改進的方式,讓團隊和產品成長的同時,交付速度越來越快,但是由於團隊希望可以專注在 「交付價值」(注意這邊這個交付價值的定義),所以一切都以 ”開發” 功能為優先,在 Merge PR 或是上線前再多做一些測試確保功能正常。這一切聽起來都非常的合理,大家專注在交付價值,但是在幾個 Sprint 之後,卻發現使用者抱怨系統問題的頻率變高了?

    這個情境其實是一個很常見的誤區,由於想要趕快先交付價值,讓系統上線,所以打算等有空的時候再補測試,或是先用手動測試,但卻忽略了功能成長時測試案例增加的速度,如果原本團隊已經有 100 User story,每週可以穩定交付 20 個新的 User story,那麼只要 5 個 Sprint,需要驗證的功能數量就會變成一開始的 2 倍,只要經過一年,測試的工作量就會將近變成 7 倍,通常到最後都會變成,只測試覺得有被修改的部分,或是感覺需要測試的部分,剩下大部分的功能都不會被測試到,自然而然產品就會越來越多小問題,也越來越不敢隨意修改,反而導致開發速度大幅度下降,甚至是因為不敢大幅度的修改,失去了重構的機會,然而讓程式碼更難維護,然後又發生越來越多的問題,進入了一個惡性的循環!

    所以從一開始定義正確價值交付就是一個很重要的議題,在定義產出的時候,就必須要把維持產品品質最低限度的標準都包含進去,例如是否有經過 Linter 確保程式碼風格一致,所有產出的 Feature 都包含單元測試、自動化測試甚至是安全測試或壓力測試等等,讓這些成為產出的標準,自然而然就可以在持續疊代的同時,維持產品的品質,甚至是持續優化交付的速度!所以當進行敏捷開發時,必須要時時刻刻的檢視自己是否有把「品質」當作一個重要的指標,能夠很好的了解自己的產品價值所在,注重軟體開發的本質,才能夠更進一步的有穩定的疊代產出!

    基本功是無論如何還是很重要的啊,如果沒有好好的打好基礎,不管用的方法工具再先進,都是跑不快的!

  • linter 在 愛流浪的小風 Facebook 的最佳貼文

    2020-09-27 18:00:25
    有 95 人按讚

    上次跟大家分享了縮短 Release 的價值,用實際的數字來讓大家感受一下,透過縮短 Release 週期所帶來的好處,希望大家也可以實際的試試看縮短 Release 週期,不過在談到要縮短 Release 週期的時候,聽到最多的困擾是,那實際上要怎麼做,才能夠讓 Release 這件事情可以快速並且頻繁的發生呢?

    1. 適當的 Task 大小

    通常在做任務拆分時,我會希望把 Task 大小控制在 1~3 天能完成的範圍(這就看個人,我個人喜歡至少這個粒度,不過越小越好),就算是一個大功能的局部功能也好,並且這個 Task 在做完之後就可以直接上線,是能跟完全相容現在的系統,在透過系統架構設計,例如 Config 或 Feature Flag 來控制功能是否開放給使用者。

    (打完這一部分之後就發現有另外兩件事情可以和大家聊聊,關於任務拆分的處理和如何透過系統架構設計來持續上線程式碼 XD)

    2. Code review

    Code review 其實是團隊協作中很重要的一件事情,當然如果你們經常直接 Pair Programming 的話就可以省去這一段,我很喜歡 Code review 的一個原因,是因為這是一個討論程式碼實現的很好機會,通常你會有一些具體的例子可以來討論,並且也可以同步團隊成員對於整個系統架構的期望,所以除了確認程式碼是否正確之外,不要浪費這個機會和團隊成員們交流討論,這也是一個偷偷學習別人思路的好時機!另外透過 Code review ,還能確保大家對於整個系統的認知是有跟上進度的,像我們目前團隊就會確保至少有接近 50% 的成員 Approve 之後才能 Merge PR,讓大家在不能 Mob 時也能跟上大家所做的變更。

    3. 持續整合、部署

    除了人為的 Code review 之外,我通常還會相當依賴 CI Server 來幫我們做各種面向的檢查,從最基本的測試我們就有至少單元測試、整合測試、視覺 (Visual) 測試等等,還有團隊開發一定需要的 Linter 來確定程式碼風格一致,如果更進階一點就是可以做安全性掃描或是程式碼分析,如果做的是 Web 或 App 的開發還可以考慮做一些 Benchmark 來確保系統的執行速度符合預期,既然了解了持續快速部署才是產生價值的最大方式,我們就應該讓所有能自動的就自動化,才能讓人力專注在最需要的地方,剩下的就交給自動化工作來處理就好了

    4. 監控

    在聊持續部署、快速部署的時候,一個很常見的誤區是很多人以為上線後就結束了,我只要盡量的在 Merge 之前確保做好各種事情,然後想辦法讓 Pull Request 變綠燈,拿到足夠的 Approve,然後 Merge 進去我就馬上趕快開始新的工作。

    但其實對於使用者來說, Merge 程式碼之後才算是真正的開始,因為他們才能夠開始使用你所部署的新功能,所以持續部署中最重要的事情是 ”上線之後”,有沒有足夠的監控機制可以知道你系統運作的情形,不只是有一些 CloudWatch 的 Monitor 或是 Centralised 的 Log 管理系統來幫助除錯,甚至你應該要建立一些 Client events 的 Tracking 或是 Funnel 來監控你的系統是不是可以被正常使用,如果有任何異常的時候能在客戶回報前就能發現,現在其實有很多的現成工具可以使用,有些還能夠直接設定自動警示,讓你在系統有流程中斷的時候被通知。

    5. 異常排除

    在有了足夠的監控系統之後,你有沒有足夠的手段來減輕這些異常對於客戶的影響,舉例來說,假如今天你結帳流程中本來有信用卡結帳跟超商付款,如果今天信用卡公司剛好故障,你能不能透過 Feature Toggle 或是 Config 來暫時關閉信用卡功能,讓使用者還是可以使用其他的方式結帳,這件事情你可以多快完成,它是否需要重新部署才能做到,都會是異常排除一個很重要的指標,當然今天這個例子是客戶端的異常排除,如果今天是 Cloud Service 發生問題時的異常排除也是一個很經點的例子,至少也要有跨 Region 的 BCP。

    6. 成效追蹤

    功能上線之後,你是否能夠知道這個功能對於客戶帶來多大的改善,對於系統有多少的優化,其實都是需要被 ”量化” 追蹤的,很多人都會誤以為用感覺來測量就足夠了,沒有實際的量化其實很難評估回顧一個新功能的規劃是否產生了正確的價值,還是其實一切都是感覺良好,例如你更新的購物流程的畫面,是否實際對整個流程的轉換率有所提升,還是只是單純的變好看但對業績沒有幫助,這些其實都是需要很赤裸的被量測,才能真正的作為疊代的依據,找出團隊目前的方向和規劃方式有沒有問題。

    我覺得在敏捷開發中很容易被誤解的是,很多人以為只要用了對了方式(或是大家都在用的方式),就可以讓產品快速開發、上線並疊代,跟上那些新創獨角獸的腳步,卻忽略了這些其實都是軟體的技術基礎硬實力,通常大家只會跟你說他們使用某種方法帶來很多成效,但不會透露背後做了多少的基礎改善,所以要小心就算所有團隊成員心態正確,老闆觀念正確,沒有相對應的硬實力,敏捷也只是空談,當然,如果你想要改善軟體開發硬實力也不是不可能,我推薦最簡單直接的方式就是找 91 敏捷開發之路

    你在做持續 Release 的時候也有遇到什麼樣心得或痛點嗎?歡迎你也分享一下你對這件事情的看法喔!粉絲團默默的快 1000 人了,我也開始打算來個每週固定更新,如果你覺得我的分享不錯的話,歡迎你也對我的粉絲團按讚喔!