본문 바로가기

프로그래밍

모든 디자인 패턴을 알아야 할까? 우린 어디까지 미리 알아야 할까?

C, 자바와 C#을 기준으로 작성된 글임을 알립니다.

또한 대기업이 아닌 중소기업을 기준으로 작성된 글임을 알립니다.


 

디자인 패턴을 몰라도 기능 구현을 할 수 있다.

이 것을 무시한다면, 나중에 코드 유지 보수가 힘들어 지고 역할 분배가 힘들어 지는 등의 문제가 발생한다.

 

모든 디자인 패턴을 다 알 필요는 없다고 생각한다.

(뭐든지 다 알면 좋다. 근데 다 알면 대기업 갔을 것이고 이런 내용 검색하지도 않았을 것이다. 다들 공부하기 싫으시잖아요.)

백엔드라면 MVC 패턴 하나는 알아야 한다고 생각한다.

 

그 외의 분야라면 싱글톤, 옵저버, 팩토리 패턴 정도만 알아도 충분하다고 본다.

 

그러나 더 중요한 부분이 있다.

알고리즘? 중요하다. 하지만 core한 부분을 코딩할 게 아니라면 생각보다 알고리즘은 내가 직접 짤 일이 별로 없다.

 

중요한 것은 다른 사람이 짜놓은 코드를 읽고 이해할 수 있는 능력이다.

 

디자인 패턴은 필수 문법이 아니므로, 모르고 입사할 수 있다. 단, 스프링 업체 취업하는 데 MVC를 모른다면 입사가 어려울 순 있다. MVC는 필수 문법에 가까운 개념이기 때문이다. 이런 경우를 제외하면 싱글톤 패턴 정도만 알아도 신입 사원은 칭찬을 들을 것이다.

 

하지만 입사해서 코드를 읽을 줄 모른다면, 같이 일을 할 수 없게 된다. 코드를 읽을 수 있어야 일을 할 수 있고, 규칙에 어긋나지 않게 바른 코드를 쓸 수 있다. 어찌저찌 내용을 파악하고 수정을 할지라도 제대로 이해하지 못 했다면, 나 혼자 이상한 코드를 짤 수 있다. 코드의 규칙성을 깨게 되면 없느니만 못한 코드를 짤 수도 있는 것이다.

 

그렇다면 신입 사원이 어떻게 코드를 이해할 수 있을까?

기본이 되어야 한다. 그래야 코드를 읽을 수 있다. 백준 알고리즘 잘 풀어도 남이 짜놓은 코드를 읽을 수 없고, 이해할 수 없다면 좋은 인재가 아닌 것이다. 조건문과 반복문만 잘 짠다면 회사 코드를 보고 기절할 수 있다. 책에서 그냥 지나쳤던 고급 문법들이 범벅이 되어 덮쳐왔을 때 그 기분은 겪은 사람만 알 수 있다.

 

기본의 최소 기준은 아래와 같다고 본다.(변수, 데이터, 조건문과 반복문 그리고 배열과 List까진 안다고 전제)

즉, 이 정도 알면 그래도 회사 코드는 어느 정도 읽을 수 있으리라 본다.

 

C# : class와 상속, 추상클래스와 인터페이스, dictionary 그리고 델리게이트와 람다 

Java : class와 상속, 추상클래스와 인터페이스, 익명 클래스 그리고 Map과 MVC패턴

C : 포인터와 동적 할당에 대한 꼼꼼한 이해

*이게 있어야 코드를 '읽을 수 있다' 그래야 구글링도 된다. 윤성우의 열혈C를 끝까지 보고 이해할 수 있으면 된다.

C++ : class와 상속, 추상클래스와 인터페이스, 참조자와 포인터

Python : def, list, dict, class... 파이썬은 직관적이기에 그 때 그 때 구글링해도 쉽게 파악될 것이다. 

파이썬에 대해서 관련된 책들은 많으니 가벼운 책 한 번 보면 충분하리라 본다.

 

결론

뻔한 얘기다. 기본 문법을 잘 알면 된다. 디자인 패턴? 알면 좋지만 모르겠다면 위의 기본 정돈 알고 가자.