Dari Node.js hingga Membayar Pajak Freelance Anda: Wawancara dengan Pengembang Sukses

Diterbitkan: 2022-03-11

Di Toptal, kami selalu mencari freelancer terbaik. Tapi apa yang membuat seorang freelancer benar-benar hebat? Luis Martinho, salah satu pengembang top kami, disukai oleh kliennya — jadi kami duduk bersamanya untuk berbicara tentang lepas, teknologi seperti freelance Node.js dan HTML5, dan membayar pajak Anda.

Jadi, untuk memulai, bagaimana Anda bisa menjadi pekerja lepas? Apakah Anda pernah bekerja penuh waktu?

“Saya telah mengerjakan beberapa pekerjaan penuh waktu: beberapa di antaranya relatif perusahaan, tetapi yang terbaru adalah di lingkungan startup, khususnya di ruang SaaS perusahaan, membangun perangkat lunak manajemen yang seksi di cloud. Kami memiliki tim yang sangat berbakat dan visi yang sangat ambisius. Setelah empat tahun berkembang, kami memiliki produk yang menarik di ruang yang menarik, yang sangat bagus, tetapi saya tidak terlalu senang. Saya membutuhkan perubahan gaya hidup. Ketika kami mulai, saya pribadi tidak mengerti betapa sulitnya untuk "memulai". Bukan hanya jam, karena Anda bekerja berjam-jam di semua jenis lingkungan dan proyek; itu adalah stres, tanggung jawab, dan rasa sakit yang terkait dengan menciptakan sesuatu yang baru. Tidak semua bunga dan pelangi. Pada akhirnya, saya memutuskan bahwa saya bukan materi co-founder (setidaknya, tidak pada saat itu). Tetapi pengalaman itu memberi saya pemahaman yang lebih dalam tentang jenis tekanan yang dihadapi oleh pendiri startup, dan saya tahu bahwa saya telah menjadi pengembang perangkat lunak lepas yang lebih baik karena itu.

Freelancing semakin terlihat seperti kehidupan yang saya inginkan: ini memberikan kesempatan untuk menemukan klien dan proyek yang menarik sambil dihargai untuk pekerjaan yang berkualitas.

Saya mulai mencari pekerjaan tetap: pertama di kampung halaman saya, kemudian di seluruh negeri, lalu di seluruh Eropa. Saya berhasil menemukan beberapa proyek menarik, beberapa paket kompensasi yang menarik, dan beberapa lokasi menarik; tapi saya percaya bahwa saya bisa memiliki semuanya. Jadi saya mulai mencari pekerjaan lepas. Dan ketika saya terus mencari, pekerjaan lepas semakin terlihat seperti kehidupan yang saya inginkan: ini memberikan kesempatan untuk menemukan klien dan proyek yang menarik sambil dihargai untuk pekerjaan yang berkualitas.”

Apa tantangan terberat yang muncul selama transisi Anda ke pekerjaan pengembangan lepas?

“Awalnya, saya membayangkan perubahan besar adalah stabilitas pendapatan yang Anda harapkan dari pekerjaan penuh waktu, di mana Anda memiliki sejumlah uang yang selalu Anda dapatkan pada akhir bulan—dan Anda mendapatkannya, apa pun yang terjadi. Saya berharap itu menjadi perhatian utama karena saya tahu bahwa menjadi pekerja lepas berarti saya tidak akan selalu memiliki klien. Tapi sebenarnya bukan itu yang terjadi—agak mengejutkan, di Toptal saya selalu berhasil mendapatkan aliran klien yang stabil tanpa harus memburu mereka. Jadi, sejujurnya, tantangan utamanya adalah mengatur jadwal saya. Saya benar-benar tidak punya waktu untuk bekerja. Saya pada dasarnya membuat jadwal saya sendiri, jadi saya harus lebih disiplin dari sebelumnya. Saya mencoba untuk bekerja kurang lebih jam standar: Saya bangun di pagi hari, mulai bekerja, makan siang pada saat orang lain makan siang, bekerja di sore hari, dan kemudian makan malam. Saya mencoba bekerja dengan jadwal normal, tidak begadang, membakar minyak tengah malam setiap hari. Disiplin ini merupakan tantangan besar pada awalnya.”

Tetapi kebanyakan orang melihat jam kerja yang longgar sebagai keuntungan dari rekayasa perangkat lunak lepas. Apa pendapat Anda tentang itu?

Saya telah menemukan bahwa disiplin itu bermanfaat karena saya akhirnya menjadi jauh lebih produktif jika saya memiliki serangkaian rutinitas.

“Tentu ada manfaatnya. Ini keren dalam arti bahwa jika Anda mengalami masalah, jika Anda harus membantu seseorang dalam keluarga Anda, atau Anda memiliki kesempatan besar untuk beberapa jenis kegiatan rekreasi, Anda dapat mengejarnya dan Anda dapat menikmati kesempatan itu. Tetapi di sisi lain, saya menemukan bahwa disiplin itu bermanfaat karena saya akhirnya menjadi jauh lebih produktif jika saya memiliki serangkaian rutinitas, karena rutinitas itu pada dasarnya membimbing saya: Saya dapat mengejar dan menyelesaikan lebih banyak selama waktu itu. Itu bagus untuk memiliki kebebasan itu, tetapi saya pikir itu harus digunakan secara bertanggung jawab.”

Pengembang perangkat lunak lepas menikmati manfaat dari jadwal fleksibel dan struktur pembayaran yang berbeda.

Klien Anda mencintai Anda. Apa rahasiamu?

“Sebagai pengembang perangkat lunak lepas, mungkin sifat yang baik untuk sedikit malas dalam mencari cara termudah dan termurah untuk menyelesaikan sesuatu; menjadi sangat terganggu dengan melakukan pekerjaan yang berulang, dan untuk terus meningkatkan rantai alat Anda. Misalnya, Anda menghabiskan banyak waktu di terminal: Anda harus serius mempertimbangkan untuk membuat pintasan, alias, apa pun yang menghemat waktu Anda dan menghemat pengetikan. Pada akhirnya, banyak tugas yang Anda lakukan sebenarnya bukan ilmu roket; mereka hanya melalui beberapa putaran untuk menyelesaikan sesuatu. Jika Anda mengoptimalkan hal-hal itu dan menyelesaikan pekerjaan berulang, Anda memiliki lebih banyak waktu yang tersedia untuk melakukan ilmu roket yang sebenarnya.

Jika Anda mendapatkan pekerjaan yang berulang-ulang, Anda memiliki lebih banyak waktu yang tersedia untuk melakukan ilmu roket yang sebenarnya.

Anda juga harus memiliki orang lain yang menangani pembayaran dan penagihan per jam, mendapatkan uang dari pelanggan, dan bahkan mendapatkan pelanggan baru sehingga Anda dapat fokus melakukan pekerjaan yang hebat. Dan itu sangat penting. Ketika Anda seorang pengembang perangkat lunak lepas, Anda bekerja pada pengiriman, tetapi juga pada pemasaran dan penjualan. Dan apa yang ingin Anda lakukan—dan apa yang klien Anda ingin Anda lakukan—adalah menghabiskan banyak waktu untuk pengiriman, dan sedikit waktu untuk pemasaran, penjualan, dan bahkan keuangan. Anda harus selalu meluangkan waktu untuk mencari klien pengembangan lepas baru saat Anda bekerja untuk klien lama, dan itu bukan sesuatu yang diinginkan klien lama—dan itu bukan sesuatu yang Anda inginkan. Anda hanya ingin fokus melakukan pekerjaan Anda dengan baik. Jadi memiliki orang lain yang menangani penagihan dan menemukan klien baru adalah sesuatu yang seharusnya sangat Anda senangi, dan Anda sangat beruntung jika menemukannya.

Juga, jangan lupa: bayar pajak freelance Anda.”

Bagaimana Anda menjaga diri Anda tetap termotivasi setiap hari?

Mereka merasa bahwa Anda terhubung dengan mereka dengan cara yang Anda tidak hanya mengirim lebih dari jam yang dapat ditagih.

“Apa yang memainkan peran besar dalam motivasi saya adalah kualitas klien. Jika memungkinkan, saya mencoba untuk menjadi pemilih. Artinya, saya mencoba menerima pertunjukan yang memotivasi saya dalam hal tantangan teknologi yang terlibat apakah itu memecahkan masalah yang sulit atau bekerja di ruang yang menarik. Dan itu hanya mengikuti dari itu. Saya selalu bekerja dengan klien berpikir bahwa saya sedang bekerja menuju tujuan bersama: Saya mencoba untuk melihat gambaran yang lebih besar dan melihat diri saya sebagai bagian dari tim. Anda tidak pernah benar-benar menjadi bagian dari tim pengembangan perangkat lunak internal atau di lokasi secara emosional, terutama saat Anda berada di luar kantor, tetapi Anda masih dapat merasa seperti bagian dari tim dalam hal keseluruhan proyek dan kualitas pekerjaan. Dan saya pikir orang-orang di sisi lain (klien dan tim klien) merasa bahwa—mereka merasa bahwa Anda terhubung dengan mereka dengan cara yang Anda tidak hanya mengirimkan jam pengembangan yang dapat ditagih, Anda benar-benar khawatir tentang apakah mereka akan berhasil atau jika kualitas pekerjaannya cukup baik.”

Apa yang Anda cari dalam perangkat lunak lepas potensial atau klien pengembangan web?

Pengembang web lepas ini sedang mempertimbangkan banyak pilihan kliennya.

“Umumnya, saya lebih menyukai teknologi yang lebih baru daripada yang lebih lama, dan juga hal-hal yang sedang berkembang—saya tidak akan selalu mengatakan yang sedang berkembang karena beberapa hal ini terkini, tetapi saya lebih suka bekerja dengan seseorang yang membuat aplikasi satu halaman dan menggunakan Backbone.js dan Node.js dengan Express atau kerangka kerja MVC daripada seseorang yang akan menggunakan gaya Java Enterprise Edition.

Saya pekerja lepas, saya lebih suka memiliki klien yang memiliki beberapa solusi komunikasi asinkron. Jika Anda melakukan telecommuting, jauh lebih mudah untuk masuk ke dalam tim yang menggunakan sesuatu yang sederhana seperti milis atau memiliki ruang obrolan di Campfire atau menggunakan GitHub sebagai alat kolaborasi (yang terakhir ini bekerja dengan sangat baik). Secara keseluruhan, jika klien tidak menangkap pembicaraan pendingin air, Anda berisiko kehilangan banyak informasi dan obrolan yang dapat memengaruhi pekerjaan Anda.

Itu poin yang menarik. Adakah tips lain untuk telecommuting?

Lebih sulit untuk mengingat pria yang tidak pernah ada di dalam gedung.

“Anda harus menemukan cara untuk mengimbangi berada di luar kantor. Solusi yang saya temukan adalah bersikap proaktif. Misalnya: menganalisis log komit. Saat Anda melakukan telecommuting, Anda harus menyisihkan waktu hanya untuk melihat sekilas dan memiliki gagasan tentang apa yang sedang dikerjakan orang lain. Jika Anda menyadari apa yang terjadi di standup harian, diberitahu melalui beberapa solusi manajemen proyek, itu adalah praktik yang baik untuk mencoba menemukan petunjuk tentang apa yang sedang dikerjakan tim. Kemudian, Anda lebih mudah terintegrasi. Itu jelas merupakan upaya tambahan di pihak Anda — Anda mungkin bisa keluar dari melakukannya jika mereka memiliki proses komunikasi yang sangat baik, tetapi itu bisa menjadi tip yang bagus dan dapat menyelamatkan beberapa masalah. Lebih sulit untuk mengingat orang pengembangan lepas yang tidak pernah ada di gedung.”

Menjadi pengembang perangkat lunak lepas dimulai dengan komunikasi.

Apa kualitas paling penting dari seorang freelancer?

“Anda harus menjadi seseorang yang dapat menjaga keseimbangan antara kehidupan pribadi dan pekerjaan Anda. Sebagai seorang freelancer, penting untuk bersikap responsif. Tetapi bersikap responsif pada akhirnya berdampak besar pada kehidupan pribadi Anda. Anda tidak perlu memeriksa email setiap saat—Anda cukup mendapatkan notifikasi, memfilter apakah itu penting atau tidak, lalu Anda dapat kembali menikmati waktu bersama keluarga atau yang lainnya. Anda harus menjadi pengalih konteks yang baik. Pergantian konteks biasanya mahal, tetapi Anda harus membuatnya murah dan cepat, sehingga Anda dapat memiliki standar layanan yang sangat tinggi dengan sangat tanggap terhadap keadaan darurat tetapi, pada saat yang sama, menikmati kebersamaan dengan teman dan keluarga.

Anda harus menjadi pengalih konteks yang baik. Pergantian konteks biasanya mahal, tetapi Anda harus membuatnya murah dan cepat.

Untuk pengaturan pengembangan freelance biasa, Anda harus tahu bagaimana mengelola keuangan Anda secara konservatif. Ini tidak benar-benar terjadi dengan Toptal, secara mengejutkan, tetapi biasanya sangat mudah untuk beralih dari pesta ke kelaparan ketika datang ke perangkat lunak atau pembayaran pengembang web, bahkan per jam. Satu bulan, Anda menghasilkan banyak uang dan tiba-tiba Anda tidak punya klien dan Anda tidak punya pekerjaan lagi. Jadi Anda harus disiplin: Anda membutuhkan gambaran tentang upah rata-rata, dan Anda perlu membelanjakan jumlah itu; semua kelebihannya membutuhkan semacam bantalan untuk membantu Anda melewati ketidakpastian dalam melakukan pekerjaan semacam ini. Ini benar-benar tidak benar untuk Toptal karena aliran klien benar-benar stabil, tetapi ini masih merupakan praktik yang baik. ”

Sebagai pekerja lepas, Anda mengambil banyak proyek pengembangan perangkat lunak yang berbeda sepanjang karir Anda. Jadi apa yang Anda lakukan pertama kali diberi akses ke basis kode baru? Katakanlah itu satu miliar baris kode.

“Saya akan mencoba untuk disiplin mengambil pendekatan top-down. Ini berarti memahami keseluruhan struktur basis kode. Tampaknya agak jelas, tetapi saat Anda mulai mencoba memahami kodenya, Anda akan diarahkan ke apa yang sedang Anda kerjakan pada saat itu dan tugas spesifik yang Anda miliki. Itu akan mengalihkan fokus Anda dari pendekatan top-down dan akan menempatkan Anda di bawah mencoba untuk naik, merakit potongan-potongan dari bagian-bagian tertentu dari kode yang Anda lihat. Itu mungkin lebih baik dalam jangka pendek bagi Anda untuk memperbaiki bug spesifik itu atau menambahkan fungsionalitas spesifik itu, tetapi dalam jangka menengah, Anda akan berharap Anda tetap menggunakan pendekatan top-down. Kemudian, Anda akan memiliki pandangan yang jauh lebih baik tentang sistem dan bagaimana potongan-potongan itu berinteraksi.”

Menjadi pengembang lepas berarti mengambil pendekatan top-down ke basis kode baru untuk memulai secara efektif.

Anda telah melakukan banyak pekerjaan front-end dan back-end. Apakah menurut Anda penting bagi pengembang lepas hari ini untuk memiliki kedua keahlian tersebut?

"Tidak. Saya akan sangat jujur: Saya pikir Anda dapat memperoleh banyak hal dari spesialisasi, seperti jika Anda sangat mahir dengan seperangkat teknologi yang sangat kecil; tapi itu hanya pilihan pribadi. Saya penasaran, jadi saya bekerja dengan banyak teknologi berbeda. Dan itulah mengapa saya akhirnya melakukan pekerjaan freelance front-end dan back-end.

Teknologi akan berubah — apa yang sedang hangat hari ini mungkin akan membosankan besok atau setidaknya dalam 6-12 bulan.

Karena itu, saya pikir sangat penting bagi seorang pengembang, sepanjang masa profesionalnya, untuk mencoba dan mempelajari sebanyak mungkin teknologi dan paradigma. Teknologi akan berubah—apa yang sedang hangat hari ini mungkin akan membosankan besok atau setidaknya dalam 6-12 bulan—dan salah satu keterampilan utama bagi pengembang perangkat lunak lepas adalah dengan cepat mengambil teknologi baru atau proyek baru. Untuk itu, sangat membantu jika Anda memiliki pendekatan sistematis untuk mempelajari hal-hal baru dan Anda mempraktikkannya dengan mempelajari setidaknya satu bahasa atau kerangka kerja atau paradigma baru setiap tahun.”

Anda telah melakukan banyak pekerjaan lepas dengan Rails, Django, dan baru-baru ini, Node.js. Bagaimana pengalaman Anda berbeda di antara ketiganya?

“Uh oh, kita akan terlibat perang agama di sini. Saya akan mengatakan Node sangat berbeda dari dua lainnya. Saat pertama kali melihat contoh Node.js, Anda mungkin kesulitan masuk ke paradigma berbasis peristiwa. Ini adalah sesuatu yang mungkin tidak 100% alami bagi seseorang yang telah melakukan pekerjaan Rails sepanjang waktu. Di sisi lain, jika Anda bekerja dengan JavaScript, Anda mungkin mengembangkan untuk browser sehingga Anda sudah terbiasa dengan paradigma yang digerakkan oleh peristiwa. Secara pribadi, dalam pengalaman freelance saya dengan Node, saya telah menggunakan kerangka kerja MVC, jadi saya belum mengembangkan teknologi inti untuk Node; Saya baru saja menjadi pengguna standar kerangka kerja berpemilik khusus klien (sebanding dengan Express).”

Apa alat favorit Anda yang digunakan terlalu sedikit pengembang?

Pekerja lepas Node.js harus berpikir secara berbeda dari pekerja lepas Rails.

“Di luar kepala saya, WebStorm dari JetBrains. Ini adalah IDE JavaScript yang sangat layak untuk dicari. Studio Android baru yang dirilis di Google I/O didukung oleh perangkat lunak JetBrains, bukan Eclipse atau yang lainnya. Saya suka Eclipse, tetapi saya bersenang-senang dengan WebStorm. Saya masih mempelajari banyak cara pintas—dan itu adalah praktik yang juga harus dimiliki oleh pengembang perangkat lunak lepas yang baik: mempelajari lebih lanjut tentang alat mereka. Saya masih belajar lebih banyak tentang IDE saya. WebStorm memiliki banyak pintasan cerdas, tata letak standar yang baik, dan juga memiliki beberapa properti ZenCoding yang memungkinkan Anda menulis HTML secepat biasanya. Secara keseluruhan, ini adalah alat yang bagus.”

Jika klien lepas ingin Anda melakukan proyek dengan Rust or Go, atau bahasa baru yang belum pernah Anda gunakan, apa yang akan Anda katakan?

Tidak peduli seberapa bagus Anda, akan selalu ada waktu penyiapan, dan itu bisa mahal bagi klien.

“Saya biasanya mencoba untuk mendapatkan kontak pertama saya dengan bahasa di luar pekerjaan klien, bukan pada waktu klien — tidak peduli seberapa bagus Anda, akan selalu ada waktu pengaturan, dan itu bisa mahal bagi klien. Yang sedang berkata, jika klien mengatakan kepada saya, "Oke, kami merasa nyaman bahkan jika Anda tidak tahu apa-apa tentang itu", saya akan melihat itu sebagai kesempatan besar untuk belajar sesuatu yang baru. Di sisi lain, jika klien memiliki jadwal yang menuntut, saya akan menyarankan mereka untuk mempekerjakan orang lain atau menggunakan bahasa yang saya sukai sehingga saya tahu saya bisa produktif sejak awal.”

Apa tantangan teknis terbesar yang harus Anda selesaikan saat menjadi pekerja lepas?

“Proyek HTML5 lepas muncul di pikiran. Menggali ke dalam HTML5 Canvas API untuk melakukan beberapa fungsionalitas editor grafis tingkat lanjut, seperti melakukan pemilihan laso dan pemilihan bentuk bebas, di mana Anda memotong bagian dari gambar tetapi meninggalkan sisanya, perhitungan dengan kumpulan piksel, hal-hal seperti itu. Ini seperti MS Paint menggunakan HTML5 Canvas dan menerapkan hal-hal seperti kuas: Anda akan berpikir kuas adalah sesuatu yang sederhana—jika Anda hanya menggambar garis, tetapi dalam kasus ini Anda ingin meniru sapuan kuas, jadi Saya harus menggunakan rumus matematika untuk mensimulasikan bagaimana kuas akan menyentuh kanvas dan meninggalkan buram dengan tinta.”

Pekerja lepas HTML5 mungkin menemukan bahwa teknologi baru ini membutuhkan waktu untuk membiasakan diri.

Teknologi baru favorit Anda yang telah Anda kerjakan akhir-akhir ini?

“Apa yang saya dengar tentang Meteor menarik dalam hal bagaimana mereka menawarkan kerangka kerja lengkap untuk mengembangkan aplikasi satu halaman. Ini menangani back-end serta front-end. Saya belum pernah mencobanya tetapi saya penasaran dan ingin mencobanya.”