Redux 양식 라이브러리 작성자의 전체 스택 개발자 팁

게시 됨: 2022-03-11

2019년 2월, Toptal의 커뮤니티 팀은 새로운 이니셔티브를 시작했습니다. Toptal의 네트워크 전문가와 실시간으로 상호 작용할 수 있는 월간 기회입니다. 무엇이든 물어보세요(AMA) 세션은 Toptal의 핵심 팀과 인재 네트워크의 모든 구성원에게 열려 있습니다. 누구나 질문할 수 있습니다. 이 글에서는 JavaScript 및 Redux 전문가 Erik Rasmussen과 함께 AMA에서 선별된 질문과 답변을 선별했습니다. Erik은 오픈 소스 소프트웨어 개발의 과제, 개발자 팁, 변동하는 JavaScript 세계, 주문형 개발자로서 사기꾼 증후군과 번아웃에 대처하는 방법, 최고의 팟캐스트 권장 사항에 대해 설명합니다.

Erik은 25년 이상의 개발 경험을 가진 풀 스택 JavaScript 전문가이며 React, Redux, React의 양식 및 GraphQL을 전문으로 합니다. 2,800만 명이 넘는 사용자가 있는 버전 관리를 위한 웹 기반 호스팅 서비스인 GitHub에서 그는 20,000개 이상의 별을 가진 상위 100위 안에 들었습니다. 그는 또한 React에서 가장 인기 있는 첫 번째 및 세 번째 양식 라이브러리인 Redux-Form 및 React-Final-Form의 저자이기도 합니다.

Toptal JavaScript 및 Redux 전문가 Erik Rasmussen

Redux 형태와 오픈 소스 소프트웨어의 현황

Redux Form으로 엄청난 성공을 거둔 후 왜 또 다른 양식 라이브러리를 만들기로 결정했습니까?

Redux Form을 사용하면서 많은 교훈을 얻었고 전 세계 React Form 개발자의 요구 사항에 대한 통찰력을 얻었습니다. React Form의 일부 문제는 문제를 새롭게 살펴보지 않고는 해결할 수 없었습니다. (자세한 내용은 여기를 참조하세요.)

많은 개발자들이 엄청나게 인기 있는 오픈 소스 프로젝트를 만드는 꿈을 꿉니다. Redux Form만큼 성공적인 프로젝트의 예상치 못한 결과(좋은 것과 나쁜 것)는 무엇입니까?

개발자나 전체 팀이 프로젝트를 완료하는 데 방해가 되는 버그를 수정할 수 있다는 것은 매우 보람 있는 일입니다. 사람들이 스스로 버그를 찾아 수정할 때도 정말 좋습니다. 지금까지 사람들은 도움을 요청할 때 매우 친절하고 친절했습니다. 나는 내가 그들에게 고칠 빚이 있다고 생각하는 정당한 사용자와 아직 상호 작용을 한 적이 없습니다.

도전적인 측면에서 번아웃은 현실이며 OSS 프로젝트에 시간과 에너지를 쏟은 OSS 개발자에게 보상할 방법을 아직 찾지 못했습니다. Redux Form은 전 세계 10억 달러 규모의 기업에서 비즈니스 거래에 사용하고 있으며 Redux Form을 설치한 팀의 수천 시간 개발 시간을 절약했지만 그 돈의 일부라도 작성자에게 제공하는 좋은 솔루션이 없습니다. .

당신과 같은 오픈 소스 개발자를 보상하기 위해 작업 중인 유망한 솔루션이 있습니까?

내 친구가 CodeFund라는 회사를 시작했습니다. 그는 "코드 라이브러리 문서에 광고를 게재할 수 있다면 어떨까요?"라는 아이디어를 가지고 있었습니다. 개발자로서 우리는 하루 종일 문서를 살펴보고 우리가 하고 있는 일을 구현하는 방법을 파악하는 데 보냅니다. 또한 개발자는 일반 웹 서퍼보다 훨씬 더 많은 돈을 벌기 때문에 우리는 잠재적인 고급 제품입니다.

CodeFund는 문서가 광고하기에 정말 좋은 곳이라는 아이디어를 내놓았습니다. 나는 원래 조종사 중 한 명이었습니다. 꽤 잘 작동했지만 GitHub에 문제가 발생했습니다. 원래 GitHub 리포지토리 자체에 광고를 게재했지만 GitHub와 변호사가 급습하여 아니요라고 말했습니다. 부끄러운 일입니다. CodeFund는 한동안 그들과 협상했지만 결국 그들은 거절했습니다.

트래픽이 많은 라이브러리 문서를 사용하면 한 달에 150달러를 벌 수 있는데, 이는 그만한 가치가 없습니다. Babble 또는 Webpack과 같은 일부 희귀 라이브러리에는 해당 라이브러리를 개선하기 위해 일하는 두세 명의 정규 개발자를 실제로 지원할 수 있을 만큼 충분한 자금이 제공됩니다. Babble 및 Webpack - 수십억 달러 가치의 기업이 인프라에 앉아 있고 확실히 Redux Form이 이를 지원합니다.

당신이 방문하는 거의 모든 웹사이트에서 소스를 볼 수 있고 제대로 보상을 받지 못하는 특정 사람이 작성한 일부 코드를 볼 수 있습니다. 사람들이 오픈 소스가 무엇인지 그리고 우리 중 일부가 들이는 시간에 대해 더 잘 인식할 수 있도록 인식을 높여야 합니다.

왜 오픈 소스이고 무료인 것을 만드나요? 당신과 같은 개발자에게 인센티브는 무엇입니까?

당신이 그것을 만드는 이유는 당신이 현재 작업하고 있는 것이 무엇이든 그것이 필요하기 때문입니다. 당신이 그것을 풀어 놓으면 다른 사람들이 와서 더 좋게 만듭니다. 오픈 소스의 꿈은 "나는 여기에서 저기로 돌을 옮기는 데 도움이 되는 작은 수레를 만들었습니다."라고 말하면 누군가가 와서 더 좋게 만드는 것입니다. 다음 프로젝트에서 다시 돌아가서 동일한 라이브러리를 사용하고 "와, 이거 훨씬 더 빨리 움직입니다. 지금이 더 좋아.”

그것은 또한 매우 보람이 있습니다. 사람들이 "이 문제로 3주 동안 버텼는데 3시간이 걸리는 이 작은 수정으로 3주 시간을 절약할 수 있습니다." 긍정적인 강화를 받고 기분이 좋아지는 약간의 중독 사이클이 있습니다.

두 번째 양식 라이브러리에서는 사람들이 "이봐, 우리는 다른 양식 라이브러리를 원한다"라고 말하는 것이 아니라 더 나은 방법을 생각했기 때문입니다.

그것은 당신이 그것을하는 이유의 일종의 꿈입니다. 그러나 그것은 확실히 돈을 위한 것이 아닙니다.

이상적인 세상에서 오픈 소스 소프트웨어를 만드는 데 대해 얼마나 많은 보상을 받을 수 있습니까? 케이크에 아이싱만?

누군가가 하루 종일 오픈 소스 작업을 하기 위해 6자리를 지불해도 상관 없습니다. 비용 대비 창출된 가치를 보면 오픈소스의 비율이 너무 높다. 당신은 한 가지, 그리고 한 가지를 정말, 정말 잘하는 작은 작은 라이브러리에 도달합니다.

전 세계의 모든 회사가 이를 수행하기 위해 자체 개발자 팀을 지정해야 한다면 결과는 매우 다양할 것입니다. 우리가 오픈 소스를 가지고 있고 그것에 대한 하나의 솔루션을 가질 수 있다는 사실, 즉 최고의 알고리즘 버블이 맨 위에 있다는 사실은 전 세계 모든 사람이 그 효율성을 기본적으로 갖추고 있다는 것을 의미합니다.

오픈 소스의 또 다른 가치는 귀하가 작성한 것을 사용하고 있고 귀하의 회사에서만 사용하고 있다는 것입니다. . . 1,000개 회사에서 사용하는 것과 비교하십시오. 그들은 잠재적으로 문제가 될 수 있는 버그 공간의 모든 구석구석을 찾아냈고 당신은 그것을 가지고 당신의 일에 연결합니다. 당신은 황금입니다. 당신은 그것에 대해 훨씬 더 자신감을 가질 것입니다.

JavaScript의 동적 세계

자바스크립트 분야에 오랫동안 있어왔기 때문에 [자바스크립트 애플리케이션 구축을 위한] 새로운 프레임워크가 많이 등장하고 사라지는 것을 보았을 것입니다. 어떤 프레임워크를 적용할지 결정할 수 있도록 업계의 동향을 파악하는 방법은 무엇입니까?

개발자 커뮤니티의 바람을 느껴야 합니다. TypeScript와 Flow의 현재 전투가 좋은 예입니다. 나는 페이스북이 타이핑 프레임워크를 더 잘 관리할 것이라고 가정하고 처음에 그 경주에서 잘못된 말을 선택했습니다. 하지만 저는 TS가 그 싸움에서 꽤 많이 이겼다고 생각합니다. 이제 저는 천천히 그 방향으로 이동하고 있습니다.

Twitter에는 "개발자 Twitter"라는 코너가 있습니다. 충분한 사람을 팔로우하면(아마도 100명 정도의 표본 크기가 필요할 수 있음) 바람이 어디에서 불고 무엇이 인기를 얻고 있는지에 대한 느낌을 얻을 수 있습니다. "예전에는 A 라이브러리를 사용했지만 B 라이브러리에 대해 방금 배웠고 모든 것이 훨씬 쉬워졌습니다."와 같은 게시물을 많이 보게 될 것입니다. 당신은 그것들을 충분히 이해하고 "글쎄, 아마도 나는 이 다른 라이브러리를 확인해야 할 것입니다."라고 생각합니다.

트렌드는 JavaScript 공간에서 왔다가 사라집니다. 항상 움직이게 될까요?

나는 그것이 계속 발전할 것이라고 생각합니다(그리고 희망합니다). 침체는 기술의 죽음입니다. Java조차도 지금 크게 혁신하고 있습니다. Java 10에서 할 수 있는 작업은 할머니의 Java 6과 전혀 다릅니다.

마침내 모든 멋진 아이들이 Tech Y를 사용하고 있다는 사실을 알게 된 후 Tech X로 앱을 빌드하는 것은 지칠 수 있습니다. 하지만 그것이 바로 우리가 속한 업계입니다.

귀하의 의견으로는 언어를 숙달하기 위해 실제로 이해하는 데 특히 중요한 JavaScript 개념은 무엇입니까?

함수형 프로그래밍과 함수를 전달하는 아이디어는 꽤 중요합니다. 특히 Java 또는 C++와 같은 언어에서 온 경우.

React는 SPA[단일 페이지 애플리케이션]를 구축하는 데 사용해야 합니까 아니면 일반 페이지의 구성 요소에만 사용해야 한다고 생각하십니까?

이것이 React의 장점입니다. 다재다능합니다. 저는 직장에서 오래된 Java/jQuery 앱의 모든 새로운 기능에 대해 React를 천천히 소개하고 있습니다. React는 작동할 DOM 노드가 주어지면 잘 작동합니다. 전체 앱을 제어할 필요는 없습니다.

새로운 React 앱을 시작할 때 처음부터 정기적으로 사용하는 도구와 라이브러리는 무엇입니까?

지금은 create-react-app 이 확실한 승자라고 생각합니다. 4년 전만 해도 그런 게 없었을 땐 훨씬 더 힘들었다.

반응 앱에서 앱 상태를 어떻게 처리합니까?

Redux가 나왔을 때 그것은 분명히 답이었습니다. 그러나 Redux "상태"의 대부분이 loadinglistOfObjects 와 같은 항목이라는 것을 알게 되었고 가장 최근에 그 작업에 Apollo GraphQL을 사용했습니다. isSideNavOpen 과 같은 다른 것들은 컨텍스트 기반 구성 요소로 매우 쉽게 관리할 수 있습니다. 그렇긴 하지만 Redux에 대한 합법적인 사용 사례가 여전히 있지만 간단한 React 앱에서 만난 적이 없습니다.

가장 좋아하는 편집기/IDE는 무엇입니까?

아, 질문!

저는 Java 출신이며 수년 동안 JetBrains IntelliJ에 매우 만족해 왔지만 JS에서는 약간 느립니다. 처음에는 Atom에 갔지만 결국 VS Code에 정착했습니다. Jest, Flow 및 TypeScript에 대한 통합은 타의 추종을 불허합니다.

rubyJS 로 변환한 다음 Rubyst가 Pure Ruby에서 React/Flux 구조의 앱을 작성할 수 있는 경로를 여는 opal 과 같은 동형 개발에 대한 귀하의 의견은 무엇입니까(JS 작성 없이)?

JavaScript가 서버로 이동했다는 사실은 큰 의미가 있다고 생각합니다. 클라이언트와 서버 모두에서 동일한 코드로 렌더링할 수 있다는 것은 거대 하고 미래의 방식일 가능성이 더 큽니다.

현재 가장 인기 있는 JS 프레임워크의 가장 큰 문제는 무엇이라고 생각하십니까?

확실하지는 않지만 Zeit 같은 회사가 Next.js로 추구하는 css-in-js, serverless, SSR의 방향이 정말 마음에 듭니다.

90년대 후반에 웹사이트를 구축하던 사람으로서 우리가 정적인 웹사이트로 돌아간다는 사실이 저에게는 정말 재미있습니다. 빌드 시간에 모든 것을 생성하는 것으로 돌아가서 서버에 정적 항목이 있는 다음 재수화라고 부르는 동적 항목을 추가할 수 있습니다. 전체 페이지를 렌더링한 후 추가 JavaScript를 가져와 실제로 애니메이션을 만들고 구성 요소를 이동할 수 있습니다.

Now 프레임워크와 함께 Zeit는 정적 HTML 파일을 다운로드하는 것보다 빠른 것이 없기 때문에 웹사이트에 대한 정적 구축도 지원합니다. 그것은 단지 텍스트 파일이고 붐, 당신은 그것을 얻었습니다. 반면에 서버에 접속하는 경우 표시해야 하는 페이지가 무엇이든 구축하기 위해 데이터베이스에 4~100번 정도 접속해야 합니다. 정말 느립니다.

정적 아이디어가 인기를 얻고 있습니다.

JavaScript가 "성숙한" 언어(예: Java 및 C++)를 인수하여 기업용 언어가 될 수 있다고 생각하십니까?

분명히. 사람들이 "서버리스" 노드로 현재 하고 있는 작업은 확장성이 매우 뛰어나며 적어도 더 민첩하고 미래 지향적인 기업에서는 엔터프라이즈 API[응용 프로그래밍 인터페이스]를 JavaScript로 다시 작성할 수 있고 또 다시 작성할 것이라고 생각합니다.

개발자는 클라이언트에서 무엇을 찾아야 합니까?

당신은 당신에게 주어진 신뢰와 자율성을 원합니다. 나는 누군가가 항상 내 어깨 너머로 보고 있는 직업을 갖고 싶지 않습니다. 개발 작업으로 많은 시간을 할애하면 수정하는 데 5분이 걸리는 작업을 수행할 수 있지만 빌드와 관련된 작은 문제를 해결하는 데 4시간을 소비하여 실제로 테스트할 수 없습니다. 한 문제에 대해 8시간 또는 10시간을 보내는 경우가 많이 있습니다. 실제로 작업하고 전체 시간에 집중하며 실제 솔루션은 두 줄의 코드와 같습니다. 당신은 당신의 일이 어떤 것인지에 대해 그 정도의 이해를 갖고 있는 고용주를 원합니다.

사기꾼 증후군, 번아웃 및 스트레스 해소에 관하여

임포스터 증후군은 개발자들 사이에서 드문 현상이 아닌 것 같습니다. 당신은 그것을 경험하고 있다면 어떻게 대처합니까?

전적으로. 특히 회의에서 연설할 때. (아니면 AMA를 하시나요?)

교육/멘토링에 관해서는 지난 달보다 자신이 하는 일에 대해 더 많이 알고 있다는 사실을 깨달을 필요가 있습니다. 즉, 항상 예전으로 돌아가서 지식의 혜택을 받을 수 있는 사람들이 있습니다.

"모르겠어, 같이 조사하자"라고 말할 수 있는 것도 중요합니다. (또한 좋은 육아 팁).

최근 컨퍼런스에서 연설하는 에릭 라스무센

당신의 인생에서 하루는 어떻습니까? 일주일에 100시간을 일하고 지치지 않도록 모든 일정을 어떻게 짜나요?

내가 오픈 소스에 대해 깊이 파고들었을 때, 그것은 훨씬 더 많은 시간을 필요로 했습니다. 때로는 한 번에 한 달 정도 뒤로 물러나야 합니다. 나는 아이들을 학교에 데려가 사람들이 어떤 종류의 문제를 겪고 있는지 살펴보는 데 시간을 보냅니다. 그들이 정말로 심각한 경우, 나는 그들을 고치거나 도움이 되는 방식으로 대응하기 위해 약간의 노력을 기울입니다.

저는 오픈 소스와 전혀 관련이 없는 일을 하고 있어서 시간이 많이 걸립니다. 하루 종일 알림이 설정되어 있어 심각한 문제가 있는지 확인할 수 있습니다. 새로운 기능이 출시되었거나 그런 일이 있었다면 그 당시에 버그가 있을 가능성이 더 큽니다.

나는 프로젝트 요구 사항을 작성하는 사람이 "이것은 어제 완료했어야 했는데 왜 아직 완료되지 않았습니까?"라고 확신한다는 것을 배웠습니다. 어떤 팀이 내 작업을 받든 실제로 프로덕션에 적용하는 데 3주가 ​​걸리는 경우가 많았습니다. 그리고 당신은 "글쎄요, 그 스트레스가 다 무엇 때문이었나요?"

금요일까지 작업을 완료해야 하고 다음 금요일까지 완료되는 경우 실패로 인해 비즈니스가 중단되는 일은 거의 없습니다. 당신이 어리고 더 잘 알지 못할 때, "맙소사, 우리는 이것을 문 밖으로 꺼내야 합니다."라고 느낍니다. 하지만 충분히 시간을 두고 "잠깐만요, 그들이 우리에게 말한 것은 사실이 아니었습니다." 무엇이든. 완료되면 완료됩니다.”

나는 React가 React Hooks라는 것을 발표한 작년 10월에 조금 지쳤습니다. 내가 거기에 있었다면 새로운 것을 받아들이고 실행할 준비가 되어 있었다면 React Hooks를 처음 접한 사람 중 한 명이 되어 많은 마일리지를 얻을 수 있었을 것입니다. 다음 큰 일이 일어날 수 있다는 점에서 일종의 주의를 기울이고 있습니다.

스트레스를 풀기 위해 여가 시간에 무엇을 합니까?

나는 산책을 하고 개발에 관한 것이 아닌 팟캐스트를 듣습니다.

추천해주실 수 있으신가요?

내가 듣는 유일한 진정한 기술 팟캐스트는 기술 및 개발자 팁에 대한 접선적인 내용인 The Undefined Podcast입니다. 나는 또한 곧 등장할 React Podcast도 듣습니다(편집자의 품질에 따라 이해가 되기를 바랍니다).

내가 선택한 팟캐처인 Overcast를 보면 가장 우선순위가 높은 팟캐스트는 다음과 같습니다.

  • 로데릭 온 더 라인
  • 이해하기
  • 우연한 기술 팟캐스트
  • 도로 공사
  • 멱지수
  • 안녕하세요 인터넷
  • 방사선 연구실
  • 모든 응답

최근에 저는 실제로 두 개의 팟캐스트를 시작했습니다.

첫 번째는 정의 추구(Seek Justice)라고 불리는데, 형사 사법 제도에 대해 거의 아무것도 모르는 적당히 지적인 사람인 나는 전체 경력을 이를 조사하고 개혁하는 데 바친 제 친구를 인터뷰합니다. 그는 감옥 인구와 석방 후 재범을 줄이기 위해 여러 미국 주의 주지사들과 직접 협력하고 있습니다. 별로 관심을 두지 않은 주제지만, 공동 진행자는 매 에피소드마다 저를 사로잡습니다.

두 번째는 Dennis와 Erik이 있는 Happy Hour라고 하는 순수한 어리석음의 쇼로, 같은 친구와 나는 저녁에 몇 잔의 음료를 마시며 우리의 삶에 대해 이야기하고 서로를 웃게 만듭니다. Seek Justice는 밝은 눈으로 출퇴근할 때 사용하고 Happy Hour는 집으로 편안하게 운전할 때 사용합니다.

개발자에게 다시 가져오기 위해 팟캐스트 작업을 통해 업계에서 솔루션을 찾을 수 없었던 문제를 해결하는 데 도움이 되었습니다. 바로 Twitter 카드로도 사용할 수 있는 앨범 아트가 포함된 간편한 MP3 플레이어입니다. 그래서 AudioCard를 썼습니다.