1. 기능
  2. 권한관리
  3. 아름다움

이 3가지 가치 사이에서 균형을 잡는 것이 개발자가 일상적으로 마주치는 문제가 아닐까 싶다.

기능

단순히 어떤 게 된다 안된다가 아니라, 어떤 기능이 어떤 제한 내에서 된도록 만드는 게 개발자가 일을 했다고 말할 수 있는 기본 조건이다.

웹 페이지의 응답이 100ms 안으로 된다던지, 10만 PV를 웹서버 2대로 서비스 한다던가, 새로운 타입의 데이터 관리기능을 1주일 안에 갖춘다던지.

세부적으로 보자면 어떤 데이터 처리작업을 전제로 속도, 안정성, 트래픽, 저장공간, 처리능력, 공수 등등의 여러 자원을 어떻게 배분할 것인가를 포함하는 큰 영역이다.

개발자가 개발자이기 위한 필요조건이 바로 이 기능을 개발할 수 있는가 이다.

권한관리

다중 사용자를 전제로 하는 서버는 당연하지만, 서버만의 문제는 아니다. 소프트웨어가 들어있는 장비는 당연히 인터넷에 연결되는 지금, 클라이언트에도 매우 중요한 문제다. 그렇다. 로그인의 문제는 물론이고, 보안을 포함하는 문제이다.

소프트웨어가 신뢰를 얻기 위해 매우 중요한 요소이다. 아무 문제가 없다면 신경쓰지 않았더라도 티가 나지 않는다. 하지만 장애 없는 시스템은 세상에 존재하지 않기에 언젠가는 장애가 생긴다. 특히 기업의 경우, 그리고 경쟁이 심할 경우에는 특히 더 중요하다. 한방에 훅 가는 수가 있다.

아름다움

소스 코드, 설정 파일, 설계 등등의 단순함에서 나오는 아름다움이다. 오해하지 말아야 할 것은, 코드 라인수가 적다고 단순한 게 아니다.

알기 쉽게 돈으로 말하자면, 문서도 주석도 사전지식도 설계도 없이 오직 코드만 가지고 있을 때의 분석 및 유지보수, 개선, 폐기에 필요한 전체 비용(TCO, Total Cost of Ownership)을 뜻한다. 물론 개발문서 같은 추가 정보를 무시해도 된다는 것이 아니다. 그런 정보가 있다면 적극적으로 활용해 비용을 더욱 낮춰야 한다. 하지만 보조 정보만으로는 한계가 있다. 출발점인 코드 자체가 아름다워야 한다.

코드를 읽은 대로 이해하고, 이해한대로 수정해도 아무런 문제가 없는 코드가 바로 절대적으로 아름다운 진리의 코드다.