Technical Debt ไม่ได้เกิดจาก Developer อย่างเดียว !!!

ภาพจากเว็บ http://blog.crisp.se/2013/07/12/henrikkniberg/the-solution-to-technical-debt

วันนี้น่าจะเป็นวันที่ผ่านมากับ 1 ปี กับ อีก 6 เดือน สำหรับงานที่เข้ามาทำ BOTDMS – DataSet เป็น Module ที่เหมือนถูกทิ้งไว้กลางทาง หลายคนอาจจะส่งสัยว่าทำไมผมเขียน Blog ตอนนี้ขึ้นมา โดยที่ผมอยากเขียน เพราะอยากแชร์ประสบการณ์ครับ ถ้าเป็นเมื่อ 2-3 ปีก่อน ผมมองว่าเรื่อง Technical Debt มันเกี่ยวกับตัว Developer เป็นหลัก แต่หลังจากทำงานที่เรียกว่าเป็น Full-Stack ก็ได้ หลังจากทำงานนี้มา มุมมองของคำว่า “Technical Debt” ของผมเปลี่ยนไปมาก ผมว่าหนี้พวกนี้ ไม่ได้เกิดจากความมักง่ายของ Developer แต่เกิดจากทุกๆคนที่ทำงานร่วมกัน ทำไมหละ ลองมาดูเหตุผลของผมกัน – User ไม่เข้าใจสิ่งที่ตัวเองทำ รู้แต่ว่าเป็นงานมรดก ที่ส่งมาจากรุ่นสู่รุ่น แต่ไม่มีใครรู้ว่าจริงๆ คือ อะไร กรุงโรมไม่ได้สร้างในหนึ่งวัน Software ก็เช่นกันครับ – DRS / CRS คือ เอกสารที่ทำให้มีส่ง เพราะ งานที่ผมต้องทำจาก DRS มันมีแค่ตัวย่อ 3 ตัว – ความมักง่ายของทีม BA (Business Analyst) ที่ล่ามระหว่างโลก IT กับ โลกของธุรกิจ – มาผู้ที่อยู่เกือบปลายทางอย่าง Developer (SA+Programmer) บ้าง – มาผู้ที่อยู่ปลายทาง QA – Chain สุดท้ายและทีม MA ทุกอย่างมีเหตุมีผล Code ไม่ดี อ่านยาก Code เน่า งานไปถึงลูกค้ามี Defect ทำไม Dev ไม่ Test ก่อน แต่ทำไมไม่ลองย้อนกลับไปมองว่าต้นเหตุที่แท้จริงของปัญหา คือ…

Introduction to Machine Learning

ภาพจากเว็บ https://pixabay.com/p-503588/?no_redirect

สำหรับ Blog นี้เป็นการสรุปจากที่ได้ฟัง ได้อ่านมาจากหลายๆที่นะครับ และเนื่องด้วย ผมไม่เก่ง Math ฉะนั้นบางอย่างจะมีอธิบายผิดพลาดได้ครับ คำว่า Artificial Intelligence(AI) และ Machine Learning(ML) มันเหมือน หรือต่างกันอย่างไร แล้ว Programming กับ Machine Learning(ML) และตัวสุดท้าย พอดีถามอากู๋แล้วคนถามเยอะ Data Mining(DM) กับ Machine Learning(ML) Data Mining Machine Learning Association rules Supervised Learning Clustering Unsupervised Learning Classification Reinforcement Learning Sequencial Pattern Sequence Similarity Machine Learning(ML) มัน คือ อะไร “A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience” Tom Mitchell (1988) รูปแบบหลักๆของ Machine Learning(ML) มีอะไรบ้าง 🖥️ Supervised Learning y = f(x) 🖥️ Unsupervised Learning…

[CR] ก๋วยเตี๋ยวเรือสูตรต้นตำรับป้าสมจิตร เซนต์คาเบรียล

พอดีวันนี้มีธุระต้องออกมาทำระหว่างพักเที่ยงที่วงเวียนใหญ่ครับ ตอนเดินทางกลับเจอร้านก๋วยเตี๋ยวเรือ บอกว่าสูตรต้นตำรับป้าสมจิตร พิกัดร้านอยู่ข้างโรบินสัน ลาดหญ้า เดิมครับ (ได้ข่าวว่าจะมาเปลี่ยนใหม่อีกครั้งเป็นเซนทรัล ไม่รู้ว่าจริง หรือป่าวนะ) พอมาถึงร้านผมลองสั่ง 2 ชามครับ ปกติกินที่ร้านป้าสมจิตร ตรงข้ามเซนต์คาเบรียล มันจะชามเล็กครับ ไม่เกิน 20 บาทนะ (แวะไปครั้งสุดท้ายประมาณ 5 ปีก่อนครับ ต้นฉบับน้ำตกกลมกล่อม แต่เค็มขึ้นนะ) หลังจากสั่งไปในที่สุดได้มาครับ 2 ชาม ปริมาณพอกับที่เคยกินที่ เซนต์คาเบรียล น้ำตกข้นไปนิดนึงครับ แต่ไม่เค็มเหมือนต้นฉบับ เข้าใจว่าความเค็ม อาจจะเกิดจากอุปกรณ์ที่ใช้ทำก็ได้นะ ส่วนราคา 35 บาท แอบแพงไปนิดนึง ช่วงระหว่าง 25-30 บาท ราคากำลังดีครับ คราวหน้าแวะมาลองกินข้าวมันไก่กว่างเจาครับ จริงๆ ตอนแรกผมเข้าร้านมาเพื่อข้าวมันไก่ของชอบ แต่มันหมด T…T

สรุปการอบรม A Tool Development for Ontology-Based Applications

เมื่อวันเสาร์ที่ผ่านมาครับ 3 ก.ย. 59 ผมได้ไปงานอบรมเกี่ยวกับ Ontology ครับ จัดที่คณะเทคโนโลยีสารสนเทศ มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือครับ (เพิ่งรู้ว่าถ้านั่ง Taxi มาห่างจากบ้านไม่ถึง 10 km นั่งรถเมล์นี่อ้อมโลก) สอนโดย ดร. มารุต บูรณรัช ครับ Ontology คือ อะไร ? แผนผังความรู้ (Mind Mapping) ที่มีการกฏเกณฑ์เข้ามาครับ ถ้าเข้าใจว่า OOP มาระดับนึง ผมว่าไปได้เร็วครับ Concept มีความคล้ายคลึงกันในระดับนึงนะ ที่เน้นการจัดหมวดหมู่ ใช้งานการในทุกสายงานเลยนะ ไม่ใช่เฉพาะ IT ทางฟากสังคม หรือแพทย์ก็มีใช้นะ (Ontology มันเริ่มมาจากวิชาปรัชญา โดย อริสโตเติล นะ) Ontology  ถ้าให้คอมพิวเตอร์รู้จักต้องทำในมาตรฐาน OWL ซึ่งมันมีพื้นฐานมาจาก XML >> RDF >> RDFS >> OWL Ontology เป็นแผนภาพ ถ้ามองในด้าน DB มัน คือ Schema ครับ โดยการตีความ Ontology นั้น ต้องมี Data(Record ใน DB) หรือ Instance มาให้มันทำงานครับ Ontology  มองข้อมูลอย่างไร มองเป็น Concept ตีว่าเป็นหมวดหมู่ครับ – กลุ่มที่เราสนใจ ใน Concept มีคุณสมบัติ (Property) หรือ part-of Intrinsic – มีมาตั้งแต่เกิด เช่น ส้ม มีเปลือก รสชาติเปรี้ยวหวาน extrinsic – ได้มาที่หลัง เช่น ราคา Concept แต่ละตัวมีความสัมพันธ์กันครับ IS-A ใน OOP เป็น…

นั่ง 542 ผิด ก็ไม่ได้แย่เสมอไปนะ

Update 2021-05-26 : 542 ยกเลิกบริการแล้วครับRef: Bangkokbusclub.com สาย 542 ยุติการให้บริการแล้ว วันนี้หลังจากเขียน Blog เสร็จ ผมออกไป MBK เพื่อใช้สิทธิ์ Burger King ของ Galaxy Gift ครับ ตอนแรกผมวางแผนนั่ง 511 ป้ายฟ้า (ไม่ขึ้นทางด่วน) มาลงที่เซนทรัลเวริ์ด แล้วเดินมาครับ แต่พอดีเห็น 542 วิ่งมาถึงแล้ว ผมเลยวิ่งขึ้นไปเลย จากนั้นดู Udemy ไป 4-5 ตอนครับ กว่าจะหลุดจากสมาธิ ตอนที่รถเสียที่วงเวียนใหญ่ครับ เพิ่งรู้ว่าที่มันนานๆ เพราะ ผมนั่งรถเมล์ 542 ที่วนขวาครับ อ้อมไปวงเวียนใหญ่ก่อน รถเสียที่วงเวียนใหญ่ ผมฉุดคิดได้ว่า เคยมีแพลนนั่งรถจากวงเวียนใหญ่ ไปแถวๆสยาม หรือ จุฬา ครับ เพื่อลองดูว่าถ้าเรียน ป โท ต้องใช้เวลาประมาณไหน คราวนี้ได้โอกาสเลย รถเสียตอน 13.35 รถเมล์สาย 542 คันถัดไปมา 13.46 ผมเลยจับเวลา และดูเส้นทางเลยครับ มันไป ได้นะ ถึง 14.20 ประมาณ 34 นาทีครับ เดี๋ยววันทำงาน ต้องหาโอกาสไปลองนั่งอีกครั้งบ้าง จะได้เผื่อเวลาตอนรถติดได้ครับ

[.NET] ประกาศให้โลกรู้ว่า Method นี้ Class นั้น Obsolete ตกยุคแล้ว !!!

Update 2024-12-10จาก Code เล็กๆ เมื่อวันเวลาผ่านไป มันก็เติบโตขึ้น ผ่านการตัดต่อพันธุกรรมมาอย่างโชกโชน พร้อมกับภาระหน้าที่อันยิ่งใหญ่ แต่บาง Class บาง Method มันไม่ตอบโจทย์ทางธุรกิจแล้ว มันควรจะถูกกำจัดไปซะ แต่ Code มันบางส่วนมันใช้อยู่ เราจะทำอย่างไร เพื่อให้ทีม Develop ที่พัฒนาด้วยกัน เปลี่ยนไปเรียกใช้ Class หรือ Method ใหม่แทน !!! ทางแรก เราอาจจะประกาศแจ้งให้ในทีมทราบ แต่บางครั้งอาจจะมีหลงลืมบ้าง เพื่อป้องกันปัญหาระยะยาวทำแบบ Java ดีกว่า ตัว Java มันมีบอกว่า Code ส่วนไหนที่เลิกใช้ (deprecated) ไปแล้วครับ โดยในตัว .Net Framework / .NET Core / .NET 6++ มี Attribute ให้เรียกใช้ครับ คือ ตัว Obsolete ครับ สำหรับตัวอย่างมาลองดูจาก Scenario ดังนี้ครับ ขั้นแรก – เจรจาก่อน การใส่ Attribute Obsolete ไว้บน Method ที่เราต้องการ ในที่นี้ คือ ShiftWorkingDate ขั้นสอง – กระชับพื้นที่ เพิ่ม Message แจ้งเตือน ขั้นสาม – ขอคืนพื้นที่ หมดเวลาแล้ว กำหนด Flag เป็น true ครับ ถ้า Developer คนไหนยังไม่แก้ แก้เวลา Compile มัน Error ครับ สุดท้ายและ ทำไมถึงต้องมาเขียน เพราะ จาก Code เก่าที่ Migrate มา Method ShiftWorkingDay ที่ทำหน้าที่เลื่อนวันไปในกรณีที่เป็นวันหยุด…

[MICRO MBA] อบรมเสร็จแล้วได้อะไรบ้าง

Blog นี้ดองไว้นานเลย อบรมเสร็จวันที่ 5 ส.ค. 59 เพิ่งมาเขียน Blog สรุปเอาตอนสิ้นเดือน โดยสำหรับหัวข้อที่ผมได้ไปอบรมมา ขอแบ่งเป็นหมวด ดังนี้ครับ (ตอน อบรมจริง มันไม่เรียงกันนะครับ) Marketing – คิดนอกกรอบ จับจุดตี Requirement ให้ตรง Modern Marketing Concept Consumer Behavior Design IMC in digital การสื่อสารการตลาดดิจิตอล แบบ 360 องศา Marketing 3.0 & Consumer Experience Management Management – การจัดการใช้ได้หมด ไม่ว่าเป็นเรื่อง Business หรือ Software Strategy and Competitive Advantage Strategic Innovating & Balanced Scorecard Technique Leadership Development in Learning Society Logistic and Supply Chain Management Accounting – ทุกอย่างต้องบันทึก มีขั้นตอนหลักการเหมือน Programming รายงานการเงินสาหรับผู้บริหาร Finance –  เวลามีความสำคัญ มีข้อมูลรู้อดีต วางแผนอนาคต ปรับปรุงข้อด้อย การวิเคราะห์งบการเงิน กลยุทธ์การจัดการทางการเงินสมัยใหม่ Business Foundation – พูดดี นำเสนอดี สร้างความน่าเชื่อถือได้ Effective Public Speaking สำหรับอบรมครั้งนี้ แม้ว่าจะมาแบบงงๆ แต่ได้ความรู้เยอะครับ เสียดายเวลาน้อยไปนิด เลยไม่ค่อยรู้จักใครเยอะครับ ผมเป็นคนที่ปรับตัวเข้ากับสภาพแวดล้อมใหม่ๆ จะใช้เวลาเยอะมากกครับ ในการอบรมครั้งนี้เนื้อหาที่ผมชอบที่สุดเป็นเรื่องบัญชี และการเงินครับ เพราะ มันตรงกับงานที่ทำอยู่เป็น…

สรุปงาน Python/Hadoop for Young Data Scientist

ภาพจากเพจ Data Science Thailand https://www.facebook.com/DataScienceTh/photos/a.876705342372714.1073741831.869639369745978/1145673978809181/?type=1&theater

เมื่อวันเสาร์ อาทิตย์ที่ผ่านมา (20-21 สิงหาคม 2559) ผมได้ไปงานสัมมนา Young Data Scientist ครับ โดยงานนี้เป็น Course เริ่มต้นสำหรับผู้ที่สนใจในเรื่อง Data Science ครับ อ๋องานนี่จัดเป็นครั้งที่ 2 แล้วนะ สำหรับงานนี้จะเน้นในเรื่อง Python กับ Hadoop ครับ สำหรับผมที่เป็นสาย Developer อยู่แล้ว ขอเลือก Python ครับ (ตัว Hadoop เคยลอง Set up เล่นๆใน vm แล้ว แต่ถ้าในงานนี้เป็นการเล่นบน MS Azure Cloud ครับ) มาต่อที่ห้อง Python ดีกว่าครับ ห้องนี้สอนโดย ดร. กานต์ ครับ Python for Young Data Scientists วันแรก 📌 Introduction to Python – รวมคำสั่งพื้นฐานที่จำเป็นสำหรับงานด้าน Data Science ครับ 📌 Library Pandas – สำหรับการจัดการข้อมูลดิบครับ และดูสถิติพื้นฐานครับ ผมมองว่าเป็นการทำ ETL + สถิติครับ 📌 แนะนำ Machine Learning และ Library scikit-learn – เป็น Library สำหรับเรียนรู้ Machine Learning โดยมีอัลกอริทึมสำเร็จรูปมาให้ใช้งานครับ วันที่สอง 📌 แสดงตัวอย่าง Python กับงานจริงครับ ผ่านตัวชุด DataSet ต่างๆ ครับ📌 ลองใช้ Kaggle – เจ้าตัว…