소프트웨어 장인 정신을 읽고
좋은 개발자가 뭘까?

나의 착각
이전에 다녔던 회사에서 Spring 차세대 프로젝트를 처음 했을 때
인프런의 김영한님 스프링 강의를 들었다
모든 팀원들이 스프링은 처음 써보는 상태였고 그건 나도 마찬가지였다
강의를 구매한 후 설레는 마음으로 강의를 틀었다
말로만 듣던 김영한님의 강의가 아니였던가
나는 이전까지 말로 표현하지는 않았지만 잘하는,
유명한 개발자의 강의에서 고급 기술, 어려운 스킬 등 기대하면서 강의를 구매했었다
김영한님의 강의는 매우 담백했다
가벼운 자바의 역사, 스프링의 이념, 객체지향, 스프링 빈 등 기본적인 내용에 충실했고 그걸 정말 쉽게 풀어서 설명해주셨다
기대했던 만큼 실망이 조금 존재했었던 것 같다
그때 당시에는 그런 기본 개념들을 깊게 받아들이지 않았고 문법 위주로 빠르게 보고 회사 코드에 코드들을 쑤셔넣었다
몰라도 개발은 할 수 있었고 프로젝트는 끝이 났다.
오늘 ‘소프트웨어 장인’을 읽었다
과거의 나는 김영한님 강의에서 화려한 스킬, 고급진 기술을 기대했다
그런 내가 ‘소프트웨어 장인’을 읽어봤다
책에는 저자의 경험이 깊게 녹아있었고 생각을 엿볼 수 있었다
이 책을 읽고나서 나는 김영한님의 강의가 다시 보이기 시작했다
잘하는 개발자란뭘까?
개발자와 잘하는 개발자의 차이를 책에서는 말하고 있다
나는 책에서 잘한다는 것이 무엇인지 배웠다
어려운 기술을 구사할 줄 아는 것, 나만 아는 복잡한 코드를 작성하는 것
그것은 잘하는 개발자가 아니다
책을 읽기 전까지는 스프링을 잘하는 개발자는 스프링의 복잡한 기능, 어려운 개발 구현을 잘하는 개발자라고 생각했다
하지만 중요한 것은 그것이 아니다
중요한 것은 본질이라고 생각한다
스프링이 걸어온 길
개발자가 비즈니스에만 집중할 수 있게 더욱더 단순화하고 쉽게 만드는 것
내 동료와 내 비즈니스를 지킬 수 있는 코드를 작성하는 것
잘하는 개발자인 김영한님이 말하고 싶었던 것은 그것이 아닐까 다시 되돌아 보게 된다
책에서는 어려운 코드, 복잡한 기술, 스킬에 관한 이야기가 전혀 없다
중요한 것은 스스로의 태도와 방향성이었다
어떻게 하면 더욱더 협업이 편해질 수 있을까?
어떻게 하면 더욱더 개발을 하기에 편해질 수 있을까?
이미 완벽하다면 완벽하다고 할 수 있는 대가들이 모여 ‘어떻게 하면 더 나은 개발을 할 수 있을까’ 토론을 했다
새로운 기술, 어려운 스킬을 자랑하기 위한 자리가 아니었다
방향성이 달랐다
중요한 건 복잡하고 어렵고 많은 기술을 아는 게 아니었다
그것들의 본질
어떻게 하면 나의 시스템을 더 발전시킬 수 있을까?
협업을 더 편하게 할 수 있을까?
기술이 아니라 본질이 중심이었다
기술들은 이 본질을 해결하기 위한 수단이다
‘TDD를 써서 나의 테스트 능력을 자랑하자’ 가 아니다
‘나의 애정 있는 코드, 비즈니스가 망가지지 않기를 원해, 그러니 TDD를 사용해서 내 비즈니스를 지키자’
‘아키텍처를 써서 나는 어려운 설계도 잘하는 실력자야’ 가 아니다
‘나의 비즈니스를 지켜야 해, 비즈니스는 순수하게 동작해야 앞으로 발전, 개선하기 쉬워져, 아키텍처를 설계해서 지키자’
‘내가 아는 복잡하고 어려운 기술, 설계를 팀원들에게 자랑하자’ 가 아니다
‘이렇게 하면 쉽고 흐름이 잘보이고, 안정성을 지킬 수 있더라,
어떻게 하면 더 발전된 방향으로 갈 수 있을까?’
이야기하고 계속해서 발전하고 성장을 목표해야한다
왜? 발전, 성장을 목표해야 할까?
우리는 왜 성장을 목표하는가?
사람마다 다양한 이유가 있겠지만 나는 스스로 이렇게 생각한다
내가 애정하는 내 코드를 다른 사람들이 불편해하지 않았으면 좋겠으니까
지금의 나는 기초도 많이 부족하고 코드를 잘 작성한다고 할 수 없다
하지만 그런 내 시스템을 애정한다
그리고 나는 그런 사람들과 함께 일하고 싶다
그렇기 때문에 나는 그런 사람들과 만나기 위해서 성장해야만 한다
그리고 책에서는 이야기한다
성장의 주체는 누구인가?
책에서 나오는 예시이기도 하지만 완전히 나를 표현하는 내용이 있었다
‘회사에서 책을 구매해주지 않아, 강의를 구매해주지 않아’
불평불만을 늘어뜨리는 많은 사람들
그리고 나를 다시 되돌아 봤다
과거의 나는 모든 문제의 원인을 외부로부터 찾았다
그리고 고민하고 답을 찾았다
잘하는 개발자
내가 생각하는 잘하는 개발자는 스스로가 편하자고 문제의 원인을 외부로부터 찾는 개발자가 아니다
통제 가능한 문제의 원인을 내부로 부터 찾고 해결책을 먼저 찾는 개발자이다
과거의 나는 왜 문제를 외부로부터 찾고 외부를 탓했을까
정작 문제가 되는 것은 나의 마음가짐이였다
물론 모든 문제를 나한테서 찾는 것은 위험하다
스스로가 통제하지 못하는 문제를 내부로부터 원인을 찾는 것은 무너지기 쉬운 행동이다
이보다 더 많은 이야기를 소프트웨어 장인 도서에서는 이야기하고 있다
많은 이야기중 지금의 나에게 가장 깊게 내면으로 스며든 내용은 이것이다
잘하는 개발자는 기술로 자신을 증명하는 사람이 아니다
더 나은 태도로 비즈니스와 동료를 지키는 사람이다
이 책은 나에게 기술을 더 많이 아는 법보다, 어떤 태도로 개발할 것인가를 다시 묻게 만들었다