Full-Stack-Entwicklertipps vom Ersteller der Redux-Formularbibliothek
Veröffentlicht: 2022-03-11Im Februar 2019 startete das Community-Team von Toptal eine brandneue Initiative: eine monatliche Gelegenheit, in Echtzeit mit den Netzwerkexperten von Toptal zu interagieren. Ask Me Anything (AMA)-Sitzungen stehen allen Mitgliedern des Kernteams und des Talentnetzwerks von Toptal offen – jeder kann eine Frage stellen. In diesem Beitrag haben wir ausgewählte Fragen und Antworten einer AMA mit dem JavaScript- und Redux-Experten Erik Rasmussen kuratiert. Erik spricht über die Herausforderungen der Open-Source-Softwareentwicklung, Entwicklertipps und die schwankende Welt von JavaScript, wie er als gefragter Entwickler mit Hochstapler-Syndrom und Burnout umgeht und seine Top-Podcast-Empfehlungen.
Erik ist ein Full-Stack-JavaScript-Experte mit über 25 Jahren Entwicklungserfahrung, spezialisiert auf React, Redux, Formulare in React und GraphQL. Auf GitHub – einem webbasierten Hosting-Dienst zur Versionskontrolle mit über 28 Millionen Nutzern – hat er sich mit über 20.000 Sternen einen Platz unter den Top 100 gesichert. Er ist auch der Autor der ersten und drittbeliebtesten Formularbibliotheken in React: Redux-Form und React-Final-Form.
Redux-Formular und der Stand von Open-Source-Software
Warum haben Sie sich nach dem enormen Erfolg von Redux Form entschieden, eine weitere Formularbibliothek zu erstellen?
Ich habe auf dem Weg mit Redux Form viele Lektionen gelernt und Einblicke in die Bedürfnisse von React Form-Entwicklern auf der ganzen Welt gewonnen. Einige der Probleme mit React Form konnten einfach nicht angegangen werden, ohne das Problem neu zu betrachten. (Mehr Details hier.)
Viele Entwickler träumen davon, ein äußerst beliebtes Open-Source-Projekt zu erstellen. Was sind einige der unerwarteten Folgen (gute und schlechte) eines so erfolgreichen Projekts wie Redux Form?
Es ist äußerst lohnend, wenn Sie einen Fehler beheben können, der einen Entwickler oder ein ganzes Team daran gehindert hat, ein Projekt abzuschließen. Es ist auch wirklich großartig, wenn Leute Fehler selbst finden und beheben. Bisher waren die Menschen sehr nett und liebenswürdig, wenn sie um Hilfe baten; Ich hatte noch keine Interaktion mit einem rechtschaffenen Benutzer, der glaubt, ich schulde ihm eine Lösung.
Auf der herausfordernden Seite ist Burnout eine reale Sache, und wir haben noch keinen Weg gefunden, OSS-Entwickler dafür zu entschädigen, dass sie ihre Zeit und Energie für OSS-Projekte aufwenden. Redux Form wird von milliardenschweren Unternehmen auf der ganzen Welt verwendet, um Geschäfte abzuwickeln, und seine Existenz hat den Teams, die es installiert haben, Tausende von Entwicklungsstunden gespart, aber es gibt keine gute Lösung, um den Autoren auch nur einen Hauch dieses Geldes zu geben .
Gibt es vielversprechende Lösungen in Arbeit, um Open-Source-Entwickler wie Sie zu entlohnen?
Ein Freund von mir hat diese Firma namens CodeFund gegründet. Er hatte diese Idee: „Was wäre, wenn wir Anzeigen in die Dokumentation der Codebibliothek schalten könnten?“ Als Entwickler verbringen wir den ganzen Tag damit, uns die Dokumentation anzusehen und herauszufinden, wie wir das implementieren können, was wir gerade tun. Außerdem verdienen Entwickler viel mehr Geld als ein durchschnittlicher Websurfer, also sind wir ein potenzielles Luxusprodukt.
CodeFund hatte die Idee, dass Dokumentation ein wirklich großartiger Ort ist, um Werbung zu machen. Ich war einer der ursprünglichen Piloten. Es funktionierte ziemlich gut, aber sie stießen auf ein Problem mit GitHub. Ursprünglich haben wir Anzeigen auf dem GitHub-Repository selbst platziert, aber GitHub und die Anwälte stürzten herein und sagten nein. Was schade ist. CodeFund verhandelte eine Weile mit ihnen, aber am Ende sagten sie nein.
Mit gut besuchter Bibliotheksdokumentation können Sie vielleicht 150 Dollar im Monat bekommen, was nicht das zahlt, was es wert ist. Es gibt einige seltene Bibliotheken – wie Babble oder Webpack – denen genug Geld gegeben wird, um tatsächlich zwei oder drei Vollzeit-Entwickler zu unterstützen, die daran arbeiten, das Ding besser zu machen. Babble und Webpack – Unternehmen im Wert von Milliarden und Abermilliarden Dollar sitzen auf ihrer Infrastruktur und Redux Form unterstützt sie mit Sicherheit.
Auf fast jeder Website, die Sie besuchen, können Sie in den Quellcode schauen und Code sehen, der von einer bestimmten Person geschrieben wurde, die nicht angemessen entlohnt wird. Das Bewusstsein muss geschärft werden, damit die Leute mehr wertschätzen, was Open Source ist und welche Stunden einige von uns investieren.
Warum etwas erstellen, das Open Source und kostenlos ist? Was ist der Anreiz für Entwickler wie Sie?
Der Grund, warum Sie es erstellen, ist, dass Sie es für das brauchen, woran Sie gerade arbeiten. Wenn du es loslässt, kommen andere und machen es besser. Der Open-Source-Traum ist, dass Sie sagen: „Ich habe eine kleine Schubkarre gebaut, die mir hilft, meine Steine von hier nach dort zu bringen“, und dann kommt jemand und macht es besser. Bei deinem nächsten Projekt gehst du zurück und verwendest dieselbe Bibliothek und denkst: „Whoa, dieses Ding bewegt sich viel schneller. Es ist jetzt besser."
Es ist auch sehr lohnend. Ich bekomme einen Dopaminschub, wenn Leute sagen: „Das hat uns drei Wochen lang aufgehalten, und diese kleine Lösung, für die Sie drei Stunden gebraucht haben, hat uns drei Wochen Zeit gespart.“ Das ist ein bisschen wie ein Suchtzyklus, wo man positive Verstärkung bekommt und es sich einfach gut anfühlt.
Bei meiner zweiten Formularbibliothek sagten die Leute nicht so sehr: „Hey, wir wollen eine weitere Formularbibliothek“, sondern ich überlegte, wie ich sie verbessern könnte.
Das ist sozusagen der Traum, warum du es tust. Aber es ist sicherlich nicht für das Geld.
Wie viel Vergütung würden Sie in einer idealen Welt für die Erstellung von Open-Source-Software erhalten? Nur ein Sahnehäubchen?
Ich hätte nichts dagegen, wenn mir jemand sechsstellig dafür bezahlt, den ganzen Tag nur an Open Source zu arbeiten. Wenn Sie den generierten Wert im Vergleich zu den Kosten betrachten, ist das Verhältnis für Open Source so hoch. Sie kommen zu kleinen winzigen Bibliotheken, die eine Sache machen, und eine Sache wirklich, wirklich gut.
Wenn jedes Unternehmen weltweit ein eigenes Entwicklerteam damit beauftragen müsste, würden die Ergebnisse sehr unterschiedlich ausfallen. Die Tatsache, dass wir Open Source haben und wir eine Lösung dafür haben können – eine Algorithmus-Blase an der Spitze, die am besten ist – bedeutet, dass jeder auf der Welt diese Effizienz eingebaut hat.
Ein weiterer Vorteil von Open Source ist, dass, wenn Sie etwas verwenden, das Sie geschrieben haben, und nur Ihr Unternehmen es verwendet . . . Vergleichen Sie das mit etwas, das 1.000 Unternehmen verwenden. Sie haben jeden einzelnen kleinen Winkel des Insektenraums gefunden, der möglicherweise ein Problem darstellen könnte, und Sie nehmen das und stecken das in Ihr Ding – Sie sind goldrichtig. Darin wirst du viel mehr Vertrauen haben.
Die dynamische Welt von JavaScript
Nachdem Sie so lange im JavaScript-Bereich gearbeitet haben, müssen Sie so viele heiße neue Frameworks [zum Erstellen von JavaScript-Anwendungen] kommen und gehen sehen. Wie bleiben Sie in der Branche auf dem Laufenden, damit Sie entscheiden können, welchen Frameworks Sie sich verpflichten möchten?
Sie müssen ein Gefühl für die Winde der Entwicklergemeinschaft bekommen. Der aktuelle Kampf zwischen TypeScript und Flow ist ein großartiges Beispiel. Ich habe mich in diesem Rennen zunächst für das falsche Pferd entschieden, da ich davon ausgegangen bin, dass Facebook ein besserer Verwalter eines Tipping-Frameworks wäre. Aber ich denke, TS hat diesen Kampf ziemlich gewonnen, und jetzt verlagere ich die Dinge langsam in diese Richtung.
Es gibt eine Ecke von Twitter, die das „Entwickler-Twitter“ ist. Wenn Sie genug Leuten folgen – vielleicht brauchen Sie eine Stichprobengröße von etwa hundert – können Sie ein Gefühl dafür bekommen, woher der Wind weht und was populär wird. Sie erhalten viele Posts wie „Früher habe ich Bibliothek A verwendet, aber ich habe gerade etwas über Bibliothek B gelernt und alles ist so viel einfacher.“ Du bekommst genug davon und denkst: „Nun, vielleicht sollte ich mir diese andere Bibliothek ansehen.“
Trends kommen und gehen im JavaScript-Bereich. Wird es immer in Bewegung sein?
Ich denke (und hoffe), dass es sich weiter entwickeln wird. Stillstand ist der Tod in der Technik. Sogar Java ist im Moment erheblich innovativ: Die Dinge, die Sie in Java 10 tun können, sind nicht vergleichbar mit Java 6 Ihrer Großmutter.
Es kann anstrengend sein, Ihre App endlich mit Tech X zu erstellen, nur um zu sehen, dass all die coolen Kids jetzt Tech Y verwenden. Aber das ist die Branche, in der wir tätig sind.
Welche JavaScript-Konzepte sind Ihrer Meinung nach besonders wichtig, um sie wirklich zu verstehen, um die Sprache zu beherrschen?
Ich würde sagen, funktionale Programmierung und die Idee, Funktionen herumzureichen, ist ziemlich wichtig. Vor allem, wenn Sie aus einer Sprache wie Java oder C++ kommen.
Denken Sie, dass React zum Erstellen von SPAs [Single-Page-Anwendungen] oder nur für Komponenten in einer regulären Seite verwendet werden sollte?

Das ist das Schöne an React: Es ist so vielseitig. Ich habe React langsam für alle neuen Funktionen in einer alten Java/jQuery-App bei meiner täglichen Arbeit eingeführt. React funktioniert gut, wenn man einen DOM-Knoten hat, auf den man reagieren kann. Es muss nicht die gesamte App steuern.
Wenn Sie eine neue React-App starten, welche Tools und Bibliotheken verwenden Sie regelmäßig von Grund auf neu?
Ich denke create-react-app
ist jetzt der klare Gewinner. Vor vier Jahren, als es so etwas noch nicht gab, war es viel schwieriger.
Wie handhaben Sie den App-Status in Ihren Reaktions-Apps?
Als Redux herauskam, war es eindeutig die Antwort. Ich habe jedoch festgestellt, dass ein Großteil meines Redux-„Zustands“ Dinge wie loading
und listOfObjects
waren, und ich habe kürzlich Apollo GraphQL für diese Dinge verwendet. Andere Dinge wie isSideNavOpen
können ziemlich einfach mit kontextbasierten Komponenten verwaltet werden. Allerdings gibt es immer noch einige legitime Anwendungsfälle für Redux, aber keine, auf die ich in meinen einfachen React-Apps gestoßen bin.
Was ist Ihr Lieblingseditor/IDE?
Ach, diese Frage!
Ich komme aus Java und bin seit vielen Jahren sehr zufrieden mit JetBrains IntelliJ, aber es ist etwas langsam für JS. Zuerst ging ich zu Atom, entschied mich aber schließlich für VS Code. Seine Integrationen für Jest und Flow und TypeScript sind unschlagbar.
Was ist Ihre Meinung zu isomorpher Entwicklung wie opal
, die ruby
in JS
übersetzt und dann den Weg für Rubysts öffnet, React/Flux-strukturierte Apps in Pure Ruby zu schreiben (ohne JS zu schreiben)?
Die Tatsache, dass JavaScript den Sprung auf den Server geschafft hat, ist meiner Meinung nach eine große Sache. Mit demselben Code sowohl auf dem Client als auch auf dem Server rendern zu können, ist enorm und wahrscheinlicher der Weg der Zukunft.
Was ist Ihrer Meinung nach das größte Problem unserer derzeit beliebtesten JS-Frameworks?
Ich bin mir nicht ganz sicher, aber ich mag die Richtung CSS-in-js, Serverless und SSR, die Unternehmen wie Zeit mit Next.js verfolgen.
Für mich als jemanden, der Ende der 90er Jahre Websites erstellt hat, ist es wirklich lustig, dass wir zu statischen Websites zurückkehren. Wir werden wieder alles zur Build-Zeit generieren, und dann haben Sie Ihr statisches Zeug auf dem Server und dann können Sie dynamisches Zeug hinzufügen, indem Sie das rehydrieren nennen. Nachdem Sie die gesamte Seite gerendert haben, können Sie das zusätzliche JavaScript abrufen, um Dinge tatsächlich zu animieren und Komponenten zu verschieben.
Zeit unterstützt mit seinem Now-Framework auch das statische Erstellen Ihrer Website, denn nichts ist schneller als das Herunterladen einer statischen HTML-Datei. Es ist nur eine Textdatei und dann boom, du hast es. Wenn Sie hingegen auf einen Server zugreifen, muss dieser vielleicht vier- oder hundertmal auf eine Datenbank zugreifen, nur um die Seite aufzubauen, die Sie anzeigen müssen. Das ist super langsam.
Die statische Idee gewinnt an Popularität.
Glauben Sie, dass JavaScript „ausgereifte“ Sprachen (wie Java und C++) annehmen und die Sprache der Wahl für Unternehmen werden kann?
Bestimmt. Die Dinge, die die Leute jetzt mit „serverlosen“ Knoten machen, sind extrem skalierbar, und ich denke, dass Unternehmens-APIs [Anwendungsprogrammierschnittstellen] in JavaScript umgeschrieben werden können und werden, zumindest von den agileren und zukunftsorientierteren Unternehmen.
Worauf sollte ein Entwickler bei einem Client achten?
Sie möchten ein Maß an Vertrauen und Autonomie, das Ihnen gegeben wird, vorausgesetzt, Sie sind alt genug, um es zu verdienen. Ich möchte keinen Job annehmen, bei dem mir ständig jemand über die Schulter schaut. Bei der Entwicklungsarbeit kann es viel Zeit geben, dass Sie etwas haben, das fünf Minuten dauert, um es zu beheben, aber Sie verbringen vier Stunden damit, an einem kleinen Problem mit dem Build zu arbeiten, das es so macht, dass Sie es nicht wirklich testen können. Es kommt oft vor, dass ich acht oder zehn Stunden mit einem Problem verbringe – wo ich wirklich arbeite, die ganze Zeit wirklich konzentriert bin – und die eigentliche Lösung ist wie zwei Codezeilen. Sie wollen einen Arbeitgeber, der genau versteht, wie Ihre Arbeit ist.
Über Imposter-Syndrom, Burnout und Stressabbau
Das Imposter-Syndrom scheint ein nicht ungewöhnliches Phänomen unter Entwicklern zu sein. Erleben Sie das und wenn ja, wie gehen Sie damit um?
Absolut. Vor allem, wenn Sie auf einer Konferenz sprechen. (Oder eine AMA machen?)
Wenn es um das Unterrichten/Mentoring geht, müssen Sie erkennen, dass Sie mehr über das wissen, was Sie tun, als Sie es im letzten Monat taten. Ergo gibt es immer wieder Menschen, die wieder dort sind, wo Sie früher waren und die von Ihrem Wissen profitieren könnten.
Wichtig ist auch, sagen zu können: „Ich weiß es nicht, lass es uns gemeinsam untersuchen“ (auch ein guter Erziehungstipp).
Wie sieht ein Tag in deinem Leben aus? Wie planen Sie alles so, dass Sie nicht 100 Stunden pro Woche arbeiten und ausbrennen?
Wenn ich mich wirklich intensiv mit Open Source beschäftigt habe, nimmt das viel mehr Zeit in Anspruch; Manchmal muss ich mich für einen Monat oder so zurückziehen. Ich bringe meine Kinder zur Schule und dann verbringe ich Zeit damit, mir anzusehen, welche Art von Problemen die Leute haben. Wenn sie wirklich ernst sind, dann versuche ich, sie zu beheben oder auf hilfreiche Weise zu reagieren.
Ich habe einen Job, der überhaupt nichts mit Open Source zu tun hat, was viel Zeit in Anspruch nimmt. Den ganzen Tag über habe ich Benachrichtigungen eingerichtet, damit ich sehen kann, ob es ein ernsthaftes Problem mit irgendetwas gibt. Wenn eine neue Funktion veröffentlicht wurde oder so, dann gibt es wahrscheinlicher Fehler um diese Zeit.
Ich habe gelernt, dass jeder, der die Anforderungen für ein Projekt schreibt, sich sicher ist: "Das hätte gestern erledigt werden sollen, warum ist es also noch nicht fertig?" Ich habe so viele Male erlebt, dass jedes Team, das meine Arbeit erhält, drei Wochen braucht, um sie tatsächlich in Produktion zu bringen. Und du denkst: „Nun, wozu war der ganze Stress da?“
Wenn eine Aufgabe bis Freitag erledigt werden muss und am darauffolgenden Freitag erledigt ist, wird das Geschäft fast nie geschlossen, weil Sie versagt haben. Wenn du jung bist und es nicht besser weißt, fühlt es sich an wie: „Oh mein Gott, wir müssen das rausbringen.“ Aber nachdem Sie das oft genug getan haben und sehen: „Moment mal, was sie uns gesagt haben, war nicht wirklich wahr“, können Sie sagen: „Okay, ja. Wie auch immer. Es wird fertig, wenn es fertig ist.“
Ich war letzten Oktober ein wenig ausgebrannt, als React dieses Ding namens React Hooks ankündigte. Wenn ich dort gewesen wäre, bereit, alles Neue aufzunehmen und damit zu rennen, hätte ich eine Menge Meilen daraus ziehen können, einer der ersten Leute zu sein, die in React Hooks eingestiegen sind. Ich halte Ausschau nach dem, was das nächste große Ding sein könnte.
Was machst du in deiner Freizeit, um den Stress abzubauen?
Ich gehe spazieren und höre mir Podcasts an, in denen es nicht um Entwicklung geht.
Könnt ihr welche empfehlen?
Die einzigen echten Tech-Podcasts, die ich höre, sind The Undefined Podcast, in dem es nur am Rande um Tech- und Entwicklertipps geht. Ich höre mir auch den React Podcast an—auf dem ich bald erscheinen werde (was hoffentlich Sinn macht, abhängig von der Qualität des Herausgebers).
Betrachtet man meinen bevorzugten Pod-Catcher, Overcast, gehören zu meinen höchst priorisierten Podcasts:
- Roderick auf der Linie
- Sinn ergeben
- Zufälliger Tech-Podcast
- Strassenbauarbeiten
- Exponent
- Hallo Internet
- Radiolabor
- Allen antworten
Kürzlich habe ich selbst zwei Podcasts gestartet:
Der erste heißt Seek Justice, in dem ich, eine mäßig intelligente Person, die fast nichts über das Strafjustizsystem weiß, einen Freund von mir interviewe, der seine gesamte Karriere damit verbracht hat, es zu untersuchen und daran zu arbeiten, es zu reformieren. Er arbeitet direkt mit den Gouverneuren mehrerer US-Bundesstaaten zusammen, um die Zahl der Gefängnisinsassen und die Zahl der Rückfälle nach der Entlassung zu reduzieren. Es ist kein Thema, das mich jemals wirklich interessiert hat, aber mein Co-Moderator fesselt mich in jeder Folge.
Die zweite ist eine reine Albernheitsshow namens Happy Hour mit Dennis und Erik, bei der derselbe Freund und ich abends ein paar Drinks trinken, über unser Leben reden und uns gegenseitig zum Lachen bringen. Seek Justice ist für Ihren strahlenden Weg zur Arbeit und Happy Hour für Ihre entspannende Heimfahrt.
Um es auf die Entwickler zurückzubringen, meine Podcast-Bemühungen haben mir geholfen, ein Problem zu lösen, für das ich in der Branche keine Lösung finden konnte: einen einfachen MP3-Player mit Albumcover, der auch als Twitter-Karte funktionierte. Also schrieb ich AudioCard.