더북(TheBook)

프로그래밍처럼 사람을 초라하게 만드는 직업도 없다. 처음부터 제대로 했으면 20분이면 끝날 일을 종일 디버깅 코드를 때려 넣느라 시간을 날리고…….

컴파일러,품질 관리자, 팀장, 고객이 제보한 실수를 바로 잡느라 나머지 시간을 바친다.

‘성숙한’ 시스템을 경험한 사람들은 잘 알고 있을 것이다. 동료 개발자 또는 자신이 결정한 엉터리 설계 탓에 수년 간 유지 보수하기 어렵고 취약한 코드를 리팩토링하느라(‘리팩토링아 제발 되라.’하고 기대하면서) 또다시 시간을 낭비한다.

그런데도 우리는 자신이 아주 똑똑하다고 믿는다. 그래서 상황이 더 악화된다. 지금껏 살아오면서 이치에 맞게 사고해왔다고 자부하는 개발자들은 주로 퍼즐과 문제 풀이를 즐기는, 어느 방향으로 가야할지 물어보거나 지침서 따위를 읽어보는 일은 별로 내키지 않는 남자(남자가 대부분인데 이 점이 상황을 더 덧낸다)들이다.

자신을 문제의 한가운데 내려놓고 긍정적으로 바라보면 해답을 찾을 수 있다. 스스로 힘으로 말이다.

이 장에 좋은 소식이 있다. 똑똑한 일부소프트웨어 개발자들은 미학적으로 대단히 만족스러우면서도 하루에 20분짜리 코드보다 더 많은 일을 할 수 있게 해주는 기술을 개발했다.

그렇다고 완전히 새로운 기술은 아니다. 이 장에서 다룰 아이디어는 모두 10년도 더 지난 것들이다. 하지만 미국 또는 해외 출신 개발자들의 면접을 진행하면서 기본적인 SOLID개념(머리글자는 모른다 치더라도)조차 들어본 일 없는 사람이 태반이라는 걸 알게 되었다. DRY 규칙 정도를 들어본 사람도 그것이 올바른 소프트웨어 개발에 얼마나 절대적인 비중을 차지하는지 잘 모르는 것 같았다. 단위 테스트를 완전히 잘못 이해한 까닭에 테스트에 의한 개발프로세스가 뭐가 좋은지 모르는 개발자도 허다했다.

이러한 지식으로 단단히 무장하고 있어야 여러분도 엘리트 대열에 합류할 수 있다. 객체 지향 프로그래밍을 아는 개발자는 많아도 의존성 역전(dependency inversion)이나 리스코프 치환 원리(Liskov Substitution Principle)를 섭렵한 개발자는 흔치 않다. 테스트 주도 개발을 완전히 꿰어찬 개발자는 더욱 드물다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.