Learning Web Development Guideline

Guideline สำหรับแนะนำน้องๆนักศึกษาฝึกงานนะคร้าบ (จริงๆแอบมีแนะนำวิธีการทำงานและสายงาน Software Engineer ด้วยครับผม)

Ponggun
T. T. Software Solution
12 min readJun 20, 2024

--

ที่มาของเนื้อหา

ทีมมีการเตรียมเนื้อหาเพื่อใช้ในการแบ่งปันน้องๆจาก มหาวิทยาลัยขอนแก่นและสารคามครับ และที่ผ่านมามีโอกาสได้ให้คำแนะนำน้องๆในโครงการ Generation ด้วยเนื้อหาที่คล้ายๆกันครับ

เลยคิดว่าน่าจะเป็นโอกาสที่ดีถ้าได้นำมาปรับแต่งให้เหมาะสมและแชร์สู่สาธารณะครับ เผื่อเป็นประโยชน์กับทุกท่านที่กำลังสนใจเนื้อหาการพัฒนา Website นะครับ

แนวทางที่ทีมใช้สอนน้องๆนั้น เราใช้ Notion เพื่อสร้าง Gantt Chart ให้น้องๆให้เห็น Timeline ของตัวเองครับว่างานที่กำลังจะต้องทำนั้นมีอะไรรออยู่บ้าง

ตัวอย่างของน้องแซคครับ

และในเนื้อหาแต่ละการ์ดก็จะมีรายละเอียดของงานบอกไว้ครับ

เรียนกันสนุกสนานเลยครับ

คร่าวๆก็จะมีประมาณนี้ครับผม เดี๋ยวเราไปเดินทางด้วยกันในเนื้อหาที่ปรับแต่งต่อไปนี้นะคร้าบบบ

ขอแอบแถม Presentation แนะนำการทำงานในบริษัทนะครับ เผื่อท่านใดอยากนำไปลองปรับใช้กับองค์กรครับผม

แอบขอแนะนำตัวเองนิดนึงคร้าบ

สวัสดีผู้อ่านทุกท่านที่สนใจบทความนี้นะครับ ผมชื่อป้องกันครับ ปัจจุบันอยู่ขอนแก่น เปิดบริษัท Software House ชื่อ T. T. Software Solution ครับ เราทำงานกันแบบ Remote Work ขึ้นปีที่ 10 แล้วครับผม ตอนนี้เรามีทีมงาน 42 ท่าน ทำงานกันอยู่ทั่วประเทศไทยเลยครับ

ส่วนตัวผมชอบที่ได้แบ่งปันความรู้ทางด้านการเขียนโปรแกรมครับ เลยเข้าไปอยู่ใน Community ต่างๆดังนี้เผื่อท่านใดสนใจติดตามคร้าบ

ความภาคภูมิใจที่สุดคือ เราเป็นทีมงานคนไทยที่ดูแลเทคโนโลยีทั้งหมดให้กับลูกค้าที่ USA ครับผม งานที่เราทำเป็นระบบฟื้นฟูภัยพิบัติที่เกิดจากพายุจนทำให้ไฟดับครับซึ่งกระทบกับประชาชนหลายล้านคนที่ USA

เราสามารถทำงานกันได้หลากหลาย Timezone และใช้เทคโนโลยีที่ทันสมัย โดยเฉพาะ Microsoft Azure ที่เปิดโอกาสให้เราดูแล Infrasturcture ทั้งหมดที่ USA ได้จากที่บ้านของผมเลยครับ

Big Achievement ในชีวิตของผมเมื่อวันที่ 20 Jun 2024 ครับ คือ ทางลูกค้าแจ้งข่าวดีว่าทางบริษัทของลูกค้าได้ถูกควบรวมกิจการกับบริษัท Urbint ครับ ผมดีใจมากๆที่เราเป็นส่วนนึงในการผลักดันที่ช่วยให้ธุรกิจของลูกค้าเติบโตและมั่นคงขึ้นครับ หลังกจากที่ร่วมพัฒนาระบบร่วมกันมาเป็นระยะเวลา 10 ปี

urbint-acquires-wrm-software-to-expand-utility-risk-offering-into-storm-response

ทำเว็บต้องรู้อะไรบ้าง? เอากันตั้งแต่คอมพิวเตอร์ทำงานยังไง ไปจนถึงการสร้างเว็บเอาขึ้นออนไลน์

ผมขออนุญาตนำเนื้อหาจากบทความที่ผมชอบมากๆจาก spicydog.org มาเป็นหัวข้อของเนื้อหานี้นะครับ

ผมชอบแนวทางการสอนแบบรู้ภาพกว้างๆก่อนว่ามีองค์ประกอบอะไรที่เราควรรู้บ้าง หลังจากนั้นเราค่อยๆเข้าไปลงลึกในตัวงานที่เกี่ยวข้องครับผม ซึ่งเนื้อหาในบทความข้างล่างนี้ผู้เขียนแนะนำแนวทางในการทำความเข้าใจการทำงานพัฒนา Website ได้ดีมากๆๆเลยครับ ผมเลยอยากชวนผู้อ่านมาศึกษาแนวทางนี้ไปด้วยกันครับผม

สรุปเนื้อหาจากบทเรียนข้างต้น

การพัฒนาเว็บไซต์ต้องเริ่มจากความเข้าใจพื้นฐานของคอมพิวเตอร์และการเขียนโปรแกรม การจัดการการสื่อสารระหว่างคอมพิวเตอร์ การจัดการฐานข้อมูล การใช้เครื่องมือในการควบคุมเวอร์ชัน และการ Deployment ที่มีประสิทธิภาพ

เมื่อเราเข้าใจเนื้อหาในบทความนี้แล้ว เราจะเข้าใจคำศัพท์ต่างๆที่จำเป็นสำหรับการพัฒนาเว็บไซต์มากยิ่งขึ้นครับ

The Fundamental Elements of Web Development: HTML, CSS, and JavaScript by Anass Essadikine
  • ทำความเข้าใจพื้นฐานการทำงานของคอมพิวเตอร์
  • ทำความเข้าใจว่าคอมพิวเตอร์สื่อสารกันได้อย่างไร และคำศัพท์ต่างๆที่ควรรู้ (TCP/IP, Internet, NAT, DNS, HTTP, HTTPS, Server/Client)
  • Web Site คืออะไร ต่างจาก Web Development ยังไง
  • Front End Web Development: HTML (โครงสร้าง), CSS (ตกแต่ง), และ JavaScript (การโต้ตอบ), Web Browser แสดงผลเว็บไซต์ตามมาตรฐาน W3C)
  • Back End Web Development: การจัดการข้อมูลและการประมวลผลบน Server
    ใช้ภาษาต่างๆ เช่น NodeJS, Python, Java, PHP ในการพัฒนา
  • Database: ฐานข้อมูลใช้ในการเก็บข้อมูลจำนวนมากและเรียกคืนได้อย่างรวดเร็วระบบฐานข้อมูลส่วนใหญ่ เช่น SQL, NoSQL
  • Version Control (Git) : การใช้ระบบ Version Control เพื่อจัดการและเก็บ Source Code
  • Web Application Deployment: วิธีการ Deployment เช่น Static Website, Dynamic Website, Container as a Service (CaaS), และ Container Orchestration (Kubernetes) การทำ Automation ในกระบวนการ Deployment เพื่อความสะดวกและรวดเร็ว
  • วิวัฒนาการของ Web Front End:การพัฒนา Web Browser และมาตรฐานใหม่ๆ ทำให้เว็บไซต์ซับซ้อนและมีความสามารถมากขึ้น เช่นการใช้ JS Frameworks React, Vue, Angular เพื่อพัฒนาเว็บไซต์
The Fundamental Elements of Web Development: HTML, CSS, and JavaScript by Anass Essadikine

Web development 101

อีก 1 Playlist ที่น่าสนใจมากๆๆๆๆครับ เรียนรู้แนวทางพัฒนากันตั้งแต่ต้นจนจบเลยครับ พอเราเห็นแนวทางแล้วเราก็สามารถเลือกได้ว่าเราสนใจทำตรงจุดไหนแล้วก็ค่อยๆลงมือปฏิบัติจนชำนาญครับผม

https://www.youtube.com/playlist?list=PLwZ0y9k-cYXCSSU3ujBqBWMbtZcW2OGkA

Road to Software Engineer

ขั้นตอนแรกที่ผมอยากจะแนะนำที่สุดคืออยากให้เรารู้เส้นทางสายงาน IT ที่เรากำลังจะเดินทางไปด้วยกันนี้ก่อนครับผมว่ามีอะไรบ้าง เราอยู่ที่จุดไหนของสายงาน และเราอยากเติบโตไปในแนวทางไหนครับ ผมได้ทำ Video สรุปมาให้ตามนี้นะครับ

คำถามที่สำคัญอย่างนึงคือ การเขียนโปรแกรมจะอยู่ที่จุดไหนของขั้นตอนในการพัฒนาระบบ

การแก้ปัญหาด้วยคอมพิวเตอร์มีขั้นตอนสำคัญหลายขั้นตอน:

  1. นิยามปัญหาอย่างชัดเจน เพื่อให้ได้ข้อมูลนำเข้าและข้อมูลออกที่ต้องการครบถ้วน
  2. ตรวจสอบว่าปัญหามีคำตอบหรือไม่
  3. พิจารณาว่าปัญหาสามารถแก้ไขได้ด้วยโปรแกรมคอมพิวเตอร์หรือไม่
  4. ออกแบบอัลกอริทึมสำหรับแก้ปัญหา
  5. เขียนโปรแกรมตามอัลกอริทึมที่ออกแบบไว้

โดยขั้นตอนที่ 1–4 จะใช้เวลาประมาณ 90% ของเวลาทั้งหมด และใช้กระบวนการคิดทางคณิตศาสตร์เป็นหลัก ส่วนการเขียนโปรแกรมใช้เวลาเพียง 10%

ขอบคุณแนวทางการทำงานดีๆจาก https://www.facebook.com/bobby.kantabutra/posts/pfbid08H3bbYxaVnDCqBMWynCYiPAPHNhftzsn7wXwYMb1jSTo66hXutCb8Vf2cLeWr9vBl

นิยามของ Software Engineering

Software Engineering หมายถึง การประยุกต์ใช้หลักการทางวิศวกรรมในการออกแบบ, พัฒนา, ดูแล, ทดสอบ และประเมินผลซอฟต์แวร์คอมพิวเตอร์ เพื่อให้มั่นใจว่าซอฟต์แวร์มีคุณภาพสูง, มีประสิทธิภาพ, ปลอดภัย และตรงตามความต้องการของผู้ใช้

แหล่งที่มา: Wikipedia — Software Engineering

Tasks in large scale projects https://en.wikipedia.org/wiki/Software_engineering

ความแตกต่างระหว่าง Software Engineer และ Programmer

Software Engineer: มุ่งเน้นที่การออกแบบ, การวางแผน และการจัดการโครงการซอฟต์แวร์ ใช้หลักการทางวิศวกรรมเพื่อสร้างซอฟต์แวร์ที่มีคุณภาพสูงและสามารถปรับตัวตามความต้องการที่เปลี่ยนแปลงได้

Programmer: มุ่งเน้นที่การเขียนโค้ดและการพัฒนาโปรแกรมตามที่ได้รับการออกแบบจาก Software Engineer งานของ Programmer อาจมีขอบเขตจำกัดในการพัฒนาเฉพาะฟังก์ชันหรือตามคำสั่งที่ได้รับ

เฉียบ… pinterest

ข้อคิดเพิ่มเติม

ความแตกต่างระหว่าง Software Engineer และ Programmer อาจมีความยืดหยุ่นและซ้อนทับกันในบางสถานการณ์ ขึ้นอยู่กับขอบเขตงานและวัฒนธรรมองค์กร ในบางกรณี บุคคลเดียวอาจทำหน้าที่ทั้งสองอย่างได้

ตัวอย่างตำแหน่งงานนะครับ (จริงๆมีอีกเยอะมากกก)

Software engineering skills coursera.org/software-engineer

ตัวอย่างความรู้ที่จำเป็นกับการทำงานในสายงานนี้ครับ

Software engineering skills coursera.org/software-engineer

ตำแหน่งในสายงานคร่าวๆนะครับ

A Typical Career Path for a Software Engineering

มุกตลกแถมส่งทายบทครับ : )

อ่านบทความนี้จบ ได้งานให้ลูกค้าตามในภาพนี้ฮาเลย เหะๆ belitsoft.com/software-requirements-specification-helps-protect-it-projects-failure

Developer SALARY Report

มีรายงานนึงที่ผมอยากแนะนำมากๆเลยครับเกี่ยวกับ Salary Report ในสายงานนี้ครับ จัดทำโดยบริษัท Talance ซึ่งจัดทำร่วมกับสมาคมโปรแกรมเมอร์ไทยครับ ทำให้เห็น Insight ที่น่าสนใจว่าปัจจุบันนิยมเขียนโปรแกรมด้วยภาษาอะไรกันครับ

Download ที่ได้ที่ talance.tech/developer-salary-report-2023/
Download ที่ได้ที่ talance.tech/developer-salary-report-2023/

แนะนำ Learning Path

เป็นหัวข้อที่อยากแนะนำเว็บไซต์ที่รวมเนื้อหาที่ช่วยให้เราค่อยๆศึกษาความรู้ทีละขั้นๆจนชำนาญครับ ช่วยให้เราเห็นภาพได้ดีขึ้นว่าเรากำลังศึกษาอยู่ในจุดไหน

exercism

มีตัวอย่างการเรียนรู้แบบเป็นลำดับขั้นที่ดีมากๆเลยครับในการที่เราจะปูพื้นฐานความรู้ให้แน่นขึ้นครับ

https://exercism.org/tracks/csharp/concept

Developer Roadmaps

ถ้าอยากเข้าใจภาพกว้างๆครับ มีตำแหน่งที่น่าสนใจหลากหลาย และยังมีเนื้อหาสอนอยู่ข้างในครับ ให้เราค่อยๆไต่ระดับการเรียนรู้ครับ

Developer Roadmaps https://roadmap.sh/

เปลี่ยนสายงานมา IT มาทางนี้จ้า

ผมได้ทำการรวบรวมบทความเจ๋งๆจากหลายๆผู้เชี่ยวชาญในประเทศไทยครับที่แนะนำการทำงานเริ่มต้นกับสายงานต่างๆ เผื่อเป็นประโยชน์นะครับ

BorntoDev

ผมอยากขอแนะนำเรื่องหาเรียนดีๆที่มีทั้งแบบฟรีและเสียเงินจาก BorntoDev ครับ มีเนื้อหาการเรียนี่หลากหลาย น่าติดตามมากๆๆ

BorntoDev School school.borntodev.com

freecodecamp.org

freecodecamp.org/learn เป็นอีก 1 ช่องทางการเรียนรู้ที่มาในรูปแบบ Learning Path ค่อยๆเรียนค่อยๆต่อยอดครับดีงามมากๆ ขอบคุณคุณ Poom Yimyuean ที่แนะนำมากๆนะครับ เนื้อหาเป็นภาษาอังกฤษนะคร้าบ

ภาษาอังกฤษ

การมีความรู้และทักษะภาษาอังกฤษที่ดีเป็นประโยชน์อย่างมากในการเรียนและการทำงานในสายงานเขียนโปรแกรมครับ ผมเลยอยากแนะนำ Duolingo ครับ ซึ่งเข้าเรียนได้ฟรีทั้งบนเว็บไซต์และมือถือครับ อยากให้เราลองมาลองหัดเรียนแบบแบ่งเวลาวันละ 10 นาที ค่อยๆเรียนทีละนิดๆ วันนี้เราจะชำนาญขึ้นครับผม

มีโจทย์มาถามเราทั้งในรูปแบบภาพและเสียงให้เราเรียน

ทำไมภาษาอังกฤษถึงสำคัญกับการเขียนโปรแกรม

  1. ภาษาโปรแกรมและเอกสาร: ภาษาอังกฤษเป็นภาษาหลักที่ใช้ในการพัฒนาและเขียนโปรแกรม เอกสารต่าง ๆ เช่น API documentation, Manuals, และ Tutorials ส่วนใหญ่เขียนเป็นภาษาอังกฤษ
  2. เครื่องมือและซอฟต์แวร์: ส่วนใหญ่ของเครื่องมือและซอฟต์แวร์ที่ใช้ในการเขียนโปรแกรมมีคำสั่งและการตั้งค่าที่เป็นภาษาอังกฤษ การเข้าใจและใช้งานเครื่องมือเหล่านี้ได้อย่างมีประสิทธิภาพจำเป็นต้องมีความรู้ภาษาอังกฤษ
  3. ชุมชนนักพัฒนา: ชุมชนออนไลน์เช่น Stack Overflow, GitHub, และฟอรั่มต่าง ๆ มักใช้ภาษาอังกฤษในการสื่อสาร การถาม-ตอบปัญหา และการแลกเปลี่ยนความรู้
  4. การเรียนรู้และพัฒนาตนเอง: คอร์สออนไลน์, บทเรียน, และวิดีโอการสอนต่าง ๆ มักเป็นภาษาอังกฤษ การเข้าถึงทรัพยากรเหล่านี้ช่วยให้การเรียนรู้และพัฒนาทักษะเป็นไปได้ง่ายและรวดเร็วขึ้น
  5. มาตรฐานและไลบรารี: ภาษาโปรแกรมและไลบรารีต่าง ๆ มักมีชื่อฟังก์ชันและตัวแปรที่เป็นภาษาอังกฤษ การเข้าใจความหมายของคำเหล่านี้ช่วยให้การเขียนโค้ดมีความถูกต้องและมีประสิทธิภาพ
  6. การทำงานในระดับนานาชาติ: บริษัทเทคโนโลยีและซอฟต์แวร์ขนาดใหญ่ทั่วโลกใช้ภาษาอังกฤษเป็นภาษาหลักในการสื่อสาร การมีทักษะภาษาอังกฤษช่วยให้สามารถทำงานและสื่อสารกับทีมงานต่างชาติได้ดี

ฝึกพิมพ์สัมผัสกันครับ

การฝึกพิมพ์สัมผัสสำคัญกับการเขียนโปรแกรมเพราะช่วยเพิ่มความเร็ว ลดข้อผิดพลาด เพิ่มความคล่องตัวในการเขียนโค้ด ประหยัดเวลา และปรับปรุงการทำงานร่วมกันในทีมได้อย่างมีประสิทธิภาพ ผมเลยอยากแนะนำบทเรียนตามนี้ครับ

Problem Solving with Logical Thinking

เป็นหัวข้อที่สำคัญและมีความเกี่ยวข้องอย่างยิ่งกับการทำงานในสายงานโปรแกรมเมอร์เป็นอย่างมากเพราะการแก้ปัญหาอย่างมีเหตุผลและการคิดเชิงตรรกะเป็นทักษะพื้นฐานที่โปรแกรมเมอร์ทุกคนจำเป็นต้องมี เนื่องจากการเขียนโปรแกรมและการพัฒนาซอฟต์แวร์ต้องการความสามารถในการแก้ไขปัญหาและการตัดสินใจอย่างมีเหตุผลในทุกขั้นตอน

ผมจึงอยากแนะนำเนื้อหาดีๆทั้งในประเทศไทยและต่างประเทศนะครับ

https://borntodev.com/devlab/login
C++ Data Structure & Algorithm (C++ DSA)

เตรียมเครื่องมือของเราให้พร้อมเรียนรู้การพัฒนาเว็บไซต์สมัยใหม่

การเตรียมเครื่องมือในคอมพิวเตอร์ของเราก็เป็นอีก 1 สิ่งที่จำเป็นมากๆในการฝึกเรียนรู้แนวทางการพัฒนาเว็บไซต์หลังจากที่เราได้เรียนเนื้อหาต่างๆนะครับ

ผมเลยอยากชวนมาลองใช้

  • VS Code ที่เป็น Editor ยอดนิยม
  • Commandline Tool รุ่นใหม่บน Windows 11
  • โลกของ Linux และการใช้งานผ่าน WSL2
  • สุดท้ายคือ Welcome to Container Technology ครับ เป็นอีกสิ่งนึงที่เราจำเป็นต้องรู้มากๆในยุคนี้เพื่อให้เราสามารถติดตั้งใช้งานระบบได้ดีและดูแลรักษาสะดวก
มาลองติดตั้งเครื่องมือไปด้วยกันนะครับ

ตัวอย่างเนื้อหาใน Video นะครับ

ทดลอง Remote ไปใช้ WSL2 ครับ
เปรียบเทียบให้เห็นการจัดการกับ Files ใน Windows / WSL2
Docker Compose ฮีโร่ของเราาา

Front End Web Development

HTML

HTML (HyperText Markup Language) คือ ภาษามาร์กอัปที่ใช้สำหรับสร้างและจัดโครงสร้างของหน้าเว็บเพจ โดยใช้แท็กเพื่อกำหนดส่วนต่างๆ ของเนื้อหา เช่น หัวเรื่อง ย่อหน้า ลิงก์ และรูปภาพ

CSS

CSS (Cascading Style Sheets) คือ ภาษาที่ใช้สำหรับกำหนดรูปแบบการแสดงผลและการจัดรูปแบบของเอกสาร HTML เช่น สี ขนาดตัวอักษร การจัดตำแหน่ง และการจัดวางองค์ประกอบต่าง ๆ บนหน้าเว็บ เพื่อให้มีลักษณะและการนำเสนอที่สวยงามและสอดคล้องกัน

Tailwind CSS

Tailwind CSS คือ เฟรมเวิร์ก CSS แบบ utility-first ที่ให้คุณใช้คลาสที่กำหนดไว้ล่วงหน้าเพื่อตกแต่งองค์ประกอบใน HTML โดยตรง ทำให้ง่ายต่อการสร้างและปรับแต่งการออกแบบที่มีความยืดหยุ่นและสอดคล้องกัน ลดความจำเป็นในการเขียน CSS เองและช่วยให้การพัฒนาเว็บเร็วขึ้น

Javascript

JavaScript คือ ภาษาการเขียนโปรแกรมที่ใช้สำหรับพัฒนาเว็บเพจให้มีความโต้ตอบกับผู้ใช้ เช่น การตอบสนองต่อการคลิกของผู้ใช้ การเปลี่ยนแปลงเนื้อหาแบบไดนามิก และการตรวจสอบข้อมูลแบบฟอร์ม

https://www.youtube.com/playlist?list=PL7s_gBjgg9AOr81FHZzSflmQSUHREEwV8

Typescript

TypeScript คือ ภาษาการเขียนโปรแกรมที่เป็นการขยายความสามารถของ JavaScript โดยเพิ่มการตรวจสอบชนิดข้อมูล (type-checking) และคุณสมบัติอื่น ๆ ที่ช่วยในการพัฒนาโค้ดให้มีความมั่นคงและจัดการได้ง่ายขึ้น ถูกออกแบบมาเพื่อให้การพัฒนาโปรแกรมขนาดใหญ่มีความเป็นระเบียบและลดข้อผิดพลาดในโค้ด

React

React คือ ไลบรารี JavaScript ที่ใช้สำหรับสร้างส่วนต่อประสานผู้ใช้ (UI) โดยเน้นที่การพัฒนาคอมโพเนนต์ ทำให้การพัฒนาเว็บแอปพลิเคชันมีความยืดหยุ่นและสามารถจัดการกับการเปลี่ยนแปลงของข้อมูลได้อย่างมีประสิทธิภาพ React ถูกพัฒนาโดย Facebook และได้รับความนิยมอย่างมากในวงการพัฒนาเว็บ.

Next.js

Next.js คือ เฟรมเวิร์กสำหรับการพัฒนาเว็บแอปพลิเคชันด้วย React ซึ่งเพิ่มความสามารถให้กับ React โดยรองรับการเรนเดอร์ทั้งฝั่งเซิร์ฟเวอร์ (Server-Side Rendering) และการสร้างหน้าเว็บแบบ Static (Static Site Generation) นอกจากนี้ยังมีฟีเจอร์อื่นๆ เช่น การจัดการเส้นทาง (Routing) อัตโนมัติ, การโหลดข้อมูลล่วงหน้า (Prefetching), และการสนับสนุน TypeScript ทำให้นักพัฒนาสามารถสร้างเว็บแอปพลิเคชันที่มีประสิทธิภาพและโหลดเร็วได้ง่ายขึ้น

Back End Web Development

RESTful Web API

RESTful Web API (Application Programming Interface) คือรูปแบบหนึ่งของ API ที่ใช้สถาปัตยกรรม REST (Representational State Transfer) สำหรับการแลกเปลี่ยนข้อมูลระหว่างเครื่องคอมพิวเตอร์ในเครือข่าย ซึ่ง RESTful Web API เกี่ยวข้องกับ Backend อย่างมาก เนื่องจาก Backend คือส่วนที่ทำหน้าที่เป็นเซิร์ฟเวอร์ที่ให้บริการข้อมูลและการประมวลผลต่างๆ โดย RESTful Web API เป็นวิธีการที่ใช้กันอย่างแพร่หลายในการออกแบบและพัฒนา Backend เพื่อให้สามารถสื่อสารกับไคลเอ็นต์ (Client) ได้อย่างมีประสิทธิภาพ โดยมีความสัมพันธ์กันดังนี้:

มีบทความที่สรุปดีมากๆๆๆอยากมาแนะนำครับผม

https://blog.2my.xyz/2021/01/24/guidelines-best-practices-for-design-restful-api/

การทำงานของ RESTful Web API ใน Backend

  1. จัดการทรัพยากร (Resources Management): Backend จะเก็บข้อมูลในฐานข้อมูลหรือที่เก็บข้อมูลอื่นๆ โดย RESTful Web API จะเป็นตัวกลางในการรับคำขอจากไคลเอ็นต์และจัดการกับทรัพยากรเหล่านั้น เช่น การเพิ่มข้อมูลใหม่ การอัปเดตข้อมูล การลบข้อมูล และการดึงข้อมูลออกมา
  2. การรับและตอบสนองคำขอ (Request and Response Handling): เมื่อไคลเอ็นต์ส่งคำขอ HTTP มายัง Backend ผ่าน RESTful API, Backend จะทำการประมวลผลคำขอนั้นและส่งการตอบสนอง (response) กลับไปยังไคลเอ็นต์ในรูปแบบ JSON หรือ XML โดยขึ้นอยู่กับการตั้งค่าที่กำหนดไว้
  3. Business Logic: Backend จะรวมตรรกะธุรกิจต่างๆ เช่น การคำนวณ การตรวจสอบเงื่อนไขกับระบบภายนอก ฯลฯ ไว้ใน RESTful API เพื่อให้แน่ใจว่าการดำเนินการกับทรัพยากรเป็นไปตามกฎเกณฑ์และข้อกำหนดของแอปพลิเคชัน
  4. การรักษาความปลอดภัย (Security): RESTful API ใน Backend จะต้องมีการจัดการความปลอดภัย เช่น การยืนยันตัวตน (Authentication) การอนุญาต (Authorization) การเข้ารหัสข้อมูล (Data Encryption) และการป้องกันการโจมตีต่างๆ เช่น SQL Injection, XSS, CSRF เป็นต้น
  5. การสเกลระบบ (Scalability): Backend ที่ใช้ RESTful API สามารถออกแบบให้รองรับการสเกลแนวนอน (Horizontal Scaling) ได้ง่าย โดยการเพิ่มจำนวนเซิร์ฟเวอร์ที่ให้บริการ API มากขึ้นเพื่อรองรับจำนวนคำขอที่เพิ่มขึ้น

ตัวอย่าง RESTful Web API

สมมติว่าคุณมีระบบจัดการหนังสือ (Book Management System) โดยมี API ที่ใช้จัดการหนังสือดังนี้:

  • GET /books: รับรายการหนังสือทั้งหมด
  • GET /books/{id}: รับรายละเอียดหนังสือเฉพาะโดย ID
  • POST /books: เพิ่มหนังสือใหม่
  • PUT /books/{id}: อัปเดตข้อมูลหนังสือเฉพาะโดย ID
  • DELETE /books/{id}: ลบหนังสือเฉพาะโดย ID

ตัวอย่างการเรียกใช้ API:

  • การขอรายการหนังสือทั้งหมด: GET /books
  • การขอรายละเอียดหนังสือ ID 1: GET /books/1
  • การเพิ่มหนังสือใหม่: POST /books พร้อมข้อมูลหนังสือในบอดี้ของคำขอ
  • การอัปเดตหนังสือ ID 1: PUT /books/1 พร้อมข้อมูลที่ต้องการอัปเดตในบอดี้ของคำขอ
  • การลบหนังสือ ID 1: DELETE /books/1

Node.js

Node.js คือ แพลตฟอร์มรันไทม์ที่สร้างขึ้นบน JavaScript Engine ของ Chrome (V8 Engine) ช่วยให้นักพัฒนาสามารถรันโค้ด JavaScript บนฝั่งเซิร์ฟเวอร์ได้ เพื่อสร้างแอปพลิเคชันที่มีประสิทธิภาพและสามารถจัดการการเชื่อมต่อพร้อมกันจำนวนมากได้อย่างดี

ASP.NET

ASP.NET คือ เฟรมเวิร์กสำหรับการพัฒนาเว็บแอปพลิเคชันของ Microsoft ซึ่งทำงานบน .NET Framework หรือ .NET Core สามารถใช้ภาษาโปรแกรม C# หรือ VB.NET ในการเขียนโค้ดได้ ASP.NET ช่วยให้นักพัฒนาสามารถสร้างเว็บแอปพลิเคชัน, เว็บ API, และบริการเว็บต่างๆ ได้อย่างมีประสิทธิภาพ มีเครื่องมือและไลบรารีที่ช่วยในการพัฒนาและการปรับปรุงประสิทธิภาพของแอปพลิเคชัน

เรียนพื้นฐานภาษา C#

C# Fundamentals
Welcome to TDD, The word of Software Testing

หลังจากนั้นมาทำลองหัดเขียน ASP.NET Web API กันนะครับ

หลังจากนั้นมาลองหัดเขียน Clean Architecture กันครับ

Bonus Track

แนะนำ Beginner Playlist สำหรับท่านใดที่สนใจพัฒนาโปรแกรมด้วย .NET Technology จาก Microsoft นะครับ เรียนกันช่วงปิดปีใหม่สะดวกเลย เนื้อหาครอบคลุมทั้ง AI, IoT, Cloud, Desktop App, Mobile App, Web App

Awesome .NET

Database

Database คือ ระบบที่ใช้สำหรับจัดเก็บ, จัดการ, และเรียกค้นข้อมูลอย่างมีประสิทธิภาพ โดยข้อมูลจะถูกจัดเก็บในรูปแบบที่เป็นระเบียบ ทำให้สามารถเข้าถึงและแก้ไขได้ง่าย ระบบจัดการฐานข้อมูล (Database Management System: DBMS) เช่น MySQL, PostgreSQL, Oracle, และ MongoDB ช่วยให้ผู้ใช้สามารถดำเนินการต่างๆ กับข้อมูลได้อย่างปลอดภัยและมีประสิทธิภาพ

Microsoft SQL Server

Microsoft SQL Server คือ ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ที่พัฒนาโดย Microsoft ใช้ในการจัดเก็บและจัดการข้อมูล มีฟีเจอร์ครบครันสำหรับการพัฒนาและบริหารจัดการฐานข้อมูล เช่น การทำสำเนาข้อมูล, การจัดการธุรกรรม, ความปลอดภัยสูง, การวิเคราะห์ข้อมูล, และการรายงาน (reporting) Microsoft SQL Server มักถูกใช้ในองค์กรต่างๆ เพื่อสนับสนุนแอปพลิเคชันธุรกิจที่ต้องการความน่าเชื่อถือและประสิทธิภาพสูง เสียค่า License น้าาาา

สอน Microsoft SQL Server https://youtube.com/playlist?list=PLoTScYm9O0GH8gYuxpp-jqu5Blc7KbQVn&si=AG_RyogECn5i5zJ8

PostgreSQL

PostgreSQL คือ ระบบจัดการฐานข้อมูลเชิงสัมพันธ์แบบโอเพนซอร์สที่มีความสามารถสูง (RDBMS) ซึ่งรองรับการทำงานทั้งในรูปแบบ SQL แบบดั้งเดิมและการทำงานกับข้อมูลเชิงวัตถุ มีความสามารถในการจัดการกับธุรกรรมที่ซับซ้อน, การค้นหาข้อมูลที่มีประสิทธิภาพ, การทำซ้ำข้อมูล, และการขยายตัวแบบแนวนอน (horizontal scaling) PostgreSQL ถูกออกแบบมาเพื่อความเสถียรและความถูกต้องของข้อมูลในระดับสูง ใช้งานได้ฟรีครับ ได้รับความนิยมในปัจจุบันเป็นอย่างมาก

สอน PostgreSQL https://youtube.com/playlist?list=PLoTScYm9O0GGi_NqmIu43B-PsxA0wtnyH&si=IdAhMANSXuNwZaOm
สอน PostgreSQL ขั้นสูง https://youtube.com/playlist?list=PLoTScYm9O0GGjmV5Azlaug5gIJMaIbEdj&si=E3t3EJUMXbgKK-eT

Source Code Control with Git

คือ กระบวนการจัดการและควบคุมการเปลี่ยนแปลงของโค้ดโปรแกรม โดย Git เป็นระบบควบคุมเวอร์ชันแบบกระจาย (Distributed Version Control System) ที่ช่วยให้นักพัฒนาสามารถติดตามการเปลี่ยนแปลงของโค้ด, ทำงานร่วมกันอย่างมีประสิทธิภาพ, และสามารถย้อนกลับไปยังเวอร์ชันก่อนหน้าได้ Git ยังสนับสนุน Branching ซึ่งทำให้การพัฒนาโค้ดใหม่หรือการแก้ไขบั๊กสามารถทำได้อย่างแยกจากกันและรวมกลับมาได้อย่างสะดวก.

ผมอยากขอแนะนำเนื้อหาที่น้องยูโร น้องในทีมของบริษัท TT Software เตรียมมาเพื่อให้น้องๆนักศึกษาฝึกงานได้เรียนรู้แนวทางการใช้ Git บน GitHub ครับ

https://learning-ttss.vercel.app/git-basics/what-is-version-control.html
แถมเนื้อหาดีๆจาก BorntoDev อีกแล้วครับท่านนนน

Web Deployment

Web Deployment คือ กระบวนการนำเว็บแอปพลิเคชันจากเครื่องพัฒนาไปใช้งานบนเซิร์ฟเวอร์หรือบริการคลาวด์ เพื่อให้ผู้ใช้สามารถเข้าถึงได้ผ่านอินเทอร์เน็ต ปัจจุบันมีหลายวิธีในการทำ Web Deployment ดังนี้:

FTP/SFTP Deployment

ใช้โปรโตคอล FTP หรือ SFTP ในการอัปโหลดไฟล์จากเครื่องพัฒนาไปยังเซิร์ฟเวอร์โดยตรงเหมาะสำหรับการอัปโหลดไฟล์ที่มีการเปลี่ยนแปลงไม่มาก

วาง Code ทับของเพื่อนที ล้องห้ายยย T__T

Git Deployment

ใช้ Git ในการจัดการเวอร์ชันของโค้ด และดึงโค้ดจาก Git repository ไปยังเซิร์ฟเวอร์โดยตรง สามารถใช้บริการเช่น GitHub Actions, GitLab CI/CD หรือ Bitbucket Pipelines ในการจัดการกระบวนการ deploy อัตโนมัติ

Continuous Integration/Continuous Deployment (CI/CD)

ใช้เครื่องมือ CI/CD เช่น Jenkins, CircleCI, Travis CI เพื่อทำการ build, test และ deploy โค้ดโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงใน repository เหมาะสำหรับการพัฒนาและ deploy อย่างต่อเนื่อง

https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment

Cloud Services Deployment

ใช้บริการคลาวด์เช่น AWS, Google Cloud Platform, Microsoft Azure ในการ deploy แอปพลิเคชัน บริการเช่น AWS Elastic Beanstalk, Google App Engine, Azure App Service ช่วยให้การ deploy เป็นเรื่องง่ายและรวดเร็ว

Containerization Deployment

ใช้ Docker ในการสร้าง container สำหรับแอปพลิเคชัน และใช้ Kubernetes หรือ Docker Swarm ในการจัดการการ deploy container เหล่านั้น ช่วยในการจัดการสภาพแวดล้อมและการขยายตัวของแอปพลิเคชัน

https://medium.com/platformer-blog/practical-guide-on-writing-a-dockerfile-for-your-application-89376f88b3b5https://medium.com/platformer-blog/practical-guide-on-writing-a-dockerfile-for-your-application-89376f88b3b5

Static Site Hosting

สำหรับเว็บแอปพลิเคชันแบบ Static สามารถใช้บริการเช่น GitHub Pages, Netlify, Vercel ในการ deploy ได้เหมาะสำหรับเว็บไซต์ที่ไม่ต้องการ backend หรือมี backend น้อย

https://www.mitrais.com/news-updates/how-to-deploy-next-js-with-vercel/

Introduction to Cloud Computing

Cloud Computing คือ การให้บริการคอมพิวเตอร์ผ่านทางอินเทอร์เน็ต ซึ่งรวมถึงเซิร์ฟเวอร์, การจัดเก็บข้อมูล, ฐานข้อมูล, เน็ตเวิร์ก, ซอฟต์แวร์ และอื่นๆ ที่สามารถเข้าถึงและจัดการได้จากระยะไกล

ข้อดีในมุมธุรกิจ:

  1. ลดค่าใช้จ่าย: ลดต้นทุนการลงทุนในฮาร์ดแวร์และซอฟต์แวร์ รวมถึงค่าบำรุงรักษา
  2. ปรับขยายได้ง่าย: สามารถปรับเพิ่มหรือลดทรัพยากรได้ตามความต้องการของธุรกิจ
  3. ความยืดหยุ่น: เข้าถึงและจัดการข้อมูลได้ทุกที่ทุกเวลา ทำให้การทำงานร่วมกันสะดวกขึ้น
  4. ประสิทธิภาพ: เพิ่มประสิทธิภาพการทำงานด้วยการเข้าถึงเทคโนโลยีใหม่ๆ และระบบอัตโนมัติ
  5. ความปลอดภัย: มีมาตรการความปลอดภัยและการสำรองข้อมูลที่ทันสมัย ช่วยปกป้องข้อมูลสำคัญของธุรกิจ

ผมทำสรุปเนื้อหาเรื่อง Cloud Computing อย่างละเอียดไว้ที่นี้นะครับ เผื่อเป็นประโยชน์ครับผม

Welcome to Microsoft Azure

หลังจากที่เราได้เรียนรู้เรื่องของ Cloud Computing แล้ว ทีนี้เราก็ต้องมาเลือก Cloud Provider กันสักเจ้านะครับ ซึ่งผมถนัด Microsoft Azure เลยสรุปเนื้อหามาให้ดังนี้ครับผม

Microsoft Azure คือ แพลตฟอร์มคลาวด์คอมพิวติ้งของ Microsoft ที่ให้บริการต่างๆ สำหรับการพัฒนา, ทดสอบ, ปรับใช้ และจัดการแอปพลิเคชันและบริการ ผ่านศูนย์ข้อมูลทั่วโลก

Azure Fundamental

เรียนรู้พื้นฐานคลาวด์คอมพิวติ้ง, การจัดการบัญชีและบริการ Azure, การประมวลผล, การจัดเก็บข้อมูล, เครือข่าย, ความปลอดภัย, การคาดการณ์และปรับแต่งค่าใช้จ่าย เพื่อเพิ่มประสิทธิภาพและความปลอดภัยในองค์กร.

ตัวอย่างการนำ Azure ไปสร้าง App เร็วขึ้นด้วย Cloud Native

Use Cases อื่นๆบน Microsoft Azure

https://medium.com/t-t-software-solution/tagged/azure

มุกส่งท้าย อิอิ

พลังอันยิ่งใหญ่ มาพร้อมค่าใช้จ่ายอันใหญ่ยิ่งครับ ตรวจสอบค่าใช้จ่ายกันก่อนเลือกบริการด้วยนะคร้าบ ด้วยรักและห่วงใย จากคนที่เคยบาดเจ็บมาก่อน T__T

SSH คืออีหยังน้อ

SSH (Secure Shell) เป็นโปรโตคอลที่ใช้สำหรับการสื่อสารระหว่างเครื่องคอมพิวเตอร์ผ่านเครือข่ายโดยมีการเข้ารหัสเพื่อเพิ่มความปลอดภัย ซึ่งเราจำเป็นต้องมี 2 สิ่งข้างล่างนี้ในการเข้ารหัสนะครับ

The public key เราจะทำการสร้างจากเครื่องเราและนำไปวางยัง Server ปลายทาง เพื่อใช้ในการทำ public-key cryptography

The private key คือการพิสูจน์ตัวตนว่าเรามีสิทธิที่จะเข้าถึงเครื่อง Server จริงๆ เมื่อทำการต่อด้วย SSH connection เราจะสร้างมาพร้อมกับตอนที่สร้าง public key แต่จะต่างกันตรงที่ public จะวางที่ server ปลายทาง แต่ private key เราจะเก็บไว้ในเครื่องของเราเท่านั้น แชร์ให้คนนอกไม่ได้น่ะครับ

ผมแนะนำให้ลองศึกษาบทความข้างล่างนี้นะครับ พาทำความเข้าใจและลงมือทำจนสามารถ SSH เข้าไปใน Server ได้คร้าบ

Playlist ดีๆส่งท้าย

สอนทำเว็บไซต์ด้วย Node.js / Express / MongoDB สำหรับมือใหม่

https://www.youtube.com/playlist?list=PLJIYqUDFnH-EQoFajb4b6u34q1w7t_y5N

Introduction to Remote Work

หลังจากที่เราพอมองเห็นภาพรวมของสายงานนี้แล้ว ผมอยากขอพาผู้อ่านเข้ามาสู่โลกของการทำงานอีกอย่างนึงครับ นั้นคือเรื่องของการทำงานจากที่บ้าน หรือที่เรียกว่า Work From Home / Remote Work ซึ่งเป็นอีกแนวทางที่ทำให้เรามีตัวเลือกในการทำงานที่มากขึ้นครับ ปัจจุบันเทคโนโลยีหลายๆอันเข้ามาช่วยส่งเสริมการทำงานแบบนี้ และหลายๆบริษัททั้งในประเทศไทยและต่างประเทศก็เปิดรับการทำงานแบบนี้มากขึ้นครับตั้งแต่ช่วง COVID ที่ผ่านมา

เนื่องจากบริษัทผมนั้นเราทำงานกันแบบ Remote Work ครับเลยอยากมาแบ่งปันแนวทางการบริหารบริษัทที่ทำกันมาขึ้นปีที่ 10 แล้วนะครับ เพื่อให้ทีมสามารถทำงานร่วมกันได้ดีสามารถดูได้จาก Video นี้เลยครับผม

เทคนิคเพิ่มประสิทธิภาพการทำงาน ด้วย Second Brain และ Notion

Notion เป็นเครื่องมือที่มีความสามารถหลากหลายในการจัดการข้อมูลส่วนบุคคล ทำให้เหมาะสมกับการสร้าง Second Brain โดยมีฟีเจอร์หลักๆ ดังนี้:

  • Pages: หน้าสำหรับเก็บบันทึกต่างๆ ที่สามารถจัดเรียงเป็นลำดับชั้นได้
  • Databases: ฐานข้อมูลที่ช่วยในการจัดเก็บข้อมูลรูปแบบต่างๆ เช่น ตาราง แกลเลอรี่ และรายการ
  • Templates: แม่แบบที่ช่วยในการสร้างบันทึกหรือหน้าที่มีรูปแบบเดียวกันอย่างรวดเร็ว
  • Linked Databases: การเชื่อมต่อฐานข้อมูลที่มีอยู่ในหน้าอื่นๆ เพื่อแสดงข้อมูลที่ต้องการ
https://www.notion.so/

Second Brain เป็นระบบการจัดเก็บข้อมูลส่วนบุคคลที่จะช่วยให้คุณเก็บบันทึกความรู้ ไอเดีย และข้อมูลสำคัญได้อย่างเป็นระบบและมีประสิทธิภาพ โดยเน้นการสร้างสภาพแวดล้อมที่ทำให้สามารถดึงข้อมูลกลับมาใช้ได้ง่ายและเร็ว โดยมีการนำหลักการไปใช้ใน Notion ดังนี้

  • Capture: ใช้ Notion ในการบันทึกไอเดียและข้อมูลสำคัญต่างๆ ลงในหน้าและฐานข้อมูล
  • Organize: จัดเรียงข้อมูลด้วยการใช้แท็ก หมวดหมู่ และการเชื่อมโยงฐานข้อมูล
  • Distill: สร้างหน้าสรุปหรือแม่แบบเพื่อสรุปข้อมูลสำคัญ
  • Express: ใช้ข้อมูลใน Notion ในการสร้างผลงานหรือการนำเสนอ

แนะนำให้ติดตามเนื้อหาจากคุณทอย DataRockie นะครับ สุดจัดมากๆ

อีก 1 บทความจากคุณ Jerome Tana ครับอธิบายดีมากๆเลย

Thailand Tech Community

สุดท้ายนี้ในฐานะกรรมการสมาคมโปรแกรมเมอร์ไทยครับ ผมอยากส่งเสริมให้เกิดการรวมตัวเพื่อแลกเปลี่ยนความรู้กันเยอะๆ จึงอยากเชิญชวนทุกท่านเข้ามาร่วมใน Community กันนะครับ

สมาคมโปรแกรมเมอร์ไทย
กลุ่มสมาคมโปรแกรมเมอร์ไทย
กลุ่ม Jobs for Thai Programmers

เรามี Learning Path ที่อยู่ในสถานะ Beta ขึ้นมาเพื่อชวนคนในวงการ IT มาร่วมแบ่งปันความรู้ให้กับประเทศของเราแบบที่ตามศึกษาได้ง่ายๆแบบฟรีๆนะครับ ท่านใดสนใจอยากเรียนเชิญมาศึกษาและร่วม Contribute กันครับผม

https://roadmap.thaiprogrammer.org/

รวม Tech Community ในประเทศไทย

Soft Skills

ทักษะในการทำงานแบ่งได้หลักๆอยู่สองประเภท คือ Hard Skill กับ Soft Skill

Hard Skills คือ Skill ตาม Job Description ของเราที่ต้องใช้เพื่อทำงานที่ได้รับมอบหมาย

แต่เอาเข้าจริงเรายังต้องการ Skill ที่มากกว่านั้นเพื่อทำให้งานเสร็จได้ เช่นการสื่อสารทั้งกับเพื่อนร่วมงานในทีม / ทีมอื่นๆ, การทำความเข้าใจ เจรจาต่อรองในเนื้อหาของงานที่ได้รับมอบหมาย

Soft Skills จะช่วยทำให้เรามีความสุขกับการทำงานมากขึ้นครับ เพราะช่วยเราปรับมุมมอง ปรับวิธีคิดของเราให้สามารถจัดการกับสถานะการต่างๆได้อย่างเข้าใจแท้จริงและมีประสิทธิภาพ รวมถึงยังช่วยให้เรามองโลกในแง่บวกอีกด้วย เพราะมองอะไรเป็นเหตุเป็นผลมากขึ้น

ในบทความนี้จึงอยากรวบรวมเนื้อหาที่เกี่ยวข้องกับเรื่องของ Soft Skills เพื่อให้ง่ายต่อการเรียนรู้เบื้องต้นกันนะครับ โดยเป็นเนื้อหาที่ผมเคยอ่านผ่านตามาทั้งหมดแล้วและมองเห็นว่าง่ายต่อการเรียนรู้ เห็นภาพที่เกิดขึ้นจริงนะครับ

ศาสตร์แห่งการตั้งคำถาม

การตั้งคำถามสำคัญกับการเขียนโปรแกรมเนื่องจากหลายเหตุผล:

  1. ความชัดเจนในปัญหา: การตั้งคำถามที่ถูกต้องช่วยให้เราเข้าใจปัญหาอย่างชัดเจน ซึ่งเป็นขั้นตอนแรกที่สำคัญที่สุดในการหาทางแก้ไขปัญหา ถ้าเราเข้าใจปัญหาอย่างถูกต้อง โอกาสที่จะหาคำตอบที่ถูกต้องก็สูงขึ้น
  2. การหาคำตอบที่ถูกต้อง: การตั้งคำถามดีช่วยให้เราได้คำตอบที่มีประโยชน์ การถามที่ผิดหรือไม่มีชั้นเชิงอาจทำให้เราได้คำตอบที่ไม่ช่วยอะไรเลย ดังนั้นคำถามที่ดีมีผลต่อการได้คำตอบที่มีคุณภาพ
  3. การค้นคว้าและการเรียนรู้: การตั้งคำถามช่วยในการค้นหาคำตอบจากแหล่งข้อมูลต่างๆ ไม่ว่าจะเป็นการถามผู้เชี่ยวชาญหรือการค้นหาในอินเทอร์เน็ต การตั้งคำถามที่ชัดเจนและถูกต้องช่วยให้การค้นคว้ามีประสิทธิภาพมากขึ้น
  4. การพัฒนาความคิดและการแก้ปัญหา: การตั้งคำถามที่ดีไม่เพียงแค่ช่วยหาคำตอบ แต่มันยังช่วยพัฒนาการคิดและการแก้ปัญหา การถามคำถามที่มีคุณภาพจะช่วยให้เราปรับปรุงวิธีคิดและพัฒนาทักษะการแก้ปัญหา
  5. การพัฒนาอย่างต่อเนื่อง: คนที่ตั้งคำถามเก่งและถูกต้องมีโอกาสที่จะพัฒนาและก้าวหน้าได้ไกลในอนาคต เนื่องจากพวกเขามีพื้นฐานของการไขว่คว้าหาความรู้อย่างไม่สิ้นสุด

ดังนั้น การตั้งคำถามเป็นทักษะที่สำคัญมากสำหรับการเขียนโปรแกรมและการพัฒนาตนเองในทุกๆ ด้านครับ ผมจึงอยากแนะนำวิธีการตั้งคำถามที่ดี จากคุณหนูเนยครับ

บทความ: หลักการและวิธีการเรียนรู้ให้ “เข้าใจ”

ผู้เขียน: คุณ Chris

บทที่ 1 วิธีการเรียนรู้ให้เข้าใจมากขึ้น

วิธีการเรียนรู้ให้เข้าใจนั้นประกอบด้วย

  1. การเล่นกับข้อมูลที่ได้รับ เช่น หากเรียนรู้วิธีทำหมูทอดกระเทียมที่ต้องใส่ซีอิ๊วขาวสองช้อน
  2. การเล่นกับข้อมูลก็คือการลองเปลี่ยนส่วนผสม เช่น ลองใส่ซีอิ๊วสามช้อน ใช้เกลือแทนซีอิ๊ว หรือลองใช้หมูส่วนต่างๆ ซึ่งการทดลองแบบนี้จะช่วยสร้างความเข้าใจลึกซึ้งในสิ่งที่เรียนรู้

หลักการสำคัญที่ผู้เขียนเน้นคือ การทำความเข้าใจไม่ได้เกิดจากการรับข้อมูลภายนอกเพียงอย่างเดียว แต่ต้องมีการสร้างโลกภายในผ่านการทดลองและการเล่นกับข้อมูล ซึ่งจะทำให้ความเข้าใจนั้นลึกซึ้งและไม่ต้องจำอะไรมากนัก

บทที่ 2 การเรียนรู้ที่เน้นการย่อยข้อมูลให้เข้ากับเรา

ในบทความ “หลักการเรียนรู้ให้เข้าใจ (ภาค 2)” ผู้เขียนได้อธิบายถึงหลักการเรียนรู้ที่เน้นการย่อยข้อมูลให้เข้ากับระบบภายในของเราเอง ซึ่งเปรียบเทียบกับ

  1. การกินอาหารที่ต้องย่อยก่อนจึงจะกลายเป็นส่วนหนึ่งของร่างกาย
  2. การเรียนรู้ก็เช่นกัน เราต้องนำข้อมูลที่ได้รับมาย่อยและปรับใช้ในบริบทของเรา เพื่อให้ข้อมูลนั้นกลายเป็นส่วนหนึ่งของความเข้าใจและความทรงจำของเราอย่างแท้จริง

การเข้าใจที่แท้จริงเกิดจากการที่เราสามารถเชื่อมโยงข้อมูลใหม่เข้ากับความรู้เดิมของเราได้อย่างสมบูรณ์ ซึ่งจะทำให้เราจดจำและนำไปใช้ได้โดยไม่ต้องย้อนกลับไปดูข้อมูลต้นทางอยู่บ่อยครั้ง

การเปรียบเทียบ ปรับโครงสร้าง หรือประยุกต์ใช้กับตัวอย่างจากชีวิตประจำวันเป็นวิธีการที่ช่วยเพิ่มประสิทธิภาพการเรียนรู้ในการเชื่อมโยงและย่อยข้อมูลใหม่ได้เป็นอย่างดี

ตัวอย่างว่าจะประยุกต์ยังไง

  • Cap Theorem ให้เปรียบเทียบกับการมีธนาคารสองสาขาที่ต้องส่งข้อมูลกันผ่านกระดาษ และ Reception อาจจะไปเข้าห้องน้ำ อันนี้เราเชื่อมทฤษฎีเข้ากับอะไรที่เป็นประสบการณ์ของเรา
  • API Design แบบใหม่ เปรียบเทียบระหว่างของเดิมที่เราทำกับของเก่า แล้วดูโฟกัสว่ามันต่างกันตรงไหนเหมือนกันตรงไหน
  • ต้องไปแก้ Legacy system สมมติต้องไปทำงานปรับวิธีการแสดงราคา พอค้นคว้าข้อมูลไปซักพัก กลับมาเชื่อมตลอดว่า ที่เราเรียนมันจะไปใช้ปรับแสดงราคาได้ยังไงนะ แล้วตรงไหนต้องใช้ในงานประชุมพรุ่งนี้นะ
  • ถ้าไปเรียนทฤษฎีบริหารใหม่ กลับมาเชื่อมว่าเอ้อชีวิตประจำวันที่เราทำงาน ตรงไหนใช้ได้บ้างไม่ได้บ้างนะ

คำแนะนำจากผู้เขียน

ฝึกนิสัยในการเชื่อมต่อสิ่งที่เรารู้หรือเราต้องการ กับข้อมูลที่เราเรียน เพื่อป้องกันไม่ให้เกิดเหตุการที่เราเรียนรู้แต่ไม่สามารถช่วยให้แก้ปัญหาในงานได้เลย

ถ้ายังไม่คล่อง ตั้งเวลาไว้ทุกๆ 15 นาที แล้วถามตัวเองว่า “ตกลงที่เราเรียนเนี่ยมันเกี่ยวกับสิ่งที่เราต้องทำยังไงนะ”แล้วถ้าไม่เกี่ยว ตัดทิ้งเลยครับ ไม่ต้องเสียดาย

  1. กลับมาถามตัวเองว่าสิ่งนี้มันตรง ไม่ตรง กับสิ่งที่เราเคยรู้ยังไงบ้างนะ
  2. ถ้าไม่ตรง มีอะไรที่เราต้องเปลี่ยนความเชื่อพื้นฐานของเราเพื่อให้รับข้อมูลใหม่นี้ได้บ้างนะ หรือเราจะทิ้งข้อมูลใหม่ไปก่อนดีนะ
  3. เราจะเชื่อมสิ่งที่เรารู้และจำได้ขึ้นใจ กับสิ่งใหม่ได้ยังไงบ้างนะ
  4. กระบวนการย่อยข้อมูล #1 — #3 คือการทบทวนเนื้อหาที่เราเรียนใหม่ได้อย่างมีประสิทธิภาพ มากว่าการที่เรากลับมาทบทวนด้วยการอ่านซ้ำๆเพื่อจดจำเนื้อหา

ติดตามเนื้อหาน้องๆที่มาฝึกงานได้ที่นี้นะครับ

ขอบคุณผู้อ่านมากๆเลยครับโผมม (^/\^)

--

--

Ponggun
T. T. Software Solution

Development Manager, Web Developer with ASP.Net, ASP.net Core, Azure and Microsoft Technologies