Von Node.js bis zur Zahlung Ihrer freiberuflichen Steuern: Interview mit einem erfolgreichen Entwickler

Veröffentlicht: 2022-03-11

Bei Toptal sind wir immer auf der Suche nach den besten Freiberuflern. Aber was macht einen Freelancer wirklich großartig? Luis Martinho, einer unserer Top-Entwickler, wird von seinen Kunden geliebt – deshalb haben wir uns mit ihm zusammengesetzt, um über Freelancing, Technologien wie Freelance Node.js und HTML5 und das Zahlen Ihrer Steuern zu sprechen.

Also, um zu beginnen, wie bist du zur Freiberuflichkeit gekommen? Haben Sie jemals einen Vollzeitjob ausgeübt?

„Ich hatte ein paar Vollzeitjobs gearbeitet: Einige davon waren relativ unternehmensnah, aber der letzte war in einer Startup-Umgebung, insbesondere im Enterprise-SaaS-Bereich, wo ich attraktive Verwaltungssoftware in der Cloud entwickelte. Wir hatten ein sehr talentiertes Team und eine sehr ehrgeizige Vision. Nach vier Jahren Wachstum hatten wir ein aufregendes Produkt in einem aufregenden Bereich, was großartig war, aber ich war nicht sehr glücklich. Ich brauchte eine Änderung des Lebensstils. Als wir anfingen, habe ich persönlich nicht verstanden, wie schwer es war, „anzulaufen“. Es sind nicht nur die Stunden, denn Sie arbeiten viele Stunden in allen möglichen Umgebungen und Projekten; es ist der Stress, die Verantwortung und der Schmerz, der damit verbunden ist, etwas Neues zu schaffen. Es sind nicht nur Blumen und Regenbögen. Am Ende entschied ich, dass ich kein Mitbegründer von Material war (zumindest nicht zu der Zeit). Aber die Erfahrung hat mir ein viel tieferes Verständnis für den Druck gegeben, dem Startup-Gründer ausgesetzt sind, und ich weiß, dass ich dadurch ein besserer freiberuflicher Softwareentwickler geworden bin.

Freiberuflich zu arbeiten, sah immer mehr nach dem Leben aus, das ich wollte: Es bot mir die Möglichkeit, interessante Kunden und Projekte zu finden und gleichzeitig für qualitativ hochwertige Arbeit belohnt zu werden.

Ich fing an, nach regulären Jobs zu suchen: zuerst in meiner Heimatstadt, dann im Rest des Landes, dann im Rest von Europa. Es ist mir gelungen, einige interessante Projekte, einige interessante Vergütungspakete und einige interessante Standorte zu finden; aber ich glaubte, dass ich alles haben könnte. Also begann ich mich mit der Freiberuflichkeit zu beschäftigen. Und während ich weiter suchte, entsprach die Freiberuflichkeit immer mehr dem Leben, das ich wollte: Es bot mir die Möglichkeit, interessante Kunden und Projekte zu finden und gleichzeitig für qualitativ hochwertige Arbeit belohnt zu werden.“

Was war die größte Herausforderung beim Übergang in die freiberufliche Entwicklungsarbeit?

„Ursprünglich dachte ich, eine große Veränderung wäre die Einkommensstabilität, die man von einem Vollzeitjob erwartet, bei dem man einen bestimmten Geldbetrag hat, den man immer am Ende des Monats bekommt – und den bekommt man, was auch immer passiert. Ich hatte erwartet, dass dies ein großes Problem sein würde, da ich wusste, dass ich als Freiberufler nicht immer Kunden haben würde. Aber das ist nicht wirklich passiert – irgendwie überraschenderweise habe ich es bei Toptal geschafft, immer einen stetigen Strom von Kunden zu haben, ohne nach ihnen suchen zu müssen. Also, um ehrlich zu sein, war die größte Herausforderung wirklich, meinen Zeitplan zu organisieren. Ich habe eigentlich keine festen Arbeitszeiten. Ich stelle mir im Grunde meinen eigenen Zeitplan zusammen und muss daher disziplinierter sein als zuvor. Ich versuche, mehr oder weniger Standardzeiten zu arbeiten: Ich wache morgens auf, fange an zu arbeiten, esse zu Mittag zu der Zeit, zu der alle anderen zu Mittag essen, arbeite nachmittags und esse dann zu Abend. Ich versuche, einen normalen Zeitplan zu haben, nicht die ganze Nacht durchzumachen und jeden Tag das Mitternachtsöl zu verbrennen. Diese Disziplin war am Anfang eine große Herausforderung.“

Aber die meisten Leute sehen lockere Stunden als Vorteil des freiberuflichen Software-Engineerings. Was halten Sie davon?

Ich habe festgestellt, dass es sich auszahlt, diszipliniert zu sein, weil ich am Ende viel produktiver bin, wenn ich eine Reihe von Routinen habe.

„Natürlich ist es ein Vorteil. Es ist cool in dem Sinne, dass Sie, wenn Sie auf irgendwelche Probleme stoßen, wenn Sie jemandem in Ihrer Familie helfen müssen, oder wenn Sie diese großartige Gelegenheit für eine Art Freizeitbeschäftigung haben, danach greifen und diese Gelegenheit genießen können. Aber andererseits habe ich festgestellt, dass es sich auszahlt, diszipliniert zu sein, weil ich am Ende viel produktiver bin, wenn ich eine Reihe von Routinen habe, weil diese Routinen mich im Grunde leiten: Ich kann auf den Punkt kommen und mehr erledigen während dieser Zeit. Es ist gut, diese Freiheit zu haben, aber ich denke, sie muss verantwortungsvoll genutzt werden.“

Freiberufliche Softwareentwickler profitieren von flexiblen Arbeitszeiten und einer anderen Gehaltsstruktur.

Ihre Kunden lieben Sie. Was ist dein Geheimnis?

„Als freiberuflicher Softwareentwickler ist es wahrscheinlich eine gute Eigenschaft, etwas faul zu sein, wenn es darum geht, nach dem einfachsten und billigsten Weg zu suchen, um etwas zu erledigen. extrem genervt von sich wiederholenden Arbeiten zu sein und so Ihre Werkzeugkette kontinuierlich zu verbessern. Sie verbringen beispielsweise viel Zeit in einem Terminal: Sie sollten ernsthaft darüber nachdenken, Verknüpfungen, Aliase oder was auch immer Ihnen Zeit und Tipparbeit spart, zu erstellen. Letztendlich sind viele der Aufgaben, die Sie erledigen, nicht wirklich Raketenwissenschaft; Sie durchlaufen nur ein paar Schleifen, um etwas zu erledigen. Wenn Sie dieses Zeug optimieren und die sich wiederholende Arbeit aus dem Weg räumen, haben Sie mehr Zeit für die eigentliche Raketenwissenschaft.

Wenn Sie die sich wiederholende Arbeit aus dem Weg räumen, haben Sie mehr Zeit zur Verfügung, um die eigentliche Raketenwissenschaft zu betreiben.

Sie müssen auch jemanden haben, der sich um Stundenlohn und Abrechnung kümmert, Geld von Kunden bekommt und sogar neue Kunden gewinnt, damit Sie sich auf großartige Arbeit konzentrieren können. Und das ist absolut wichtig. Als freiberuflicher Softwareentwickler arbeiten Sie an der Lieferung, aber auch an Marketing und Vertrieb. Und was Sie tun möchten – und was Ihre Kunden von Ihnen wollen – ist, so viel Zeit für die Lieferung und so wenig Zeit für Marketing, Vertrieb und sogar Finanzen aufzuwenden. Sie müssen immer Zeit damit verbringen, nach neuen freiberuflichen Entwicklungskunden zu suchen, wenn Sie für alte arbeiten, und das ist nicht etwas, was die alten Kunden wollen – und Sie wollen es auch nicht. Sie wollen sich nur darauf konzentrieren, Ihre Arbeit gut zu machen. Es ist also etwas, worüber Sie sich sehr freuen sollten, wenn jemand anderes die Abrechnung übernimmt und neue Kunden findet, und Sie können sich sehr glücklich schätzen, wenn Sie es finden.

Und vergiss nicht: Bezahle deine Freelancer-Steuern.“

Wie motivierst du dich täglich?

Sie haben das Gefühl, dass Sie auf eine Weise mit ihnen verbunden sind, dass Sie nicht nur abrechenbare Stunden übermitteln.

„Was für meine Motivation eine große Rolle spielt, ist die Qualität der Kunden. Wenn möglich, versuche ich, etwas wählerisch zu sein. Das heißt, ich versuche, Jobs anzunehmen, die mich im Hinblick auf die damit verbundene technologische Herausforderung motivieren, sei es das Lösen eines schwierigen Problems oder das Arbeiten in einem interessanten Bereich. Und es folgt irgendwie einfach daraus. Ich arbeite immer mit einem Kunden zusammen und denke, dass ich auf ein gemeinsames Ziel hinarbeite: Ich versuche, das Gesamtbild zu sehen und mich als Teil des Teams zu sehen. Sie sind nie wirklich emotional Teil des internen oder Onsite-Softwareentwicklungsteams, besonders wenn Sie nicht im Büro sind, aber Sie können sich immer noch als Teil des Teams in Bezug auf das Gesamtprojekt und die Qualität fühlen die Arbeit. Und ich denke, die Leute auf der anderen Seite (der Kunde und das Kundenteam) spüren das – sie haben das Gefühl, dass Sie auf eine Weise mit ihnen verbunden sind, dass Sie nicht nur abrechenbare Entwicklungsstunden schicken, sondern sich wirklich Sorgen darüber machen, ob sie erfolgreich sein werden oder wenn die Qualität der Arbeit gut genug ist.“

Worauf achten Sie bei einem potenziellen freiberuflichen Software- oder Webentwicklungskunden?

Dieser freiberufliche Webentwickler erwägt seine vielen Kundenoptionen.

„Im Allgemeinen bevorzuge ich neuere Technologien als ältere und auch neu entstehende Sachen – ich würde nicht unbedingt sagen, neu entstehend, weil einige dieser Sachen aktuell sind, aber ich würde lieber mit jemandem zusammenarbeiten, der Single-Page-Anwendungen erstellt und Backbone.js verwendet und Node.js mit Express oder einem MVC-Framework als jemand, der den Java Enterprise Edition-Stil verwenden würde.

Ich bin freiberuflich tätig und hätte viel lieber einen Kunden, der über eine asynchrone Kommunikationslösung verfügt. Wenn Sie Telearbeit leisten, ist es viel einfacher, in ein Team einzusteigen, das etwas so Einfaches wie eine Mailingliste verwendet oder Chatrooms in Campfire hat oder GitHub als Tool für die Zusammenarbeit verwendet (letzteres funktioniert bemerkenswert gut). Alles in allem riskieren Sie, dass Sie viele Informationen und Geschwätz verlieren, wenn der Kunde das Gespräch mit dem Wasserspender nicht irgendwie aufnimmt, was sich auf Ihre Arbeit auswirken kann.“

Das ist ein interessanter Punkt. Gibt es weitere Tipps für die Telearbeit?

Es ist schwieriger, sich an den Typen zu erinnern, der nie im Gebäude ist.

„Man muss einen Weg finden, die Abwesenheit des Büros zu kompensieren. Die Lösung, die ich gefunden habe, ist, proaktiv zu sein. Zum Beispiel: Commit-Logs analysieren. Wenn Sie Telearbeit leisten, sollten Sie sich etwas Zeit nehmen, um einfach einen Blick darauf zu werfen und eine Vorstellung davon zu bekommen, woran andere Leute arbeiten. Wenn Sie wissen, was in täglichen Standups passiert, die über eine Projektmanagementlösung benachrichtigt werden, ist es eine gute Praxis, zu versuchen, Hinweise darauf zu finden, woran das Team arbeitet. Dann integriert man sich leichter. Das ist natürlich ein zusätzlicher Aufwand für Sie – Sie können sich vielleicht davon befreien, wenn sie einen wirklich guten Kommunikationsprozess haben, aber es kann ein guter Tipp sein und einige Probleme ersparen. Es ist schwieriger, sich an den freiberuflichen Entwickler zu erinnern, der nie im Gebäude ist.“

Freiberuflicher Softwareentwickler zu werden, beginnt mit der Kommunikation.

Was ist die wichtigste Eigenschaft eines Freiberuflers?

„Man muss jemand sein, der ein fließendes Gleichgewicht zwischen seinem Privatleben und seiner Arbeit aufrechterhalten kann. Als Freiberufler ist es wichtig, reaktionsschnell zu sein. Aber reaktionsschnell zu sein, hat einen großen Tribut an Ihr Privatleben. Sie müssen nicht ständig Ihre E-Mails abrufen – Sie können einfach benachrichtigt werden, filtern, ob es wichtig ist oder nicht, und dann können Sie einfach wieder die Zeit mit Ihrer Familie oder so weiter genießen. Sie müssen ein guter Kontextwechsler sein. Kontextwechsel ist normalerweise teuer, aber Sie müssen ihn billig und schnell machen, damit Sie einen sehr hohen Servicestandard haben können, indem Sie sehr schnell auf Notfälle reagieren, aber gleichzeitig die Gesellschaft von Freunden und Familie genießen können.

Sie müssen ein guter Kontextwechsler sein. Der Kontextwechsel ist normalerweise teuer, aber Sie müssen ihn billig und schnell machen.

Für die übliche freiberufliche Entwicklungsvereinbarung müssen Sie wissen, wie Sie Ihre Finanzen konservativ verwalten. Überraschenderweise ist das bei Toptal nicht wirklich passiert, aber normalerweise ist es sehr einfach, von einem Festmahl zu einer Hungersnot zu kommen, wenn es um die Bezahlung von Software- oder Webentwicklern geht, sogar stündlich. In einem Monat verdienst du eine Menge Geld und plötzlich hast du keine Kunden und keine Arbeit mehr. Sie müssen also diszipliniert sein: Sie brauchen eine Vorstellung vom Durchschnittslohn, und Sie müssen diesen Betrag ausgeben; Der ganze Überschuss muss eine Art Polster sein, das Ihnen hilft, die Unsicherheiten bei dieser Art von Arbeit zu überwinden. Das trifft auf Toptal wirklich nicht zu, weil der Kundenstrom wirklich konstant war, aber es ist immer noch eine gute Praxis.“

Als Freiberufler übernehmen Sie im Laufe Ihrer Karriere eine Reihe verschiedener Softwareentwicklungsprojekte. Was machen Sie also, wenn Sie zum ersten Mal Zugriff auf eine neue Codebasis erhalten? Nehmen wir an, es sind eine Milliarde Codezeilen.

„Ich würde versuchen, diszipliniert von oben nach unten vorzugehen. Das bedeutet, ein Gefühl für die Gesamtstruktur der Codebasis zu bekommen. Das scheint irgendwie offensichtlich, aber wenn Sie versuchen, den Code zu verstehen, werden Sie zu dem getrieben, woran Sie in diesem bestimmten Moment arbeiten, und zu der bestimmten Aufgabe, die Sie zur Hand haben. Das verschiebt Ihren Fokus vom Top-Down-Ansatz und bringt Sie ganz nach unten, während Sie versuchen, nach oben zu gehen und die Teile aus den spezifischen Codeteilen zusammenzusetzen, die Sie sich ansehen. Kurzfristig mag es für Sie besser sein, diesen bestimmten Fehler zu beheben oder diese bestimmte Funktionalität hinzuzufügen, aber mittelfristig werden Sie sich wünschen, Sie hätten den Top-Down-Ansatz beibehalten. Dann haben Sie einen viel besseren Überblick über das System und wie die Teile interagieren.“

Ein freiberuflicher Entwickler zu sein bedeutet, einen Top-Down-Ansatz für neue Codebasen zu verfolgen, um effektiv zu starten.

Sie haben viel Front- und Backend-Arbeit geleistet. Denken Sie, dass es für freiberufliche Entwickler heute wichtig ist, beide Fähigkeiten zu haben?

"Nö. Ich bin ganz ehrlich: Ich denke, Sie können viel von der Spezialisierung profitieren, zum Beispiel, wenn Sie mit einer lächerlich kleinen Menge von Technologien lächerlich gut sind; aber es ist nur eine persönliche Entscheidung. Ich bin neugierig, deshalb arbeite ich mit vielen verschiedenen Technologien. Und das ist der Grund, warum ich sowohl im Front-End als auch im Back-End freiberuflich tätig bin.

Technologien werden sich ändern – was heute angesagt ist, wird wahrscheinlich morgen oder zumindest in 6-12 Monaten langweilig sein.

Trotzdem denke ich, dass es für einen Entwickler entscheidend ist, während seines gesamten Berufslebens so viele Technologien und Paradigmen wie möglich auszuprobieren und zu lernen. Technologien werden sich ändern – was heute angesagt ist, wird wahrscheinlich morgen oder zumindest in 6-12 Monaten langweilig sein – und eine der Schlüsselqualifikationen für einen freiberuflichen Softwareentwickler ist es, schnell eine neue Technologie oder ein neues Projekt aufzunehmen. Dafür ist es wirklich hilfreich, wenn Sie einen systematischen Ansatz zum Lernen neuer Dinge haben und ihn üben, indem Sie jedes Jahr mindestens eine neue Sprache, einen neuen Rahmen oder ein neues Paradigma lernen.“

Sie haben eine Menge freiberuflicher Arbeit mit Rails, Django und in jüngerer Zeit Node.js geleistet. Wie unterscheiden sich Ihre Erfahrungen zwischen den dreien?

„Oh oh, wir werden hier in einen Religionskrieg geraten. Ich würde sagen, Node ist ganz anders als die anderen beiden. Wenn Sie zum ersten Mal Node.js-Beispielen ausgesetzt sind, haben Sie möglicherweise Schwierigkeiten, in das ereignisgesteuerte Paradigma einzusteigen. Es ist etwas, das für jemanden, der die ganze Zeit Rails-Arbeit macht, vielleicht nicht 100% natürlich ist. Wenn Sie hingegen mit JavaScript arbeiten, entwickeln Sie wahrscheinlich für den Browser und sind daher bereits mit dem ereignisgesteuerten Paradigma vertraut. Persönlich habe ich in meiner freiberuflichen Erfahrung mit Node ein MVC-Framework verwendet, also habe ich keine Kerntechnologie für Node entwickelt; Ich war nur ein Standardbenutzer eines kundenspezifischen proprietären Frameworks (vergleichbar mit Express).“

Was sind Ihre Lieblingstools, die zu wenige Entwickler verwenden?

Node.js-Freelancer müssen anders denken als Rails-Freelancer.

„Aus dem Kopf, WebStorm von JetBrains. Es ist eine JavaScript-IDE, die es wirklich wert ist, nachgeschlagen zu werden. Das neue Android-Studio, das auf der Google I/O veröffentlicht wurde, wird von JetBrains-Software betrieben, nicht von Eclipse oder so. Ich mag Eclipse, aber ich habe wirklich viel Spaß mit WebStorm. Ich lerne immer noch viele Abkürzungen – und das ist eine Übung, die ein guter freiberuflicher Softwareentwickler auch haben sollte: mehr über seine Tools zu lernen. Ich lerne immer noch mehr über meine IDE. WebStorm hat viele intelligente Verknüpfungen, ein gutes Standardlayout und einige nette ZenCoding-Eigenschaften, mit denen Sie HTML so schnell wie nie zuvor schreiben können. Alles in allem ist es ein gutes Werkzeug.“

Wenn ein freiberuflicher Kunde möchte, dass Sie ein Projekt mit Rust oder Go oder einer neuen Sprache machen, mit der Sie noch nie gearbeitet haben, was würden Sie sagen?

Egal wie gut Sie sind, es wird immer Zeit für die Einrichtung geben, und das kann für den Kunden kostspielig sein.

„Normalerweise versuche ich, meinen ersten Kontakt mit Sprachen außerhalb der Kundenarbeit herzustellen, nicht in der Zeit des Kunden – egal wie gut Sie sind, es wird immer Einrichtungszeit geben, und das kann für den Kunden kostspielig sein. Abgesehen davon, wenn der Kunde mir sagt: „Ok, wir fühlen uns wohl, auch wenn Sie nichts darüber wissen“, würde ich das als eine großartige Gelegenheit sehen, etwas Neues zu lernen. Wenn der Kunde andererseits einen anspruchsvollen Zeitplan hatte, würde ich ihm raten, jemand anderen einzustellen oder eine Sprache zu verwenden, mit der ich mich wohl fühle, damit ich wusste, dass ich von Anfang an produktiv sein kann.“

Was war die größte technische Herausforderung, die Sie während Ihrer freiberuflichen Tätigkeit lösen mussten?

„Da fällt mir ein freiberufliches HTML5-Projekt ein. In die HTML5-Canvas-API eintauchen, um einige erweiterte Grafikeditorfunktionen auszuführen, z. B. die Lassoauswahl und die Freiformauswahl, bei der Sie einen Teil des Bildes zuschneiden, aber den Rest weglassen, Berechnungen mit Pixelsätzen und ähnliches. Das war so ähnlich wie MS Paint, das HTML5 Canvas verwendet und Dinge wie einen Pinsel implementiert: Sie würden denken, ein Pinsel wäre etwas Einfaches – es ist, wenn Sie nur eine Linie zeichnen, aber in diesem Fall möchten Sie also einen Pinselstrich imitieren Ich musste eine mathematische Formel verwenden, um zu simulieren, wie ein Pinsel die Leinwand berührt und mit Tinte eine Unschärfe hinterlässt.“

Für HTML5-Freiberufler ist diese neue Technologie möglicherweise etwas gewöhnungsbedürftig.

Ihre neue Lieblingstechnologie, mit der Sie in letzter Zeit gearbeitet haben?

„Was ich über Meteor gehört habe, ist interessant im Hinblick darauf, wie sie ein umfassendes Head-and-Shoulders-Framework für die Entwicklung einer Single-Page-Anwendung bieten. Es behandelt sowohl das Back-End als auch das Front-End. Ich habe noch nicht damit gearbeitet, aber ich bin neugierig und brenne darauf, es auszuprobieren.“