소프트웨어는 단순해야 한다. 기획도 단순해야 하고 설계도 단순해야 한다. 소스 코드도 깔끔하고 단순해야 한다. 사용자 인터페이스도 단순해야 한다. 단순한 것이 가장 좋은 소프트웨어이다. 소스 코드를 복잡하게 만드는 것은 스스로 감옥에 갇히는 것이다. 복잡하게 코드를 짜게 되면 그 프로젝트에 영원히 매인 몸이 된다. 짧은 인생에 다른 해야 할 일들도 많은데 복잡한 코드에 발목이 잡혀서 앞으로 한 발짝도 나가지 못한다.
복잡한 코드의 감옥에 본인을 구속하면 안 된다. 복잡성은 감옥이고 단순성은 자유다.
버그는 보통 복잡성을 줄이지 못할 때 발생한다. 또 코드를 이해하지 못하고 코딩을 했을 때 발생한다.
코드를 조금씩 복잡하게 만들수록 생산성이 떨어지고 누군가는 그 복잡한 코드를 잘못 사용할 가능성이 높아진다. 그리고 그 코드가 돌고 돌아 개발자 본인이 잘못 사용할 수도 있다. 그 코드를 이해하는데 뇌의 에너지를 많이 사용해야 한다. 비 생산적이다.
코드가 단순할수록 버그가 줄어들 것이다. 프로그램의 모든 것이 단순해지도록 늘 노력해야 한다. 다른 개발자를 위해서 소스 코드는 단순하게 코딩을 해야 한다. 사용자에게 단순한 프로그램을 제공해줘야 최고의 기술이다. 엔지니어는 욕심이 많다. 모든 기능들을 다 넣고 싶어 한다. 하지만 사용자는 머리가 아프다. 사용자는 그 프로그램을 더 멀리하게 될 것이다. 고생해서 만든 복잡한 프로그램이 시장에서 외면받고 사장되게 된다.
엔지니어는 소스코드를 간단하게 작성을 해줘야 버그가 줄어든다. 그 코드를 보는 다른 개발자를 배려해줘야 한다. 쓰레기 코드를 보면 생산성이 떨어지고 뇌를 더 많이 써야 한다.
뇌는 생산적인 것에 사용을 해야 하는데 쓰레기 코드를 분석하는 비 생산적인 것에 낭비를 하게 된다.
코드를 쓰레기처럼 짜는 사람과는 같이 일을 하고 싶지 않다. 범용성이 없는 암호 같은 코드들을 작성하면 그 프로젝트는 망하게 된다. 그 쓰레기 코드들은 남이 감당이 안되기에 코드를 짠 본인이 평생 갖고 가야 한다. 개발자가 생산적인 코딩을 하려면 코드가 단순해야 한다. 복잡한 코드를 정리하는 핵심 원칙은 항상 기능을 위해 리팩터링 해야 한다. 변수 선언 시에도 Naming 규칙에 맞게 선언을 해주면 소스가 깔끔해져 가독성이 높아진다.
소프트웨어의 근간은 사람이다. 소프트웨어에서 가장 중요한 것은 사람이다. 소프트웨어는 오로지 인간에게 도움을 주기 위한 목적으로 쓰인다. 소프트웨어는 인간이 생산한 제품이다. 사용자뿐 아니라 코드를 보는 다른 개발자까지 생각을 해서 코딩을 해야 한다. 다른 개발자에게 친절하게 해 주고 코드에는 친절하게 주석을 달아주면 더욱 좋다.
좋은 프로그램의 성공은 혁신이 아니라 꾸준한 실행에서 나온다. 좋은 아이디어가 있더라도 실행하지 않는 사람보다 꾸준히 실행하고 유지 보수하는 사람이 성공한다. 훌륭한 프로그램은 사용자의 명령을 정확하게 이해하고 사용자가 예상한 대로 동작한다. 그리고 단순한 코딩으로 개발된 단순한 프로그램이 되어야 한다.
소스코드는 단순하게 작성해야 한다. 단순성을 추구하고 소프트웨어 설계 원칙을 따를 때 훌륭한 소프트웨어가 만들어질 확률은 99.9퍼센트이다. 단순한 프로그램이 성공한다.