Fast campus School

웹 프로그래밍

답을 구할 수 있는 능력을 최대한 빠르게 드리고자 합니다.

웹 프로그래밍 스쿨 이한영 강사님

2017.10.19 | 287 명 읽음

저는 극 초반의 튜토리얼 부분을 제외하면 절대 제가 작성한 코드를 그대로 전달하지 않습니다. 어떤 상황에 어떤 동작 기능이 필요할지 함게 얘기하며 해당 기능을 만들기 위한 조언을 드리고 나서 수강생분들이 직접 코드를 작성하게 합니다. 이 과정에서 어떻게 하면 더 효율적이고 좋은 코드를 작성할 수 있는지 저의 노하우도 전달해 드립니다. 또 실시간으로 리팩토링(코드개선)을 하며 자신의 손으로 코드를 계속해서 발전시킬 수 있도록 도와드립니다. 


간단하게 소개 부탁드립니다.


안녕하세요. 웹 프로그래밍 SCHOOL을 맡고 있는 이한영 강사입니다. 제가 처음 개발을 시작한 건 안드로이드 클라이언트였습니다. 그런데 실제 운영 서비스를 만들려니 클라이언트단의 개발로는 한계가 있다고 느껴졌습니다. 그래서 서버 프로그래밍을 위해 파이썬과 장고를 새롭게 공부했죠. 이후 소프트웨어 마에스트로 과정에서 웹 백엔드와 장고에 대해 더 심도 있는 학습을 할 수 있었습니다. 

패스트캠퍼스에서 강의하기 전까지는 여러 스타트업에서 풀스텍을 지향하는 백엔드 개발자로 재직하며, 백엔드와 프론트엔드를 포함한 웹 애플리케이션의 전반적인 개발을 담당해왔습니다. 지금은 개발에 대한 감을 유지하기 위해 개인 프로젝트를 진행하고 있습니다. 최근에는 오픈소스 코드에 기여하기 위해 파이썬과 장고에 관련된 오픈소스 프로젝트를 연구하고 있습니다. 



왜 파이썬과 장고를 배워야 하나요?


파이썬(Python)은 미 주요 대학의 컴퓨터 기초과목에서 가장 많이 가르치는 언어입니다. 그만큼 초심자가 배우기 좋은 접근성을 가지고 있습니다. 또한 파이썬은 강력한 내장 표준 라이브러리와 다양한 서드파티 라이브러리 생태계를 가지고 있어 개발 생산성이 좋습니다. 파이썬은 하나의 문제는 하나의 답으로 해결한다는 철학을 가지고 있으며, 또한 그렇게 해결할 수 있도록 언어 단계에서 설계되어 있습니다. 이로 인해 파이썬 프로그래머들은 서로의 프로그램과 코드를 쉽게 공유하고 협업할 수 있습니다. 그 증거가 파이썬의 풍부한 서드파티 생태계입니다. 


장고(Django)는 파이썬을 사용한 웹 프레임워크입니다. 장고의 가장 큰 특징은 웹 애플리케이션을 만들기 위한 '대부분의' 기능들이 장고 내부에 이미 내장되어 있다는 것입니다. 또한, 공식 릴리즈 버전에 포함되지 못할 정도로 큰 별도의 기능들은 RESTful API 프레임워크인 Django-rest-framework 등의 서드파티 라이브러리와 같은 형태로 장고와 밀접하게 사용될 수 있도록 제공되고 있습니다. 장고를 사용하면 잘 정리된 장고 공식 문서를 참조하는 것만으로도 훌륭한 웹 애플리케이션을 구성할 수 있습니다. 또한 장고는 이미 굉장히 많은 사용자들을 가지고 있기 때문에 파이썬 라이브러리에도 큰 영향을 끼치고 있습니다. 그래서 웹과 관련된 파이썬의 다른 라이브러리들은 장고에서 자신들이 사용될 수 있도록 작성되고, 또 어떻게 사용해야 하는지 문서를 제공하는 경우가 많습니다. 



커리큘럼을 구성할 때 어떤 점을 중점에 두고 구성했나요?

본 과정의 수강을 생각하시는 분들은 대부분 커리어의 전환을 원하거나, 자신만의 서비스를 구현하고자 하는 분들입니다. 최대한 그러한 분들의 눈높이에 맞춰 저의 프로그래밍 경험과 개발 지식 습득 노하우를 전달하고자 합니다. 


수업에서 첫 번째로 중요하게 생각하는 것은 웹 애플리케이션의 전체적인 구성과 실습입니다. HTML/CSS와 장고 템플릿과 뷰, 장고 모델과 데이터베이스, 이를 서비스하기 위한 배포 환경 구성, 배포 환경을 위한 보안 요소들과 실제 AWS로의 배포를 위한 Docker의 사용 등. 실제 서비스를 만들기 위한 모든 과정을 바닥부터 완성까지 혼자서 구현할 수 있도록 계속해서 반복적으로 프로젝트를 진행합니다. 작지만 계속해서 기능이 하나씩 추가되는 프로젝트를 몇 주간 여러 번에 걸쳐 만들다 보면, 자연스럽게 혼자서 프로젝트를 구성할 수 있게 됩니다. 


이론지식은 실제 프로젝트를 진행하기 위해 필요한 부분과 전체적인 그림을 파악하는 데에 유용한 지식을 전달하는 것에 가장 큰 비중을 둡니다. 파이썬의 멋진 기능들은 무궁무진하지만, 프로그래밍을 처음 배우시는 분들에게 매직 메서드(Magic Method)나 코루틴(Coroutine), 비동기처리, 멀티쓰레드(multi-thread) 프로그래밍을 몇 주 동안 가르치면 이해도 안 되고 그저 어렵고 지루하다고 느낄 뿐이기 때문이죠. 



또 하나는 스스로 찾아서 해낼 수 있는 능력을 키워주는 것입니다. 강의를 진행하다 보면 국비 지원 교육을 받고도 이 수업을 들으러 오시는 분들을 자주 만납니다. 6개월을 공부하셨는데 아무것도 만들 줄 모른다고 하셔서 국비 교육에서는 어떤 걸 가르쳤는지 의아했습니다. 저는 극 초반의 튜토리얼 부분을 제외하면 절대 제가 작성한 코드를 그대로 전달하지 않습니다. 어떤 상황에 어떤 동작 기능이 필요할지 함께 얘기하며 해당 기능을 만들기 위한 조언을 드리고 나서 수강생분들이 직접 코드를 작성하게 합니다. 이 과정에서 어떻게 하면 더 효율적이고 좋은 코드를 작성할 수 있는지 저의 노하우도 전달해 드립니다. 또 실시간으로 리팩토링(코드개선)을 하며 자신의 손으로 코드를 계속해서 발전시킬 수 있도록 도와드립니다. 



개발자가 되고 싶어 하는 사람들에게 추천하는 학습 방법은?

가장 좋은 방법은 자신이 만들고 싶은 것을 만드는 것입니다. 한참 파이썬과 장고의 우수성에 대해 얘기했지만, 나는 아이폰 앱이 만들고 싶다면 Swift를 이용해서 IOS 프로그래밍을, 내 폰이 안드로이드 폰이니까 내 폰에서 돌아가는 프로그램을 만들고 싶다면 안드로이드 프로그래밍을 하는 것이죠. 물론 자신이 앱 프로그래밍을 하고 싶은데 굳이 이 과정으로 오시는 분들은 없겠지만, 어떤 것을 하든 자신이 하고자 하는 욕망보다 더 좋은 기폭제는 없습니다. 


처음 개발을 시작하시는 분들은 자신의 애정과 노력이 들어간 프로젝트 2개나 3개 정도는 완성하고 유지하는 것이 가장 좋은 공부법이라고 자신 있게 말씀드릴 수 있습니다. 이론 공부는 자신만의 프로젝트를 실제로 구현한 뒤에 오히려 필요성이 느껴지고, 필요성이 느껴질 때 공부하면 더 큰 도움이 됩니다. 


반대로 추천하지 않는 방법은 그저 작동만 하는 코드를 작성한 채 넘어가고, 원리는 잘 모르겠지만 되니까 넘어가는 식의 프로그래밍입니다. 고칠 부분이 생긴다면 실시간으로 해당 코드들을 손보고, 작은 기능 추가라도 테스트와 함께하고, 누구든 알아볼 수 있도록 주석과 커밋 메시지를 남기고, 잘 모르는 원리에 대해서는 오픈소스의 동작원리와 문서를 보며 모르는 용어와 기술들을 공부해야 실력이 향상됩니다. 



 마지막으로 예비 수강생에게 한마디!

프로그래밍 공부에는 삽질이라고 하는 '시간이 소모되는 과정'이 반드시 수반됩니다. 하지만 피할 수만 있다면 삽질에 걸리는 시간은 최대한 줄이는 것이 좋습니다. 저는 여러분에게 답을 구할 수 있는 능력을 최대한 빠르게 드리고자 합니다. 





웹 프로그래밍 스쿨 바로가기

http://school.fastcampus.co.kr/dev_wps/