소프트웨어 장인을 읽고

undefcat·2021년 7월 14일
2

X를 읽고

목록 보기
5/5

개발자를 위한 선물세트

이 책은 개발자에게 일종의 종합선물세트 같은 책입니다. 제가 이 책을 읽고 든 생각은, 시중에 나와 있는 개발자 계발서들을 총집합한 책이었습니다. 이 책에서 다루고 있는 주제들을 나열하자면 너무 많아서 다 적기가 힘들 정도입니다. 책의 목차는 리디북스에서 확인하실 수 있습니다.

목차를 보면 이 책이 얼마나 다양한 주제를 다루고 있는지 놀랄 수밖에 없습니다. 일반적인 기술주제들을 다루기도 하고, 어떻게 일해야 하는지, 어떻게 내 커리어를 관리해야 하는지, 면접은 어떻게 볼 것인지 등 아마 개발자로 살면서 필연적으로 겪는 모든 일들을 다룬것 같습니다.

책갈피

수많은 내용들 중, 제 마음에 와닿는 갈무리한 문장들을 정리하고, 그에 관한 제 생각을 적고 포스팅을 마치도록 하겠습니다. 이 책은 그냥 개발자라면 무조건 한 번은 읽어 보셨으면 합니다.

아키텍처? 오버엔지니어링?

어떻게 모듈을 만들어야 시스템이 커지더라도 부작용이 적을지 고민해야 했다. 이에 대한 대응책이 추상화를 하고, 요소마다 디자인 패턴을 적용하는 것이었다. 오늘날에는 그런 방식을 오버 엔지니어링이라고 한다. 직설적으로는 어리석은 짓이라고 말하지만 그 당시에는 아키텍트의 혜안이라고 했다.

모든 것을 예상할 수는 없습니다. 거대한 시스템은 예측이 빗나가기 마련이고, 작은 시스템에선 무의미한 복잡성만 키울 가능성이 높습니다. 저는 지금 회사에서 외주용역일을 하고 있는데, 대부분의 일이 단순한 CRUD인 경우가 많았습니다. 이런 간단한 시스템에서는 직관적인 코드로 짜는게 훨씬 낫다는 생각을 하게 됐습니다. 아주 기본적인 MVC정도만 지켜줘도 충분히 빠르고 괜찮은 시스템을 만들 수 있다는 생각을 합니다.

결국은 구현해야 한다.

애자일의 배경이 되는 기본 원칙이 잊혀졌다. 기술적 탁월함보다 절차가 더 중요해졌다. 애자일의 모든 절차들에는 기술적 탁월함이 전제되어 있다.

결국 소프트웨어는 구현되어야 합니다. 작동하는 코드를 잘 작성하는 개발자의 역량이 전제되어야, 그 외의 것들을 논할 수 있을 것입니다.

개발자는 서비스 제공자

고객이 속한 산업의 본질이 소프트웨어 개발이 아닌 다른 것인 때가 많다. 이때는 소프트웨어 프로젝트가 성공하도록 돕는 것이 전적으로 우리들이 해야 할 일이다. 그것이 우리가 대가를 받는 이유다. 코드와 관련된 일이 아니면 나의 일이 아니라고 생각하는 개발자는 진정한 소프트웨어 장인이라고 할 수 없다.

용역일을 하던, 솔루션을 만들던, 서비스를 만들던 어떤 경우에서도 고객은 존재합니다. 개발자는 고객을 위해 일하는 것이 전제되어 있는 직종이라고 생각합니다. 수학 선생님이 수학을 모른다면, 과연 수학 선생님이라고 할 수 있을까요? 마찬가지로, 고객의 문제를 해결해주는 우리들이 고객이 어떤 문제로 골머리를 썩는지 모른다면, 과연 개발자라고 할 수 있을까요.

훈련에 관하여

품질이 좋은 코드를 능숙하게 작성하고 싶다면 높은 품질의 코드를 작성하는 방법을 훈련해야 한다. 훈련 외에 다른 수단은 없다. 훈련을 할 때는 문제의 해결 자체가 아니라 해결에 사용한 테크닉에 집중해야 한다. 급여를 받는 이유는 문제 해결에 사용한 테크닉이 아니라 문제 해결 자체에 대한 대가이지만, 훈련을 할 때는 그 문제를 어떻게 해결하는지가 중요하다.

급여를 받는 이유는 고객의 문제를 해결해줬기 때문입니다. 고객의 문제를 해결하는 능력은 개발자의 몫입니다. 끊임없는 수련이 필요하지만, 어떻게 수련하는지 그 방법 역시 중요한 것 같습니다.

함께 자라기

혼자서 배우는 데는 한계가 있다. 물론 개발자들은 상당 수준의 지적 역량이 있기 때문에 혼자 배우고 싶다면 무엇이든 배울 수 있다. 문제는 시간이다. 더불어 스스로에게만 의존하면, 자신만의 좁고 편향된 생각에서 벗어날 방법이 없다.

혼자서 학습해서 배울 수 있는 것에는 한계가 있다. 혼자라도 뭐든지 공부하면 배울 수 있을 것 같은 기분이 들겠지만 어디서부터 시작해야 하는지 알 수가 없을 때도 있다. 경험이 많은 사람을 통하면 훨씬 더 빠르게 배울 수 있다는 점도 생각해야 한다.

함께 자라기 포스팅을 참고해주세요😅

profile
undefined cat

0개의 댓글