There are a lot of articles say "Every engineer must start thinking of x as a primary concern, not as an afterthought".
Honestly, I think this is not a healthy way to approach software engineering because
1. More than 80% of software engineers work with legacy code in daily-basis. So the lesson about how to make it right from the start will be valuable for only a few portions of software engineers and applicable to very few systems. We should talk more about migrating and change.
2. If I gather all these articles, there will be too many x that no one can even start a project. We should also consider the context of the system and prioritize all the x-es accordingly.
I believe that great software engineer should be proficient in managing change and evolving the system.
============================
หลายๆ บทความ Tech โดยเฉพาะเวลาโปรโมต Practice ใหม่ๆ "เราต้องคิดถึง X ตั้งแต่เริ่มโปรเจ๊กต์ ไม่ใช่คิดทีหลัง ต้องออกแบบมาให้รองรับแต่แรก"
ผมคิดว่ามันเป็นคำแนะนำที่ใช้จริงไม่ค่อยได้ด้วยสองเหตุผล
1. Developer เกิน 80% ทำงานกับ Legacy code ดังนั้นบทความที่เขียนว่าทำยังไงให้ถูกต้องตั้งแต่เริ่มวางระบบ มีประโยชน์และใช้ได้จริงกับคนแค่ไม่กี่คนและระบบไม่กี่ระบบเท่านั้น เราควรจะพูดถึงวิธี Evolve กับ Migrate ระบบให้รองรับ X ได้บ้าง ไม่ใช่บอกว่าคุณต้องคิดมาให้ดีแต่แรกครับอย่างเดียว
2. ถ้าเอาทุกบทความพวกนี้มารวมกัน X จะมีเยอะมากจนไม่น่าจะมีใครเริ่มงานได้เลย น่าจะใส่ใจกับบริบทแล้ว Prioritize X ต่างๆ ตามบริบท ไม่ใช่โยนโครมแล้วทุบดินว่าต้องทำอย่างเดียวโดยไม่สนใจบริบท
ผมเชื่อว่า Software engineer ที่เก่ง ต้องมีความสามารถในการจัดการบริหารความเปลี่ยนแปลงและปรับปรุงระบบที่มีอยู่แล้ว ซึ่งเรื่องนี้ยากกว่าการออกแบบระบบใหม่เยอะ