프로그래밍은 문제해결?

누군가가 ‘요즘 팀에서 관심있는 것들이다’ 하고 보내준 도서 목록 보고 멘붕이 왔다.
수준 차이가 확 느껴져서. 지금 나는 코드 단위에서 헤매고 있는데 그 위 인프라라니.
(게다가 나는 ATDD를 오늘 접했고 인수테스트가 뭔지 헤매고 있었음. 2연타로 springboot와 JPA로 이루어진 코드 보고 마음이 쓰렸다. 기술 용어만 알기만 하고 정작 제대로 공부해본 적은 없구나. 좋다는 이야기 들은지가 몇 개월 전인거같은데).
그리고 그 회사에 갈 마음을 접었음. 아니 접혀지더라. 내 코드와 저 책과는 몇 광년 떨어져 있는 거 같아. 정말 보고 있는 시야가 다르구나.

그러고나서 멘붕이 좀 지나가고 나서 생각했다.
이렇게 내가 생각해본 적도 없는 새로운 시야를 볼 수 있는 사람들과 그런 팀과 일하고 싶다고.
지금은 정말 택도 없지만 언젠가 저기에 도달하고 싶다. 어떻게 하면 그렇게 될 수 있을까?

딱 2개월 전까지 내 목표는 ‘민폐끼치는 코드를 작성하지 않는 프로그래머’였다.
그러다 ‘소프트웨어 장인’이라는 책을 보고 생각이 확 뒤집혔다. 한 번도 완벽을 추구하는 장인에 가까운 끊임없이 더 나은 코드를 위해 스스로의 기준을 높여본 적이 없다는게 충격이었다. 딱 적당히 적당히 그 정도까지만이 목표였다니. 왜 더 나은 코드를 생각하지 않았을까?

처음 프로그래머를 하자고 마음 먹었을때 시작했던 첫 프로젝트가 생각났다.
신났다. 내가 직접 만들어낼 수 있구나! 내 손으로 뭔가를 만들어냈어! 동작이 된다!

그리고 개발자로 회사에서 일을 하게 되었다. 그냥 동작하기만 하는 코드가 싫어졌다. 지금 동작하지만 곧 쓰레기가 되버리는 그런 코드. 그 정도 코드를 짜는 스스로가 부끄러웠다.

그래서 그 다음엔 ‘더 오래가는 코드’를 만들고 싶어졌다. 그 다음 사람이 봤을때에도 읽히는 코드, 고치기 쉬운 코드. 깔끔한 코드.
테스트코드를 알게 되었다. 그리고 히스토리가 남는 버전관리 시스템이 궁금해졌다. 현업에서 쓰지 않는 Git을 ‘건드려’봤다.
어제보다 오늘 더 깔끔한 코드 읽히는 코드를 짜고 싶다. 내일 더 나은 코드를 만들고 싶다.

오늘 인수테스트를 접하면서 생각했다. 새삼 또 생각했다. 클린코드가 좋다더라 했던게 겉모습에만 집중한거였나? 깔끔한 게 그냥 좋은 코드인 것 처럼 생각했을까 왜.
이 시스템이 이루어내려는 목적을 충족하는 코드. 그런 프로그래밍.
생명력있는 코드, 그런 시스템을 만들고 싶다. 프로그래밍의 목적은 문제해결. 좋은 오래가는 코드가 목적이 아니잖아.

현실은 객체에서 버벅대고 있다. 이것저것 제대로 하는 것 없이 건드려 놓기만 한거 같아서 속이 쓰리다. 객체지향 뭐지. 모르겠다. 저번주에 본 함수형 프로그래밍도 멘붕인데. 이걸 어쩌나.

업데이트

2018.04.30

  • 마음이 접힌 그곳에 try해보기로 했다.
    • 수준차이가 많이 나지만, 지금은 같이 일할 수 없더라도 지금 나와 얼마나 차이가 나는지 절절하게 깨닫겠지. 그러면 갭을 채우려고 달리게 되겠지. 아무것도 하지 않고 포기하는 건 너무 슬프다.
  • resume를 공개로 오픈해서 좀 더 환경을 개선하려는 노력을 해봐야겠다.
    2018.04.25
  • 헤매고 있던 스프링부트 학습을 시작했다.
Written on April 26, 2018