사기꾼 아님: 프런트 엔드 피로 퇴치
게시 됨: 2022-03-10나는 최근에 백엔드 개발자 친구와 내가 업무 외에서 코딩하거나 코드에 대해 배우는 데 얼마나 많은 시간을 할애하는지에 대해 이야기했습니다. 그는 음악가가 콘서트를 준비하기 위해 악기를 사용하는 시간과 직장에서 수행할 코드를 리허설하는 개발자를 비교하는 Uncle Bob의 책 "Clean Code"의 한 구절을 보여주었습니다.
나는 유추를 좋아하지만 그것을 완전히 구독하는지 확실하지 않습니다. 그것은 처음에 번아웃을 유발할 수 있는 그런 유형의 생각입니다. 나는 당신이 당신의 기술을 발전시키고 당신의 기술 세트를 넓히고 싶다면 훌륭하다고 생각하지만, 하루 중 매시간 그것을 하는 것은 지속 가능하지 않습니다.
프런트 엔드 피로는 매우 현실적입니다. JavaScript 피로에 대한 여러 게시물을 보았지만 문제가 특정 언어보다 더 확장되었다고 생각합니다.
분명히 말해서, 이것은 모든 것이 나쁘고 모든 것이 너무 빨리 움직이는 것에 대한 또 다른 헛소리가 아닙니다. 나는 기술이 너무 빠르게 발전하는 것을 좋아합니다. 마찬가지로, 나는 그것이 얼마나 압도적일 수 있는지 감사할 수 있으며 때때로 나 자신이 화를 내는 것을 확실히 느꼈습니다.
SmashingMag에 대한 추가 정보:
- 프론트 엔드의 어두운 구석에서 더러운 속임수
- 사양에 대한 프론트엔드 개발자의 찬사
- 프론트 엔드 면접을 준비하는 방법
내가 말할 수 있는 한, 이것은 두 갈래의 문제 입니다.
첫 번째는 프론트엔드 개발자로서 다음과 같은 모든 것을 갖추고 있어야 한다고 생각한다는 것입니다.
- HTML(깨끗하고 시맨틱한 마크업 작성)
- CSS(모듈식, 확장 가능)
- CSS 방법론(BEM, SMACSS, OOCSS)
- CSS 전처리기(LES, SCSS, PostCSS와 같은 것)
- 최신 CSS(Flexbox, 그리드)
- JS
- 최신 JS(ES6, Typescript)
- JS 프레임워크(Angular, React, Vue [여기에 최신 삽입]
- JS 방법론(함수형 프로그래밍, OOP)
- JS 라이브러리(Immutable, Ramda, Lodash)
- 반응형 디자인 교장
- 테스트(TDD)
- 테스트 프레임워크(Jasmine, Karma)
- SVG
- 웹지엘
- 애니메이션 기법
- 접근성
- 사용성
- 성능
- 빌드 도구(Grunt, Gulp, NPM 스크립트)
- 자산 번들러(WebPack, Browserify)
- NPM 생태계
- 다양한 브라우저 단점에 대한 지식
- 애자일 방법론
- 버전 관리(일반적으로 Git)
- 시각 디자인 기초
- 소프트 스킬, 시간 관리
- 사용되는 백엔드 언어에 대한 기본적인 이해
그리고 무엇보다도 다음과 같은 것을 다루거나 바라보고 있습니다.
- 서비스 워커
- 프로그레시브 웹 앱(PWA)
- 웹 구성 요소
두 번째는 일상적인 작업이 모든 것을 다루지 않거나 모든 것을 배울 시간을 제공하지 않을 수 있으므로 모든 도구를 마음대로 사용할 수 있도록 하려면 어떻게 해야 합니까?
이제 소비자로서 다음을 수행할 수 있습니다.
- 다양한 주간 개발 뉴스레터 구독
- 트위터 피드 트롤
- 직장에서 프론트엔드 팀을 확인하는 주간에 참석하십시오.
- 직장 밖에서도 대화를 나누는 소수의 개발자와 함께 Slack 채널을 만드세요.
- 온라인 자습서를 따르십시오(오래되지 않았으면 함).
- Frontend Masters와 같은 비디오 코스 교육 사이트 사용
- 웹 개발 책 구매(오래되지 않았으면 함)
- 모임 참석
- 회의 참석
- 교육 과정 참석
기고자로서 다음을 수행할 수 있습니다.
- 블로그/잡지 기사 작성
- 말하기에 손을 대다
- 팟캐스트 실행
- 오픈 소스 프로젝트에 기여
- 자신의 사이드 프로젝트가 있습니다.
최근에 저는 제 관심이 세 가지 방식으로 나뉘는 것을 발견했습니다. 세 번째는 코드 작성에 집중하고 있었고 헤드폰은 코드에 대한 토론을 반쯤 듣고 Slack에서 코드에 대해 채팅했습니다. 나는 충분하다고 결정했습니다. 모든 구멍이 코드로 막혔고 정신적으로 지쳤습니다.
그것은 확실히 극단적인 끝이지만, 나는 당신들 중 다른 사람들도 비슷한 것을 경험했을 것이라고 확신합니다. 이 모든 것 외에도 아마도 정규직, 가족, 친구, 취미가 있을 것입니다. 우리 중 많은 사람들이 지쳤고 우리가 올바른 직업 선택을 했는지 의아해하는 것은 놀라운 일이 아닙니다.
동료 프론트 엔드 중 일부는 모든 것을 포장하고 5시에 끌 수 있는 작업으로 전환하는 데 관심을 표명했습니다. 하지만 내 일부는 이 직업이 특정 유형의 사람을 끌어들이고 우리가 모든 것을 버리고 대신 부동산 중개인이 된다면 여전히 최고의 부동산 중개인이 되고 싶어할 것이라고 생각합니다. 자유 시간에 부동산 에이전시 모임에 참석하고 집값 추세를 추적합니다. 여러 달 전에 나는 재무 분야에서 일했고 여전히 저녁 시간에 공부하고 내가 선택한 분야에서 내가 할 수 있는 가장 숙련된 사람이 되기 위해 관련 책을 읽고 있었습니다.
우리는 이 분야에서 혼자가 아닙니다. 많은 직업이 직장 밖에서 상당한 양의 헌신과 학습을 필요로 합니다. 아마도 프론트엔드 개발의 문제는 기술이 너무 빨리 발전하여 누군가가 목표 지점을 계속 움직이는 것처럼 느껴진다는 것입니다. "XYZ" 기술이 죽었다는 이메일을 매일 받는 것 같습니다. 그렇지 않으면 우리에게 남은 기술이 없기 때문에 사실이 될 수 없다고 확신합니다.
생태계는 끊임없이 변화하는 상태이고 좋은 일이 될 수 있다고 생각합니다. 개인적으로 나는 끊임없이 배우고 발전할 수 있는 역할을 하는 것을 좋아하지만 때때로 압도당하지 않는다는 말은 아닙니다.
이를 염두에 두고 머리가 터지는 것을 멈추기 위해 기억하려고 노력하는 몇 가지 와 피로를 피하는 방법에 대한 일반적인 조언이 있습니다.
우리 모두 함께 해요
직장 안팎에서 내가 아는 개발자들은 내가 아는 가장 똑똑한 사람들입니다. 그러나 그들은 모두 압도감을 느끼고 있습니다. 대부분은 배우고자 하는 기술의 희망 목록이 있습니다. 모든 것을 알고 있고 모든 것의 정점에 있는 소수의 사람들이 있을 수 있지만 우리 대부분은 정확히 같은 위치에 있습니다.
우리 모두는 여전히 Google과 Stack Overflow에 의존하여 하루를 보내고 웹 관련 질문에 대한 답변으로 가득 찬 탭이 너무 많이 열려 있습니다. 당신은 혼자가 아닙니다!
멋진 아이들이 아직 사용하고 있는 것을 시도하지 않았다고 해서 당신이 나쁜 개발자가 아니라는 사실에 만족하십시오.
네, '웹 셀럽'도 같은 자리에…
모든 것을 알 수 있는 방법은 없으며 Twitter에서 팔로우하는 록스타 개발자는 각각 몇 가지 영역에서 정말 좋은 경향이 있습니다. 그들이 지식이 있는 것으로 유명한 동일한 분야라는 것을 알게 될 것입니다. 다시 예외가 있겠지만 그들은 우리와 같은 인간일 뿐입니다. :)
사기꾼 증후군은 현실이며 우리 모두에게 있습니다
직업 설명 요구 사항에 대한 모든 것을 알지 못한 채 사기를 치는 것처럼 느낄 것이기 때문에 역할에 지원하지 않는 몇몇 훌륭한 프론트 엔드 개발자를 알고 있습니다. 그 중 하나를 인용하자면:
"내가 보는 JD의 90%는 "아, 내가 너무 뒤처졌어!"라고 생각하게 만듭니다. 단순히 내가 여기서 "그것을 벗어났다"고 느끼기 때문입니다."
사실, 그 직업 사양의 대부분은 희극입니다. 내 친구 Bard는 프론트 엔드 작업 사양이 말하는 것과 그 의미의 차이를 보여주는 이 멋진 이미지를 만들었습니다.
그냥 기억하세요, 괜찮을 것 입니다. 내가 가진 모든 직업은 처음에는 내 깊이가 부족하다고 느꼈지만 결국에는 그들의 도구와 워크플로에 익숙해지고 배우고 더 나은 개발자가 되었습니다.
직장에서 배우는 것을 두려워하지 마십시오. 새로운 기술을 습득하는 가장 좋은 방법은 매일 그 기술을 사용하는 것입니다.
사기꾼 증후군이 있는 경우 실제로 괜찮은 개발자일 가능성이 높습니다. 그렇지 않으면 스스로 인식할 수 있을 만큼 충분히 깨닫지 못하기 때문입니다.
기본 사항을 잠그십시오.
반짝이는 것과 새것에 마음이 흐트러지기 쉽지만 기초가 견고하지 않으면 시간의 시험을 견디지 못할 가능성이 높습니다.
제 좋은 친구가 언젠가 저에게 이렇게 말했습니다.
"기본에 집중하는 것이 항상 저의 만트라였습니다. 좋은 시스템을 구축하고 문제를 해결할 수 있다면 그것이 전부입니다. 문제를 해결하는 방법(도구)은 항상 바뀌었고 앞으로도 계속 변할 것입니다."
예를 들어, React가 유명세를 타게 되었을 때 항상 ES6과 함께 번들로 제공되는 것처럼 보였고 저는 프레임워크 자체의 뉘앙스보다는 언어에 대한 이러한 변경 또는 추가에 초점을 맞췄습니다. React가 죽고 사라지면 최신 바닐라 Javascript를 유지하면서 얻은 지식이 계속됩니다. Chrome에서 기본적으로 사용할 수 있는 많은 기능이 있으므로 Babel을 가져와서 사용하기 위해 종속성 지옥에 갇힐 필요가 없습니다.
모든 것을 배울 필요는 없습니다
이것은 정말 중요합니다. 우리를 죽이는 것은 새로운 프레임워크, 라이브러리 및 모듈이라고 생각하지 않습니다. 모든 것을 배워야 한다는 것은 우리 자신의 믿음입니다.
학습을 통해 가장 좋은 방법은 계속 집중하는 것입니다. 지금은 ES6에서 기능적 JavaScript 프로그래밍을 탐구하고 있습니다.
내 목록에는 배우고 싶은 다른 것들이 많이 있지만 주의가 산만해지지 않으려고 노력합니다. 예를 들어, 저는 접근성 지식을 복습하고 Polymer를 가지고 놀고 그리드와 같은 최신 CSS 기술을 배우고 싶지만 한 번에 너무 많은 다른 영역에 대해 읽기 시작하면 모든 정보를 유지하지 못할 것입니다. 이 다른 것들은 아무데도 가지 않습니다.
주어진 주제에 대해 모든 것을 소비하려고 서두르지 마십시오 . 시간을 내서 충분히 이해했는지 확인하십시오.
나와 같다면 목록이 계속 늘어나겠지만 목록에서 항목을 선택하는 것을 두려워하지 마십시오. 모든 것이 시간을 투자할 가치가 있는 것은 아니며 배울 가치가 있는 것과 몇 년 안에 사라질 것 같은 것을 인식하려고 노력해야 합니다. 프로그래밍 디자인 패턴과 아키텍처 기술을 배우는 데 시간을 들이는 것은 프레임워크 영역에서 현재의 인기를 뛰어넘는 것보다 장기적으로 항상 더 유리할 것입니다. 트랙을 따라 잠시 동안 다시 유행어 빙고를 재생하기 위해 뒤섞이기만 하면 됩니다.
대부분의 회사는 Bleeding Edge Tech를 사용하지 않습니다
많은 새로운 것들이 나오고 있고 웹은 엄청난 속도로 발전하고 있지만 일반적으로 기업이 이러한 새로운 기술을 실제로 채택하기 시작하려면 오랜 시간이 걸립니다. 대부분의 기업은 기술이 어느 정도 성숙하고 현장에서 입증되기를 기다릴 것입니다.
Angular는 6년 전에 만들어졌고 3년 전에 Angular가 프레임워크라고 결정한 스타트업에서 처음 일을 시작했습니다. Reactjs는 출시된 지 3년이 조금 넘었고 현재 회사에서 크리스마스 직전에 사용하기 시작했습니다. 그 동안 많은 다른 프레임워크가 왔다가 사라졌다고 확신합니다. 내가 그들 모두에 뛰어 들었다면 난 미칠 것입니다.
CSS 랜드에서 Flexbox는 6년 전인 2010년부터 사용 가능했습니다! 브라우저 지원은 여전히 제한적입니다. 우리는 올해 초 프로덕션에서 사용하기 시작했지만 다른 곳에서는 많이 사용되지 않는 것 같습니다.
제 요점은 모든 것을 배우기 위해 서두를 필요가 없다는 것입니다. 반면 기술은 빠르게 움직일 수 있지만 잠재적인 고용주는 훨씬 더 느린 속도로 움직이고 있습니다. 커브보다 앞서 있을 필요는 없습니다. 커브의 궤적을 주시하고 있는지 확인하십시오.
더 많이 배울수록 더 많이 알게되고 더 많이 알게됩니다.
이것은 완전히 정상입니다. 처음 시작하면 무엇을 모르는지 모릅니다. 그런 다음 몇 가지를 배우고 자신이 천재라고 결정합니다. 그러면 그 환상이 조금씩 풀리고 당신이 모르는 것이 얼마나 많은지 실제로 이해하기 시작합니다.
기본적으로 더 많은 경험을 할수록 공허 속으로 더 깊이 들어가게 됩니다. 당신은 이것과 화해해야 합니다. 그렇지 않으면 당신을 소모할 것입니다. 이 느낌은 당신이 올바른 방향으로 가고 있다는 확신을 줄 것입니다. 확률은 우리가 선택한 직업에서 모든 프론트 엔드 지식으로 구성된 왕좌에 편안하게 앉을 수 없을 것입니다.
모든 자유 시간을 학습하는 데 사용하지 마십시오
매 순간 코딩하고 배워야 할 만큼 뒤처져 있다고 느끼기 쉽습니다. 번아웃빌 편도 티켓입니다. 기술을 개발하는 데 시간을 할애하고 상사와 시간을 협상하여 일정을 잡고 나머지 시간을 좋아하는 일에 할애할 수 있는지 확인하십시오.
체육관에서 코딩에 대한 깨달음을 얻었습니다. 운동은 몸뿐만 아니라 정신에도 매우 중요합니다. 정신을 예리하게 유지하고 번아웃을 예방할 수 있도록 하루에 적어도 20-30분을 시도하십시오.
가족 및 친구를 위한 시간을 만드십시오.
개발자의 시장입니다
당장 취업을 고민하지 마세요. 현재 우리는 개발자보다 채워야 할 역할이 더 많은 매우 운이 좋은 위치에 있습니다. 이것이 얼마나 오래 갈지는 모르겠지만 지금 그것을 활용하십시오!
모든 것을 알지 못해도 취업할 수 있습니다. 나는 인터뷰에서 99%의 사람들이 그것을 전적으로 비난한다는 것을 발견했습니다.
최악의 시나리오는 레거시 코드에 금이 있다는 것을 기억하십시오. 기존 방식을 좋아하는 개발자라면 개발자가 소프트웨어 작업을 해야 하는 레거시 기술에 집착하는 회사가 항상 있을 것입니다.
결론
이 지침 중 일부가 귀하가 느낄 수 있는 좌절감을 완화하는 데 도움이 되었기를 바랍니다. 당신이 할 수 있는 최악의 일은 한계에 다다르고 완전히 지치는 것입니다. 왜냐하면 일단 당신이 하고 있는 일에 대해 가졌던 열정과 처음에 그 일을 시작한 이유를 회복하기가 매우 어렵기 때문입니다.
즐거운 코딩!