소프트웨어는 Simple 해야 합니다.

by 박동기

소프트웨어는 단순해야 합니다. 기획도 단순해야 하고 설계도 단순해야 합니다. 소스 코드도 깔끔하고 단순해야 하고 사용자 인터페이스도 단순해야 합니다. 단순해야 가장 좋은 소프트웨어입니다. 소스 코드를 복잡하게 만드는 것은 스스로 감옥에 갇히는 것입니다. 복잡하게 코드를 짜게 되면 그 프로젝트에 영원히 매인 몸이 됩니다. 짧은 인생에 다른 해야할 일들이 많은데 복잡한 코드에 발목이 잡혀서 앞으로 한 발짝도 나가지 못합니다. 복잡한 코드 감옥에 본인을 구속하면 안 됩니다. 복잡성은 감옥이고 단순성은 자유입니다.


버그는 보통 복잡성을 줄이지 못할 때, 그리고 코드를 이해하지 못하고 코딩을 했을 때 발생합니다. 코드를 서서히 복잡하게 만들수록 생산성이 떨어지고 누군가는 그 복잡한 코드를 잘못 사용할 가능성이 높아집니다. 그리고 그 코드가 돌고 돌아 개발자 본인이 잘못 사용할 수도 있습니다. 코드가 단순할수록 버그가 줄어듭니다. 프로그램의 모든 것이 단순해지도록 늘 노력해야 한다. 다른 개발자를 위해서 소스 코드는 단순하게 코딩을 해야 한다. 사용자에게 단순한 프로그램을 제공해줘야 최고의 기술이다.


엔지니어는 욕심이 많아 모든 기능들을 다 넣고 싶어 합니다. 하지만 복잡한 프로그램은 사용자에게 머리를 아프게 하고 더 멀리하게 됩니다. 고생해서 만든 복잡한 프로그램이 시장에서 외면 받고 사장되게 됩니다. 엔지니어는 소스코드를 간단하게 작성을 해줘야 버그가 줄어들고 그 코드를 보는 다른 개발자를 배려해줘야 합니다. 쓰레기 코드를 보면 생산성이 떨어지고 뇌가 더 많은 에너지를 사용해야 합니다. 뇌는 생산적인 것에 사용을 해야 하는데 쓰레기 코드를 분석하는 비생산적인 것에 에너지 낭비를 하게 됩니다.


코드를 쓰레기처럼 짜는 사람과는 같이 일을 하고 싶지 않습니다. 범용성이 없는 암호 같은 코드들을 작성하면 그 프로젝트는 망하게 됩니다. 아슬아슬하게 곡예 하듯이 그 쓰레기 코드를 짊어진 채 개발자 본인이 평생 갖고 가야 합니다.

개발자의 생산적인 코딩을 위해 단순하려면 복잡한 코드를 리팩터링 해야 합니다. 변수 선언 시에도 Naming 규칙에 맞게 선언을 해주면 소스가 깔끔해져 가독성이 높아집니다. 책도 술술 잘 읽히는 책이 읽는 반면 중언부언해서 무슨 말을 하는지 헷갈릴 때가 있습니다. 소프트웨어 코드도 잘 읽히는 책처럼 쉽고 논리적으로 작성을 해야 합니다.


소프트웨어에서 가장 중요한 것은 사람입니다. 소프트웨어는 인간이 생산한 제품이고 오로지 인간에게 도움을 주기 위한 목적으로 쓰입니다. 다른 개발자에게 친절하게 해 주고 코드에는 친절하게 주석을 달아주면 좋습니다. 좋은 프로그램 성공은 혁신이 아니라 꾸준한 실행에서 나옵니다. 좋은 아이디어가 있더라도 실행하지 않는 사람보다 꾸준히 실행하고 유지 보수하는 사람이 성공합니다. 훌륭한 프로그램은 사용자의 명령을 정확하게 이해하고 사용자가 예상한 대로 동작합니다. 그리고 단순한 프로그램이 되어야 합니다.

소스코드는 단순하게 작성해야 합니다. 단순성을 추구하고 소프트웨어 설계 원칙을 따를 때 훌륭한 소프트웨어가 만들어질 확률은 99.9퍼센트입니다. 단순한 프로그램이 성공합니다.

keyword
작가의 이전글아는 게 힘인 줄 알았는데, 모르는 게 약