프로그래밍 즐거우세요?

프로그래밍 혹은 개발을 잘한다는 건 무슨 뜻일까요? 소프트웨어 엔지니어링, 애자일을 위시한 각종 소프트웨어 개발 방법은 누굴 위한 걸까요? 개발자의 생산성 혹은 효율이란 단어는 대체 뭘 말하는 걸까요? 기업 입장에서 생산성 혹은 효율은 명료합니다. 투자한 비용 대비 이익(ROI)로 이해하면 되기 때문입니다. 소프트웨어 개발의 효율은 생산 비용(주로 개발자의 임금) 대비 산출물(개발된 소프트웨어) 양과 품질입니다.

기업 입장에서 좋은 개발자란 돈 적게 받고 품질 좋은 소프트웨어를 많이 만들어 주는 사람을 말합니다. 물론 소프트웨어의 품질은 정성적이기 때문에 요구사항 이해, 설계, 코딩, 테스트 뿐만 아니라 고객과의 커뮤니케이션, 협업, 개발 문화 등 여러 세부 사항에 대한 경험과 노하우가 필요합니다.

이렇게 기업 관점에서 ROI를 높여주는 개발자를 우리는 보통 좋은 개발자라고 부릅니다. 원활한 인력 수급을 위해 보수적인 기술 스택을 선택하고, 출시 일정을 맞추기 위해 일정 부분 코드 품질을 포기할 수도 있어야 하고, 테스트는 필요한 수준으로만 적절하게 해야 소위 프로페셔널입니다.

하지만 묻고 싶습니다. 그렇게 일을 하면 즐거우세요? 출시일을 맞추기 위해 철야를 하고 코드는 동료들에게도 보여주기 부끄러울 만큼 스파게티가 되었어도 제품만 성공하면 그만인가요? 맨날 똑같은 기술에 똑같은 일을 똑같이 반복해도 성과를 냈으니 프로페셔널한 개발자라고 자부하고 계신가요? 그건 개발의 재미가 아니라 성공의 재미입니다.

개발은 재미가 있어야 합니다. 같은 문제도 매번 다른 방법으로 풀어보고, 새로운 기술도 과감히 도입해보고, 반복되는 문제들을 자동화하고, 당장의 생산성과 거리가 있어도 기술적으로 흥미 있는 문제를 풀어볼 여유도 필요합니다. 단순히 홈페이지를 하나 만들어도 그저 빨리 산출물을 내는 것과 개발의 즐거움을 추구하면서 새로운 방법을 시도하는 것 사이에는 큰 간극이 존재합니다.

물론 사업이야 망하든 말든 내가 좋아하는 기술만 하라는 이야기는 아닙니다. 하지만 반대로 개발자 스스로가 철저하게 ROI 관점에서만 소프트웨어 개발을 바라보고 개발 생산성만 이야기하면 개발자가 응당 누려야 할 기술적 즐거움을 자기 스스로 차버리는 것이나 마찬가지입니다.

기업의 이해와 개발자의 이해는 달라야 합니다. 개발자는 임금의 대가로 사업이 성공할 수 있도록 노력할 의무가 있지만, 동시에 재량껏 기술적 즐거움을 추구할 권리 또한 있습니다. 그리고 적절한 선은 기업이 결정해 주는 것이 아니라 개발자가 스스로 찾아서 기업과 끊임 없이 협상해야 합니다.

XP든, 스크럼이든, 디자인 패턴이든, 테스트 주도 개발이든, 함수형 프로그래밍이든 중요하지 않습니다. 아무리 새로운 아이디어가 나와도 그 아이디어가 기업 입장에서 소프트웨어 개발자의 생산성을 높이는 것 하나에만 초점이 맞춰지는 순간 이미 개발자 입장에서는 경계해야할 대상이 됩니다. 최근 개발자들 사이에 애자일 방법론에 대한 비판이 커지는 것도 애자일 방법론의 내용이 바뀌어서가 아니라, 애자일이 기업 입장에서 개발자의 효율을 높이는 방법론으로 편입되었기 때문입니다.

개발의 즐거움을 되찾으세요. 하지만 소프트웨어 개발자에게 전통적인 의미의 노동 쟁의는 어울리지 않습니다. 파업을 한다고요? 아니 왜 좋아하는 개발을 자발적으로 중단합니까? 즐겁게 개발하세요. 새로운 기술도 배우고, 코드 품질도 높이고, 동료 개발자들과 교류하세요. 회사의 이익을 위해, 제품을 위해, 프로페셔널하기 위해 개발자의 즐거움을 희생하지 마세요.

One thought on “프로그래밍 즐거우세요?

  1. Pingback: 프로그래밍 즐거우세요? | 서광열의 코딩 스쿨

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s