Node.js'den Serbest Çalışan Vergilerinizi Ödemeye: Başarılı Bir Geliştiriciyle Röportaj

Yayınlanan: 2022-03-11

Toptal'da her zaman çevremizdeki en iyi serbest çalışanları arıyoruz. Ama bir serbest çalışanı gerçekten harika yapan nedir? En iyi geliştiricilerimizden biri olan Luis Martinho, müşterileri tarafından seviliyor - bu nedenle serbest çalışma, serbest çalışan Node.js ve HTML5 gibi teknolojiler ve vergilerinizi ödeme hakkında konuşmak için onunla oturduk.

Başlangıç ​​olarak, serbest çalışmaya nasıl başladınız? Hiç tam zamanlı bir işte çalıştınız mı?

“Birkaç tam zamanlı işte çalıştım: bazıları nispeten kurumsaldı, ancak en sonuncusu bir başlangıç ​​ortamında, özellikle kurumsal SaaS alanında, bulutta seksi yönetim yazılımı oluşturuyordu. Çok yetenekli bir ekibimiz ve çok iddialı bir vizyonumuz vardı. Dört yıllık büyümeden sonra, heyecan verici bir alanda heyecan verici bir ürünümüz oldu, bu harikaydı ama ben çok mutlu değildim. Bir yaşam tarzı değişikliğine ihtiyacım vardı. Başladığımızda, “başlatmanın” ne kadar zor olduğunu şahsen anlamadım. Sadece saatler değil, çünkü her türlü ortamda ve projede uzun saatler çalışıyorsunuz; yeni bir şey yaratmanın getirdiği stres, sorumluluk ve acıdır. Hepsi çiçekler ve gökkuşakları değil. Sonunda, kurucu ortak olmadığıma karar verdim (en azından o zaman değil). Ancak bu deneyim, startup kurucularının karşılaştığı baskı türünü çok daha derinden anlamamı sağladı ve bunun sayesinde daha iyi bir serbest yazılım geliştiricisi olduğumu biliyorum.

Serbest çalışma giderek daha çok istediğim hayata benziyordu: kaliteli iş için ödüllendirilirken ilginç müşteriler ve projeler bulma fırsatı sundu.

Düzenli işler aramaya başladım: önce memleketimde, sonra ülkenin geri kalanında, sonra Avrupa'nın geri kalanında. Bazı ilginç projeler, bazı ilginç tazminat paketleri ve bazı ilginç yerler bulmayı başardım; ama her şeye sahip olabileceğime inanıyordum. Bu yüzden freelance çalışmaya başladım. Ve aramaya devam ettikçe, freelance çalışmak istediğim hayata daha çok benziyordu: kaliteli iş için ödüllendirilirken ilginç müşteriler ve projeler bulma fırsatı sundu.”

Serbest çalışan geliştirme çalışmasına geçişiniz sırasında karşılaştığınız en zorlu zorluk neydi?

“Başlangıçta, büyük bir değişikliğin, tam zamanlı bir işten beklediğiniz gelir istikrarı olacağını hayal etmiştim, burada belirli bir miktar paranız var, her zaman ay sonuna kadar alırsınız - ve ne olursa olsun alırsınız. Serbest çalışan olmanın her zaman müşterilerim olmayacağı anlamına geldiğini bildiğimden, bunun büyük bir endişe kaynağı olmasını bekliyordum. Ama gerçekte olan bu değil - şaşırtıcı bir şekilde, Toptal'da onları avlamak zorunda kalmadan her zaman düzenli bir müşteri akışına sahip olmayı başardım. Yani, dürüst olmak gerekirse, asıl zorluk programımı düzenlemek oldu. Gerçekten çalışmak için belirli bir saatim yok. Temelde kendi programımı oluşturuyorum ve bu yüzden eskisinden daha disiplinli olmam gerekiyor. Aşağı yukarı standart saatlerde çalışmaya çalışıyorum: Sabah uyanıyorum, çalışmaya başlıyorum, herkesin öğle yemeği yediği saatte öğle yemeği yiyorum, öğleden sonra çalışıyorum ve sonra akşam yemeği yiyorum. Her gün gece yarısı yağını yakan, bütün gece uyumadan normal bir program yapmaya çalışıyorum. Bu disiplin başlangıçta büyük bir zorluktu.”

Ancak çoğu insan boş saatleri serbest yazılım mühendisliğinin bir faydası olarak görür. Buna ne dersin?

Disiplinli olmanın karşılığını buldum çünkü bir dizi rutinim varsa çok daha üretken oluyorum.

“Elbette, bu bir fayda. Herhangi bir sorunla karşılaşırsanız, ailenizden birine yardım etmek zorunda kalırsanız veya bir tür boş zaman etkinliği için bu harika fırsatınız varsa, bunun peşinden gidebilir ve bu fırsatın tadını çıkarabilirsiniz. Ama öte yandan, disiplinli olmanın işe yaradığını gördüm çünkü bir dizi rutinim varsa çok daha üretken oluyorum, çünkü bu rutinler temelde bana rehberlik ediyor: Kovalamayı kesebilir ve daha fazlasını yapabilirim. bu süre zarfında. Bu özgürlüğe sahip olmak güzel ama bence sorumlu bir şekilde kullanılması gerekiyor.”

Serbest yazılım geliştiricileri, esnek çizelgelerin ve farklı bir ödeme yapısının avantajlarından yararlanır.

Müşterileriniz sizi seviyor. Sırrın nedir?

“Serbest çalışan bir yazılım geliştiricisi olarak, bir şeyi halletmek için en kolay ve en ucuz yolu arama konusunda biraz tembel olmak muhtemelen iyi bir özellik; tekrarlayan işler yapmaktan son derece rahatsız olmak ve böylece alet zincirinizi sürekli iyileştirmek. Örneğin, bir terminalde çok zaman harcıyorsunuz: Kısayollar, takma adlar, size zaman kazandıran ve yazmaktan tasarruf ettiren her şeyi oluşturmayı ciddi olarak düşünmelisiniz. Sonuç olarak, yaptığınız birçok görev aslında roket bilimi değildir; bir şeyi halletmek için birkaç döngüden geçiyorlar. Bunları optimize ederseniz ve tekrar eden işleri ortadan kaldırırsanız, gerçek roket bilimini yapmak için daha fazla zamanınız olur.

Tekrar eden işleri ortadan kaldırırsanız, gerçek roket bilimini yapmak için daha fazla zamanınız olur.

Ayrıca, harika işler yapmaya odaklanabilmeniz için saatlik ödeme ve faturalandırma, müşterilerden para alma ve hatta yeni müşteriler edinme işlemlerini başka birine yaptırmanız gerekir. Ve bu kesinlikle önemli. Serbest çalışan bir yazılım geliştiricisi olduğunuzda, dağıtım üzerinde çalışıyorsunuz, aynı zamanda pazarlama ve satış üzerinde de çalışıyorsunuz. Sizin yapmak istediğiniz ve müşterilerinizin sizden istediği şey, teslimata olabildiğince çok, pazarlama, satış ve hatta finansa bir o kadar az zaman harcamaktır. Eskiler için çalışırken her zaman yeni serbest geliştirme müşterileri aramak için zaman harcamak zorunda kalacaksınız ve bu eskilerin istediği bir şey değil - ve bu sizin istediğiniz bir şey değil. Sadece işini iyi yapmaya odaklanmak istiyorsun. Bu nedenle, faturalandırmayı başka birinin halletmesi ve yeni müşteriler bulma konusunda çok mutlu olmanız gereken bir şey ve onu bulursanız çok şanslısınız.

Ayrıca şunu da unutmayın: serbest vergilerinizi ödeyin.”

Kendinizi günlük olarak nasıl motive edersiniz?

Kendilerine, yalnızca faturalandırılabilir saatler üzerinden gönderme yapmadığınız bir şekilde bağlı olduğunuzu düşünüyorlar.

“Motivasyonumda büyük rol oynayan şey, müşterilerin kalitesidir. Mümkünse biraz seçici olmaya çalışıyorum. Yani, ister zor bir problemi çözüyor ister ilginç bir alanda çalışıyor olsun, ilgili teknolojik zorluk açısından beni motive eden konserleri kabul etmeye çalışıyorum. Ve bir nevi bunu takip ediyor. Her zaman ortak bir amaç için çalıştığımı düşünen bir müşteriyle çalışırım: Daha büyük resmi görmeye ve kendimi ekibin bir parçası olarak görmeye çalışırım. Özellikle ofis dışındayken, dahili veya yerinde yazılım geliştirme ekibinin tam anlamıyla duygusal bir parçası değilsiniz, ancak genel proje ve kalite açısından yine de ekibin bir parçası gibi hissedebilirsiniz. iş. Ve bence diğer taraftaki insanlar (müşteri ve müşteri ekibi) bunu hissediyorlar - onlara yalnızca faturalanabilir geliştirme saatleri göndermediğiniz bir şekilde bağlı olduğunuzu hissediyorlar, gerçekten endişeleniyor musunuz? ya da işin kalitesi yeterince iyiyse başarılı olacaklardır.”

Potansiyel bir serbest yazılım veya web geliştirme istemcisinde ne ararsınız?

Bu serbest çalışan web geliştiricisi, birçok müşteri seçeneğini değerlendiriyor.

"Genel olarak, eski teknolojilerden daha yeni teknolojileri ve aynı zamanda gelişmekte olan şeyleri tercih ederim - bu şeylerin bir kısmı güncel olduğu için mutlaka ortaya çıkıyor diyemem, ancak tek sayfalık uygulamalar yapan ve Backbone.js kullanan biriyle çalışmayı tercih ederim. ve Node.js'yi, Java Enterprise Edition stilini kullanacak birinden daha fazla Express veya bazı MVC çerçevesi ile.

Ben serbest çalışıyorum, yerinde asenkron iletişim çözümü olan bir müşterim olmasını tercih ederim. Uzaktan çalışma yapıyorsanız, bir posta listesi kadar basit bir şey kullanan veya Campfire'da sohbet odaları olan veya bir işbirliği aracı olarak GitHub'ı kullanan bir ekibin içine girmek çok daha kolaydır (bu sonuncusu oldukça iyi çalışır). Toplamda, müşteri bir şekilde su soğutucusu konuşmasını yakalayamıyorsa, işinizi etkileyebilecek çok fazla bilgi ve gevezelik kaybetme riskiyle karşı karşıya kalırsınız."

Bu ilginç bir nokta. Uzaktan çalışma için başka ipuçları var mı?

Binaya hiç girmeyen adamı hatırlamak daha zor.

“Ofis dışında olmayı telafi etmenin bir yolunu bulmalısın. Bulduğum çözüm proaktif olmaktır. Örneğin: taahhüt günlüklerini analiz edin. Uzaktan çalışma yaparken, sadece göz atmak ve diğer insanların ne üzerinde çalıştığı hakkında bir fikir edinmek için biraz zaman ayırmalısınız. Bazı proje yönetimi çözümleri aracılığıyla bilgilendirilen günlük standup'larda neler olduğunun farkındaysanız, ekibin ne üzerinde çalıştığı hakkında ipuçları bulmaya çalışmak iyi bir uygulamadır. O zaman, daha kolay entegre olursunuz. Bu açıkçası sizin için ek bir çabadır—gerçekten iyi bir iletişim sürecine sahiplerse bunu yapmaktan kurtulabilirsiniz, ancak bu iyi bir ipucu olabilir ve bazı sorunları kurtarabilir. Binada hiç bulunmayan serbest çalışan geliştiriciyi hatırlamak daha zor.”

Serbest yazılım geliştiricisi olmak iletişimle başlar.

Bir serbest çalışanın en önemli kalitesi nedir?

“Kişisel yaşamınız ve işiniz arasında akışkan bir denge sağlayabilen biri olmalısınız. Bir serbest çalışan olarak, duyarlı olmak önemlidir. Ancak duyarlı olmak, kişisel yaşamınıza büyük bir zarar verir. Her zaman e-postanızı kontrol etmek zorunda değilsiniz - sadece bildirim alabilir, önemli olup olmadığını filtreleyebilir ve ardından ailenizle ya da başka şeylerle vakit geçirmeye geri dönebilirsiniz. İyi bir bağlam değiştirici olmalısınız. Bağlam değiştirme genellikle pahalıdır, ancak bunu ucuz ve hızlı hale getirmeniz gerekir, böylece acil durumlara karşı çok duyarlı olarak ve aynı zamanda arkadaşlarınız ve ailenizle birlikte olmanın keyfini çıkararak çok yüksek bir hizmet standardına sahip olabilirsiniz.

İyi bir bağlam değiştirici olmalısınız. Bağlam değiştirme genellikle pahalıdır, ancak bunu ucuz ve hızlı hale getirmeniz gerekir.

Olağan serbest geliştirme düzenlemesi için, mali durumunuzu muhafazakar bir şekilde nasıl yöneteceğinizi bilmelisiniz. Şaşırtıcı bir şekilde, Toptal'da bu gerçekten olmadı, ancak yazılım veya web geliştirici ödemesi söz konusu olduğunda, saat başı bile olsa bayramdan kıtlığa geçmek genellikle çok kolaydır. Bir ay, bir ton para kazanıyorsun ve aniden müşterin ve başka işin yok. Yani disiplinli olmalısınız: ortalama ücret hakkında bir fikre ihtiyacınız var ve bu miktarı harcamanız gerekiyor; tüm fazlalıkların, bu tür işleri yapmanın belirsizliklerini aşmanıza yardımcı olacak bir tür yastık olması gerekir. Bu Toptal için o kadar da doğru değil çünkü müşteri akışı gerçekten istikrarlı ama yine de iyi bir uygulama.”

Serbest çalışan olarak, kariyeriniz boyunca bir dizi farklı yazılım geliştirme projesini üstleniyorsunuz. Peki size yeni bir kod tabanına erişim izni verildiğinde ilk kez ne yaparsınız? Diyelim ki milyarlarca kod satırı var.

“Yukarıdan aşağıya bir yaklaşım benimseme konusunda disiplinli olmaya çalışırdım. Bu, kod tabanının genel yapısı hakkında bir fikir edinmek anlamına gelir. Bu biraz açık görünüyor, ancak kodu anlamaya başladığınızda, o anda üzerinde çalıştığınız şeye ve elinizdeki belirli göreve yönlendirileceksiniz. Bu, odağınızı yukarıdan aşağıya yaklaşımdan değiştirecek ve baktığınız kodun belirli bölümlerinden parçaları bir araya getirerek yukarı çıkmaya çalışırken sizi en altta tutacaktır. Bu, kısa vadede bu belirli hatayı düzeltmeniz veya bu belirli işlevselliği eklemeniz için daha iyi olabilir, ancak orta vadede yukarıdan aşağıya yaklaşımı sürdürmeyi dilersiniz. Ardından, sistemi ve parçaların nasıl etkileşime girdiğini çok daha iyi bir şekilde görebileceksiniz.”

Serbest çalışan bir geliştirici olmak, etkili bir şekilde başlamak için yeni kod tabanlarına yukarıdan aşağıya bir yaklaşım benimsemek anlamına gelir.

Çok fazla ön ve arka uç çalışması yaptınız. Bugün serbest çalışan geliştiricilerin bu beceri setlerinin her ikisine de sahip olmasının önemli olduğunu düşünüyor musunuz?

"Hayır. Çok dürüst olacağım: Uzmanlıktan çok şey kazanabileceğinizi düşünüyorum, örneğin gülünç derecede küçük bir teknoloji setinde gülünç derecede iyiyseniz; ama bu sadece kişisel bir seçim. Meraklıyım, bu yüzden birçok farklı teknolojiyle çalışıyorum. İşte bu yüzden hem front-end hem de back-end freelance işler yapıyorum.

Teknolojiler değişecek - bugün sıcak olan şey muhtemelen yarın veya en azından 6-12 ay içinde sıkıcı olacak.

Bunu söyledikten sonra, bir geliştiricinin profesyonel yaşamı boyunca mümkün olduğunca çok sayıda teknoloji ve paradigmayı denemesinin ve öğrenmesinin çok önemli olduğunu düşünüyorum. Teknolojiler değişecek (bugün sıcak olan şeyler muhtemelen yarın veya en azından 6-12 ay içinde sıkıcı olacak) ve serbest çalışan bir yazılım geliştiricisi için en önemli becerilerden biri, yeni bir teknolojiyi veya yeni bir projeyi hızla benimsemektir. Bunun için, yeni şeyler öğrenmeye yönelik sistematik bir yaklaşımınız varsa ve bunu her yıl en az bir yeni dil, çerçeve veya paradigma öğrenerek uygulamanız gerçekten yardımcı olur.”

Rails, Django ve daha yakın zamanda Node.js ile bir sürü serbest çalışma yaptınız. Deneyimleriniz üçü arasında nasıl farklılaştı?

“Ah oh, burada bir din savaşına gireceğiz. Node'un diğer ikisinden oldukça farklı olduğunu söyleyebilirim. Node.js örnekleriyle ilk kez karşılaştığınızda, olay odaklı paradigmaya girmekte sorun yaşayabilirsiniz. Her zaman Rails işi yapan biri için %100 doğal olmayan bir şey. Öte yandan, JavaScript ile çalışıyorsanız, muhtemelen tarayıcı için geliştiriyorsunuzdur ve bu nedenle olay güdümlü paradigmaya zaten aşinasınızdır. Şahsen, Node ile olan serbest çalışma deneyimimde, bir MVC çerçevesi kullanıyorum, dolayısıyla Node için çekirdek teknoloji geliştirmedim; Az önce müşteriye özel tescilli bir çerçevenin standart bir kullanıcısı oldum (Express ile karşılaştırılabilir).”

Çok az geliştiricinin kullandığı favori araçlarınız nelerdir?

Node.js serbest çalışanları, Rails serbest çalışanlarından farklı düşünmelidir.

"Aklımın üstünde, JetBrains'ten WebStorm. Bu, gerçekten aramaya değer bir JavaScript IDE'sidir. Google I/O'da yayınlanan yeni Android stüdyosu, Eclipse ya da başka bir şey değil, JetBrains yazılımı tarafından desteklenmektedir. Eclipse'i severim ama WebStorm ile gerçekten eğlenceli vakit geçiriyorum. Hâlâ birçok kısayol öğreniyorum - ve bu, iyi bir serbest yazılım geliştiricisinin sahip olması gereken bir uygulamadır: araçları hakkında daha fazla bilgi edinmek. Hala IDE'm hakkında daha fazla şey öğreniyorum. WebStorm'un birçok akıllı kısayolu, iyi bir standart düzeni vardır ve ayrıca HTML'yi her zamankinden daha hızlı yazmanıza izin veren bazı güzel ZenCoding özelliklerine sahiptir. Sonuç olarak, bu 'iyi bir araç'

Serbest çalışan bir müşteri, Rust veya Go ile veya daha önce hiç çalışmadığınız yeni bir dil ile bir proje yapmanızı isteseydi, ne derdiniz?

Ne kadar iyi olursanız olun, kurulum süresi her zaman olacaktır ve bu müşteri için maliyetli olabilir.

“Genellikle dillerle ilk temasımı müşterinin zamanında değil, müşteri işinin dışındaki dillerle yapmaya çalışırım - ne kadar iyi olursanız olun, kurulum süresi her zaman olacaktır ve bu müşteri için maliyetli olabilir. Bununla birlikte, müşteri bana, “Tamam, bu konuda hiçbir şey bilmeseniz bile rahatız” derse, bunu yeni bir şeyler öğrenmek için harika bir fırsat olarak görürdüm. Öte yandan, müşterinin zorlu bir programı varsa, onlara başka birini işe almalarını veya rahat olduğum bir dili kullanmalarını tavsiye ederdim, böylece en başından üretken olabileceğimi biliyordum.”

Serbest çalışırken çözmeniz gereken en büyük teknik zorluk nedir?

“Aklıma serbest çalışan bir HTML5 projesi geliyor. Kement seçimi ve serbest biçimli seçim yapmak gibi bazı gelişmiş grafik düzenleyici işlevleri yapmak için HTML5 Canvas API'sini kazmak, burada görüntünün bir bölümünü kırpıp gerisini dışarıda bırakmak, piksel kümeleriyle hesaplamalar, bunun gibi şeyler. Bu, MS Paint'in HTML5 Canvas'ı kullanma ve fırça gibi şeyler uygulama gibi bir şeydi: Fırçanın basit bir şey olacağını düşünürdünüz - sadece bir çizgi çizerseniz, ancak bu durumda bir fırça darbesini taklit etmek istersiniz, yani Bir fırçanın tuvale nasıl temas edeceğini ve mürekkeple bulanıklık bırakacağını simüle etmek için matematiksel bir formül kullanmam gerekiyordu.”

HTML5 serbest çalışanları, bu yeni teknolojiye alışmanın biraz zaman aldığını görebilir.

Son zamanlarda üzerinde çalıştığınız en sevdiğiniz yeni teknoloji?

“Meteor hakkında duyduklarım, tek sayfalık bir uygulama geliştirmek için eksiksiz bir baş-omuz çerçevesi sunmaları açısından ilginç. Arka ucu ve ön ucu idare eder. Onunla çalışmadım ama merak ediyorum ve denemek için can atıyorum.”