본문 바로가기

Grew from/Review

[리뷰] 객체지향 사고 프로세스

 

 

수십년동안 프로그래밍 세계에서는 다양한 변화가 있었지만 패러다임은 절차지향, 객체지향, 함수형 이 3가지가 끝인것만 봐도 객체지향이 얼마나 중요한지 알 수 있다.

허나 객체지향이라는 것이 처음 접할 때는 철학서적 읽는것마냥 뭔소린지 와닿지 않고 뜬구름 잡는것처럼 느껴진다.

이런 상태에서 코드로 설명을 접하다보면 예시 코드를 보며 자칫 잘못된 생각이 자리잡을 수도 있기 때문인지, 저자는 책 중반까지는 코드보다 그림이나 표를 더 활용해서 개념 설명 치중해서 객체지향에 개념을 설명에 힘쓰는게 느껴졌다.

처음에 이해하기 힘든 개념인 추상 인터페이스 설명에 대한 예시를 잘 든 것 같다.

사실 객체지향이란게 코드를 딱 어떻게 짜야된다는 규칙보다는 개념적으로 이해하는게 더 중요하다고 생각해서 코드보다도 그림, 도표, 다이어그램을 충실히 사용한 듯하다.

덕분에 예시 코드를 작성한 Java를 몰라도 C++등 객체지향 언어를 안다면 이해하는데 무리가 없다.

코드는 딱 다이어그램을 설명하는 정도의 수준 정도이다.

 

본인은 JS를 주력언어로 현재 함수형 프로그래밍을 활용해서 로직을 짜고 있지만, 설계적인 측면에서는 아직도 객체지향에서 배운 것들을 기반으로 하고 있다. 
(가령 함수형 프로그래밍에서는 "상속"이라는 개념은 없지만 "합성" 이라는 개념은 있고, 이것으로 함수간의 관계를 설정하며 반복을 줄이고 구조를 잡아 나갈 수 있다.)

결국 어떤 시스템을 구축할 때는 각 모듈 간의 관계, API와의 관계, 외부 시스템과의 관계 등 관계들이 중요해지는 데 그런 관계 들을 설정하는데 있어서 객체지향적인 사고가 큰 힘이 되어준다.

객체지향적인 사고를 잡기 위한 개념도 너무 장황하면 질려서 포기하게 되는데, 이책은 300페이지도 안되는 얇은 분량이라 속도감 있게 개념을 잡아 나갈 수 있다.

 

이 책의 또다른 장점은 번역한 사람이 번역에 정성껏 참 잘했다는 점이다.

번역한 사람이 개발지식이 없다보니 원문에 대한 이해를 못해서 대충 직역한 듯한 책을 읽다보면 진짜 분노가 치미는데, 이책은 반대로 번역한 사람에게 고마움이 느껴지는 책이다.

보통 이렇게까지 않하니깐!

 

국내의 대부분의 개발자들은 객체지향 언어를 다룰테고 따라서 면접때 질문도 객체지향 관련된 것들은 항상 당골질문이기에 검색해서 딸딸 외우는 신입/쥬니어 개발자들을 많이 봤다.

그렇게 암기해봤자 좀더 파고드는 질문 하면 대답을 못하기 때문에 바로 티가 나기 때문에 좋은 인상을 줄 수 없다.

이런 개념 서적을 공부에 시간을 투자해서 생긴 내공으로 대답하는 것이 면접에서 훨씬 유리하며, 그 내공은 개발자 생활을 지탱하는 데 큰 힘이 되어 줄 것이라고 조언을 남기며 리뷰를 마친다.