Node.jsからフリーランスの税金の支払いまで:成功した開発者へのインタビュー

公開: 2022-03-11

Toptalでは常に最高のフリーランサーを探しています。 しかし、何がフリーランサーを本当に素晴らしいものにしているのでしょうか? トップデベロッパーの1人であるLuisMartinhoは、クライアントに愛されています。そこで、フリーランス、フリーランスのNode.jsやHTML5などのテクノロジー、税金の支払いについて話し合いました。

それで、最初に、どのようにしてフリーランスを始めましたか? フルタイムで働いたことはありますか?

「私は2、3のフルタイムの仕事をしていました。そのうちのいくつかは比較的企業でしたが、最近はスタートアップ環境、特にエンタープライズSaaSスペースで、クラウドにセクシーな管理ソフトウェアを構築していました。 私たちは非常に才能のあるチームと非常に野心的なビジョンを持っていました。 4年間の成長の後、私たちはエキサイティングな空間でエキサイティングな製品を手に入れました。それは素晴らしいことでしたが、私はあまり幸せではありませんでした。 ライフスタイルを変える必要がありました。 私たちが始めたとき、私は個人的に「立ち上がる」ことがどれほど難しいかを理解していませんでした。 あらゆる種類の環境やプロジェクトで長時間働くため、時間だけではありません。 それは、何か新しいものを作ることに伴うストレス、責任、そして苦痛です。 花や虹だけではありません。 結局、私は共同創設者ではないと判断しました(少なくとも当時はそうではありませんでした)。 しかし、この経験により、スタートアップの創設者が直面しているプレッシャーについてより深く理解することができました。そのおかげで、私はより優れたフリーランスのソフトウェア開発者になったことを知っています。

フリーランスは私が望んでいた人生にますます似ていました。それは質の高い仕事に対して報われながら、興味深いクライアントやプロジェクトを見つける機会を提供しました。

私は定期的な仕事を探し始めました。最初は故郷で、次に国の残りの部分で、次にヨーロッパの残りの部分で。 私はなんとかいくつかの興味深いプロジェクト、いくつかの興味深い報酬パッケージ、そしていくつかの興味深い場所を見つけることができました。 しかし、私はそれをすべて持つことができると信じていました。 それで私はフリーランスを調べ始めました。 そして、私が見続けるにつれて、フリーランスは私が望んでいた人生にますます似ていました。それは、質の高い仕事に対して報われる一方で、興味深いクライアントやプロジェクトを見つける機会を提供しました。」

フリーランスの開発作業への移行中に生じた最も困難な課題は何でしたか?

「元々、大きな変化は、フルタイムの仕事に期待する収入の安定であると想像していました。フルタイムの仕事では、月末までに常に一定の金額を得ることができ、何が起こってもそれを得ることができます。 フリーランサーであるということは、必ずしもクライアントがいるとは限らないことを知っていたので、大きな関心事になると思っていました。 しかし、それは実際に起こったことではありません。驚くべきことに、Toptalでは、クライアントを探すことなく、常に安定したクライアントの流れを維持することができました。 ですから、正直なところ、主な課題は私のスケジュールを整理することでした。 私は本当に働くための決まった時間はありません。 基本的には自分でスケジュールを組んでいるので、以前よりも規律を守らなければなりません。 私は多かれ少なかれ標準的な時間に働くようにしています。私は朝起きて働き始め、他のみんなが昼食をとる時間に昼食をとり、午後に働き、そして夕食をとります。 私は、夜通しの人を引っ張るのではなく、毎日真夜中の油を燃やすのではなく、通常のスケジュールで仕事をするようにしています。 この規律は当初、大きな課題でした。」

しかし、ほとんどの人は、フリーランスのソフトウェアエンジニアリングのメリットとして時間の余裕があると考えています。 それについてどう思いますか?

一連のルーチンがあると、生産性が大幅に向上するため、懲戒処分を受けることで成果が得られることがわかりました。

「確かに、それはメリットです。 何か問題が発生したり、家族の誰かを助けなければならない場合、またはある種の余暇活動のためのこの素晴らしい機会がある場合、あなたはそれを追いかけることができ、その機会を楽しむことができるという意味でクールです。 しかし一方で、一連のルーチンがあると、それらのルーチンが基本的に私を導くので、私ははるかに生産的になるので、懲戒処分を受けることは報われることがわかりました:私は追跡に切り込み、より多くのことを成し遂げることができますその間。 その自由があるのは良いことですが、責任を持って使用する必要があると思います。」

フリーランスのソフトウェア開発者は、柔軟なスケジュールと異なる支払い構造のメリットを享受しています。

あなたのクライアントはあなたを愛しています。 あなたの秘密は何ですか?

「フリーランスのソフトウェア開発者として、何かを成し遂げるための最も簡単で安価な方法を探すという点で、少し怠惰になるのはおそらく良い特徴です。 繰り返し作業を行うことで非常にイライラするため、ツールチェーンを継続的に改善します。 たとえば、ターミナルで多くの時間を費やします。ショートカットやエイリアスの作成を真剣に検討する必要があります。これにより、時間を節約し、入力を節約できます。 結局のところ、あなたが行うタスクの多くは実際にはロケット科学ではありません。 彼らは何かを成し遂げるためにいくつかのループを通過しているだけです。 そのようなものを最適化し、繰り返しの作業を邪魔にならないようにすれば、実際のロケット科学を行うためにより多くの時間を利用できるようになります。

繰り返し作業を邪魔にならないようにすれば、実際のロケット科学を行うためにより多くの時間を利用できます。

また、素晴らしい仕事に集中できるように、他の誰かに時給と請求、顧客からのお金の獲得、さらには新しい顧客の獲得を処理させる必要があります。 そして、それは絶対に重要です。 あなたがフリーランスのソフトウェア開発者であるとき、あなたは配達だけでなく、マーケティングと販売にも取り組んでいます。 そして、あなたがしたいこと、そしてあなたのクライアントがあなたにしたいことは、配達にできるだけ多くの時間を費やし、マーケティング、販売、さらには財務にさえも少しの時間を費やすことです。 古いクライアントのために働いているときは、常に新しいフリーランスの開発クライアントを探すのに時間を費やす必要があります。それは古いクライアントが望んでいることではなく、あなたが望んでいることでもありません。 あなたはただ自分の仕事をうまくやることに集中したいだけです。 したがって、他の誰かに請求を処理させ、新しいクライアントを見つけることは、あなたが非常に満足しているはずのことであり、あなたがそれを見つけた場合、あなたは非常に幸運です。

また、忘れないでください。フリーランスの税金を払ってください。」

毎日どのようにやる気を維持していますか?

彼らは、あなたが請求可能な時間を超えて送っているだけではない方法であなたが彼らとつながっていると感じています。

「私のモチベーションに大きな役割を果たしているのは、クライアントの質です。 可能であれば、私はちょっとうるさいようにしています。 つまり、難しい問題を解決するのか、面白い空間で働くのかという技術的な課題に関して、私をやる気にさせるギグを受け入れるようにしています。 そして、それはまさにそれから続くものです。 私は常に、共通の目標に向かって取り組んでいると考えてクライアントと協力しています。私は全体像を見て、自分自身をチームの一員として見ようとしています。 特に不在の場合は、社内またはオンサイトのソフトウェア開発チームに完全に感情的に参加することはありませんが、プロジェクト全体と品質の点でチームの一員のように感じることができます。作品。 そして、反対側(クライアントとクライアントチーム)の人々は、あなたが請求可能な開発時間を単に送っているだけでなく、あなたが彼らとつながっていると感じていると思います。あなたは本当に心配していますか?彼らは成功するか、仕事の質が十分であれば。」

潜在的なフリーランスソフトウェアまたはWeb開発クライアントに何を求めますか?

このフリーランスのWeb開発者は、彼の多くのクライアントオプションを検討しています。

「一般的に、私は古いテクノロジーよりも新しいテクノロジーを好みます。また、新しいテクノロジーも好きです。これらのテクノロジーの一部は最新のものであるため、必ずしも新しいテクノロジーとは言えませんが、シングルページアプリケーションを作成してBackbone.jsを使用している人と協力したいと思います。また、JavaEnterpriseEditionスタイルを使用する人よりもExpressまたはMVCフレームワークを使用するNode.js。

私はフリーランスです。非同期通信ソリューションを導入しているクライアントが欲しいです。 在宅勤務の場合は、メーリングリストのような単純なものを使用しているチーム、Campfireにチャットルームがあるチーム、またはコラボレーションツールとしてGitHubを使用しているチームに入るのがはるかに簡単です(この最後のツールは非常にうまく機能します)。 全体として、クライアントが何らかの方法でウォータークーラーの話をキャプチャしていない場合、作業に影響を与える可能性のある多くの情報とおしゃべりを失うリスクがあります。」

それは興味深い点です。 在宅勤務に関するその他のヒントはありますか?

建物に一度もいない男を思い出すのは難しいです。

「不在を補う方法を見つける必要があります。 私が見つけた解決策は、積極的に取り組むことです。 例:コミットログを分析します。 在宅勤務をしているときは、他の人が何に取り組んでいるのかを一瞥して考えておくために、少し時間を取っておく必要があります。 プロジェクト管理ソリューションを通じて通知された、毎日のスタンドアップで何が起こっているかを知っている場合は、チームが取り組んでいることについてのヒントを見つけることをお勧めします。 そうすれば、より簡単に統合できます。 それは明らかにあなたの側の追加の努力です—彼らが本当に良いコミュニケーションプロセスを持っていればあなたはそれをやめることができるかもしれませんが、それは良いヒントであり、いくつかの問題を救うことができます。 建物にいないフリーランスの開発者を思い出すのは難しいです。」

フリーランスのソフトウェア開発者になることは、コミュニケーションから始まります。

フリーランサーの最も重要な品質は何ですか?

「あなたはあなたの個人的な生活とあなたの仕事の間の流動的なバランスを維持することができる誰かでなければなりません。 フリーランサーとして、応答性が重要です。 しかし、敏感であることはあなたの個人的な生活に大きな犠牲を払うことになります。 メールを常にチェックする必要はありません。通知を受け取り、重要かどうかをフィルタリングしてから、家族との時間を楽しむなどに戻ることができます。 あなたは優れたコンテキストスイッチャーである必要があります。 コンテキストの切り替えは通常高価ですが、緊急事態に非常に対応すると同時に、友人や家族との付き合いを楽しむことで、非常に高い水準のサービスを提供できるように、安価で高速にする必要があります。

あなたは優れたコンテキストスイッチャーである必要があります。 コンテキストの切り替えは通常費用がかかりますが、安価で高速にする必要があります。

通常のフリーランスの開発の取り決めのために、あなたはあなたの財政を保守的に管理する方法を知らなければなりません。 驚くべきことに、これはToptalでは実際には発生していませんが、ソフトウェアやWeb開発者の支払いに関しては、通常、ごちそうから飢饉に移行するのは非常に簡単です。 ある月、あなたはたくさんのお金を稼ぎ、突然あなたはクライアントを失い、あなたはそれ以上仕事をしなくなります。 したがって、懲戒処分を受ける必要があります。平均賃金のアイデアが必要であり、その金額を使う必要があります。 この種の仕事をすることの不確実性を乗り越えるのを助けるために、すべての余分なものはある種のクッションである必要があります。 クライアントの流れは非常に安定しているため、これはToptalには当てはまりませんが、それでも良い習慣です。」

フリーランサーとして、あなたはキャリアを通してさまざまなソフトウェア開発プロジェクトに取り組んでいます。 では、新しいコードベースへのアクセスを初めて許可されたときはどうしますか? 10億行のコードだとしましょう。

「私はトップダウンのアプローチを取ることについて訓練されるように努めます。 これは、コードベースの全体的な構造を理解することを意味します。 それは明らかなことのように思えますが、コードを理解しようとすると、その特定の瞬間に取り組んでいることと、手元にある特定のタスクに駆り立てられます。 それはあなたの焦点をトップダウンアプローチからシフトさせ、あなたが見ているコードの特定の部分からの部分を組み立てて、上に行こうとしてあなたを一番下に置くでしょう。 短期的には、その特定のバグを修正したり、その特定の機能を追加したりする方が良いかもしれませんが、中期的には、トップダウンのアプローチを維持したいと思うでしょう。 そうすれば、システムとそれらの要素がどのように相互作用するかをよりよく理解できるようになります。」

フリーランスの開発者であるということは、効果的に始めるために新しいコードベースにトップダウンのアプローチを取ることを意味します。

あなたは多くのフロントエンドとバックエンドの仕事をしました。 今日のフリーランスの開発者にとって、これらのスキルセットの両方を持つことが重要だと思いますか?

"いいえ。 私は非常に正直に言うと、専門化から多くのことを得ることができると思います。たとえば、途方もなく小さなテクノロジーのセットで途方もなく上手い場合などです。 しかし、それは個人的な選択です。 私は興味があるので、さまざまなテクノロジーを使用しています。 そしてそれが私がフロントエンドとバックエンドの両方のフリーランスの仕事をすることになった理由です。

テクノロジーは変化します—今日の暑さはおそらく明日または少なくとも6〜12か月で退屈になるでしょう。

そうは言っても、開発者にとって、プロとしての生涯を通じて、できるだけ多くのテクノロジーとパラダイムを学ぼうとすることが重要だと思います。 テクノロジーは変化します—今日の暑さはおそらく明日または少なくとも6〜12か月で退屈になるでしょう—そしてフリーランスのソフトウェア開発者にとって重要なスキルセットの1つは、新しいテクノロジーや新しいプロジェクトをすばやくピックアップすることです。 そのためには、新しいことを学ぶための体系的なアプローチがあり、毎年少なくとも1つの新しい言語、フレームワーク、またはパラダイムを学ぶことによってそれを実践する場合に非常に役立ちます。」

Rails、Django、そして最近ではNode.jsで大量のフリーランスの仕事をしました。 3つの間であなたの経験はどのように異なりましたか?

「ああ、ここで宗教戦争に入るつもりです。 Nodeは他の2つとはかなり違うと思います。 Node.jsの例に最初に触れたとき、イベント駆動型のパラダイムに入るのに問題があるかもしれません。 これは、Railsの作業を常に行っている人にとっては100%自然ではないかもしれません。 一方、JavaScriptを使用している場合は、おそらくブラウザー用に開発しているため、イベント駆動型パラダイムに既に精通しています。 個人的には、Nodeでのフリーランスの経験では、MVCフレームワークを使用しているため、Nodeのコアテクノロジーを開発していません。 私は、クライアント固有のプロプライエタリフレームワーク(Expressと比較して)の標準ユーザーになりました。」

使用している開発者が少なすぎるお気に入りのツールは何ですか?

Node.jsフリーランサーは、Railsフリーランサーとは異なる考え方をする必要があります。

「頭のてっぺんから、JetBrainsのWebStorm。 これは、調べる価値のあるJavaScriptIDEです。 Google I / Oでリリースされた新しいAndroidStudioは、EclipseなどではなくJetBrainsソフトウェアを搭載しています。 私はEclipseが好きですが、WebStormで本当に楽しい時間を過ごしています。 私はまだ多くのショートカットを学んでいます—そしてそれは優れたフリーランスのソフトウェア開発者が同様に持つべき慣習です:彼らのツールについてもっと学ぶことです。 私はまだ自分のIDEについてもっと学んでいます。 WebStormには、多くのスマートショートカット、優れた標準レイアウトがあり、HTMLをこれまでになく迅速に記述できる優れたZenCodingプロパティもいくつかあります。 全体として、これは優れたツールです。」

フリーランスのクライアントが、RustやGo、またはこれまでに使用したことのない新しい言語でプロジェクトを実行することを望んでいた場合、あなたは何と言いますか?

あなたがどんなに優れていても、セットアップ時間は常にあり、それはクライアントにとってコストがかかる可能性があります。

「私は通常、クライアントの時間ではなく、クライアントの仕事以外の言語との最初の接触を試みます。あなたがどんなに優れていても、セットアップ時間は常にあり、それはクライアントにとってコストがかかる可能性があります。 そうは言っても、クライアントから「何も知らなくても安心です」と言われたら、何か新しいことを学ぶ絶好の機会だと思います。 一方、クライアントのスケジュールが厳しい場合は、他の人を雇うか、自分が使いやすい言語を使用するようにアドバイスします。そうすれば、最初から生産的になることができます。」

フリーランスで解決しなければならなかった最大の技術的課題は何ですか?

「フリーランスのHTML5プロジェクトが思い浮かびます。 HTML5 Canvas APIを掘り下げて、なげなわ選択やフリーフォーム選択などの高度なグラフィックエディタ機能を実行します。画像の一部をトリミングし、残りは省略します。ピクセルのセットを使用した計算などです。 これは、HTML5キャンバスを使用してブラシのようなものを実装するMSペイントのようなものでした。ブラシは単純なものだと思うでしょう。線を引くだけの場合ですが、この場合はブラシストロークを模倣したいので、数式を使用して、ブラシがキャンバスに接触し、インクでぼかしを残す方法をシミュレートする必要がありました。」

HTML5のフリーランサーは、この新しいテクノロジーに慣れるのに少し時間がかかることに気付くかもしれません。

最近使用したお気に入りの新技術は?

「Meteorについて聞いたことは、シングルページアプリケーションを開発するための完全な頭と肩のフレームワークをどのように提供するかという点で興味深いものです。 フロントエンドだけでなくバックエンドも処理します。 私はそれを使ったことがありませんが、それを試してみたいと思っています。」