난 항상 이런 생각을 하지.

= 저사람은 레거시 구현체에 새로운 기능을 넣어본 적이 없나보군.
= 혼자 일을 하는 사람인가?
= 수십명이 들러붙어서 하는 일을 하지 않나보군.

자기 혼자 꼴리는대로 만들거면 사실 디자인패턴같은거 다 무시하고 막 짜도 됨.

지가 짰으니까 각 모듈이 어떤 역할을 하고 클래스를 만들었으면 어디에 쓰이는지 잘 알테니까 필요한 기능 있으면 그냥 막 발라서 돌아가게 하면 되지.

요즘에 파이썬이나 노드js가지고 스타트업 하는 애들 많지?

걔들은 디자인패턴 알 필요 없어.

풀스택 개발자라고 지 혼자 스키마 설계하고 비즈니스 짜고 앞단에 부트스트랩 붙여서 다 만드는데 뭐하러 패턴 익히냐? 지가 짰으니 뻔히 다 아는데..

그런데 운좋게 스타트업이 대박 터져서 개발자들 막 뽑고 여러가지 피쳐 구현해 넣는다?

될거 같냐?

만든애 빼고 나머지는 아주 피똥 싼다 ㅋㅋㅋㅋ  함수에 뭐가 넘어오는지, 이 안에 어떤 프로퍼티가 있는지, 프로퍼티 cops라는 놈이 있는건 어찌어찌 알았는데 그럼 또 반복됨. 이건 뭐 어떻게 쓰는건지.. 문서도 없지, 타입은 알 수 없지, 그렇다고 함부로 막 고치고 기능 넣지도 못하지. 지금 서비스 중인데 서버 뻗으면 난리나니까.

클래스든 메소드든 함수든 이 수많은 등장 인물들이 어떤 맥락에 따라서 유기적으로 얽혀서 돌아가는데, 그 맥락을 어떻게 다른 사람에게 설명할래? 수천줄이 넘는 코드들 일일이 화면에 펼쳐놓고 설명할래?

그렇게 설명하면 이해가 될까?

만약에 설명해줄 사람이 회사 나가고 없으면 어쩌고?

어떤 클래스 이름이 XXXBuilder라고 되어있으면 별도의 주석이나 문서가 없어도 이 클래스는 뭔가 복잡한 인스턴스를 생성하는 역할을 하겠구나, 안에 method chaining으로 되어있네, 짐작이 되지(Builder Pattern). 그러면 XXXBuilder라는 클래스에서 어떤 클래스를 생성하는지 들여다보면 얘네들이 다들 하나의 부모 클래스들을 상속 확장한다는 것을 대강 알 수 있고 이렇게 쉽게 수십개의 클래스들을 파악할 수 있다.

스프링 프레임워크 보면 존나 방대하고 보기만 해도 숨이 턱턱 막힌다.

굳이 그렇게 안해도 내가 짜버리면 금방 되는건데 무시기 스프링 시큐리티니 뭐니 그딴게 왜 필요한가? 짜증나지....

그런데 적게는 수십명, 많게는 200~ 300명의 개발자들이 일사분란하게 하나의 시스템을 완성하려면 각자의 개성을 희생해야 한다. 그렇지 않고 다들 지 좋은대로 취향대로 코드 발라대면 뒷감당은 어떻게 할려고?

예전에는 정부나 대기업처럼 덩치 큰 놈들이 규모의 경제 효과를 보기 위해서 IT기술을 필요로 했다면 지금은 중소업체는 물론이고 자영업 하는 사람들도 IT기술을 필요로 하는데 규모가 크지 않기 때문에 굳이 패턴까지 익힐 필요는 없지. 그래서 풀스택 가발자라는게 생길 수도 있는거고(이것저것 설렁설렁 잡다하게 알기는 하니까 일단 돌아가게는 할 수 있음).

정리하면

자기가 뭘 할건지에 따라서 패턴은 안배워도 된다. 다만 몰라도 되는 것만 해야 하지.

각자의 선택.