솔직히 대학 4년 공부하고 지금 실무하고 있는데 그런거 없이도 요구사항 정해지면 소스 잘만 짰다.
지금도 잘만 짠다.
근데 요즘 슬슬 다시 객체지향 설계 법칙 보면서 이리저리 응용하는 연습을 하고 있다.
솔직히 몰라도 클래스 설계하는데 문제없는데 알고나면 추후 확장성, 유지보수 용이성이 기가 막히게 달라진다.
애초에 모든 프로그램들이 설계시점에서 모든 요구사항을 정확하게 정의내릴 수가 없고 코드를 짜는 동안, 또 릴리즈가 된 후에도 계속해서 "변화"에 대응해야 되는데 이 "변화"에 유연하게 대응하기 위한 기초이론이 객체지향 설계 원칙이라고 보면 된다.
그거 없이 짜면 처음이야 소스 깔끔하게 잘나오겠지, 계속 요구사항 변하고, 커버리지 추가되고, 기능 추가되다보면 스파게티되는거 한순간이다.

단순 코더와 진짜 개발자를 구분짓는 기준중에 하나가 나는 설계 능력이라고 본다.
처음에는 함수 내에서 코드 설계, 그 다음에는 클래스 설계, 그 다음에는 클래스간의 아키텍처 설계, 더 나아가면 전체 솔루션/서비스 아키텍쳐 설계로 뻗어나가는데 이 설계를 얼마나 제대로 짤 줄 아느냐가 내 개인적인 기준에서 단순 코더를 벗어나는 길이라고 본다.

덧, 위 내용은 객체지향 언어개발자에 한함.