ถ้าพูดถึงการพัฒนาซอฟต์แวร์ จะว่าไปแล้วมันก็ดูเป็นสิ่งนึงที่ติดลูป วนไปวนมาในชีวิตชาวเดฟเหมือนกันนะ โดยเฉพาะอย่างยิ่งกับองค์กรที่ใช้ Agile และ Scrum ในการทำงาน ที่มีการแบ่งการทำงานเป็นรอบ ๆ (Sprints)
.
เพราะคุณจะต้องเก็บ Requirements ของลูกค้าหรือผู้ใช้งาน แล้วก็นำไป Design และ Process เป็นซอฟต์แวร์ขึ้นมา จากนั้นก็ไปเก็บ Feedback จากลูกค้าหรือผู้ใช้งาน เพื่อนำ Feedback ไปปรับปรุงและพัฒนาซอฟต์แวร์ต่อในรอบถัดไป 🤔
.
👉 ซึ่งในการพัฒนาซอฟต์แวร์จะมีคำอยู่คำนึงที่มักพูดถึงกันบ่อย ๆ นั่นก็คือคำว่า “Technical Debt” หรือแปลเป็นไทยตรง ๆ ว่า “หนี้ทางเทคนิค” นั่นเอง
.
.
🔥 Technical Debt คืออะไร?
.
คำว่า Technical Debt เกิดขึ้นครั้งแรกโดย Ward Cunningham ตอนกำลังทำ Software ด้านการเงินอยู่ (เขาคือ 1 ใน 17 คนที่ได้คิดคำว่า Agile ขึ้นมา) ซึ่งเขาอยากอธิบายปัญหาที่เจออยู่ให้นายจ้างที่ไม่รู้เรื่อง Technical จึงเลือกเปรียบเทียบปัญหาทางเทคนิคกับหนี้ทางการเงิน (Monetary Debt) 💸
.
👉 คำว่า Technical Debt จึงพูดถึงปัญหาต่าง ๆ ด้านเทคนิค 💻 ไม่ว่าจะมาจากการเขียนโค้ดที่ไม่ดี Design ที่ไม่มีคุณภาพหรือไม่ยืดหยุ่น การละเลยปัญหาบางอย่างระหว่างพัฒนา หรือสาเหตุใด ๆ ก็ตามที่สุดท้ายก็ต้องมาตามแก้ทีหลังอยู่ดี
.
.
🔥 Technical Debt เกิดจากอะไรได้บ้าง?
.
เป็นคำถามที่มีคำตอบได้ล้านแปดอย่าง เพราะการพัฒนาซอฟต์แวร์คงหลีกเลี่ยงปัญหาไม่ได้อยู่แล้ว ยิ่งเป็นซอฟต์แวร์ขนาดใหญ่แล้ว ยิ่งใช้เวลามากเท่าไหร่ หรือมีคนร่วมพัฒนาเยอะแค่ไหน ก็อาจทำให้มีปัญหาอีกมากมายที่รอให้เราไปตามแก้อยู่ 🤕
.
👉 และที่สำคัญ Technical Debt ไม่ได้มีแค่ “โค้ด” เท่านั้น ไม่ว่าจะปัญหาจากการออกแบบ การเทสต์ การทำเอกสาร เครื่องมือที่เลือกใช้ในการพัฒนา หรือผู้ร่วมพัฒนาเองก็เป็น Technical Debt ได้เหมือนกัน
.
.
🔥 ตัวอย่าง Technical Debt ที่คุณอาจจะได้เจอ
.
🔹 ใช้ Architecture หรือ Tools ต่าง ๆ ไม่เหมาะกับสิ่งที่พัฒนาอยู่
🔹 รู้ว่าซอฟต์แวร์มีปัญหาตรงไหน แต่ไว้ก่อนจนสุดท้ายไม่ได้แก้
🔹 เวลาที่ให้ไม่สอดคล้องกับจำนวนงานที่ต้องทำ
🔹 ไม่เข้าใจซอฟต์แวร์ที่กำลังทำอยู่
🔹 ลืมทำ Documents หรือทำแบบขอไปที ไม่มีคุณภาพ
🔹 เขียนโค้ดซับซ้อน อ่านทำความเข้าใจและ Maintain ได้ยาก
🔹 คนในทีมมีภาระหนักเกินไป เช่น ทำงานมากกว่า 1 งาน ในเวลาพร้อม ๆ กัน
.
.
🔥 ทำยังไงดี ถ้าไม่อยากมี Technical Debt
.
เอาเข้าจริง ๆ แล้วการพัฒนาซอฟต์แวร์ คงจะหลีกเลี่ยง Technical Debt ได้ยาก แถมพอมีแล้วก็ต้องตามแก้กันอีก ราวกับส่งดอกให้เจ้าหนี้ 😔 แต่ถึงจะเลี่ยงได้ยาก ก็ไม่ได้แปลว่าจะเลี่ยงไม่ได้เลย เรามาดูวิธีลด Technical Debt กันดีกว่า
.
👉 แน่นอนว่า สิ่งที่ช่วยลด Technical Debt ได้ดีที่สุด ก็คือการไม่สร้างมันขึ้นตั้งแต่แรกด้วยวิธีต่าง ๆ เช่น เขียนโค้ดให้ Clean, ใช้ Test-Driven Development (TDD) ในการพัฒนา, ทำ Unit Testing รวมถึงวางแผนการพัฒนาซอฟต์แวร์ให้ดีและเลือกใช้เทคโนโลยีที่เหมาะกับสิ่งที่ทำ
.
🤔 แต่ถ้ามันเกิดขึ้นมาแล้ว จะทำยังไงล่ะ? ข้อแรกเลยคือต้องรู้ก่อนว่า อะไรเป็น Technical Debt ของซอฟต์แวร์ แล้วจึงหาวิธีแก้ไขปรับปรุง โดยจัดลำดับความสำคัญของปัญหาที่เจอ แล้วแก้ไปเรื่อย ๆ เพื่อให้ Technical Debt ลดลง อย่าแค่รู้ว่ามีปัญหาอะไร แล้วก็ไว้ก่อน จนสุดท้ายก็ไม่ได้แก้
.
.
📌 สรุปแล้ว Technical Debt ก็ไม่ได้ต่างจากหนี้ทางการเงินเท่าไหร่ เพราะมีหนี้ก็ต้องมีจ่าย และไม่ได้จ่ายแค่เงินต้น เราต้องเสียดอกเบี้ย และจะเสียมากขึ้นไปอีก ถ้าปล่อยให้หนี้ก้อนนี้อยู่ไปนาน ๆ เหมือนกับ Dev ที่ต้องมาตามแก้ปัญหาต่าง ๆ แถมถ้าทิ้งไว้นานแล้ว หรือเป็นหนี้ก้อนใหญ่ ก็ต้องใช้ทั้งแรง ทั้งเวลา และทั้งเงินในการขจัดปัญหานั้นมากกว่าเดิม
.
เพราะฉะนั้น ถึงเวลาแล้วล่ะ 🙌 ที่จะบอกลา (หรือลด) คำพูดก่อหนี้อย่าง “เดี๋ยวค่อยทำ” หรือ “ทำ ๆ ให้เสร็จไปก่อน” หรือ “ไม่ต้องมี Test หรอก” เพื่อให้เกิดหนี้ทางเทคนิคอย่าง Technical Debt น้อยที่สุดนั่นเอง~
.
.
🔖 ขอบคุณข้อมูลจาก
https://siamchamnankit.co.th/ว่าด้วยเรื่อง-หนี้ทางเทคนิค-technical-debt-ทำไมต้องใส่ใจ-b7a0c296b590
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
#TechnicalDebt #BorntoDevวันละคำ #BorntoDev
同時也有3部Youtube影片,追蹤數超過7萬的網紅在地上滾的工程師 Nic,也在其Youtube影片中提到,軟體工程師在進入職場後,前 3 年是想法塑形以及定義價值觀的最佳時機,往往在初期沒建立好的觀念和實力,到了後面更是被日新月異的技術以及更強更年輕的新血注入給淹沒。 要如何保持高速成長及不斷學習,是工程師生涯得不斷思考的問題,而這部影片將會和你分享,我如何用日本劍道的三字心訣,分析我自己生涯的前三年...
「software unit test」的推薦目錄:
- 關於software unit test 在 BorntoDev Facebook 的精選貼文
- 關於software unit test 在 BorntoDev Facebook 的最讚貼文
- 關於software unit test 在 91 敏捷開發之路 Facebook 的精選貼文
- 關於software unit test 在 在地上滾的工程師 Nic Youtube 的最佳解答
- 關於software unit test 在 prasertcbs Youtube 的最佳貼文
- 關於software unit test 在 prasertcbs Youtube 的最佳貼文
- 關於software unit test 在 software-development/UNIT_TESTING.md at master - GitHub 的評價
- 關於software unit test 在 Unit Testing C Code [closed] - Stack Overflow 的評價
- 關於software unit test 在 When is unit testing inappropriate or unnecessary? - Software ... 的評價
software unit test 在 BorntoDev Facebook 的最讚貼文
👉 เมื่อเราได้รู้จัก MVC ไปกันแล้ว..มันยังมีอีกโมเดลหนึ่งที่สำคัญในการเขียนโปรแกรมเช่นกันนะ นั่นก็คือ… MVVM นั่นเอง!!
.
แล้วมันคืออิหยังงง?? เหมือนหรือต่างกับ MVC รึป่าวนะ หากพร้อมแล้ว มาหาคำตอบกันได้ในโพสต์นี้เลยจ้าาา
.
🌈MVVM ย่อมาจาก Model-View-ViewModel พัฒนามาจาก MVC โดยจะแยก View ออกจาก Model เพิ่ม ViewModel ขึ้นมาเพื่อเก็บข้อมูลทั้งหมดที่ View ต้องการ โดยทั้งสองจะส่งผลซึ่งกันและกัน หากมีอันไหนเปลี่ยนแปลง อีกอันก็จะเปลี่ยนแปลงตาม
.
👩🔧 Model
เหมือนกับ MVC มีหน้าที่จัดเก็บ และจัดการกับข้อมูลต่าง ๆ ภายในโมเดล
.
✨ View
เป็นส่วนการแสดงผล ซึ่งใน MVVM จะแยกกับ Model อย่างชัดเจน เน้นการแสดงผลอย่างเดียว ส่วน Logic ต่าง ๆ เป็นหน้าที่ของ ViewModel
.
👨💻 ViewModel
เป็นส่วนที่แปลง Logic ต่าง ๆ ให้แสดงบน View ได้ ซึ่ง ViewModel เปรียบเสมือนสมองของ View นั่นเอง โดยจะมี Data Binding เพื่อควบคุมการติดต่อระหว่างทั้งสอง เมื่อส่วนใดมีการเปลี่ยนแปลงจะส่งผลถึงกันและกัน
.
🌟 ข้อดีของ MVVM
- แยกส่วน Logic ออกจากการแสดงผล
- ง่ายต่อการบำรุงรักษาและทำการทดสอบ
- สามารถเขียน Unit Test Case สำหรับทั้ง ViewModel และ Model โดยไม่ต้องกังวลในส่วน View
- เหมาะกับการพัฒนาเว็บหรือแอปที่มีการเปลี่ยน UI บ่อย ๆ เพราะไม่กระทบกับส่วน ViewModel
.
หวังว่าจะเป็นประโยชน์กับเพื่อน ๆ นะคร้าบบบบบบ 🥰
.
💥หากใครอยากอ่าน MVC แอดเคยสรุปไว้ให้แล้ว คลิกลิงค์ด้านล่างแล้วไปอ่านกันได้เลยจ้า
https://www.facebook.com/borntodev/posts/4245182842206643
.
Source : https://andrewlundy.hashnode.dev/software-architectural-patterns-mvvm , https://www.guru99.com/mvc-vs-mvvm.html
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
software unit test 在 91 敏捷開發之路 Facebook 的精選貼文
【1/5 12:30 大會報告,本梯次已額滿,填寫表單可優先排入等待清單中,依序遞補,也會優先收到下一梯開課通知,以便手刀搶早鳥票】
凌晨一點了,是該來開放報名 2021 年六月份梯次的【#針對遺留代碼加入單元測試的藝術】
活動介紹:https://tdd.best/courses/unit-testing-gracefully-with-legacy-code-202106/
手刀報名:https://forms.gle/C8DjSkk33D8UMjai9
目前上課範例支援語言:
Java, C#, PHP, JavaScript, Python, Ruby, Kotlin
不用擔心基礎不夠或是實體課程回去無法複習,上課對程式碼的每一個修改,都有對應的 commit history,而且也都有對應的操作影片,讓大家回去可以從頭再練習一次。
課前、課中、課後也有討論群組供發問、分享。
恩,錯過這梯次就又要等半年以上囉,人生沒那麼多個半年可以耗,單元測試在各個 software engineer JD 上幾乎都一定會被列上去,不要只是會寫加法器或書裡面的範例而已,不要只是會用 IDE, test framework 跟 mock framework 而已,你要面對的是 legacy code,怎麼解決雞生蛋、蛋生雞的問題,才是真正務實的單元測試。
#業界第一品牌
#我就是不要臉
software unit test 在 在地上滾的工程師 Nic Youtube 的最佳解答
軟體工程師在進入職場後,前 3 年是想法塑形以及定義價值觀的最佳時機,往往在初期沒建立好的觀念和實力,到了後面更是被日新月異的技術以及更強更年輕的新血注入給淹沒。
要如何保持高速成長及不斷學習,是工程師生涯得不斷思考的問題,而這部影片將會和你分享,我如何用日本劍道的三字心訣,分析我自己生涯的前三年在做的學習,並一步步判斷自己成長學習的階段及改善。
章節:
00:00 有投票一定要來看
01:02 學習三階段
03:17 刻意練習的第一年
07:15 成長衝刺的二至三年
09:54 三年以後呢?
喜歡影片的話!可以幫忙點個喜歡以及分享、訂閱唷!😘
━━━━━━━━━━━━━━━━
⭐ 蝦皮賣場: https://shopee.tw/bboyceo
⭐ instagram (生活日常): https://www.instagram.com/niclin_tw/
⭐ Facebook (資訊分享): https://www.facebook.com/niclin.dev
⭐ Blog (技術筆記): https://blog.niclin.tw
⭐ Linkedin (個人履歷): https://www.linkedin.com/in/nic-lin
⭐ Github: https://github.com/niclin
⭐ Podcast: https://anchor.fm/niclin
━━━━━━━━━━━━━━━━
🌟 任何問題或合作邀約信箱: niclin0226@gmail.com
#前端 #後端 #工程師 #守破離
software unit test 在 prasertcbs Youtube 的最佳貼文
============
ดาวน์โหลดไฟล์ตัวอย่างได้ที่
============
playlist สอนการเขียนโปรแกรมเชิงวัตถุด้วย Java เบื้องต้น
https://www.youtube.com/watch?v=zC_0xOSX1dY&list=PLoTScYm9O0GEvHKqqib-AdVFwVe_2ln8W
============
playlist สอนภาษาจาวา Java เบื้องต้น
https://www.youtube.com/watch?v=O3rW9JvADfU&list=PLoTScYm9O0GF26yW0zVc2rzjkygafsILN
============
playlist สอนจาวา Java FileIO การอ่านเขียนไฟล์
https://www.youtube.com/watch?v=y4dfsuShUaw&list=PLoTScYm9O0GEsSpaLgFDuPWzUEZdtnuWs
============
playlist สอนจาวา Java การใช้ Collections ต่าง ๆ เช่น ArrayList, Map, Set, Stack
https://www.youtube.com/watch?v=JYTIQip_pak&list=PLoTScYm9O0GEskLFgdC02Swit1fcDWspM
============
playlist สอนการทำ Unit Test ภาษาจาวา Java
https://www.youtube.com/watch?v=R11yg8hKApU&list=PLoTScYm9O0GHiK3KNdH_PrNB0G3-kb1Bi
============
playlist สอนภาษา C เบื้องต้น
https://www.youtube.com/watch?v=Z_u8Nh_Zlqc&list=PLoTScYm9O0GHHgz0S1tSyIl7vkG0y105z
============
playlist สอนภาษา C# เบื้องต้น
https://www.youtube.com/watch?v=hhl49jwOIZI&list=PLoTScYm9O0GE4trr-XPozJRwaY7V9hx8K
============
playlist สอนภาษา C++ เบื้องต้น
https://www.youtube.com/watch?v=_NHyJBIxc40&list=PLoTScYm9O0GEfZwqM2KyCBcPTVsc6cU_i
============
playlist สอนภาษาไพธอน Python เบื้องต้น
https://www.youtube.com/watch?v=DI7eca5Kzdc&list=PLoTScYm9O0GH4YQs9t4tf2RIYolHt_YwW
============
playlist สอนภาษาไพธอน Python การเขียนโปรแกรมเชิงวัตถุ (OOP: Object-Oriented Programming)
https://www.youtube.com/watch?v=4bVBSluxJNI&list=PLoTScYm9O0GF_wbU-7layLaSuHjzhIRc9
============
playlist สอนภาษา R เบื้องต้น
https://www.youtube.com/watch?v=oy4qViQLXsI&list=PLoTScYm9O0GF6qjrRuZFSHdnBXD2KVICp
============
playlist สอนภาษา PHP เบื้องต้น
https://www.youtube.com/watch?v=zlRDiXjYVo4&list=PLoTScYm9O0GH_6LARFxozL_viEsXV2wgO
============
เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่
https://www.youtube.com/subscription_center?add_user=prasertcbs
software unit test 在 prasertcbs Youtube 的最佳貼文
ดาวน์โหลด JDK 8 ได้ที่ http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
ดาวน์โหลด IntelliJ Idea ได้ที https://www.jetbrains.com/idea/download/
============
playlist สอนภาษาจาวา Java เบื้องต้น
https://www.youtube.com/watch?v=O3rW9JvADfU&list=PLoTScYm9O0GF26yW0zVc2rzjkygafsILN
============
playlist สอนจาวา Java FileIO การอ่านเขียนไฟล์
https://www.youtube.com/watch?v=y4dfsuShUaw&list=PLoTScYm9O0GEsSpaLgFDuPWzUEZdtnuWs
============
playlist สอนจาวา Java การใช้ Collections ต่าง ๆ เช่น ArrayList, Map, Set, Stack
https://www.youtube.com/watch?v=JYTIQip_pak&list=PLoTScYm9O0GEskLFgdC02Swit1fcDWspM
============
playlist สอนการเขียนโปรแกรมเชิงวัตถุด้วย Java เบื้องต้น
https://www.youtube.com/watch?v=zC_0xOSX1dY&list=PLoTScYm9O0GEvHKqqib-AdVFwVe_2ln8W
============
playlist สอนการทำ Unit Test ภาษาจาวา Java
https://www.youtube.com/watch?v=R11yg8hKApU&list=PLoTScYm9O0GHiK3KNdH_PrNB0G3-kb1Bi
============
playlist สอนภาษา C เบื้องต้น
https://www.youtube.com/watch?v=Z_u8Nh_Zlqc&list=PLoTScYm9O0GHHgz0S1tSyIl7vkG0y105z
============
playlist สอนภาษา C# เบื้องต้น
https://www.youtube.com/watch?v=hhl49jwOIZI&list=PLoTScYm9O0GE4trr-XPozJRwaY7V9hx8K
============
playlist สอนภาษา C++ เบื้องต้น
https://www.youtube.com/watch?v=_NHyJBIxc40&list=PLoTScYm9O0GEfZwqM2KyCBcPTVsc6cU_i
============
playlist สอนภาษาไพธอน Python เบื้องต้น
https://www.youtube.com/watch?v=DI7eca5Kzdc&list=PLoTScYm9O0GH4YQs9t4tf2RIYolHt_YwW
============
playlist สอนภาษาไพธอน Python การเขียนโปรแกรมเชิงวัตถุ (OOP: Object-Oriented Programming)
https://www.youtube.com/watch?v=4bVBSluxJNI&list=PLoTScYm9O0GF_wbU-7layLaSuHjzhIRc9
============
playlist สอนภาษา R เบื้องต้น
https://www.youtube.com/watch?v=oy4qViQLXsI&list=PLoTScYm9O0GF6qjrRuZFSHdnBXD2KVICp
============
playlist สอนภาษา PHP เบื้องต้น
https://www.youtube.com/watch?v=zlRDiXjYVo4&list=PLoTScYm9O0GH_6LARFxozL_viEsXV2wgO
============
เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่
https://www.youtube.com/subscription_center?add_user=prasertcbs
software unit test 在 When is unit testing inappropriate or unnecessary? - Software ... 的推薦與評價
I will personally not write unit tests for situations where: The code has no branches is trivial. A getter that returns 0 doesn't need to be tested, ... ... <看更多>
software unit test 在 software-development/UNIT_TESTING.md at master - GitHub 的推薦與評價
Unit tests are designed to test a specific functionality of code · They are used by the programmer to make sure the code is doing what it's supposed to be doing ... ... <看更多>