더 나은 웹프론트엔드 과정을 고민하며,

올 초에 시작된 코드스쿼드의 마스터즈과정은 어려움도 많았지만 나름대로 의미가 있었다. 우리도 과정에서 많은 걸 또 배울 수 있었고, 개발자의 꿈을 가진 분들에게 도움을 드릴 수 있었다. 실제로 대학에서 철학을 배우다 온 젊은 대학생 친구가 경쟁력있는 스타트업에 당당히 개발자로 취업을 했고, 웹퍼블리셔로 일을 하던 친구가 이제 유명한 회사에서 웹프론트엔드 개발자로 일하고 있다.

우리는 마스터즈코스에 ‘배우고-프로젝트하기’라는 친숙한 방법을 적용했다. 이것은 아직 작은 교육스타트업에 지나지 않은 우리 회사와, 우리를 선택한 사람들에게 망하지 않고 안전하게 지식을 전달 할 수 있는 최선의 방법중 하나였다.
웹프론트엔드 역시 비슷했다. 많은 걸 먼저 집중적으로 배우고 프로젝트로 이를 녹여내고 내것으로 만드는 방식이다. 최근 우아한형제들에서 진행했던 우아한테크캠프 역시 비슷한 형식이였다.

이 전반적인 과정의 키워드를 뽑자면, 이렇다.

‘핵심을 담은 강의, 실습, 리뷰, 최신기술, 팀프로젝트, 신규프로젝트수행, 열심히 개발.’

하지만 문제와 아쉬움은 늘 있다. 몇가지 개선점 알게 됐고 새로운 마스터즈 코스에 그 부분을 적용해보려고 한다. 이 글은 개선 포인트가 되는 몇 가지 부분을 써보려고 한다. 이시간에도 어딘가에서 프론트엔드 개발자를 꿈꾸며 외롭게 고군분투 하는 분들에게 도움이 될 것 같아 공유한다.

미션방식.

미션방식은 강의를 하며 지금껏 내가 즐겨하는 방식이였다. 이 방식의 효과를 더욱 믿게 됐고 이를 더 확대하기로 했다. 작고, 큰 여러 미션을 풀면서 문제해결 능력을 기르게 된다. 이것은 실제 회사생활에서 흔히 있는 일이다. 요구사항과 과제를 받아서 우리는 해결책과 더 좋은 방법을 찾아 일을 해내야 한다. 그 과정에서 많은 문제와 제약사항을 발견하게 되고, 포기하지 않고 대부분 문제를 해결해 나가는 것이 현장의 개발자 미션이다. 초기의 교육과정에서부터 이를 적용해 볼 생각이다. 이런 방식의 문제해결이 꾸준히 유지되면서 문제해결능력이 더 탄탄한 개발자가 될 것으로 기대한다. 물론 코드스쿼드에서의 문제해결능력과 미션해결이 ‘방치'를 의미하진 않는다. 이과정에서 협력과 피드백이 곁들어지면 좀더 성공할 것이라 생각한다.

프론트엔드 개발자라고? 그전에 프로그래머.

마스터즈 코스에는 3가지 클래스가 있다. 모바일iOS, 웹백엔드JAVA 그리고 코드스쿼드의 꽃(?) 웹프론트엔드.

우리는 이렇게 과정을 나누었지만 ‘분야별 전문가를 만들자’라는 것보다, 그 전에 ‘좋은 프로그래머가 먼저다’라는 사실을 느끼고 있다.

프론트엔드는 특히, 공부를 하다보면 양파껍질처럼 나오는 광활한 지식을 마주치게 되고, 어디까지 공부를 해야할지 망설여지기도 한다. 이런 지식 중 많은 부분이 논리적인 것이 아닌, 라이브러리 사용법이거나, 유행에 그치는 지식인인 경우가 많다. 반면 학습시간은 정말 정말 많이 든다. 프론트엔드를 배워나가는 학습과정에서는 이런 부분을 최대한 줄이려고 한다.

실무를 하며 경력단계에서 경험적으로 얻을 수 있는 지식을 조금 더 구분할 계획이다. 양적인 확대를 가진 이런부분을 미리 다 배우기 보다는, 프로그래머로써 프로그래밍 훈련의 시간을 갖는 데 더 집중할 계획이다. 프로그래머로써는 당연히 이부분이 기본기라고 할 수 있겠다. 웹프론트엔드 지식보다 더 중요한 것이 프로그래밍 과정임을 깨달았다. 이 부분의 충분한 학습을 더 늘려 나갈 것이다.

(이번 마스터즈 코스에서는 이처럼 프로그래밍에 집중하는 것은 웹프론트엔드를 배우는 것보다 앞선 레벨에서(레벨2) 깊이있게 진행할 계획이다)

Design and Code.

과정에서 아직도 제대로 성공하지 못한 것은 code and fix의 습관을 버리지 못하고 있다는 것이다. (나역시 design에 집중하는 습관이 별로 없음을 고백한다..) 멋진 설계패턴과 도구없이도 우리는 연습장만으로 생각을 정리하고 돌아가는 코드를 연구하면 된다는 걸 안다. 반복적인 선 코딩은 그저 더 많은 문제를 발생하는 걸 안다. 이런 습관은 누가 쉽게 알려주지 못하는 거 같다. 디자인 패턴책이 이걸 깨닫게 하진 못한다. 주니어 레벨에서부터 종이에 끄적거리는, 다시말해 내 생각을 사고의 순서대로 정리하는 습관을 훨씬 더 많이 가지면 어떨까 싶다.

항상 design을 먼저하고, 상대방의 design을 리뷰하면서 사고를 훔치고 더 많은 걸 깨닫게 되는 것이 중요하다고 생각한다. 아마 디자인과정에서의 즐거움 또한 프로그래밍을 더 신나게 만들 수 있지 않을까하는 생각도 한다.

Trend Away.

유행을 더 벗어날 생각이다. React와 Redux를 사용한 것은 충분한 개발경험과 지식이 있을 때 가능하다는 걸 느꼈다. 대부분 주니어에게는 이런 고급화되고 추상화된 프레임워크가 라이브러리가 벅차고 어려운 경험이다. 차라리 최근 Framework에서 사용하는 기술과 패턴을 직접 내가 만들어보면서 그 원리를 이해하고, 더 좋은 디자인이 어떤 것인지 왜 이런 디자인이 나왔는지를 깨닫는 과정이 낫다는 걸 느꼈다. 작지만 귀여운 우리만의 Framework를 흉내내 볼 것이다. 물론 레벨5에서는 Framework를 마음껏 쓸 수 있도록 할 것이다.

유지하면서 보수하기.

신규프로젝트는 참 좋은 동기부여로 좋다. 현장의 현실은? 유지보수가 대부분..유지보수는 소프트웨어 특성상 당연한 일이다. 대부분 우리가 하는 일은 기존 시스템을 유지하며 살을 붙이고 이것저것 만지며 보수하는 것이다. 다른 사람이 만든 프로젝트를 이어나가고, 살을 붙이는 경험을 이전보다 더 많이 수시로 해볼 생각이다. 코드를 읽는 능력, 그리고 소프트웨어를 유지할 수 있는 능력을 가진 주니어 개발자가 나오길 바라며..

일 잘 하기.

일하는 방법은 누가 가르쳐주나? 그걸 배워야 하나? 배울 수 있다면 배워야 한다고 생각한다. 개발자 스스로를 위해서도 말이다.

지금까지는 함께 일하기, 즉 팀으로 프로젝트를 하면 된다고만 생각했다. 물론 그건 매우 중요하고 레벨5를 통해 팀 프로젝트를 할 것이다. (이것도 바뀌 부분이긴 한데, ‘일정수준이상에서만 팀프로젝트가 효과적이다’라는 가정을 하고 있다)

아무튼,, 그런데 이걸 입사해서 배우며 안되나?

뭐 회사생활 전에 못할 건 없다. 이렇게 하려고 한다. 과정을 배우면서 어떤 경우에는 회사처럼 커뮤니케이션 해야하고 뜬금없는 미션을 받거나 일정내에 리포팅을 해야하는 리서치 작업을 요구할 것이다. 수강생은 다양한 실험을 하고 결과를 정리하고 이를 보고하고 공유하는 경험을 하게 될 예정이다. 물론 피드백은 여기서 중요하다.

이건 생각보다 아주 어렵고 많은 훈련이 포함되어 있다. 이런 경험을 자주하면서 정말 일잘하는 주니어개발자가 되길 바란다.

당장의 취업도 문제지만, 사실은 그 이후가 진짜 시작이기 때문이다.

마무리.

과정을 바삐 준비하면서 글을 남겼다. 준비하는 분들이 어디에 초점을 두면 좋을지 조금이라도 참고가 되길 바란다.

글이 정성스럽지 못하더라도 누군가에게 도움이 되길 바라고, 또 누군가는 코드스쿼드에서도 함께하길 바라는 마음으로..

코드스쿼드,
웹프론트엔드 마스터 윤지수(크롱이라 부름.크롱크롱~)

http://codesquad.kr/