페이스북 Modern PHP User Group이현석 님이 쓴 책이다. 2월 초에 업투데이트북스(이현석 님이 만든 출판사다)로부터 “읽어보시고, 사람들에게 소개할만하다고 생각되시면” 블로그에 소개해 달라는 요청을 받았다. 저자를 한 번도 만나 본 적은 없지만, 페이스북의 그룹에서는 종종 좋은 정보를 얻고 있었다.

책을 읽어 보니 소개할 만할 뿐 아니라 추천한다. 나도 신입 개발자 교육을 이 책으로 진행하면 될 것 같다.

현대적 PHP를 다루는 책

PHP의 기본적 문법을 알려 주는 책은 많다. 나도 학교 도서관에서 빌린 그런 책으로 처음 PHP를 공부했다. 그런 책은 구식 코드와 방법을 설명하는 경우가 많다. 내가 배운 책에서는 register_global 옵션이 켜져 있는 것으로 가정한 채 가르치고 있어서 $_GET, $_POST를 사용해야 한다는 것을 구글링해 찾아야만 했다. 컴퓨터에 설치한 내 PHP에는 register_global 옵션이 꺼져 있었던 것이다(이렇게 써야 한다).

글을 읽고 쓸 수 있게 됐다고 글을 잘 쓰는 것이 아니듯이, 개발언어의 문법을 익혔다고 해서 코드를 잘 짜는 게 아니다. 글을 잘 쓰려면 작문 공부를 해야 한다. 코드도 더 잘 작성하는 법을 배워야 한다. 신입 개발자들에게 더 필요한 것은 더 많은 문법 지식이 아니다. 그건 그것대로 쌓아 나가야 하지만 말이다.

초급 이후 시기 발전에 꼭 필요한 것은 효율성과 코드 품질을 높일 각종 도구, 더 나은 코딩 방법, 구조에 대한 지식이다. 이런 것들을 나는 JAVA나 js에서 배운 것을 토대로 찾거나, 블로그 등에서 우연히 접하거나, PHPStorm 같은 IDE(통합개발환경)에서 역으로 유추해야 했다.

《바쁜 팀장님 대신 알려 주는 신입 PHP 개발자 안내서》에는 내가 10년 넘게 PHP 코딩을 해 오며, 실력을 끌어 올리기 위해 온갖 사이트에서 드문드문 접했던 지식들이 요약적으로 잘 정리돼 있다. 이제 막 PHP 초보로 발을 뗀 사람, 몇 년 동안 PHP 코딩을 해 오며 이런 저런 지식을 쌓아 이제는 중급 개발자가 됐다고 개발자에게 이 책은 꽤 도움이 될 것이다. 초보는 로드맵을 알 수 있을 것이고, 중급 개발자는 드문드문 빠져 있던 지식을 좀더 정리해서 채울 수 있을 것이다.

이 뒤는 책에서 다루는 내용을 내 나름으로 분류해서 소개하려고 하는데, 요약적으로 알고 싶다면 업투데이트북스의 책 소개 페이지에 가면 된다. 정리가 잘 돼 있다.

효율성과 코드 품질을 높일 각종 도구

효율성과 코드 품질을 높일 수 있는 각종 도구는 사실 PHP에만 국한되는 것들이 아니다. 사실 나는 다른 경로로 지식들을 접하고 PHP에 관련 도구를 적용했다.

이 책은 나처럼 사수가 없는 개발자의 삽질 시간을 많이 단축시켜 줄 것이다. 사수가 있더라도, 왜 이걸 사용하는지 잘 이해할 수 있게 해 줄 것이다.

이 책은 앞부분에서 버전 관리 도구인 Git, PHP 패키지 관리자인 Composer, 가상머신인 Docker를 다루고 있다. Git은 비단 PHP 개발자뿐 아니라 모든 개발자가 꼭 익혀야 한다. Composer 또한 PHP 개발자라면 피해갈 수 없다.

가상머신 Docker는 초보에게는 개념이 다소 어려울 수도 있고, 경우에 따라 꼭 필요하지는 않을 수도 있다. 어렵다면 건너 뛰고 나중에 읽어도 좋다.

PHP의 DB 제어 도구인 MySQLi와 PDO의 차이를 설명하고 있는 부분도 좋다. 아직도 mysql_*를 사용하는 개발자라면 빨리 PDO로 갈아타도록 하자.

ORM

ORM은 객체 관계 매핑(Object-relation Mapper)이라고 부르는 기술 용어다. 한 마디로 Person이라는 클래스가 있다고 가정하면, DB를 이런 식으로 사용할 수 있게 해 주는 기술이다.

// select
$person = Person::find(1); // id = 1인 person을 가져온다.

// insert 혹은 update
$person->save();

// delete
$person->delete();

sql을 직접 작성하는 것보다 효율성과 가독성이 엄청 높아진다(복잡한 쿼리가 필요한 경우 직접 sql을 작성해 작업할 수도 있다). 나는 Laravel를 사용하면서야 비로소 ORM을 제대로 쓰게 됐는데 그 편리함이란. 나는 왜 진작 이런 걸 알지 못했을까 하는 생각이 들었다.

IDE

IDE는 간단히 말해 PHPStorm이나 NetBeans, Eclipse PDT 처럼 기능이 엄청나게 많은 개발 프로그램을 말한다. IDE의 편리한 기능들을 거의 활용하지 않는 개발자들이 많다. 그 편리함을 배운 적도 없고, 사용해 본 적도 없기 때문에 익숙한 대로 개발하는 게 굳어져서 그럴 것이다. 이 책에서 IDE에 한 장을 할애애 설명하는 게 반가웠던 이유다.

초보 시절에 IDE의 이런 저런 기능들을 열심히 사용한다면 그렇게 굳어질 확률이 줄어들 것이다. 특히 ‘메모장에 개발하는 뛰어난 개발자’라는 농담은 농담으로만 듣고 버리도록 하자. 이유는 책에 나온다.

더 나은 코딩 방법

보안 코딩, 코딩 컨벤션 일반, PSR(PHP 표준 권고, PHP Standards Recommendations)에 대해서도 설명하고 있다.

보안 코딩에 나오는 SQL 인젝션이나 유효성 검사, 출력 예외 처리, CSRF, 비밀번호 처리 등에 대한 정보는 강력 추천한다. 오래 개발하며 어찌저찌 다 알게 됐던 것들이지만 정말 여기저기서 따로따로 공부해야만 했다.

코딩 컨벤션과 PSR은 더 나은 개발자가 되기 위해 반드시 알아야 하는 지식이라고 할 수 있을 것이다. PSR에 대해서 깊이 알 필요는 없겠지만, 이런 게 있다는 것을 알고 있어야 한다.

구조에 대한 지식

MVC 패턴에 대해 설명하는 부분은 초보 개발자들에게 가장 추천하는 부분이다. 혼자 공부하면 알기 힘든 부분이기도 하다.

학원에서 배웠다면 아마 대충은 배웠을 것이지만 특별히 추천하는 이유는 직접 프론트 컨트롤러와 MVC 패턴으로 프로젝트를 작성하는 예제가 있기 때문이다. 학원에서 배울 때는 MVC가 무엇인지 설명한 뒤, 프레임웍 사용법을 배우는 경우가 많을 것이다. 그러면 초보 입장에서는 “아, 뭔가 마법을 부려 놓은 도구다” 하는 생각을 하게 된다. ‘저것은 고급, 내가 넘볼 코드는 아니다’ 하는 생각을 하게 될지도 모르겠다. 하지만 기본적 코드를 작성해 직접 구현해 보면 원리를 쉽게 이해할 수 있다.

HTTP와 REST는 굳이 찾아 읽지 않으면 개념을 잘 요약한 글을 찾아 보기 힘들다. 이 책은 요약적으로 핵심만 정리하고 있어서 나에게도 도움이 됐다. 언젠가 찾아 읽어야지 하던 내용이었다.

다만 초보자에게 좀 어려운 내용일 수도 있겠다. 그렇더라도 이해가 가지 않는 기본적인 내용들을 좀더 찾아 보길 권한다. 웹 개발자에게 HTTP 프로토콜은 한 번 꼭 봐야 할 내용이다. REST는 오늘날 유명해진 개념이기 때문에 역시나 알아 둬야 한다. 잘 몰라도 코딩하는 데 문제는 없을 테지만 발전하기 위해서는 피할 수 없는 부분이다.

맺으며

《바쁜 팀장님 대신 알려 주는 신입 PHP 개발자 안내서》는 초보자가 중급으로 발전하기 위해 필요한 것들을 대부분 모아 뒀다. 물론 이 책에서 읽은 것으로 만족하면 안 된다. 깊이 들어가지는 않기 때문이다. 길잡이로 생각하고 읽자.

책에 더 필요해 보이는 것은 테스트에 관한 부분이다. 테스트 주도 개발에 관한 책은 많은데, PHP로 설명된 책은 별로 없어서 아쉬웠다. ‘실전 웹 개발에선 테스트를 어떻게 작성해야 할까?’ 하는 문제를 푸는 건 여전히 나에게도 숙제다.

이 책과 함께 《Modern PHP》를 읽기를 추천한다. 역시 현대적 PHP 문법과 도구들을 다루고 있는 책이다.

필독해야 할 글 중 온라인에서 볼 수 있는 글은 PHP The Right Way다(이 책에도 추천돼 있다). 한글 번역이 완료돼 있으니 부담없이 보자.

기타

아래는 2018년 5월 5일을 기준으로 한 책 정보다.

가격은 3만 원, 종이책은 없다. 예스24에서는 크레마 혜택가 1만 5000원에 살 수 있다. 알라딘에서는 쿠폰 할인가 2만 7000원이다. 리디북스와 반디앤루니스는 정가로 팔고 있다.