커뮤니티의 역할에 대한 단상

최근에 백엔드가 이정도는 해줘야 함이라는 글 시리즈를 재밌게 보고있다. 이 시리즈를 쓰는 동기에 대해서 설명하는 아래 문장이 인상깊어서 계속 읽고 있다.

“백엔드를 조금 경험해본 사람이라면 사용자를 어떻게 인증할지, 암호화는 어떻게 할지, API 문서는 어떻게 작성해야할 지 같은 걸 비교적 쉽게 의사결정할 수 있지만, 그렇지 않은 사람은 이런 게 필요하다는 것조차 깨달을 수 있는 경로가 별로 없다.

여기서 깨달을 수 있는 경로가 별로 없다는 점이 내게 중요하게 다가왔다. 나는 백엔드 엔지니어가 아니라서 그것이 여러 관점에서 어떤 의미가 될 수 있을지 오롯이 느낄 수는 없지만 프론트엔드 영역도 비슷한 구석이 있다고 느꼈다.

최근의 웹앱은 뷰와 데이터를 나누고, 상태와 비동기코드를 나눠 관리하고, 그 상태마저 mutable 또는 immutable로 관리할지 선택하고, 앱을 구성하는 코드 전체 또는 일부를 번들링하고, 또 라우팅 경로를 기반으로 스플리팅하고, CSS마저 CSS-in-JS로 다룰 것인지 선택한다. 이 이상 나열하자면 너무 길다. 이중 어떤 것은 강력한 필요에 의해 쓰이는 것도 있지만 단순한 편의성이나 취향에 의해 쓰이는 것도 있다. 그런데 이 모든 것은 선택적이다. 이중 어떤 것도 사용하지 않고 기본 요소만으로 그럭저럭 돌아가는 웹을 만들 수 있다. 그러나 날것으로만 웹을 만드는 것보다는 점점 많은 회사들이 위에서 말한 것들의 일부 혹은 대부분을 채택하는 경향이 있다보니 이것들을 이해하고 사용할 줄 아는 엔지니어를 선호하는 것 같다. 그런데 프론트엔드에 진입한 초심자와 주니어 입장에서는 이것들을 공부하고 간단한 앱을 만들어볼 수는 있지만 그 이상으로 필요성을 느끼고 딥다이브를 하기는 상당히 힘들다. 필요성이 피부로 느껴질 만큼 공부 목적으로 만드는 앱과 그 코드의 규모가 커지지 않기 때문이다. 즉, 위의 인용문장처럼 프론트엔드에서도 이런 기술들이 어떤 배경에서 탄생했고 왜 필요한지, 어떻게 쓰면 좋을지에 대해 깨달을 수 있는 경로가 그리 많지 않다. 물론 백엔드와는 온도가 다르긴 하나 엔지니어로서 필요한 어떤 기술이나 습관을 필요성을 느껴 깨닫고 배양해나갈 수 있는 경로가 부족하다는 점에서는 공통점을 갖는다.

이것과 관련하여 근 몇개월간 계속 머릿속에 맴도는 생각이 있는데 단순히 도식화하면 다음과 같다.

회사는 기본을 잘 갖춘 엔지니어를 원한다. 원리를 궁금해하는 태도와 문서화의 중요성을 이해하고 있고 소프트 스킬을 갖추고 있으면 보너스다(이걸 보너스로 볼지 말지에 대해서는 회사마다 다른듯 하나 회사와 팀에 적응하는데 드는 코스트가 때론 급격히 적어진다는 점에서 대부분 선호하는듯 하다).

-> 이걸 이해하고 있는 교육에 관심있는 누군가가 이것을 잘 이해 & 습득시킬 수 있는 <교육 기관, 교육 회사, 교육 서비스, 교육 컨텐츠> 등을 만든다(교육 관련 기관, 회사, 서비스 각각의 예가 바로 떠오를 정도로 요새 굉장히 핫이슈인듯 하다).

-> 그러나 이런 기본이나 소프트스킬에 대해 역설하는 <회사, 서비스, 컨텐츠>의 마케팅 효과는 초심자에게 이것이 캐치워드가 아닌지 미비한 수준인듯 하다.

-> 이런 교육 서비스를 만드는 기관이나 회사 입장에서는 매출이 잘 일어나지 않으니 캐치워드를 찾아나서게 되고, 프론트엔드에서는 많은 경우의 그 대상은 프론트엔드 포지션의 Job Description에서 가장 많이 발견되는 SPA 삼대장이 된다. 이외에도 대상은 더 있고 “x주 완성”, “x주 만에 만드는 ~” 과 같은 마케팅으로 이어진다.

절대 일반화할 수 없지만 이런 싸이클이 실제로 있지 않은가라는 생각이 들었고, 이 교육 과정을 끝냈을때 이해를 잘 하고 기본기도 잘 닦은 경우도 있지만 아닌 경우가 좀 더 많은듯 하다(훨씬일 수도 있다). 결과에 관계없이 양극단에 있는 두 경우와 그 사이에 있는 모든 경우에서 어쨌거나 윗단락에서 말한 경로를 접할 기회는 여전히 많지 않다. 왜냐하면 이미 catchy한 워딩으로 프레이징 되어있는 만큼 그 커리큘럼도 이에 영향을 받을 수 밖에 없고, 위의 예에서는 SPA를 필두로 이외의 기본 기술을 습득했다고 하더라도 SPA는 프론트엔드 기술 영역을 이루는 일부에 불과하기 때문에 무엇이 가장 기본적이고 중요한지에 대한 깨달음을 얻을 수 있는 경로는 여전히 흐릿할 수 밖에 없기 때문이다.

이런 이유에서 인지 커뮤니티를 운영하고 이벤트를 만들면서 이런 부분을 많이 신경쓰게 된다. 기술과 지식에 대해 이야기를 나누는 이벤트를 만들 수 있고, 서비스를 만드는 여러 직군의 사람들을 모아 네트워킹을 하는 이벤트를 만들 수 있고, 간단한 기술 세션이나 해커톤 이벤트를 만들 수도 있다. 이 모든 이벤트가 의미있고 재미있고 또 중요하다. 그런데 위에서 말한 부족한 경로에 대해 알려주고 도움을 줄 수 있는 이벤트는 턱없이 부족하다고 느낀다. 물론 저런 필요성을 느끼고 기술을 익히고 엔지니어로서 성장하는 것은 어디까지나 개인의 몫이다. 이것은 변함없는 사실이지만 개인적으로 프론트엔드를 처음 접하고 2년 정도가 흐른 지금까지 오는 과정(이 글이 글에 정리했었다)이 많이 고통스러웠고 많은 운이 작용했다. 이것이 비단 나만의 일은 아닐 것이라 생각한다. 정말 필요성을 깨닫고 성장하는 것은 개인의 몫이라는 점은 몇번을 말해도 과언이 아니라고 생각은 하지만, 그리고 여전히 그렇게 믿지만, 내가 프론트엔드 엔지니어로서 일과 공부를 하면서 정말 힘들었을때 가끔 ‘아 누가 조금이라도 가이드해주면 좋으련만.. ‘ 이라고 읊조렸던 것을 상기해보면, 그리고 누군가는 아주 작은 배움의 기회마저 상실한채 모든 의욕을 잃고 이 길을 포기했고, 포기하려 고민한다는 것을 마음속에서 되뇌어 본다면 이 사회에는 여전히 길라잡이가 필요하고 누군가는 그 역할을 어떤 방식으로든 계속 해나가야 하지 않을까 한다. 지금까지는 아주 효과적인 길라잡이가 없었고 부족했을 뿐이다.

그래서 요새는 기술 커뮤니티나 이벤트가 이 점을 어떻게 해소할 수 있을지 많이 생각하고 있다. 단순히 엔지니어를 위해서라기 보다는 본질적으로 사람을 위한 것이라는 점에서 다분히 인본주의적인 생각을 하고있다.