2017년 12월 15일 [삽질의 시간]

어떤 아이디어를 가지고 어플리케이션 A를 만들기 시작하면 낭비되는 시간 중의 20%는 완전히 삽질에 쓰이게 된다.

 

가령 어떤 회사의 클라우드 서비스를 신청해서 모든 세팅을 마쳤는데 다른 회사의 서비스로 옮겨가야 하는 경우에 필요한 패키지를 다시 설치하는 것이다. Anaconda를 설치하고 Environment를 로드하면 이 문제에서 시간을 획기적으로 단축할 수 있는데 이 글을 쓰는 시점에서야 기억이 났다는 것이 문제다. 제대로 설치되지 않은 패키지가 전체를 망쳐버려서 오도가도 못하는 상황이 그렇고, 방화벽 설정을 했는데도 여전히 연결을 받아주지 않는 서버를 들여다보는 일도 그렇다.

 

다른 20%는 추상적인 설계로 인해서 지금까지 해 온 작업을 롤백하고 다시 돌아가는 것이다. 제대로 설계를 해놓지 않으면 프로그래밍 과정에 그 때 그 때 방향을 설정하게 되는데, 시간이 지나서 이미 짠 코드가 길어진 후에 이것이 큰 어둠의 빛을 발한다. 경험상 이 과정이 제대로 되지 않으면 절대로 프로그램은 완성되지 않는다. 계속해서 제자리를 맴돌다 지쳐버려 개발 의욕 자체가 사라지기 때문이다.

 

다른 20%는 모르는 것에 대한 삽질에 쓰인다. Android Studio를 배우거나, 새로운 라이브러리를 배우거나 익숙지 않게 리눅스를 쓰고 Python을 쓰면서 한글이 깨지는 문제 등에 대해서 삽질을 하다보면 배우는 것이 많다고 느낄 수도 있지만 정리해두지 않으면 그냥 삽질의 시간으로 지나간다.

 

이런 부차적인 작업이 끝나고 난 다음에 실제 개발에 소요되는 시간은 얼마 되지 않는 것 같다. 어플리케이션의 전체 설계와 구체적으로 필요한 클래스와 함수명, 데이터베이스의 구조가 모두 짜여져있고, 모든 API들에 대한 실행 권한과 부가적인 세팅작업이 모두 끝난 상황에서는 말 그대로 코딩만 하면 되기 때문이다. 이미 어플리케이션은 프로그램으로만 짜이지 않아서 그렇지 거의 완성되어 있다. 이 작업이 40%를 차지하는 것도 아니다. 20%의 시간은 테스팅과 최적화에 쓰인다. 20% 정도의 시간이 코딩 이외의 시간으로 쓰이는 것이다.

 

훌륭한 개발자가 무엇인지는 모르겠지만 이런 부차적인 시간을 줄일 수 있는 사람이 아닐까 싶다.

내공이 있다는 것은 왠만한 지식은 갖추고 있으며, 설계 단계부터 최적화와 성능을 고려하고, 불필요한 일들을 굳이 하지 않는다는 것이 아닐까 싶다.

Leave a Reply