제가 맡은 게임 개발팀은 모두 Unity3D 엔진을 이용해 iOS와 안드로이드를 위한 모바일 게임을 만들고 있습니다. 클라이언트 개발 언어는 C#을 사용하고 있습니다. 따라서 “코딩 스쿨”의 초점은 주로 객체지향 프로그래밍, 디자인 패턴, 리팩토링, 테스트, 소프트웨어 엔지니어링에 맞추었습니다. 개발팀에 필독서로 추천한 책은 다음과 같습니다.
[1] Design Patterns: Elements of Reusable Object-Oriented Software
싱글톤, 팩토리, 템플릿 메소드 등 디자인 패턴을 정리한 고전 중에 고전입니다. 디자인 패턴이라는 말 자체를 모르는 개발자도 없지만, 모든 고전이 그렇듯 정작 이 책을 직접 읽은 개발자도 손에 꼽을 정도로 적습니다. 다른 디자인 패턴 책들은 전부 이 책을 풀어서 설명하는 수준이므로, 디자인 패턴을 제대로 공부하고 싶다면 반드시 원전을 읽어 보시라고 권합니다.
[2] Refactoring: Improving the Design of Existing Code
모바일 게임도 10 명 이상의 개발자가 1년 이상 기간 만드는 경우가 많아지면서 대충 돌아가는 코드가 아닌 지속적인 유지 보수가 필수가 되었습니다. 출시 이후에도 지속적인 업데이트를 통해 유저 이탈을 막아야 하는 만큼 유지보수가 하기 쉬운 코드를 만들기 위해 코드를 지속적으로 리팩토링할 필요가 있습니다.
이 책은 어떤 코드가 리팩토링이 필요한지 냄새(smell)를 맡는 방법을 알려줍니다. 문제 해결이란 문제 인식에서 출발하는 법이고, 어떤 코드가 나쁜 코드이고 개선이 필요한지 아는 것부터 리팩토링이 시작됩니다.
[3] Clean Code: A Handbook of Agile Software Craftsmanship
여러 명이 개발자가 같이 코드를 작성하고 유지 보수하기 위해서는 읽기 쉽고 이해하기 쉬운 코드를 작성하는 것이 필수입니다. 이 책은 C#이 아닌 Java를 예를 들고 있지만, 객체지향 프로그래밍 언어를 사용할 때 코드 가독성을 위해 어떤 부분을 고민해야 하는지 명쾌하게 설명하고 있습니다.
[4] Effective C# (Covers C# 4.0): 50 Specific Ways to Improve Your C# (2nd Edition)
생각보다 많은 개발자가 내가 사용하는 언어가 어떻게 동작하는지 정확한 의미(semantics)을 모르고 쓰고 있습니다. 또한 프로그래밍 언어는 단순히 문법(syntax)과 의미(semanitcs)만 알면 되는 게 아니라 해당 언어를 사용하는 사람들의 문화(idiom)을 배워야만 그 언어를 제대로 사용하는 것이라 할 수 있습니다. 이 책은 C# 사용 시 간과하기 쉬운 내용들을 잘 정리하여 설명하고 있습니다.