남부끄러운 코드와 이상한 애플리케이션이 생기는 이유
컨텐츠 정보
- 조회 739
본문
필자는 수년 동안 거대한 진흙 더미에서 작업해 왔다. 이 진흙 더미는 여러 명의 개발자가 몇십 년에 걸쳐 작성한 수백만 줄의 코드로 이루어진 거대한 거대한 애플리케이션을 뜻한다. 대부분은 오랫동안 잊힌 상태로 남아 현재의 부서에 전혀 알려지지 않았다. 그럼에도 비즈니스의 기반이자 주력인 애플리케이션으로 조직 외부에 보여주기 부끄러운 코드로 구성돼 있다. 오늘날 많은 사람들이 이런 애플리케이션을 개발하고 있다.
진흙 더미 애플리케이션은 왜 만들어질까? 애플리케이션은 다양한 곳에서 다양한 방식으로 만들어진다. 어떤 줄거리가 있든, 이해하기 어려운 코드가 얽히고설킨 이 모든 애플리케이션에는 몇 가지 공통된 특징이 있다.
낙하산 개발자의 만행
인정하고 싶지 않을 만큼 자주 발생하는 일이다. 어떤 사업자가 비즈니스를 관리하고 회계 계산이가능한 애플리케이션이 필요하다고 치자. 이 사업자에게는 “컴퓨터를 잘 다루는” 걸로 알려졌고, 몇 가지 아주 간단한 코드를 짜깁기할 수 있는 조카가 있다. 우연히 사업자의 한 친구가 조카의 이야기를 들었고, 야심찬 젊은 조카는 아키텍처나 디자인 개념 없이 직접 만든 애플리케이션을 기반으로 사업을 시작했다. 몇 년이 흐른 후 남은 것은 만든 사람만 이해할 수 있는 600만 줄의 무작위로 엉킨 코드 덩어리다.
굴착기 코드
설립자 중 한 명이 많은 원본 코드를 작성하고 수년 동안 원하는 기능을 계속 추가하는 애플리케이션 업체에서 일한 적이 있다. 이 개발자는 “굴착기 코드”라는 말버릇이 있었는데 “굴착기로 흙먼지처럼 많은 코드를 밀어서 무엇이 되고 무엇이 안 되는지 확인하면 된다”라는 의미였다. 물론 존경받는 창업자였기 때문에 이 사람이 만든 코드를 버리고 제대로 다시 작성할 용기를 가진 직원은 아무도 없었다.
단기적인 마감일이 좋은 디자인보다 우선할 때
코딩이 난해하고 마감일이 촉박했기 때문에 팀에 ‘빨리 만들고 나중에 수정한다’는 문화가 생겼고, 그 나중은 절대 오지 않는 경우가 있다. 필자는 아직도 ‘소셜 네트워크’의 해킹 장면에서 얼마나 빨리 코딩하느냐가 성공의 정의였던 것을 생각하면 고개를 절레절레 흔들곤 한다. 빠른 코딩은 유지 관리 외에도 많은 악영향으로 이어진다.
경영진이 주도하는 타임라인
여기서 “경영진”이란 “좋은 소프트웨어가 어떤 것인지 전혀 모르고, 서둘러야 한다는 결정을 내릴 필요가 없는 사람들”을 의미한다. “분기 말까지 특정 기능을 제공하지 않으면 해고한다”는 식의 접근 방식은 우아하고 유지 관리가 용이한 솔루션에 도움이 되지 않는다.
잘못된 초기 결정
훌륭한 토목 기술자라면 누구나 건물은 기초가 전부라고 말하겠지만, 어떤 소프트웨어는 젤리, 모래, 스카치 테이프를 기초로 지어지기도 한다. 초기에 내려진 결정으로 인해 개발은 훌륭하고 건전한 아키텍처와 개발 관행에서 벗어난 경로를 따랐기 때문이다. 좋은 아키텍처와 코딩 관행이 중요하다는 사실을 깨닫게 되면서 ‘고선택성 소프트웨어 개발’이라는 개념, 즉 개발팀이 처음부터 변화의 가능성을 열어두고 스스로를 궁지에 몰아넣지 않도록 노력해야 한다는 생각이 부상했다.
한 명의 “영웅” 개발자
과거 언젠가 중요한 기능을 제때에 해결한 영웅이 등장했다. 이 개발자는 큰 판매 계약으로 이어진 고객 데모를 구해내고 구세주라는 찬사를 받았다. 이후 자신만이 이해할 수 있는 코딩 기술을 사용해 이해할 수 없는 방식으로 ‘자신만의 방식’으로 기능을 구축했다. 이제 이 영웅은 회사를 떠났고, 아무도 그가 한 작업을 이해할 수 없으며, 중요한 기능을 개발한 고객은 얼마 전에 경쟁업체로 옮겼다.
누구나 코딩할 수 있다!
강력한 도구만 있다면 도메인 지식만 있으면 누구나 개발자가 될 수 있다고 생각했던 때가 있었다. (이 개념은 ‘노코드’ 열풍에도 여전히 남아 있다.) 1990년대의 RAD(신속한 애플리케이션 개발)와 CASE(컴퓨터 지원 소프트웨어 엔지니어링) 도구 열풍에 편승해 개발팀에 새로운 회계 애플리케이션의 클라이언트-서버 프로토타입을 만들어 달라고 요청한 경우도 그렇다. 개발팀은 버튼을 떨어뜨리고 온클릭 핸들러를 작성하기 시작했고 뒤도 돌아보지 않았다. 기즈모 덕분에 작동하는 프로토타입을 빠르게 구축할 수 있었기 때문에 처음부터 모든 것이 잘 작동했다. 지금 당장 잘 작동하는데 왜 다시 코드를 써야 하는가? “그냥 프로토타입을 출시하면 되지 않는가?”라는 말에 아무도 반론을 제기하지 못한다면 진흙 더미가 생긴다.
피할 수 없는 일
어떤 식으로든 30년 동안 사용되어 온 애플리케이션이 어느 순간 팀의 새로운 개발자에게 큰 좌절감을 안겨주는 것은 피할 수 없는 일이다. 모두가 좋은 의도를 가지고 있고 수십 년 동안 소프트웨어 개발에 대해 많은 것을 배웠기 때문에 이런 일이 발생하는 것일지도 모른다. 오늘날의 구축 방식과 지금 있는 멋진 프레임워크는 수십 년 후의 개발자에게는 원시적이고 엉성해 보일 것이 분명하다. 아름답게 디자인되고 꼼꼼하게 코딩된 애플리케이션이라도 결국에는 거대한 진흙덩어리가 될 것이라고 생각하면 다소 겸허해진다.
dl-itworldkorea@foundryco.com
관련자료
-
링크
-
이전
-
다음






