Buku "Kode kami. Kerajinan, profesi, seni "

gambar Menjadi seorang programmer bisa menarik dan menyenangkan, tetapi menjadi seorang pengembang perangkat lunak adalah neraka. Komputer itu logis, manusia tidak. Sayangnya, dalam industri perangkat lunak modern mereka tidak membayar untuk pemrograman. Mereka membayar untuk pengembangan perangkat lunak, dan ini berarti menyelesaikan tugas dalam tim - bersama dengan orang lain. Perintah terdiri dari orang yang tidak patuh, bukan kelas dan metode Java.

Keberhasilan proyek perangkat lunak tergantung pada insinyur pintar yang sering malas, bodoh, egois, mudah tersinggung, dan hanya sengsara. Keberhasilan tergantung pada orang yang sering tidak tahu bagaimana berkomunikasi, berbagi pengetahuan, memimpin dan menaati, dan mengikuti arahan. Itu tergantung pada kemampuan kita untuk membentuk tim dan berpartisipasi dalam kegiatan mereka. Dan juga dari keterampilan sosial kita - terkadang jauh lebih besar daripada keterampilan teknis.

Drama Saya setuju. Drama ini berlaku untuk masing-masing saudara kita dalam profesi ini, jadi jika Anda ingin bertahan dalam profesi seperti itu, baca buku ini. Egor Bugaenko .

Pengembangan perangkat lunak saat ini melibatkan lebih dari sekadar menulis kode. Ini bukan tentang algoritma, formula, byte, file atau protokol. Dan bukan tentang instruksi, operator, tes unit, antarmuka pengguna atau skenario penerapan. Dan bahkan tentang kinerja, skalabilitas, toleransi kesalahan atau keandalan. Semua komponen ini penting, tetapi mereka tidak membuat satu programmer lebih efektif daripada yang lain, atau beberapa tim pengembang lebih sukses daripada pesaing. Peran yang menentukan dalam dunia modern perangkat lunak dan perangkat keras dimainkan oleh sesuatu yang lain: ini bukan komputer, tetapi manusia.

Keberhasilan proyek perangkat lunak tergantung pada orang-orang yang sering malas, bodoh, egois, jengkel, dan tidak bahagia. Itu tergantung pada orang yang sering tidak tahu bagaimana berkomunikasi, berbagi pengetahuan, mengelola dan mematuhi, dan mengikuti arahan. Itu tergantung pada kemampuan kita untuk membentuk tim dan berpartisipasi dalam kegiatan mereka. Dan juga dari keterampilan sosial kita - terkadang jauh lebih besar daripada keterampilan teknis.

Dalam buku ini, Anda akan bertemu sekelompok kecil programmer, arsitek, dan eksekutif yang dibayar untuk membuat perangkat lunak. Lebih dari dua ratus halaman berikutnya, mereka akan menyelesaikan masalah, menghindari situasi konflik, dan mendiskusikan fitur kerja tim. Saya berharap dialog dan monolog mereka akan membantu Anda memahami pentingnya aspek sosial pengembangan perangkat lunak dan, sebagai hasilnya, menjadi pengembang atau pemimpin yang lebih baik.

Bab 1
Adrian


Menjadi seorang programmer bisa menarik dan menyenangkan, tetapi menjadi seorang pengembang perangkat lunak adalah neraka. Komputer itu logis, manusia tidak. Sayangnya, dalam industri perangkat lunak modern mereka tidak membayar untuk pemrograman. Mereka membayar untuk pengembangan perangkat lunak, dan ini berarti menyelesaikan tugas dalam tim - bersama dengan orang lain. Perintah terdiri dari orang-orang yang tidak rasional, bukan kelas dan metode Java. Saya akan mendapatkan pekerjaan di salah satu tim ini dan bertahan di dalamnya. Saya dapat menulis di Jawa, tetapi ini tidak cukup untuk sukses. Keterampilan lain akan dibutuhkan di sana. Dan beberapa dari mereka belum saya kembangkan.

Penambang dan penambang


Saya mengatakan kepada sekretaris:

- Aku ada pertemuan dengan Chris, dia menungguku.

Suatu hari nanti saya akan memiliki sekretaris saya, dan kantor saya, dan programmer saya, dan startup saya dengan investor, dan misi besar yang akan kami ikuti. Dan saya akan terkenal dan sukses. Sementara itu, saya tidak perlu membayar untuk perumahan. Tampaknya orang-orang ini cukup kaya untuk berurusan dengan saya selama beberapa bulan ke depan, dan tampaknya mereka menyukai resume saya. Sekarang saya harus meyakinkan mereka bahwa saya bermimpi tinggal bersama mereka selamanya.

Karena setiap arsitektur perangkat lunak adalah produk dari aktivitas orang, untuk meningkatkan produk, pertama-tama perlu untuk meningkatkan orang.

"Sebenarnya, ini dia," jawab sekretaris dengan datar.

Chris muncul satu menit kemudian. Kami pergi ke ruang pertemuan, dia menawarkan kopi, tetapi saya meminta segelas air. Dia keluar, dan saya secara otomatis mengeluarkan telepon dan memeriksa Facebook. Chris kembali dengan segelas air dan ditemani oleh seorang lelaki dengan kaus hitam dengan logo GitHub. Dia bilang dia sangat senang bertemu denganmu dan pergi. Nama Bung adalah Adrian, dia adalah seorang pengembang. Kami memulai percakapan. Dengan pertanyaannya, dia memberi kesan seseorang cukup berpengalaman. Saya merasa cukup nyaman - jelas bahwa saya secara teknologi lebih unggul darinya, jadi jelas tidak ada yang perlu dikhawatirkan.

"Kami membutuhkan seseorang untuk memperbaiki arsitektur kami," Adrian meringkas setelah setengah jam.

"Sebaliknya, kamu membutuhkan seseorang untuk mengoreksi kamu sebelum kamu dapat melakukan sesuatu dengan arsitektur," pikirku, tetapi berkata dengan keras:

- Saya akan dengan senang hati membantu. Tampaknya bagi saya bahwa proyek Anda menarik baik secara teknologi maupun dari sudut pandang proses bisnis. Saya tidak terlalu suka mengerjakan proyek yang membosankan, tidak peduli berapa banyak mereka membayar untuk itu. Saya lebih suka bergairah dengan bisnis saya, jadi saya ingin melakukan sesuatu yang menarik dan modern.

Adrian tersenyum sedih. Mungkin dia mendengar ini dari setiap orang yang duduk di ruangan ini ...

Dia mengajukan pertanyaan yang sulit:

"Kapan kamu siap untuk memulai?" Berapa banyak waktu yang Anda butuhkan untuk menyelesaikan proyek yang sedang berlangsung? Kami mencari orang penuh waktu.

Dia tampaknya sangat bangga dengan apa yang dikatakan. Tampaknya, mereka berpikir bahwa pekerjaan penuh waktu akan menjadi hal yang sangat baik bagi saya. Saya sudah menyadari bahwa saya harus duduk di kantor ini dari jam sembilan sampai jam lima, mengerjakan gaji saya. Meskipun saya tidak memiliki startup sendiri, tampaknya, itu akan terjadi. Minggu ini, ini adalah perusahaan ketiga di mana saya sedang diwawancarai. Dua yang sebelumnya belum menjawab saya, meskipun sepertinya saya cocok untuk mereka. Bung ini terlihat jauh lebih putus asa. Saya menduga servernya mogok hampir setiap malam kedua, dan ini akan menjadi masalah saya segera setelah saya menandatangani kontrak. Saya harus hati-hati.

"Mungkin seminggu sudah cukup untuk menyelesaikan semua pekerjaan."

Saya mengatakan apa yang harus saya katakan, meskipun sekarang saya tidak punya proyek, tidak ada pekerjaan, tidak ada pendapatan. Saya tidak bisa mengatakan yang sebenarnya kepadanya - Anda harus mengikuti aturan permainan. Saya harus terlihat populer dan sangat sibuk. Tetapi di sisi lain, apakah janji untuk menyelesaikan semua hal dalam seminggu tampaknya logis? Proyek apa yang sedang saya kerjakan sekarang sehingga saya bisa menyelesaikannya hanya dalam seminggu? Tentu saja, kami berdua mengerti bahwa ini bohong ... tetapi kami juga mengerti bahwa kami tidak bisa berbuat apa-apa.

Seseorang yang berjanji untuk setia pada satu perusahaan segera tidak lagi setia pada yang lain.

- Sudah berapa lama Anda bekerja di perusahaan ini? Saya memintanya untuk mengganti topik pembicaraan.

"Dua tahun," jawab Adrian.

- Sudahkah Anda membuat sebagian besar proyek perusahaan?

- Ya, saya pengembang pertama di sini. Dua tahun lalu, saya bertemu Tony, salah satu pendiri dan direktur teknis kami. Anda akan melihatnya di wawancara berikutnya.

Saya melihat betapa penuh hormatnya Adrian berbicara tentang dia. Kenapa, Tony membayarnya uang.

- Saya akan senang bertemu dengannya! Saya menjawab, dan kami mengakhiri pembicaraan.

Chris menulis kepadaku tiga jam kemudian. Tony ingin menemuiku besok pagi. Dia mengatakan Adrian berbicara positif tentang saya. Ternyata, mereka tertarik. Dua perusahaan sebelumnya masih bungkam, jadi saya bisa bekerja untuk Tony. Meskipun saya bahkan tidak tahu berapa banyak yang bersedia mereka bayarkan, pengumuman itu mengatakan bahwa bayarannya “layak”.
Saya bahkan tidak ingin membayangkan diri saya bekerja untuk orang lain. Saya bisa merasa cukup nyaman di kantor mereka, berpura-pura menarik bagi saya, menertawakan lelucon Tony dan bertanya kepada Adrian bagaimana kabar anak-anaknya. Tetapi saya tidak ingin menulis kode untuk mereka atau, lebih buruk lagi, bertanggung jawab atas kegagalan teknis mereka. Dan inilah yang akan mereka coba lakukan: menggeser sebanyak mungkin hal ke pundak saya.

Saya bukan orang yang malas sama sekali. Saya suka menulis kode, tetapi melakukannya agar orang lain menjadi jutawan - tidak, terima kasih. Hidup saya bernilai lebih dari gaji yang bisa mereka tawarkan.

"Berapa yang bisa dibayar majikan?" - Pertanyaan yang tepat bahwa seorang spesialis harus bertanya pada dirinya sendiri.

Sejujurnya, saya berpikir bahwa justru sikap saya inilah yang merupakan penyebab sebenarnya dari masalah yang saya temui dalam pekerjaan saya sebelumnya (dan dalam beberapa pekerjaan sebelumnya). Semua orang ingin saya menjadi karyawan yang baik, dan saya ingin melakukan apa yang saya suka: menerjemahkan ide-ide saya sendiri dengan menulis kode di Jawa. Saya sudah dipecat empat kali, tetapi saya baru 29 tahun. Sejauh ini, bukan karier yang sangat mengesankan. Apa yang saya lakukan salah?

Saya telah mendengar berkali-kali dari orang yang berbeda: ketika majikan mewawancarai Anda, Anda juga harus mewawancarainya. Pendekatan ini tampaknya tepat bagi saya, tetapi bukan karena Anda harus pilih-pilih ketika memilih perusahaan yang kami ingin menjadi bagian dari - mereka semua sama pada tahap awal, hanya nama, pasar, dan anggaran yang berbeda. Kita harus "mewawancarai mereka untuk bagian kita" untuk menunjukkan bahwa kita sangat tertarik pada mereka. Ini seperti mengenal seorang gadis2: Anda perlu bertanya dan berpura-pura tertarik pada jiwanya, dan bukan hanya tubuhnya.

Pada awalnya, setiap perusahaan, tim, atau proyek baru adalah sebuah misteri. Tidak masalah berapa banyak pertanyaan yang Anda tanyakan tentang proses DevOps mereka, prinsip-prinsip manajemen dan analisis statis, karena jawaban apa pun bisa bohong, penemuan mereka atau mungkin tidak bekerja sama sekali seperti yang mereka bayangkan. Saya tidak pernah mendengarkan apa yang mereka katakan pada wawancara pertama. Inilah yang saya perhatikan: 1) uang yang mereka bayarkan untuk saya; 2) ukuran tim; 3) posisi yang akan saya tawarkan.

Pertanyaan tentang uang sudah jelas: semakin tinggi gajinya, semakin baik. Bukan hanya karena saya serakah dan lebih suka Mercedes-Benz daripada Chevrolet, tetapi juga karena pembiayaan yang baik berarti bahwa proyek ini berharga dan menarik. Pertimbangkan ini dari sudut pandang pasar: jika mereka dapat membayar lebih dari yang lain, mereka punya uang dari suatu tempat.

Gaji adalah indikator eksplisit utama tentang pentingnya kontribusi Anda kepada pasar.

Mungkin mereka berhasil menarik investor besar (yang berarti mereka percaya pada ide-ide mereka); mungkin mereka sudah mendapatkan penghasilan yang layak (karena itu konsumen menilai mereka lebih dari pesaing mereka). Atau mungkin pendiri mewarisi beberapa juta dan menginvestasikannya dalam startup gila (yang berarti bahwa bukannya disia-siakan di Vegas, dolar ini menghangatkan pasar melalui bisnis yang saya undang untuk berpartisipasi).

Bagaimanapun, uang adalah indikator pentingnya bisnis ini di pasar. Semakin banyak uang, semakin besar permintaan pasar untuk proyek ini. Ketika proyek yang sedang Anda kerjakan kehabisan uang, saatnya untuk beralih ke yang lain, yang lebih penting bagi pasar. Pendekatan ini mungkin terlihat tidak loyal, tetapi masih benar jika Anda peduli dengan pelanggan Anda, dan bukan tentang bos yang memotong gaji mereka setiap beberapa minggu.

Memilih proyek yang membayar lebih sedikit dan yang “terlihat lebih menarik” sama-sama tidak adil dan tidak logis. Tidak tergantung pada programmer untuk memutuskan seberapa menarik dan berharganya ini. Keputusan semacam itu harus dibuat oleh pasar, diwakili oleh pelanggan atau investor pelarut. Dan mereka menyampaikan kepada kami keputusan yang dibuat dengan bantuan gaji kami. Ketika gaji naik, pasar senang dengan apa yang kami lakukan untuk itu. Ketika gaji turun - inilah saatnya untuk mengajukan pertanyaan: mengapa Anda masih melakukan pekerjaan ini untuk pasar, jika pasar tidak lagi menghargainya?

Indikator penting kedua bagi saya adalah ukuran perusahaan. Terlalu kecil dan terlalu besar tidak baik. Ketika perusahaan terlalu kecil, spesialis teknis dipaksa untuk menggabungkan banyak tanggung jawab, melakukan pekerjaan yang beragam: menulis kode, mengkonfigurasi server, menyiapkan presentasi untuk investor, dan bahkan mengatur furnitur dan memperbaiki mesin kopi. Dari sudut pandang karir, ini adalah degradasi dan risiko membuang-buang waktu. Akibatnya, Anda harus melakukan banyak pekerjaan yang tidak terkait dengan posisi langsung, hanya untuk membantu tim bertahan.

Perusahaan besar terlalu politis, perusahaan kecil terlalu kacau.

Dan peluang untuk bertahan hidup perusahaan kecil agak kecil (seperti statistik katakan). Saya lebih suka menjauh dari proyek yang mempekerjakan kurang dari 20 teknisi.

Di sisi lain, semua perusahaan besar memiliki masalah yang berbeda: politik. Orang-orang tidak bekerja di sana - mereka saling bertarung. Saya akan bertahan di level bawah hierarki perusahaan, memegang gelar "pengembang senior" dan mendapatkan mug setahun sekali pada hari ulang tahun saya, atau saya akan menjadi ahli intrik dalam kelompok cretin tertentu. Tidak ada opsi yang menarik saya. Jadi saya tidak ingin pergi ke perusahaan yang mempekerjakan lebih dari seribu orang.

Faktor ketiga yang saya perhatikan adalah posisi yang ditawarkan kepada saya. Saya mengacu pada posisi aktual dalam hierarki. Semua perusahaan dicirikan oleh hierarki karyawan, tidak peduli apa yang dikatakan penganut holacracy. Selalu ada atasan, maka ada orang yang menurutinya (turun ke level terendah). Tetap berada di level bawah yang selalu saya coba hindari. Bukan hanya karena saya memiliki harga diri, tetapi juga karena saya malas. Semakin rendah Anda dalam hierarki, semakin banyak pekerjaan yang harus Anda lakukan dan semakin sedikit uang yang Anda dapatkan. Pembagian kerja dalam aksi (dan tidak hanya di bidang perangkat lunak).

Oleh karena itu, semakin rendah posisi yang diusulkan dan semakin teknis, semakin banyak kesulitan akan: saya harus bekerja untuk seseorang, bukan untuk diri saya sendiri. Inilah tepatnya yang saya benci lakukan. Saya siap bekerja keras ketika saya tahu bahwa hasilnya akan menjadi milik saya. Tetapi dalam tim pengembangan dengan lapisan manajerial yang tebal, level yang lebih rendah menciptakan pendapatan yang dikonsumsi oleh level yang lebih tinggi. Jadi apa gunanya tinggal di bawah?

Pernahkah Anda mendengar tentang percobaan yang dilakukan Didier Desor dan rekan-rekannya di Universitas Nancy? 2 Mereka mengambil sepuluh sel identik, masing-masing menanam lima atau enam tikus jantan. Untuk mendapatkan makanan, tikus harus melalui lubang kecil, berenang melalui akuarium ke bak makanan, mengambil beberapa makanan dan berenang kembali untuk memakannya (mustahil untuk makan langsung dari bak). Pada akhir percobaan, di semua kandang, tikus dibagi menjadi dua kelompok - mangsa dan non-mangsa. Para penambang berenang mencari makanan, dan para penambang mencuri makanan ini dari mereka.

Apa yang diajarkan kisah ini kepada kita? Bahwa Anda bekerja atau mencuri. Tikus tidak tahu tentang sepuluh perintah. Mereka tidak tahu bahwa pencurian itu dosa. Tampaknya alam tidak menentang pencurian (baginya, ini adalah distribusi peran yang wajar). Dengan cara yang sama, bagi sebagian orang, bekerja adalah kegiatan yang disukai. Bagi yang lain, pencurian lebih umum.

Kita, tentu saja, bukan tikus, dan perilaku kita jauh lebih rumit, tetapi prinsip umumnya sama: kita bekerja atau menetapkan hasil dari pekerjaan orang lain. Hirarki kontrol diciptakan untuk mengendalikan proses ini dan untuk menghindari pertempuran konstan (seperti antara tikus dalam kandang). Kami tidak lagi berkelahi dengan bos kami, kami hanya memberi mereka manfaat yang kami hasilkan, percaya pada keadilan. Tentu saja, mereka sendiri juga menghasilkan sesuatu, tetapi manfaat yang mereka bawa jelas lebih sedikit, dan gajinya lebih tinggi.

Semakin tinggi Anda berada dalam hierarki, semakin sedikit yang perlu Anda lakukan secara spesifik dan semakin banyak orang lain yang dikreditkan kepada Anda.

Berdasarkan hal ini, posisi paling nyaman bagi saya dalam sistem modern “penambang dan penambang” adalah terlihat seperti penambang, tetapi menerima pembayaran sebagai penambang. Dengan kata lain, agar terlihat seperti insinyur perangkat lunak yang bekerja keras, pada kenyataannya, tidak melakukan apa-apa.

Sebagian besar tim di bidang pengembangan perangkat lunak tidak mampu membuat programmer memberikan yang terbaik. Manual, terutama pada level tertinggi, tidak memahami perbedaan antara Java dan JavaScript. Di sisi lain, pada level yang lebih rendah, lebih sulit untuk membodohi bos dengan berpura-pura menjadi menulis kode, tetapi sebenarnya memposting posting Facebook baru pada waktu itu. Itu sebabnya semakin tinggi posisi saya, semakin baik. Tidak ada yang akan mengerti apa yang sebenarnya saya lakukan, sehingga saya bisa melakukan apa yang saya inginkan. Saya berpartisipasi dalam proyek-proyek di mana saya dibayar, tetapi saya lebih suka melakukannya ketika saya inginkan dan ketika itu benar-benar diperlukan. Tidak jam sembilan pagi.

»Informasi lebih lanjut tentang buku ini dapat ditemukan di situs web penerbit
» Isi
» Kutipan

Untuk diskon 25% Khabrozhiteley pada kupon - Kode kami

Source: https://habr.com/ru/post/id451576/


All Articles