소프트웨어 개발자라면 스코틀랜드의 웹 디자인 회사 미디어 서저리(Media Surgery)의 수석 개발자 존 맥퍼슨이 자신의 직업에서 가장 좋은 점으로 설명하는 다음의 시나리오에 공감할 터다. “며칠 또는 몇 시간 동안 작업한 것을 테스트하니 작동한다! 무엇이든 할 수 있는 듯한 느낌이 들고 희열이 차오른다!” 물론 좋지 않은 점도 있다. 그는 “며칠 또는 몇 시간 동안 작업한 것이 작동하지 않을 때다. 가치가 없는 사람처럼 느껴지고, 왜 돈을 받고 일하고 있는지 의문이 든다. 가면 증후군이라고 생각하기도 한다. (개발자는) 이상한 직업이지만 그래도 대부분은 즐겁다”라고 말했다.
여기서는 개발자, 개발 인력 채용 담당자, 개발 부문 관리자에게 자신의 직업에서 좋아하는 것과 싫어하는 것을 물어봤다. 답은 다양했지만 공통점도 꽤 많았다. 맥퍼슨이 언급한 것처럼 즐거움과 고통이 동전의 양면 같기도 했다. 한번 살펴보도록 하자.
문제 해결 vs. 헛수고하기
너무 당연한 이야기이긴 하지만 개발자는 ‘문제 해결’을 사랑한다. 컴퓨터 프로그래밍은 가려운 곳을 긁어주는 한 가지 방법일 뿐이다. 영국의 풀스택 소프트웨어 엔지니어 겸 웹호스팅 업체 호스팅 데이터(Hosting Data) 공동 설립자 퍼시 그룬왈드는 “문제 해결을 즐기지 않는다면 소프트웨어 개발을 즐길 수 없을 것”이라고 언급했다.콘트라스트 시큐리티(Contrast Security)의 소프트웨어 엔지니어 제이콥 메이지스-해스킨스도 소프트웨어 개발을 퍼즐을 푸는 것에 비유하면서, “개발자로서 코드에 새로운 기능을 구축하는 도전을 좋아한다. 마치 매일 풀어야 할 새로운 퍼즐이 있는 것 같다”라고 전했다.
반대로 문제에 오랜 시간을 할애했는데 이미 해결책/솔루션이 있다는 사실을 발견하는 것은 실망스러울 수 있다. 소프트웨어 개발사 위즈풀(Whizpool)의 설립자 겸 CEO 지산 아리프는 “이미 있는 것을 다시 만드느라 계속해서 쓸데없는 수고를 들여야 하는 것을 싫어한다”라고 말했다.
프로그래밍에서 이러한 일이 많이 발생하는 이유는 작업을 수행하는 방법이 매우 많고, 각 방법마다 트레이드오프가 있기 때문이다. 개발자는 어떤 트레이드오프가 자신의 애플리케이션에 가치를 제공하는지 선택해야 한다. 하려던 일을 이미 다른 사람이 했다는 걸 깨달았을 때 실망스러울 수도 있다. 하지만 하려는 일에 더 잘 맞는 것처럼 보이는 또 다른 방법이 있다는 걸 알게 될 때도 흥분될 수도 있다.
그룬왈드는 동료 개발자를 능가할 수 있다는 사실을 아는 것이 성장을 향한 원동력으로 작용할 수 있다고 말했다. 그는 “소프트웨어 개발에는 동일한 작업을 수행하는 여러 방법이 있다. 여기서 최고의 방법을 찾는 것은 항상 도전이다. 이러한 도전은 매우 흥미롭다. 창의적이고 다양한 옵션을 테스트하는 것은 소프트웨어 엔지니어의 좋은 점 중 하나다”라고 덧붙였다.
기교 vs. 절차
대부분의 개발자는 소프트웨어를 만드는 과정에서 만족감을 느낀다고 밝혔다. 아리프는 “다른 사람이 쓸 수 있는 무언가를 만들 수 있다는 점을 좋아한다. 코드로 장인이 되는 것과 같다”라고 말했다. 10년 경력의 개발자이자 엔지니어링 부문 관리자 알렉세이 수티긴도 “소프트웨어 개발자라는 직업에서 가장 좋은 점은 순수한 생각에서 새로운 것을 창조할 때 느끼는 마법 같은 감각이다. 어린 시절 마법사가 되고 싶었고, 개발자는 현대 세계의 마술사처럼 보인다”라고 설명했다.장인이 심혈을 기울여 만든 책상이나 수납장을 보며 특별한 만족감을 느끼는 것처럼 개발자도 최종 결과물을 보는 것에서 행복을 얻을 수 있다. 프리랜서 개발자 네트워크 톱탈(Toptal)의 수석 프론트엔드 엔지니어 코치 다니엘 지아누는 “기계와 소통할 수 있다는 것이 마치 초능력처럼 느껴진다. 의료 시스템을 통해 환자를 돕고, 자연 속 방사능 수치를 모니터링하며, 친구들과 포커 토너먼트를 관리하는 데 (소프트웨어 개발을) 여러 번 사용했다”라고 말했다.
소프트웨어 개발 컨설팅 업체 넥시엔트(Nexient)의 엔지니어링 부문 부사장 네이트 베렌트-스필슨은 “(소프트웨어 개발자로) 가장 만족스러운 점은 직접 개발한 소프트웨어를 쓰는 사람들을 보는 것”이라며, “이를 말하고 다니진 않지만 예를 들어 카운터에 있는 사람이 우리가 만든 화면을 두드리거나 아니면 모바일 앱을 사용하는 배달 기사나 소매업 종사자를 보면 매우 만족스럽다”라고 전했다.
반면에 몇몇 개발자는 이렇게 무언가를 만드는 것과 동떨어진 업무 측면을 지적했다. 가장 싫어하는 것은 회의였다. 그룬왈드는 “소프트웨어 개발자가 되는 것에는 종종 비생산적이고, 반복적이며, 관련 없는 회의가 포함된다”라고 언급했다.
IT 교육 사이트 에이컴파일러(aCompiler)의 설립자 겸 수석 개발자 라지브 베라도 이에 동의하면서, “대부분 이러한 회의는 어떤 가치도 더하지 않는다”라면서, “가끔 (비창의적인) 문서도 작성해야 하는데 솔직히 개인적으로는 이를 별로 좋아하지 않는다”라고 덧붙였다.
일반적으로 기업 환경에는 더 많은 프로세스가 포함되며, 이는 개발자를 좌절과 불만을 야기할 수 있다. 핀테크 전문 채용 업체 EC1 파트너스(EC1 Partners)의 경영 컨설턴트 키샨 파텔은 “기업에서 일하는 것은 때때로 자율성에 영향을 미칠 수 있다”라고 말했다. 베렌트-스필슨은 “끊임없는 불필요한 요식 행위로 개발자는 코드를 표현할 수 있는 자유와 유연성을 잃게 된다. 팀이 코드보다 정책과 더 많이 씨름하는 것을 보면 좌절한다”라고 지적했다.
파이썬 개발 업체 STX 넥스트(STX Next )의 수석 개발자 라팔 갓코스키는 다음과 같이 균형을 맞춘다고 밝혔다. “모든 절차가 개발을 방해하지만 좋은 소프트웨어를 만들기 위해서는 어느 정도의 절차가 필요하긴 하다. 핵심은 절차가 개발자의 시간을 너무 많이 빼앗지 않도록 하는 것이다. 매일 15분가량의 팀 스탠드업 미팅을 한 시간의(또는 더 긴) 회의로 바꾸는 것이 문제 있는 절차의 가장 일반적인 예”라고 설명했다.
팀워크의 기쁨 vs. 협업의 어려움
작업의 ‘절차’ 측면의 대부분은 팀워크와 협업의 맥락에서 발생한다. 많은 개발자에게 다른 사람과 함께 일하는 ‘동료애’는 직업에서 좋은 점 중 하나였다. 예를 들어 파이썬 개발자 겸 사이버 보안 엔지니어 카렙 찬드자마다 주니어는 “디자인에 대해 생각하고 이야기하고, 적절한 답을 찾기 위해 각각의 찬반을 저울질하며, 혼자서는 결코 할 수 없는 멋진 제품을 작업하는 것이 좋다”라고 말했다.톱탈의 역량 코치 및 인재 운영 부문 책임자 조 과라치오는 “구체적으로 기업 차원에서 다양한 유형의 전문가와 교차 기능적으로 작업해보는 경험은 장기적, 단기적 커리어 개발 모두에 보람 있고 흥미로울 수 있다. 예를 들면 자사의 직원들은 프로젝트 관리자, 제품 관리자, 비즈니스 운영팀 등과 함께 일할 수 있는 기회를 좋아한다”라고 전했다.
반면에 협업은 개발자가 코딩에 소비할 수 있는 많은 에너지를 잡아먹을 수 있다. 메이지스-해스킨스는 “소수의 팀이 협업할 때조차도 소통 및 조율하는 데 드는 시간과 번거로움이 싫다. ‘맨먼스 미신(Mythical Man Month)’에서 나오는 것처럼 프로젝트에 참여하는 사람의 수가 증가하면 의사소통 경로의 수도 폭발적으로 증가한다. 실제로 경험하기도 했다”라면서, “하지만 기능이 고객에게 유용하고 가치를 제공할 수 있도록 하려면 모두가 필요하다”라고 그는 전했다.
최악의 시나리오에서는 협업이 동료 사이의 적대적인 관계로 바뀔 수 있다. 수티아긴은 “대기업에서는 1년 내내 열심히 일하는 것이 일반적이지만 결국 프로젝트가 중요하지 않은 것으로 종결되거나 영향력이 너무 작아 승진하지 못할 수 있다. 따라서 프로젝트를 신중하게 선택해야 한다. 팀에 경쟁자가 있다면 (경쟁자가) 다른 것을 선택하도록 설득해야 한다. 세상이 원래 그렇다고 말할 수 있지만 이것이 소프트웨어 엔지니어가 되는 이유는 아니다”라고 말했다.
일과 삶의 균형 vs. 불균형
소프트웨어 개발은 조립 라인에서 일하는 것과는 다르다. 과라치오는 “소프트웨어 개발은 원격근무뿐만 아니라 프리랜서 작업에도 적합하다. 전 세계 어디서나 다양한 프로젝트에 참여할 수 있는 자유는 많은 인재에게 매우 매력적이다”라고 언급했다. 그리고 지난 몇 년 동안, 그 유연성은 더욱더 확장됐다. 의료 애널리틱스 회사 린타스(LeanTaaS)의 수석 소프트웨어 엔지니어 티나 리우는 “하루 중에서 원하는 대로 시간을 할당할 수 있는 충분한 자유가 있다”라고 말했다.하지만 9시부터 5시까지로 고정되지 않은 것이 부담스러울 수도 있다. 그룬왈드는 “소프트웨어 개발자는 작업량이 많다. 엄청난 양의 프로젝트를 저글링하고 한 작업에서 다른 작업으로 점프하면서 지속적으로 멀티태스킹을 한다. 야간, 주말, 공휴일 등에 상관없이 지속적으로 시간외 근무를 해야 하고 통상적이지 않은 업무 시간에 일을 해야 한다”라고 전했다.
캐릭터 컬큘레이터(Character Calculator)의 설립자 부라크 외즈데미르는 “많은 경우 다른 사람과의 상호작용을 거의 하지 않고 컴퓨터 앞에서 장시간 일하는 모습을 발견할 수 있다. 그리고 항상 새로운 것이 있거나 개선할 수 있는 것이 있기 때문에 일이 진정으로 끝나지 않았다고 느낄 수 있다”라고 덧붙였다.
그리고 소프트웨어 개발이 물리적으로 엄청나게 까다로운 작업은 아니지만 문제는 분명히 있다고 외즈데미르는 지적했다. 그는 “키보드 위에 웅크린 채 하루를 보내기 때문이다”라고 말했다.
리우는 “개인적으로 싫어하는 것이 있다면 바로 종일 컴퓨터를 응시해야 한다는 점이다. 눈, 목, 등에 부담이 간다. 그래서 이따금 눈을 편안하게 하고 근육의 긴장을 풀어주기 위해 휴식을 취하고 운동을 하라고 스스로에게 상기시킨다”라고 설명했다.
꿈의 직업 vs. 실제 직업
결국 개발자로서 겪게 될 대부분의 경험은 일반적인 것이 아니라 어디에 정착했는지에 따라 결정되며, 이는 개인의 행복과 웰빙에 큰 영향을 미칠 수 있다. 웹 디자인 및 SEO 회사 카본 디지털(Carbon Digital)의 CEO 제러드 레드베터는 “모든 조직이나 부서가 동일하게 만들어지는 것은 아니다”라고 언급했다.만약 모두가 개발자인 부서에 있다면, 그곳은 괜찮은 장소일 확률이 더 높다. 여기서 문제를 삼고자 하는 건 관리직에 있는 비개발자다. 모든 것이 지금 완료되길 원하지만 절차를 정의하거나 확립하고 싶지 않은 사람말이다. 지라(Jira) 또는 애저 데브옵스(Azure DevOps) 등의 프로젝트 관리 시스템을 활용하라고 추천해도, 이해하지 못하는 이러한 관리자는 이를 거부하고 MS 워드/엑셀/파워포인트를 가리킨다. 또 애자일/스크럼 등의 절차를 활용하자고 권장해도 여전히 워터폴 모드에서 작업할 수 있다.
찬드자마다는 비슷한 불만을 표명하면서, “미래를 생각하지 않는 동료나 관리자가 있다는 건 스트레스”라고 강조했다. 그는 “미래에 이 제품을 어떻게 구상하느냐를 생각하지 않는다. (개발자는) 미래의 길을 설정하기 위해 지금 어떤 조치를 취할 수 있는지 생각해야 한다”라고 덧붙였다.
그럼에도 소프트웨어 개발은 수요가 많은 기술이며, 갓코스키에 따르면 “의심할 여지없는 (개발자라는 직업의) 장점은 일자리를 구하기가 매우 쉽다는 사실이다.” 또한 파텔이 언급한 것처럼 개발자는 꽤 많은 보수를 받는다. 그는 “소프트웨어 개발 분야에서 일하는 것의 재정적 보상과 경력 발전은 무엇과도 비교가 안된다”라고 말했다.
약간의 시간과 노력으로 대부분의 개발자는 자신이 사랑하는 것은 더 많이 하고 싫어하는 것은 적게 할 수 있는 직업을 찾을 수 있다.
ciokr@idg.co.kr