Everybody loves clean code, but have you ever wondered what constitutes it? After reading Clean Code: A Handbook for Agile Software Craftsmanship by Robert C. Martin, I have a better picture of clean code.

Image for post
Image for post

Why Clean Code

Have you ever rushed to get tasks done, intending to clean up the code later, but those future days never come?

Over time we gradually build the mess. The mess becomes so large driving the team productivity slowdown. Management team step up and plan to have the application redesigned. Now we have two teams in a race, one team maintaining the old system, and the new…


Image for post
Image for post

I have heard about ZooKeeper multiple times, but didn’t really understand it. Until recently, I tried to discover what it is, which led me to a lot of questions. After delving into it, I kind of get an idea and would like to share my view of why we need it, what is it, and how it works.

Why we need ZooKeeper

In the distributed world, it is challenging to share information between machines. Let’s imagine there are 2 machines in a cluster. The straightforward approach would be one machine sending a change to the other so that both have data in sync. …


Image for post
Image for post
Do what you love — wework

ประสบการณ์เรียน Com Sci 1 ปีของคุณจะเท่ากับคนที่เรียนมา 4 ปีได้ยังไง — Anonymous (2018)

เป็นคำถามคล้ายคำสบประมาทที่เจอตอนสัมภาษณ์งานกับบริษัทแห่งหนึ่ง คล้ายเย้ยหยันว่าจะเป็น dev ได้ยังไง

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

หลังจากตัดสินใจใช้เวลา 1 ปีชุบตัวเรียนป.โท Com Sci (Computer Science) ทั้งที่ไม่ได้จบสายนี้มาโดยตรง ก็ตั้งใจไว้แล้วว่าจะต้องเป็น dev (Software developer) ให้ได้ ช่วงใกล้เรียนจบจึงยื่นใบสมัครและได้ offer จาก Wongnai ทำให้มีโอกาสได้ทำงานในฐานะ dev อย่างจริงๆ จังๆ

ก่อนเริ่มงาน

ความรู้ที่มีส่วนใหญ่เป็นความรู้พื้นฐาน เช่น

  • Object-Oriented Programming
  • Computer Architecture
  • Operating Systems
  • Algorithm & Data structure
  • Database
  • Git แบบใช้งานคนเดียว คือมีอยู่ branch เดียว หรือแม้จะเคยใช้ทำงานร่วมกับทีม แต่ก็พยายามเลี่ยง conflict กันตลอด

นอกจากนี้ ก็มีประสบการณ์ทำ Software project ซึ่งมีทั้งทำคนเดียวและทำเป็นทีม แต่ไม่ได้ให้ความสำคัญกับการออกแบบระบบเท่าไหร่ เพราะรองรับการใช้งาน user น้อยมาก ซึ่งก็คือตอนที่ต้อง demo และยังเป็น project ที่ไม่ต้อง maintain เพราะมีเป้าหมายสำคัญ คือ ทำ project ให้จบ หลังจากนั้นก็อีกเรื่อง 😆…


Peak: How all of us can achieve extraordinary things

Image for post
Image for post

ตื่นเต้นและมีความหวัง เป็นความรู้สึกที่เกิดขึ้นทุกครั้งตอนที่หยิบหนังสือเล่มนี้ขึ้นมาอ่าน เพราะหนังสือเล่มนี้ทำให้รู้ว่า “มีเส้นทางสำหรับคนที่มีฝันเสมอ”

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

แนวทางของ Deliberate practice ที่หนังสือเล่มนี้แนะนำนั้น

  • เริ่มจากการหาครูที่ดี ซึ่งจะทำให้เราก้าวหน้าได้อย่างรวดเร็ว เพราะครูรู้ว่าแนวทางที่ถูกต้องคืออะไร สามารถให้ Feedback และช่วยแนะนำแนวทางการฝึกเพื่อปรับปรุงจุดอ่อนของเราได้
  • กรณีที่ไม่มีครู ก็ต้องหาทางฝึกฝนเอง โดยหลักการคือ Fs = Focus, Feedback, Fix it ฝึกฝนโดยที่ทำซ้ำๆ แต่ต้องโฟกัสว่าทำไม่ถูกต้องตรงไหนและพยายามที่จะแก้ไขมัน อาจจะต้องลองหลายๆ วิธีเพื่อหาวิธีที่ได้ผล อาจจะแบ่งเป็นส่วนเล็กๆ ที่ทำให้เราวิเคราะห์ได้ว่าเราต้องปรับปรุงตรงไหน วิธีหนึ่งที่ใช้ในการฝึกฝน คือ พยายามเลียนแบบคนเก่งๆ เช่น ถ้าเราอยากเขียนได้เก่งๆ ก็ให้เอางานเขียนของคนเก่งๆ มา แล้วจดใจความสำคัญไว้ จากนั้นก็เอาใจความสำคัญ มาเขียนเป็นงานอีกชิ้น จากนั้น เปรียบเทียบงานของเรากับงานเขียนต้นฉบับและดูว่าควรต้องปรับปรุงตรงไหน เป็นต้น การพัฒนานั้นมีความเกี่ยวพันกับ Action มากกว่าแค่คิดเฉยๆ ในที่นี้หมายถึง เราต้องฝึกเขียนซ้ำๆ…

Krantharat Krongsiriwat

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store