من Node.js إلى دفع ضرائب العمل المستقل: مقابلة مع مطور ناجح

نشرت: 2022-03-11

في Toptal ، نبحث دائمًا عن أفضل العاملين لحسابهم الخاص. ولكن ما الذي يجعل المحترف المستقل رائعًا حقًا؟ لويس مارتينهو ، أحد أفضل المطورين لدينا ، محبوب من عملائه - لذلك جلسنا معه للحديث عن العمل الحر ، وتقنيات مثل freelance Node.js و HTML5 ، ودفع الضرائب.

لذا ، للبدء ، كيف دخلت في العمل الحر؟ هل سبق لك أن عملت بوظيفة بدوام كامل؟

"لقد عملت في وظيفتين بدوام كامل: كان بعضها شركات نسبيًا ، لكن أحدثها كان في بيئة بدء التشغيل ، وتحديداً في مساحة SaaS الخاصة بالمؤسسات ، مما أدى إلى إنشاء برامج إدارة مثيرة في السحابة. كان لدينا فريق موهوب للغاية ورؤية طموحة للغاية. بعد أربع سنوات من النمو ، أصبح لدينا منتج مثير في مساحة مثيرة ، وكان ذلك رائعًا ، لكنني لم أكن سعيدًا جدًا. كنت بحاجة لتغيير نمط الحياة. عندما بدأنا ، لم أفهم شخصيًا مدى صعوبة "البدء". إنها ليست مجرد ساعات ، لأنك تعمل لساعات طويلة في جميع أنواع البيئات والمشاريع ؛ إنه الضغط والمسؤولية والآلام المرتبطة بإبداع شيء جديد. ليس كل الزهور وأقواس قزح. في النهاية ، قررت أنني لم أكن أحد مؤسسي المواد (على الأقل ، ليس في ذلك الوقت). لكن التجربة أعطتني فهمًا أعمق لنوع الضغط الذي يواجهه مؤسسو الشركات الناشئة ، وأنا أعلم أنني أصبحت مطور برامج مستقل أفضل بسبب ذلك.

بدا العمل الحر أكثر فأكثر مثل الحياة التي أردتها: فقد أتاح فرصة للعثور على عملاء ومشاريع مثيرة للاهتمام بينما تتم مكافأتهم على العمل الجيد.

بدأت في البحث عن وظائف منتظمة: أولاً في مسقط رأسي ، ثم في بقية البلاد ، ثم في بقية أوروبا. تمكنت من العثور على بعض المشاريع المثيرة للاهتمام ، وبعض حزم التعويضات المثيرة للاهتمام ، وبعض المواقع المثيرة للاهتمام ؛ لكنني اعتقدت أنه يمكنني الحصول على كل شيء. لذلك بدأت أبحث في العمل الحر. وبينما ظللت أبحث ، بدا العمل الحر أكثر فأكثر مثل الحياة التي أردتها: فقد أتاح فرصة للعثور على عملاء ومشاريع مثيرة للاهتمام بينما تتم مكافأتي على العمل الجيد ".

ما هو التحدي الأصعب الذي حدث أثناء انتقالك إلى عمل التطوير المستقل؟

"في الأصل ، تخيلت أن التغيير الكبير سيكون هو استقرار الدخل الذي تتوقعه من وظيفة بدوام كامل ، حيث يكون لديك مبلغ معين من المال تحصل عليه دائمًا بحلول نهاية الشهر - وستحصل عليه ، مهما حدث. توقعت أن يكون هذا مصدر قلق كبير لأنني علمت أن كوني مستقلاً يعني أنه لن يكون لدي عملاء دائمًا. لكن هذا ليس ما حدث حقًا - نوع من المفاجأة ، في Toptal تمكنت دائمًا من الحصول على تدفق مستمر من العملاء دون الاضطرار إلى البحث عنهم. لذا ، بصراحة ، كان التحدي الرئيسي هو تنظيم جدول أعمالي. ليس لدي أي ساعات محددة للعمل. أنا في الأساس أضع جدولي الخاص ، ولذا يجب أن أكون أكثر انضباطًا مما كنت عليه من قبل. أحاول العمل لساعات قياسية أكثر أو أقل: أستيقظ في الصباح ، وأبدأ العمل ، وأتناول الغداء في الوقت الذي يتناول فيه الجميع الغداء ، وأعمل في فترة ما بعد الظهر ، ثم أتناول العشاء. أحاول العمل بجدول زمني عادي ، لا أسحب طوال الليل ، وأحرق زيت منتصف الليل كل يوم. كان هذا الانضباط تحديا كبيرا في البداية ".

لكن معظم الناس يرون أن ساعات الفراغ هي فائدة لهندسة البرمجيات المستقلة. ما رأيك في ذلك؟

لقد وجدت أنه من المفيد أن أكون منضبطًا لأنني في نهاية المطاف أصبح أكثر إنتاجية إذا كان لدي مجموعة من الإجراءات الروتينية.

"بالتأكيد ، إنها فائدة. إنه أمر رائع بمعنى أنه إذا واجهت أي مشاكل ، أو إذا كان عليك مساعدة شخص ما في عائلتك ، أو كانت لديك هذه الفرصة الرائعة لنوع من النشاط الترفيهي ، فيمكنك السعي وراءها ويمكنك الاستمتاع بهذه الفرصة. لكن من ناحية أخرى ، وجدت أنه من المفيد أن أكون منضبطًا لأنني في نهاية المطاف أصبح أكثر إنتاجية إذا كان لدي مجموعة من الإجراءات الروتينية ، لأن هذه الإجراءات ترشدني أساسًا: يمكنني التوقف عن المطاردة وإنجاز المزيد خلال ذلك الوقت. من الجيد أن تتمتع بهذه الحرية ، لكنني أعتقد أنه يجب استخدامها بطريقة مسؤولة ".

يتمتع مطورو البرامج المستقلون بمزايا الجداول الزمنية المرنة وهيكل الأجور المختلفة.

عملاؤك يحبونك. ما هو سرك؟

"بصفتك مطور برامج مستقل ، من المحتمل أن تكون كسولًا قليلاً من حيث البحث عن أسهل وأرخص طريقة لإنجاز شيء ما هو سمة جيدة ؛ أن تكون منزعجًا للغاية من خلال القيام بعمل متكرر ، وبالتالي تحسين سلسلة أدواتك باستمرار. على سبيل المثال ، تقضي الكثير من الوقت في محطة: يجب أن تفكر بجدية في إنشاء اختصارات وأسماء مستعارة ، وكل ما يوفر لك الوقت ويوفر لك الكتابة. في النهاية ، فإن الكثير من المهام التي تقوم بها ليست في الحقيقة علم الصواريخ ؛ إنهم يمرون في حلقتين فقط لإنجاز شيء ما. إذا قمت بتحسين هذه الأشياء وإخراج العمل المتكرر بعيدًا ، فلديك المزيد من الوقت المتاح للقيام بعلم الصواريخ الفعلي.

إذا تخلصت من العمل المتكرر ، فسيكون لديك المزيد من الوقت المتاح للقيام بعلم الصواريخ الفعلي.

يجب أيضًا أن يكون لديك شخص آخر يتعامل مع الأجر بالساعة والفواتير ، والحصول على الأموال من العملاء ، وحتى الحصول على عملاء جدد حتى تتمكن من التركيز على القيام بعمل رائع. وهذا مهم للغاية. عندما تكون مطور برامج مستقل ، فأنت تعمل على التسليم ، ولكن أيضًا على التسويق والمبيعات. وما تريد القيام به - وما يريد عملاؤك أن تفعله - هو قضاء الكثير من الوقت في التسليم ، وقليل من الوقت في التسويق والمبيعات وحتى التمويل. سيكون عليك دائمًا قضاء بعض الوقت في البحث عن عملاء تطوير مستقلين جدد عندما تعمل لدى العملاء القدامى ، وهذا ليس شيئًا يريده القدامى - وليس شيئًا تريده. أنت فقط تريد التركيز على أداء عملك بشكل جيد. لذا فإن وجود شخص آخر يتعامل مع الفواتير والعثور على عملاء جدد هو أمر يجب أن تكون سعيدًا جدًا به ، وأنت محظوظ جدًا إذا وجدت ذلك.

لا تنس أيضًا: دفع ضرائب العمل المستقل ".

كيف تحافظ على دوافعك على أساس يومي؟

إنهم يشعرون أنك متصل بهم بطريقة لا ترسلها فقط خلال ساعات مدفوعة الأجر.

"ما يلعب دورًا كبيرًا في تحفيزي هو جودة العملاء. إذا أمكن ، أحاول أن أكون صعب الإرضاء. وهذا يعني أنني أحاول قبول العربات التي تحفزني من حيث التحدي التكنولوجي الذي ينطوي عليه الأمر سواء كان حل مشكلة صعبة أو العمل في مساحة مثيرة للاهتمام. وهذا نوع من يتبع فقط من ذلك. أعمل دائمًا مع عميل معتقدًا أنني أعمل من أجل هدف مشترك: أحاول رؤية الصورة الأكبر وأرى نفسي جزءًا من الفريق. لن تكون أبدًا جزءًا من فريق تطوير البرامج الداخلي أو في الموقع بالطريقة العاطفية الكاملة ، خاصة عندما تكون خارج المكتب ، ولكن لا يزال بإمكانك الشعور بأنك جزء من الفريق فيما يتعلق بالمشروع العام وجودة العمل. وأعتقد أن الأشخاص على الجانب الآخر (العميل وفريق العميل) يشعرون أنهم - يشعرون أنك متصل بهم بطريقة لا ترسل فيها فقط ساعات تطوير قابلة للفوترة ، بل تشعر بالقلق حقًا بشأن ما إذا سينجحون أو إذا كانت جودة العمل جيدة بما فيه الكفاية ".

ما الذي تبحث عنه في برنامج مستقل محتمل أو عميل تطوير ويب؟

يفكر مطور الويب المستقل هذا في العديد من خيارات عملائه.

"بشكل عام ، أنا أفضل التقنيات الحديثة أكثر من التقنيات القديمة ، وكذلك الأشياء الناشئة - لن أقول بالضرورة أنها ناشئة لأن بعض هذه الأشياء حديثة ، لكنني أفضل العمل مع شخص ما يصنع تطبيقات من صفحة واحدة ويستخدم Backbone.js و Node.js مع Express أو بعض إطار عمل MVC من شخص يستخدم نمط Java Enterprise Edition.

أنا مستقل ، أفضل أن يكون لدي عميل لديه بعض حلول الاتصال غير المتزامن في المكان. إذا كنت تعمل عن بُعد ، فمن الأسهل بكثير الدخول إلى فريق يستخدم شيئًا بسيطًا مثل قائمة بريدية أو لديه غرف دردشة في Campfire أو يستخدم GitHub كأداة تعاون (هذه الأخيرة تعمل بشكل جيد بشكل ملحوظ). إجمالاً ، إذا كان العميل لا يلتقط مبرد المياه بطريقة ما ، فإنك تخاطر بفقدان الكثير من المعلومات والأحاديث التي يمكن أن تؤثر على عملك ".

هذه نقطة مثيرة للاهتمام. أي نصائح أخرى للعمل عن بعد؟

من الصعب تذكر الرجل الذي لم يكن موجودًا في المبنى أبدًا.

"عليك أن تجد طريقة للتعويض عن كونك خارج المكتب. الحل الذي وجدته هو أن تكون استباقيًا. على سبيل المثال: تحليل سجلات الالتزام. عندما تعمل عن بعد ، يجب أن تخصص بعض الوقت لمجرد إلقاء نظرة خاطفة ولديك فكرة عما يعمل عليه الآخرون. إذا كنت على دراية بما يحدث في المواقف اليومية ، وتم إعلامك من خلال بعض حلول إدارة المشروع ، فمن الممارسات الجيدة محاولة العثور على تلميحات حول ما يعمل عليه الفريق. بعد ذلك ، يمكنك الاندماج بسهولة أكبر. من الواضح أن هذا جهد إضافي من جانبك - قد تكون قادرًا على عدم القيام بذلك إذا كانت لديهم عملية اتصال جيدة بالفعل ، ولكن يمكن أن تكون نصيحة جيدة ويمكن أن توفر بعض المشاكل. من الصعب تذكر رجل التطوير المستقل الذي لا يعمل أبدًا في المبنى ".

أن تصبح مطور برامج مستقل يبدأ بالتواصل.

ما هي أهم صفة لعمل المستقل؟

"عليك أن تكون شخصًا يمكنه الحفاظ على توازن مرن بين حياتك الشخصية وعملك. بصفتك مستقلاً ، من المهم أن تكون مستجيبًا. لكن كونك متجاوبًا ينتهي به الأمر إلى إحداث خسائر فادحة في حياتك الشخصية. لا يتعين عليك التحقق من بريدك الإلكتروني طوال الوقت - يمكنك فقط الحصول على إشعار ، وتصفية ما إذا كان مهمًا أم لا ، وبعد ذلك يمكنك العودة للاستمتاع بوقتك مع عائلتك أو غير ذلك. عليك أن تكون محوّل سياق جيد. عادةً ما يكون تبديل السياق مكلفًا ، ولكنك تحتاج إلى جعله رخيصًا وسريعًا ، بحيث يمكنك الحصول على مستوى عالٍ جدًا من الخدمة من خلال الاستجابة الشديدة لحالات الطوارئ ، ولكن في نفس الوقت ، الاستمتاع بصحبة الأصدقاء والعائلة.

عليك أن تكون محوّل سياق جيد. عادةً ما يكون تبديل السياق مكلفًا ، لكنك تحتاج إلى جعله رخيصًا وسريعًا.

بالنسبة للترتيب المعتاد لتطوير العمل المستقل ، عليك أن تعرف كيفية إدارة أموالك بشكل متحفظ. لم يحدث هذا حقًا مع Toptal ، بشكل مفاجئ ، ولكن عادةً ما يكون من السهل جدًا الانتقال من العيد إلى المجاعة عندما يتعلق الأمر بدفع مدفوعات مطور الويب أو البرامج ، حتى كل ساعة. في شهر واحد ، تجني الكثير من المال وفجأة ليس لديك عملاء ولم يعد لديك المزيد من العمل. لذلك عليك أن تكون منضبطًا: أنت بحاجة إلى فكرة عن متوسط ​​الأجر ، وتحتاج إلى إنفاق هذا المبلغ ؛ يجب أن يكون كل الفائض نوعًا من الوسادة لمساعدتك على الإبحار عبر أوجه عدم اليقين المتعلقة بالقيام بهذا النوع من العمل. هذا ليس صحيحًا بالنسبة إلى Toptal لأن تدفق العملاء كان ثابتًا حقًا ، لكنه لا يزال ممارسة جيدة ".

بصفتك مستقلاً ، فإنك تأخذ مجموعة من مشاريع تطوير البرامج المختلفة طوال حياتك المهنية. إذن ، ما الذي تفعله لأول مرة في المرة الأولى التي يُسمح لك فيها بالوصول إلى قاعدة بيانات جديدة؟ دعنا نقول أنها مليار سطر من التعليمات البرمجية.

"سأحاول أن أكون منضبطًا بشأن اتباع نهج من أعلى إلى أسفل. هذا يعني التعرف على الهيكل العام لقاعدة التعليمات البرمجية. يبدو هذا واضحًا نوعًا ما ، ولكن عندما تبدأ في محاولة فهم الكود ، ستنتقل إلى ما تعمل عليه في تلك اللحظة المحددة والمهمة المحددة التي لديك. سيؤدي ذلك إلى تحويل تركيزك من النهج من أعلى إلى أسفل وسيضعك في أسفل محاولة الصعود ، وتجميع الأجزاء من أجزاء معينة من الكود الذي تبحث عنه. قد يكون ذلك أفضل على المدى القصير لإصلاح هذا الخطأ المحدد أو إضافة هذه الوظيفة المحددة ، ولكن على المدى المتوسط ​​، ستتمنى أن تستمر في اتباع النهج من أعلى إلى أسفل. بعد ذلك ، ستحصل على عرض أفضل للنظام وكيفية تفاعل القطع ".

كونك مطورًا مستقلاً يعني اتباع نهج من أعلى إلى أسفل لقواعد الكود الجديدة للبدء بفعالية.

لقد قمت بالكثير من الأعمال الأمامية والخلفية. هل تعتقد أنه من المهم للمطورين المستقلين اليوم امتلاك كلتا مجموعتي المهارات؟

"لا. سأكون صادقًا جدًا: أعتقد أنه يمكنك الاستفادة كثيرًا من التخصص ، كما لو كنت جيدًا بشكل يبعث على السخرية مع مجموعة صغيرة من التقنيات السخيفة ؛ لكنه مجرد اختيار شخصي. لدي فضول ، لذلك أعمل مع الكثير من التقنيات المختلفة. وهذا هو السبب في أنني في نهاية المطاف أقوم بعمل مستقل في الواجهة الأمامية والخلفية.

ستتغير التقنيات - ما هو ساخن اليوم سيكون مملًا على الأرجح غدًا أو على الأقل خلال 6-12 شهرًا.

بعد قولي هذا ، أعتقد أنه من الضروري للمطور ، طوال حياته المهنية ، محاولة تعلم أكبر عدد ممكن من التقنيات والنماذج. ستتغير التقنيات - ما هو ساخن اليوم سيكون مملًا على الأرجح غدًا أو على الأقل في غضون 6 إلى 12 شهرًا - وإحدى المهارات الأساسية لمطور البرامج المستقل هي التقاط تقنية جديدة أو مشروع جديد بسرعة. لذلك ، من المفيد حقًا أن يكون لديك نهج منظم لتعلم أشياء جديدة وممارسته من خلال تعلم لغة أو إطار عمل أو نموذج جديد واحد على الأقل كل عام ".

لقد أنجزت الكثير من الأعمال المستقلة مع Rails و Django ومؤخراً Node.js. كيف اختلفت خبراتك بين الثلاثة؟

"آه ، سوف ندخل في حرب دينية هنا. أود أن أقول إن Node مختلف تمامًا عن الاثنين الآخرين. عندما تتعرض لأول مرة لأمثلة Node.js ، قد تواجه مشكلة في الدخول في النموذج الذي يحركه الحدث. إنه شيء قد لا يكون طبيعيًا بنسبة 100٪ بالنسبة لشخص يقوم بعمل ريلز طوال الوقت. من ناحية أخرى ، إذا كنت تعمل باستخدام JavaScript ، فمن المحتمل أنك تقوم بالتطوير من أجل المستعرض وبالتالي فأنت بالفعل على دراية بالنموذج المستند إلى الأحداث. شخصيًا ، من خلال تجربتي في العمل المستقل مع Node ، كنت أستخدم إطار عمل MVC ، لذلك لم أطور تقنية أساسية لـ Node ؛ لقد كنت للتو مستخدمًا قياسيًا لإطار عمل خاص بالعميل (يمكن مقارنته بـ Express) ".

ما هي أدواتك المفضلة التي يستخدمها عدد قليل جدًا من المطورين؟

يجب أن يفكر المستقلون في Node.js بشكل مختلف عن المستقلين في ريلز.

"من أعلى رأسي ، WebStorm من JetBrains. إنها بيئة تطوير JavaScript IDE تستحق البحث عنها حقًا. يتم تشغيل استوديو Android الجديد الذي تم إصداره في Google I / O بواسطة برنامج JetBrains ، وليس Eclipse أو غير ذلك. أنا أحب Eclipse ، لكنني أقضي وقتًا ممتعًا حقًا مع WebStorm. ما زلت أتعلم الكثير من الاختصارات - وهذه ممارسة يجب أن يتمتع بها أيضًا مطور برامج مستقل جيد: تعلم المزيد عن أدواتهم. ما زلت أتعلم المزيد عن IDE الخاص بي. يحتوي WebStorm على الكثير من الاختصارات الذكية ، وتصميم قياسي جيد ، كما أنه يحتوي على بعض خصائص ZenCoding الرائعة التي تتيح لك كتابة HTML بأسرع ما يمكن. بشكل عام ، إنها أداة جيدة ".

إذا أراد منك عميل مستقل أن تقوم بمشروع باستخدام Rust أو Go ، أو لغة جديدة لم تعمل بها من قبل ، فماذا ستقول؟

بغض النظر عن مدى جودتك ، سيكون هناك دائمًا وقت الإعداد ، وقد يكون ذلك مكلفًا للعميل.

"عادةً ما أحاول الحصول على أول اتصال لي بلغات خارج عمل العميل ، وليس في وقت العميل - بغض النظر عن مدى مهارتك ، سيكون هناك دائمًا وقت الإعداد ، وقد يكون ذلك مكلفًا للعميل. ومع ذلك ، إذا قال لي العميل ، "حسنًا ، نحن مرتاحون حتى لو لم تكن تعرف أي شيء عنها" ، فسأرى أن ذلك يمثل فرصة رائعة لتعلم شيء جديد. من ناحية أخرى ، إذا كان لدى العميل جدول زمني متطلب ، فإنني أنصحه بتوظيف شخص آخر أو استخدام لغة كنت مرتاحًا لها حتى أعلم أنني سأكون منتجًا منذ البداية ".

ما هو أكبر تحد تقني كان عليك حله أثناء العمل المستقل؟

"يتبادر إلى الذهن مشروع HTML5 مستقل. البحث في HTML5 Canvas API للقيام ببعض وظائف محرر الرسومات المتقدمة ، مثل القيام بتحديد lasso والاختيار الحر ، حيث تقوم بقص جزء من الصورة مع استبعاد الباقي ، والحسابات بمجموعات من البكسل ، وأشياء من هذا القبيل. كان هذا نوعًا ما مثل MS Paint باستخدام HTML5 Canvas وتنفيذ أشياء مثل الفرشاة: قد تعتقد أن الفرشاة ستكون شيئًا بسيطًا - إذا قمت فقط برسم خط ، ولكن في هذه الحالة تريد تقليد ضربة فرشاة ، لذلك اضطررت إلى استخدام صيغة رياضية لمحاكاة كيفية تلامس الفرشاة بالقماش وترك ضبابية بالحبر ".

قد يجد العاملون المستقلون في HTML5 أن هذه التكنولوجيا الجديدة تستغرق بعض الوقت لتعتاد عليها.

التكنولوجيا الجديدة المفضلة لديك التي عملت معها مؤخرًا؟

"ما كنت أسمعه عن Meteor مثير للاهتمام من حيث كيفية تقديمهم إطار عمل كامل الرأس والكتفين لتطوير تطبيق من صفحة واحدة. يتعامل مع النهاية الخلفية وكذلك الواجهة الأمامية. لم أعمل معها ولكني أشعر بالفضول والحكة لتجربتها ".