Saya menyesali seluruh karir saya sebagai programmer

Pertama-tama, saya menyebut diri saya "insinyur perangkat lunak"





Dari penerjemah:

Kita yang hanya memotong batu harus selalu membayangkan katedral. Kita yang memotong batu sederhana harus selalu melihat katedral di belakangnya. Kita semua ingat kutipan luar biasa ini dari buku oleh Andrew Hunt “The Pragmatist Programmer. Jalan dari magang ke master. " Postingan di bawah ini menurut saya adalah tentang ini. Penulisnya - pemimpin teknis dan arsitek Dave Taubler, berbicara tentang bagaimana kariernya dan pandangannya tentang pekerjaannya secara umum berkembang: dari kekecewaan dalam pemasaran hingga saat ini, beberapa tahun kemudian. Penulis membagikan beberapa rekomendasi yang menurutnya berguna untuk pengembangan karir, dan seperti yang tertulis di judul, berbicara tentang apa yang akan dia ubah dalam karirnya sendiri jika dia bisa.



Karier saya dimulai bukan dalam pengembangan perangkat lunak, tetapi di pemasaran. Saya orang yang kreatif dan saya pikir seni slogan dan harmoni akan cocok untuk saya. Tapi dunia pemasaran ternyata lebih mekanis dari yang saya bayangkan. Anehnya (atau mungkin tidak mengherankan) saya menyadari bahwa pemrograman - sampai saat itu menjadi hobi - memberi saya energi kreatif yang saya dambakan. Jadi setelah beberapa pekerjaan di pemasaran, saya menemukan pekerjaan di pengembangan web. Pekerjaan ini merupakan awal karir saya sebagai software engineer, sejak itu saya belum kembali ke marketing.



Profesinya luar biasa. Dia membayar dengan baik, tentu saja, dan saya tetap bekerja selama krisis ekonomi. Pengembangan web memungkinkan saya untuk bekerja dengan perusahaan yang berbeda dan bertemu orang-orang hebat. Dan hadapi saja, coding itu menyenangkan, jadi saya sedikit menyesal. Tapi masih ada yang aku sesali. Yaitu:



Saya tidak ingin melihat diri saya sebagai "insinyur perangkat lunak".


Saya tidak sedang berbicara tentang menyebut diri Anda "programmer" atau "software arsitek" atau apa pun; Khususnya kedua kata ini tidak terlalu mengganggu saya. Maksud saya, saya minta maaf karena saya telah mendefinisikan seluruh tujuan profesional saya dalam hidup untuk merancang perangkat lunak dan menulis kode. Mengapa? Sebenarnya ada beberapa alasan.



Saya menganggap diri saya sebagai penghalang untuk disingkirkan



Saya dulu menganggap diri saya sebagai saklar [kira-kira. terjemahan. - tentu saja enabler adalah "seseorang atau sesuatu yang membuat sesuatu menjadi mungkin": seseorang atau sesuatu yang membuat sesuatu menjadi mungkin. Tetapi dalam hal ini, penulis dengan menyesal berbicara tentang dirinya sendiri sebagai elemen rantai, yang berarti literalisme semacam ini sesuai di sini, dengan jelas mencerminkan suasana hati dan maksud dari apa yang dikatakan], tautan yang diperlukan dalam rantai pengembangan produk yang menerjemahkan konsep menjadi kenyataan. Ini sama pentingnya dengan bisnis seperti air untuk kehidupan. Tapi akhir-akhir ini saya tidak lagi yakin dengan penentuan nasib sendiri seperti itu.



Pikirkan tentang cara kerja pengembangan produk. Seseorang datang dengan ide bagus. Misalnya, memberikan dana kepada orang yang tidak bisa mendapatkan pinjaman, atau membantu pengrajin menjual karyanya secara online. Tetapi untuk mengubah ide menjadi kenyataan, penulis ide membutuhkan orang lain yang memiliki pengalaman dan keterampilan untuk mewujudkan ide tersebut. Di sinilah saya masuk sebagai insinyur perangkat lunak. Bayar saja saya dan saya akan berkontribusi untuk ide Anda. Baik? Iya. Kecuali apa yang menyadarkanku: Aku sebenarnya bukan asisten. Saya adalah penghalang. Akulah yang benar-benar berdiri di antara gagasan dan perwujudannya. Apa yang perlu dihapus. Dengan kata lain: apakah menurut Anda mereka mauapakah orang mempekerjakan orang lain untuk mengimplementasikan ide? Jika mereka bisa, katakanlah, cukup tekan tombol ... bukankah mereka akan memilih tombol?



Tentu saja, tidak ada tombol seperti itu. Belum. Tapi industri perlahan bergerak ke arah itu. Dahulu kala, untuk membuat situs web sederhana, Anda harus mempekerjakan orang seperti saya. Dan sekarang, dengan alat seperti Wix, hampir semua orang dapat menarik dan melepas ke situs yang cukup canggih ... Tidak perlu programmer! Platform pengembangan kode rendah juga mengurangi kebutuhan insinyur perangkat lunak.



Bahkan bahasa pemrograman itu sendiri secara bertahap (meskipun lambat) disederhanakan; menulis menjadi lebih mudah. Lagi pula, apa gunanya bahasa pemrograman jika tidak menjembatani kesenjangan antara instruksi manusia dan bagaimana komputer menjalankan instruksi? Jangan salah paham terhadap saya. Saya tidak berpikir permintaan insinyur perangkat lunak akan segera hilang. Tapi ... berikan diri Anda keterampilan yang nilainya secara bertahap menurun? Karier seperti itu mulai tampak tidak dapat diandalkan bagi saya. Dan itu membawa saya ke masalah kedua saya:



Saya mengembangkan sinisme yang tidak beralasan



Ketika saya pertama kali memulai, Java adalah produk baru yang panas. Jadi saya terjun langsung ke dalamnya. Dan saya ingat beberapa programmer C dan C ++ yang sangat membenci Java. Tentu saja mereka punya alasan. Tetapi bagi saya tampaknya alasan ini dalam banyak kasus hanya menutupi ancaman eksistensial yang dirasakan programmer. Kemampuan memprogram datang kepada mereka dengan susah payah. Kemudian datanglah Java, yang mengabstraksi banyak kesulitan C dan C ++. Tiba-tiba ternyata banyak pemrogram baru dapat melakukan pekerjaan mereka.



Maju cepat beberapa tahun ketika saya mulai merasa seperti berada pada posisi programmer ini. Secara refleks, saya menemukan dan menekankan kekurangan dalam bahasa atau teknologi apa pun yang seharusnya lebih sederhana daripada yang saya ketahui. Tentu saja, saya pernah dan alasan saya melakukan ini. Tetapi seringkali mereka lebih seperti rasionalisasi yang dibuat kemudian. Jadi apa yang terjadi padaku? Sudah lama sekali sejak saya mengakar di perangkat pemrograman favorit saya dan tidak ingin melepaskannya. Tujuan saya bukanlah menerapkan teknologi untuk memecahkan masalah, tetapi untuk menerapkan keterampilan pengembangan perangkat lunak khusus yang telah saya asah. "Jika keterampilan ini menjadi tidak diperlukan, tujuan saya juga tidak akan dibutuhkan," pikir saya. Jadi saya membangun tembok pertahanan dari sinisme. Hal yang sama di mana programmer lain, bertahun-tahun yang lalu, saya bertanya-tanya.



Intinya adalah, mempertahankan sinisme seperti itu dalam diri Anda bisa menegangkan dan melelahkan. Nyatanya, saya melihat sebuah lingkaran setan: semakin saya membela diri dari kemampuan saya sendiri, semakin sedikit saya ingin mempelajari hal-hal baru.



Saya membatasi wawasan profesional saya



Saya telah bekerja di banyak industri sepanjang karir saya. Media sosial, streaming musik, financial technology (fintech) dan bahkan pengeditan foto. Meskipun saya memiliki pengalaman di banyak industri, saya tidak selalu menguasai bidang tertentu. Pada saat yang sama, saya memperhatikan bahwa beberapa rekan insinyur saya tetap berada di industri yang sama sepanjang karier mereka. Salah satu kolega, misalnya, memiliki minat pada fotografi, jadi dia mengkhususkan diri pada perangkat lunak pengedit foto. Kolega lain telah mengabdikan seluruh karier mereka pada teknologi keuangan.



Faktanya adalah, pertama-tama, mereka tertarik pada industri mereka. Pemrograman hanyalah sarana di mana kolega saya berpartisipasi dalam industri mereka dan mencari nafkah.



Awalnya terasa agak aneh bagi saya. Jika Anda menulis kode, saya bertanya-tanya, bukankah seharusnya Anda mendefinisikan diri Anda sebagai insinyur perangkat lunak? Tentu saja, saya akan berusaha untuk mempelajari area mana pun di mana perusahaan saya saat ini beroperasi. Tetapi seringkali saya berpikir itu adalah kejahatan yang perlu dan bahwa saya harus lebih memperhatikan untuk mengasah keterampilan teknis saya. Jadi mengapa itu penting? Tentu saja, banyak insinyur telah menikmati karir sukses yang berfokus hampir secara eksklusif pada perangkat lunak dan teknologi, bukan?



Pertumbuhan karir



Kalau dipikir-pikir, saya menyadari bahwa sebagian masalahnya adalah cara saya berpikir. Ketika saya memikirkan tentang peran saya di tempat kerja sebagai programmer, saya cenderung hanya setuju. Orang lain tahu bisnisnya , saya definisikan sendiri, dan karena itu mereka bisa memprioritaskan kerja tim saya . Saya berada di perusahaan hanya untuk melakukan pekerjaan saya. Saat berkonsentrasi pada pengembangan perangkat lunak, jarang terpikir oleh saya bahwa saya memiliki aspirasi yang lebih tinggi.



Tetapi untuk melampaui peran sebagai insinyur senior, kita perlu memahami bisnisnya. Terlepas dari apakah kita menjalankan rute Manajer / Direktur atau Chief Engineer / Arsitek, kita akan mulai membuat keputusan tingkat tinggi atas nama perusahaan. Maklum, ketika saya pertama kali mengambil posisi kepemimpinan, saya merasa tidak nyaman berfokus pada masalah bisnis. Tetapi ketika saya terbiasa berpikir atas nama bisnis, saya merasa bebas. Rasanya seperti menemukan serangkaian keterampilan baru. Jika Anda bertujuan lebih tinggi lagi, fokusnya lebih pada bisnis. Pengalaman insinyur di industri menjadi penting. Dan bagaimana dengan rekan-rekan saya yang pernah saya ceritakan? Banyak dari mereka meninggalkan dunia teknik sepenuhnya dan dipromosikan dalam bisnis. Beberapa kemudian pergi untuk menemukan startup mereka di bidang teknologi keuangan.



Kebahagiaan karir



Meskipun saya menikmati pengkodean, saya merasa sulit untuk mempertahankan hasrat untuk menulis kode hari demi hari. Untuk benar-benar bahagia dalam karier Anda, penting untuk diketahui, penting untuk melihat gambaran besar tentang bagaimana pekerjaan saya mengubah dunia menjadi lebih baik.



Selain itu, saya ingin melakukan apa yang telah dilakukan beberapa rekan saya, yaitu mundur selangkah dan memahami apa yang benar-benar saya hargai di dunia ini. Banyak hal yang penting bagi saya: musik, pendidikan, perubahan iklim, dll. Jika saya dapat kembali dan mengubah sesuatu dalam karier saya, inilah yang akan saya ubah: Saya akan memutuskan apa nilai-nilai saya dan masalah apa yang saya inginkan selesaikan di dunia ini. Dan kemudian saya akan menerapkan semua keterampilan saya, teknis dan non-teknis, untuk memecahkan masalah ini.



Bagaimana melampaui rekayasa perangkat lunak



Cerita ini mungkin tidak beresonansi dengan semua orang yang menulis perangkat lunak untuk mencari nafkah. Ada banyak pembaca yang menyukai industri mereka lebih dari bahasa pemrograman mereka. Siapa yang cukup nyaman beralih dari C # ke JavaScript dan dari sana ke Go. Siapa yang tanpa masalah melepaskan apa yang telah dipelajarinya ketika solusinya tampak lebih mudah. Tetapi jika cerita ini sesuai dengan Anda, baca terus. Seiring waktu, saya telah mengubah sikap saya terhadap karier saya, dan tidak ada alasan mengapa Anda tidak dapat melakukan hal yang sama. Di bawah ini adalah beberapa tip yang menurut saya berguna.



Selami teknologi lain



Apa yang akan menyembuhkan keengganan kita untuk berpisah dengan teknologi yang biasa kita gunakan dan andalkan? Perendaman dalam teknologi lain. Cara termudah untuk melakukan penyelaman ini adalah dalam proyek sampingan: perangkat lunak yang kami buat sendiri saat jam kerja selesai. Hal utama adalah mendalami bahasa yang tidak kita kenal. Saya berbicara tentang dua hal:



  • Memilih bahasa yang sama sekali berbeda di luar zona nyaman kita. Misalnya, jika Anda merasa nyaman dengan Java, jangan hanya beralih ke Kotlin; coba Go, Python, Rust atau NodeJS sebagai gantinya.
  • Tentang definisi kompleks dalam arti menyelesaikan proyek Jangan hanya bekerja dengan tutorial. Tetapkan tujuan mulia untuk diri Anda yang akan membuat Anda benar-benar belajar bahasa untuk mencapainya.


Memang, jadikanlah tujuan Anda untuk belajar bahasa baru dengan baik sehingga Anda bisa mendapatkan pekerjaan dengan bahasa itu demi uang. Saya melakukannya beberapa tahun yang lalu. Saya adalah seorang arsitek perangkat lunak yang berfokus pada backend Java. Tetapi sebagai proyek sampingan, saya membantu seorang teman membangun aplikasi iOS dan aplikasi desktop Mac. Ini memberi saya keterampilan untuk kemudian bergabung dengan perusahaan streaming musik terkenal untuk membantu mereka membangun aplikasi iOS.



Anda membutuhkan lebih dari sekedar bahasa pemrograman yang berbeda: Anda perlu mempelajari alat-alat yang tidak memiliki bahasa. Misalnya, saya sering mengotori tangan saya di Docker dan Kubernetes. Saat saya menjadi lebih baik dan lebih baik dalam membuka dan mengatur gambar, saya menjadi kurang peduli tentang apa yang ada di gambar itu.



Atau mari kita gunakan teknologi cloud. Di masa lalu, saya mengecilkan peran teknologi tanpa server karena saya tidak memiliki pengalaman dengannya. Tapi untuk terakhir kalinya aku memeluk mereka juga. Misalnya, dalam pekerjaan baru-baru ini, saya mencoba menerapkan AWS Lambda di arsitektur layanan mikro kami. Dan bekerja di proyek sampingan tempat GCP Cloud Functions digunakan secara luas.



Semakin saya membenamkan diri dalam teknologi baru, semakin saya merasa terbebaskan. Saya tidak lagi merasa berkewajiban pada keterampilan tertentu, tetapi saya merasa lebih fleksibel dan siap untuk memecahkan masalah menggunakan alat yang paling tepat yang tersedia.



Fokus pada gambaran besar desain



Seperti banyak insinyur perangkat lunak, saya mulai kurang memperhatikan pemrograman praktis dan lebih fokus pada masalah umum. Mengelola insinyur lain dan berfokus pada arsitektur membantu saya menghilangkan waktu pribadi saya untuk berinvestasi dalam beberapa teknologi yang digunakan tim. Selain itu, pendekatan ini memungkinkan untuk fokus pada area bisnis lainnya. Saya baru-baru ini menjadi bagian dari tim lintas fungsi yang mempelopori inisiatif produk baru. Karena itu, saya menghabiskan lebih banyak waktu bekerja dengan manajer produk dan desainer yang terlibat dalam pengembangan produk daripada bekerja dengan kode.



Sedikit peringatan. Sebagai kepala departemen teknik, selalu penting bagi saya untuk tidak melupakan teknologi yang digunakan tim, setidaknya sedikit menyadarinya. Tentu saja, tim kami mungkin ingin menggunakan bahasa dan alat yang melampaui kemampuan pribadi Anda. Itu tidak buruk; sebaliknya, ini adalah kesempatan besar untuk belajar dari tim. Dan percayalah, tim akan senang jika kita memberi mereka kesempatan untuk mengajari kita sesuatu.



Menjadi Pria Idea



Sebelumnya, saya menyajikan pandangan yang disederhanakan tentang bagaimana produk dilahirkan. Seseorang memiliki ide, dan orang lain menerapkannya. Jadi saya berpikir: bagaimana menjadi pengembang, mengapa tidak menjadi penulis ide?



Proyek sampingan



Sejauh ini, tujuan proyek sampingan saya adalah mengikuti keterampilan teknik saya yang ada atau mempelajari teknologi baru. Intinya, proyek-proyek ini merupakan latihan Hello World yang dimuliakan.



Sekarang saya mulai dengan ide itu sendiri. Saya datang dengan sesuatu yang menurut saya akan berguna, tetapi idealnya akan menjadi sesuatu yang baru. Terkadang itu adalah ide yang bisa berubah menjadi produk. Dalam kasus lain, ide ini hanya berguna bagi saya. Intinya adalah saya fokus terutama pada gagasan.



Kemudian saya menantang diri saya sendiri untuk menemukan cara terbaik untuk mewujudkan ide itu. Mungkin implementasinya terkait dengan penulisan aplikasi monolitik di Java. Atau mungkin itu adalah frontend JavaScript / React, yang sebagian besar didukung oleh layanan cloud, dan diikat bersama dengan sedikit kode Go. Mungkin kita berbicara tentang tugas-tugas yang sama sekali tidak berhubungan dengan pemrograman.



Sedang bekerja



Saya juga mulai menggunakan akal sehat ini di tempat kerja. Suatu ketika, saya sedang mencari proyek di mana saya dapat menggunakan keterampilan pemrograman khusus saya. Lagipula, saya dipekerjakan untuk keterampilan khusus ini, bukan? Namun lambat laun saya menyadari bahwa saya dipekerjakan terutama untuk memecahkan masalah organisasi. Jadi saya mulai mencari masalah yang paling membutuhkan solusi, dan saya menemukan cara mengatasinya. Dalam banyak kasus, solusinya terkait dengan perangkat lunak. Tetapi saya mulai menikmati saat-saat ketika keputusan tidak terkait dengan perangkat lunak, karena pada masa itu saya sedang memperluas ruang lingkup dan melewati batas, lebih fokus pada sisi bisnis.



Apakah ini lebih mudah diucapkan daripada dilakukan? Mungkin. Tentu saja, ini tergantung pada kemauan pemberi kerja kita untuk menghentikan pemrograman dengan sangat cepat. Tetapi saya telah menemukan bahwa banyak perusahaan sangat senang ketika para insinyur ingin mengambil inisiatif untuk memecahkan masalah yang melampaui bidang penulisan perangkat lunak. Bagaimana jika perusahaan kita tidak mendukung inisiatif tersebut? Lalu ingatlah bahwa kita adalah insinyur perangkat lunak ... Kita bisa sedikit pilih-pilih tentang siapa kita bekerja.



Jika Anda ingin terjun ke teknologi lain, seperti yang disarankan oleh penulis posting, maka kami, di pihak kami, siap membantu dengan pengetahuan, mentor berpengalaman, dan dukungan kami. Ini akan sulit, tetapi menarik. Dan jangan lupa tentang kode promo yang selalu aktif HABR - yang akan menambah 10% diskon pada banner.





Profesi dan kursus lainnya
PROFESI
















gambar



All Articles