코드도 인생과 다르지 않다.
인생을 살다보면 내가 지금 잘 살고 있는 것일까 의문이 들때가 있다. 이 의문은 그 범위를 개발자란 직업으로 좁혀도 다르지 않다. 내가 하고 있는 개발이 맞게 되고 있는지 궁금할 때가 있다. 그럴 때 우리는 어떤 기준으로 코드와 자아를 성찰 해볼 수 있을까?
1. Done, 목적대로 잘 동작하는 코드
- 아무리 쓰여진 코드가 깔끔하고 구조적이라도 목적대로 동작하지 않는다면 좋은 코드라 할 수 없다. 우리가 언제, 어디서, 무엇을 하며 살아가든 가장 중요한 것은 그 일을 하는 목적이다. 내가 하고 있는 이것이 어떤 의미를 갖는지 항상 그 목적을 스스로 상기해야 한다. 상업 개발자는 정해진 시간내에 목표한 기능을 목적에 맞게 구현해 내야 한다.
2. Better, 적절한 추상화, 모듈화로 잘 구조화된 코드
- 원하는 기능대로 동작하는 코드를 구현하여 1차 목적을 이루었다면 이제 코드의 아름다움에 관심을 쏟아 본다. 아름다움은 풍경이나 미술작품에나 어울리는 단어가 아닐까 생각 할 수 있다. 이에 못지 않게 코드도 아름다울 수 있다. 우리 개발자들은 붓과 물감이라는 도구 대신 코드를 사용하는 예술가다. 조금 다른 점은 코드에선 예술적인 기교 보다는 간결하고 명확하며 반복되지 않는 코드가 보는 이로 하여금 아름다움을 느끼도록 해준다. 이런 코드가 보기에만 좋은 것은 아니다. 유지보수가 힘든 코드는 지속성이 없다. 복사와 붙여넣기로 반복되는 관리되지 않는 코드는 우리의 아름다운 결과물 뿐 아니라 우리 인생의 많은 시간을 좀먹는다. 아름다운 우리의 여가를 위해서 아름다운 코드는 필수다.
3. Best, 환경에 대한 이해를 기반으로 잘 최적화된 코드
- 우리가 인생을 살면서 스스로의 자아를 잘 다져나가면 그 이후에는 주변에 관심을 가져야 한다. 이 세상은 혼자 살 수 없고 모든 존재하는 것들은 어떤 식으로든 서로 영향을 주고 받는다. 우리들의 코드도 그렇다. 스스로의 코드를 잘 다져 자아가 튼튼한 코드를 만들어 냈다면 이제 그 코드에 영향을 주고 코드가 영향 받는 환경을 고려해야 한다. 브라우저에서 돌아가는 코드라면 브라우저와 친해야 하고, 엔터프라이즈 서버에서 돌아가는 코드는 이 환경에 친숙해야 한다. 독선적인 사람이 주변을 힘들게 하여 더 많은 에너지를 소모하듯 독선적인 코드는 더 많은 시스템 자원을 점유하여 에너지를 소모한다.
4. Couldn't be better, 사용자를 배려한 코드
- 코드는 컴퓨터라는 기계 위에서 돌아간다. 그래서 우리는 가끔 기계에서만 잘 돌아가면 좋은 코드라고 착각한다. 어떠한 코드도 결국 사람을 위한 것이다. 자본주의도 민주주의도 시스템을 위한 시스템은 없다. 코드도 마찬가지다. 결국 모두 사람을 위한 것이다.
일주일에 한번 쯤은 내 코드와 내 인생을 돌아보자. 우리네 인생도, 우리네 코딩도 더 즐거워 질 수 있길.