Bagaimana saya membawa Ruby ke DomClick





Pada akhir 2017, saya dengan tegas memutuskan bahwa saya ingin pindah ke pekerjaan manajerial.



Pemrograman itu sendiri menarik minat saya jauh lebih sedikit daripada apa yang terjadi di tingkat yang lebih tinggi, yaitu memikirkan proses bisnis, merencanakan arsitektur aplikasi, dan mengatur pekerjaan.



Saya merasa kurang seperti seorang tukang kebun yang mengolah sepetak kecil tanah hari demi hari, menyaksikan kecambah muncul di tanah, sebagai petani yang harus memanen dan kemudian menjual hasil panen dari ladang raksasa seukuran negara Eropa.



Skala dan efisiensi menginspirasi saya.



Saya ingin melakukan apa yang saya suka, tetapi itu tidak mungkin sampai saya menjadi seorang pemimpin.



Sementara itu, karir saya dalam pekerjaan saya saat ini jelas mencapai puncaknya. Selama dua tahun, saya mengangkat beberapa proyek, menjadi pengembang senior ... Lebih jauh di sini, kemajuan hanya mungkin dalam bermain sepak bola meja.



Karena itu, ketika saya ditawari pekerjaan di Sberbank, saya senang untuk pergi. Khususnya - di DomClick.



DomClick



Ketika saya melewati ambang kantor baru, saya menemukan diri saya dalam posisi unik: ternyata saya akan menjadi satu-satunya pengembang Ruby di perusahaan.



Dalam tim yang terdiri dari tiga ratus karyawan, tidak ada departemen yang sesuai secara fisik. Tidak ada tempat untuk menempatkan saya. Ketika pertanyaan ini muncul, direktur TI perusahaan berpikir tepat dua detik dan menunjuk ke meja terdekat, yang kosong karena alasan yang jelas. Sangat menginspirasi ketika manajemen dapat melihat layar laptop Anda dengan sedikit memelintir kepala mereka (tidak).



Saya dibutuhkan untuk tugas tertentu. Manajemen sedang memutuskan apakah akan membeli startup perbankan Amerika untuk melengkapi lini produk DomClick. Biayanya direncanakan besar, jadi perlu untuk beradaptasi dan meluncurkan proyek untuk menunjukkan kepada orang-orang yang akan mengeluarkan uang ini dari kantong mereka.



Startupnya di Ruby, jadi saya dibutuhkan. Itu adalah kesempatan. Jika mereka membelinya, lebih banyak rubis akan dibutuhkan. dan dengan kemungkinan besar saya akan menjadi bos mereka. Larva Alien kecil terjebak dalam organisme raksasa DomClick. Saya suka berpikir seperti itu, membayangkan bahwa mulai saat ini pengambilalihan saya atas alam semesta ini dimulai.



Namun dua bulan kemudian, ternyata pemain biola sudah tidak dibutuhkan lagi di tempat baru. Atasan melihat proyek yang sedang saya kerjakan dan memutuskan untuk menunggu.



Rubist tidak cocok di sini



Saya mendapati diri saya tidak bekerja, seorang programmer Ruby dikelilingi oleh lusinan tim javist, pythonist, dan pengembang frontend yang terkoordinasi dengan baik. Tidak direncanakan untuk merekrut rubis lain.



Untungnya, manajemen saya secara umum menyukai cara saya melakukan pekerjaan itu, jadi tidak ada pertanyaan tentang pemecatan. Mereka juga tidak tahu harus berbuat apa dengan saya. “Jalan-jalan dulu, pikirkan bagaimana Anda bisa berguna bagi perusahaan. Mungkin Anda bisa mencoba beberapa kode Go? " - Ketua memberitahuku. Saya sangat tidak perlu sehingga pada titik tertentu itu berhenti terasa seperti ide yang buruk. Untuk membayangkan keputusasaan situasi saya, Anda perlu memahami apa yang terjadi di perusahaan saat itu dan apa itu DomClick secara umum.



Jika dalam 5 tahun terakhir Anda telah membeli / menjual real estate, maka dengan probabilitas yang tinggi Anda harus mengetahui tentang situs ini. Khususnya, karena dia, NTV tidak lagi membuat serial tentang makelar berdarah dan kami tidak mendengar cerita mengerikan tentang bagaimana seseorang diculik / disiksa / dibunuh ketika dia memutuskan untuk menukar potongan kopeck neneknya di tengah. DomClick menawarkan kepada pasar cara yang nyaman dan aman untuk membeli / menjual perumahan.



Proyek ini masih muda, tetapi pada saat itu semua orang mengerti bahwa mereka hadir pada malam yang sangat megah. Situs web raksasa lahir dengan lusinan layanan yang akan digunakan di seluruh negeri dan sekitarnya. Diperlukan jutaan baris kode, yang berarti banyak programmer dapat memberi makan keluarga mereka selama bertahun-tahun, membeli voucher untuk ibu mertua di sanatorium, dan segel untuk istri.





Tetapi pertama-tama perlu untuk memutuskan layanan apa yang akan ditulis. Sayangnya bagi saya, diskusi ditutup pada saat saya tiba - piala dibagikan oleh pengembang di Java dan Python. Javist terutama terlibat dalam layanan internal dan dimuat, integrasi dengan bank, dan pythonist mendapat lebih banyak tugas berorientasi klien dan peluncuran baru. Masing-masing dari mereka bersiap untuk membeli apartemen dan satu blok saham Tesla dalam 5 tahun ke depan, pergi ke Ba̒li dan temukan seorang gadis model.



Untuk menyamakan antara mereka dengan beberapa teknologi lain tidak realistis.



Biasanya, kelahiran proyek baru terjadi dengan cara ini: bisnis punya ide, mereka pergi ke direktur TI, dan dia sudah memilih tim programmer yang kosong untuk proyek tersebut, atau merekrut yang baru.



Apa yang dapat dilakukan seorang Rubyist dalam situasi seperti ini? Bisakah saya mengangkat tangan dan berkata, "Tapi Ruby sudah memiliki permata yang siap untuk semua ini"? Ini akan menjadi kasus yang hilang sama sekali karena tiga alasan:



  1. Semua orang mengira bahwa Ruby tidak diperlukan. Python dan Java sudah cukup untuk dipandang mata.
  2. Selain fakta bahwa Ruby tidak diperlukan, itu juga hanya bahasa pemrograman yang buruk. Sama sekali tidak menggosok.
  3. Alasan ketiga, mungkin yang paling serius: Saya satu-satunya programmer Ruby di perusahaan, yang berarti saya tidak akan mengerjakan sesuatu yang lebih atau kurang serius.


Secara umum, dengan satu atau lain cara, tetapi ada konsensus di perusahaan: tidak ada tempat untuk Rubyist. Penampilan saya tidak disengaja, mengonfirmasi aturan - saya sangat disarankan untuk mulai membuat kode pada hal lain.



Tetapi seseorang yang telah mempelajari kekuatan rel tidak dapat dihentikan dengan mudah.







Rubi



Meskipun status quo "Ruby itu buruk", semua orang tahu tentang kekuatannya - kecepatan pengembangannya. Saya memutuskan untuk memanfaatkan ini dan menyarankan kepada atasan untuk membuat prototipe layanan yang rencananya akan diluncurkan. Semacam seperti "biarkan saya cepat menulis contoh startup Anda, dan kemudian akan menjadi jelas dengan pasti apakah layak untuk menulis ulang dalam bahasa" normal "atau, lebih baik, hanya untuk memo".



Ide itu dihargai dan diberkati. Ini adalah kesempatan kedua saya. Burung biru keberuntungan praktis beterbangan di tangan saya saat saya merasa seperti kalah dalam perlombaan. Setelah MVP kecil, bisnis memberi saya fungsionalitas yang ingin saya lihat di versi uji coba CRM, dan itu adalah pekerjaan yang sangat banyak, terlepas dari kecepatan peluncuran awal. Dengan kekuatan saya sendiri, bahkan dibebankan dengan keengganan untuk menyeberang ke pythonist, tidak mungkin untuk membuat penyelidikan yang diperlukan di masa mendatang.



Aku duduk di depan laptopku dan menyaksikan dengan muram saat aku semakin larut. Seiring dengan harapan terakhir untuk tetap menjadi rubyist, ambisi karier juga hilang: satu Monster Pasta tahu berapa lama waktu yang dibutuhkan untuk mencapai kompetensi yang diperlukan dalam bahasa baru untuk meneriakkan namanya lagi dalam pemilihan Kraken baru dalam bahasa baru.



Ini belum termasuk fakta bahwa mengubah bahasa, misalnya, dengan Python, saya otomatis mendapatkan 150 lebih saingan yang layak untuk promosi.



Itu jalan buntu.



Tugas itu dihapus dari saya dan kembali ke pikiran cemas tentang masa depan saya. Saya menonton pertarungan Versus, mendengarkan musik yang menyedihkan dan meminum Dr. Pepper. Ternyata, karena gula yang melimpah, pemecahannya muncul dengan cukup cepat.



Saya belajar pelajaran dari kegagalan terakhir: Anda tidak bisa menggigit bagian yang tidak bisa Anda kunyah. Orang-orang melihat bagaimana Anda dibuat bodoh dan ingat. Satu atau dua upaya seperti itu lagi, dan mereka akan mengakhiri saya di sini, memutuskan bahwa saya gagal.



Sekarang kita membutuhkan tugas yang akan saya ketahui dengan pasti bahwa tidak ada kesalahan kebakaran yang akan terjadi. Cukup besar untuk menjadi mengesankan, tetapi cukup kecil untuk dapat saya jangkau. Tetapi di mana saya bisa mendapatkannya dan bagaimana saya bisa menugaskannya?



Cara termudah untuk menemukan tugas semacam itu adalah dalam kerangka proyek yang sudah dikembangkan. Rencananya adalah berpura-pura menjadi pengembang Java.



Pengacau



Para Javist melakukannya dengan baik. Pada awalnya, bagi saya sepertinya saya masuk ke tim pembuat kode sejati, bekerja dengan pola dan antarmuka yang jelas. Belum pernah saya merasa begitu seperti seorang programmer seperti yang saya lakukan beberapa minggu itu.



Karena pengetahuan dangkal saya tentang hampir semua bahasa web populer, saya dengan cepat beradaptasi dan mulai berguna. Pekerjaan sedang berlangsung. Proyek tersebut bahkan diluncurkan di beberapa wilayah untuk mulai menangkap bug. Masalahnya, gerakan itu sangat tidak tergesa-gesa, padahal kami berlima. Saya membuat diskon pada fakta bahwa seharusnya demikian, karena ini adalah perusahaan, Anda perlu memahami, tetapi dengan cepat menjadi jelas bahwa semuanya jauh lebih serius.



Tim tersebut mengalami konflik tajam dengan pemilik produk. Mereka mengumpat, hampir tanpa memilih ekspresi.



Baris kode pertama ditulis satu setengah tahun yang lalu, tetapi proyek tersebut masih belum benar-benar berfungsi. Ide bisnis yang bagus mengalami masalah yang tidak dapat dijelaskan selama fase implementasi. Keluhan utama PO, yang bertindak sebagai perantara antara bisnis dan pemrogram, adalah ketidakmungkinan membuat perubahan cepat. Ketika dimintai revisi, dia mendengar: "Bulan, bulan, bulan." Dan diperlukan banyak pengeditan. Sistemnya sangat tidak nyaman sehingga satu operator dapat memproses maksimal satu atau dua permintaan per hari. Fungsinya tampaknya berfungsi, tetapi ada begitu banyak bug sehingga dengan meluncurkannya di seluruh negeri, seseorang dapat tenggelam dalam keluhan. Beberapa operasi dilakukan hanya dengan panggilan ke programmer, yang secara manual mengubah data dalam database atau menyuarakan informasi yang diperlukan. Antarmuka pengguna bengkok. Tidak ada pertanyaan tentang otomatisasi apa pun.



Dan di tengah semua masalah ini, programmer berhasil menemukan sepeda seperti analog tabel yang ditulis sendiri atau layanan milis. Perbaikan sekecil apa pun mengarah pada fakta bahwa sesuatu di suatu tempat pasti jatuh. Setiap tenggat waktu yang mungkin telah lama disia-siakan.



Dan tahukah Anda bagaimana programmer menjelaskan kepada diri mereka sendiri apa yang terjadi? "PO itu bodoh dan semua sarannya tidak berarti apa-apa."



Tampak bagi saya bahwa intinya bukan pada PO, tetapi pada kode. Ketika tugas mendesak berikutnya tiba, saya menyadari bahwa sudah waktunya untuk merobek topeng. Untuk itu perlu dibuat suatu sistem kuisioner, sesuai dengan hasil bagian dokumen yang sudah jadi akan dibentuk. Para programmer dari tim baru saya, setelah berkonsultasi, menyuarakan PO bahwa mereka akan melakukan yang diperlukan dalam tiga bulan dengan upaya dua pengembang.



Tiga bulan dan dua programmer!



Sofa di bawah PO sedang berasap. Dia menjadi hijau, tetapi, diajarkan oleh pengalaman pahit, diam, tahu bahwa tidak ada gunanya bertanya, memohon atau mengeluh. Prospek pemecatan tampak di depan. Tapi furnitur tidak hanya berasap di bawahnya. Saya tahu pasti bahwa fungsionalitas yang baru saja saya umumkan akan muncul di Ruby hanya dengan satu klik.



"Aku akan menulis ini dalam seminggu," aku bergerak. - Dan saya masih punya waktu untuk meninjau semua pertempuran dengan Oksimiron.



Tugas itu persis seperti yang saya tunggu-tunggu untuk masuk ke dalam permainan singgasana ini.



PO tidak percaya. Tim juga. Di alam semesta mereka, unit waktu minimum adalah sebulan, tetapi tenggat waktu benar-benar terbakar, jadi setelah penyelesaian singkat formalitas, satu minggu diberikan kepada saya.



Seperti yang mungkin Anda ketahui, Ruby sangat cocok untuk pengembangan kecepatan. Saya akan memelintir hati saya jika saya mengatakan bahwa saya sedang berusaha keras atau dengan cara apa pun khawatir tentang kesempatan ketiga saya. Permata yang memecahkan masalah saya disempurnakan di Ruby dan bekerja seperti jarum jam.



Setelah seminggu, saya menunjukkan hasilnya.



- Mengapa kita tidak melakukan semuanya di Ruby? Pemilik produk bertanya. Sejujurnya, saya masih belum tahu jawabannya.



Kami melakukan percakapan jujur ​​hari itu. Ostap menderita, dan dia mengungkapkan kepadaku keadaan sebenarnya. Proyek itu berubah menjadi konstruksi jangka panjang yang mengerikan. Bos PO langsung sudah secara langsung mengisyaratkan pemecatannya. Dia berhenti tidur. Saya bersimpati dengannya dan memintanya untuk menjelaskan semua logika yang harus dijalankan aplikasi tersebut. Pada saat dia selesai, menjadi jelas bagi saya bahwa dengan dua rekan saya akan menulis ulang seluruh proyek dalam tiga bulan.



Pemrogram proyek bukanlah orang jahat atau penyabot. Mereka benar-benar mencoba. Hanya saja alat mereka tidak cocok untuk tugas tersebut. Mereka menggali lubang pondasi dengan sendok. Tapi saya punya buldoser.



Kesempatan keempat



Ketika PO dan saya datang ke CIO, dia sepertinya sudah mulai mengerti bahwa tidak berhasil untuk membaptis saya lagi, dan dia dengan penasaran mengharapkan apa yang saya pikirkan kali ini.



Saya menyarankan untuk menulis ulang proyek tersebut. Dalam tiga bulan dengan dua asisten, saya akan sepenuhnya mengulangi fungsionalitas yang telah dilakukan 5 programmer dalam satu setengah tahun, dan saya juga membuang chip di atasnya. Pada gilirannya, RO menegaskan bahwa ini perlu: kode proyek mulai menjalani hidupnya sendiri, praktis tidak bereaksi terhadap upaya untuk membuat perubahan dan, tampaknya, akan segera mulai menuntut pengorbanan manusia dalam bentuk perawan.



Diputuskan bahwa keputusan akhir tentang masalah ini akan dibuat pada komite arsitektur berikutnya - pertemuan khusus di mana direktur berkumpul dengan arsitek dan menyetujui beberapa jenis proses.



Seperti yang Anda duga, fakta bahwa Anda membaca baris-baris ini menunjukkan bahwa saya diizinkan untuk menulis ulang proyek tersebut. Dengan suara mayoritas minimal, Panitia Agung memberikan lampu hijau untuk petualangan ini. Antara lain, saya diizinkan merekrut dua orang rubyist sebagai asisten.



Saya akhirnya menjadi pemimpin.





Seperti yang saya pahami, peran penting dalam persetujuan inisiatif saya dimainkan oleh fakta bahwa manajemen mulai menyadari bahwa beberapa tim pemrograman perusahaan bersikap santai dan terlalu percaya diri di masa depan.



Mereka membutuhkan cambuk, ancaman, untuk memotivasi mereka agar bekerja lebih baik. Kata yang baik dan senjata bisa mencapai lebih dari sekedar kata baik, seperti yang biasa dikatakan Al Capone.



Dan saya taruh pistol ini di tangan mereka.



Sambil memberikan izin untuk menulis ulang proyek tersebut, para bos tampaknya berkata kepada programmer perusahaan: "Jika Anda gagal, kami akan menelepon orang ini dan mereka akan menulis ulang Anda."



Tapi pertama-tama, saya tidak boleh gagal, yang menjadi kesempatan keempat saya. Ketika saya kembali dari pertemuan, itu adalah perusahaan yang sama sekali berbeda. Sekarang mereka membenciku. Konflik saya dengan ekosistem perangkat lunak DomClick, yang dimulai dari awal, mencapai klimaksnya. Mereka tidak berbicara dengan saya, tidak duduk di meja yang sama di ruang makan. Begitu saya memasuki ruangan, semua yang hadir mulai memeriksa saya. Mereka berbisik di belakangku. Saya menemukan diri saya dalam isolasi total.



Sejujurnya, reaksi seperti itu memberi saya kekuatan. Hidup dipenuhi dengan makna ketika Anda merasa seperti tangan Tuhan yang ditebas. Saya memutuskan bahwa saya akan menjadi pistol yang sangat bagus.



Secara harfiah malam itu, saya menelepon seorang teman lama yang sedang coding di Ruby, dan saya yakin dengan profesionalismenya. Dia setuju untuk bergabung tanpa basa-basi. Beberapa minggu kemudian, pengembang kedua datang dan ternyata adalah orang yang sangat tangguh yang sangat memperkuat detasemen kecil kami.



Organisme pemrograman perusahaan menolak kami. Mereka tidak berkomunikasi dengan kami. Semua orang menunggu kegagalan kami. Dan secara paradoks, hal itu menyatukan kami dan membuat kami tumbuh.



Fitur Ruby adalah kecepatan pengembangannya yang tinggi. Untuk beberapa alasan, diyakini bahwa ini mengorbankan kualitas. Mereka mengatakan bahwa proyek yang dijalankan dengan sempurna di Ruby akan lebih buruk daripada proyek ideal dalam bahasa lain.



Tapi di mana Anda pernah melihat desain yang ideal?



Pengembang hampir selalu tidak punya cukup waktu untuk menulis kode berkualitas tinggi, benar-benar mengikuti pola, melakukan segala sesuatu seperti di buku teks. Akibatnya, kode paling ideal ini, yang sangat mengancam semua orang, tidak pernah muncul.



Tetapi Ruby, karena kecepatannya, memungkinkan Anda mendapatkan waktu tambahan yang sama yang dapat dihabiskan untuk memikirkan tentang arsitektur dan mencari abstraksi yang lebih baik. Kode yang dihasilkan, secara paradoks, ternyata juga memiliki kualitas tertinggi.



Saat kami meluncurkan versi baru proyek tiga bulan kemudian, selain bug minor, itu bekerja dengan sempurna. Pengguna akhir proyek - pengacara Domclick - awalnya tidak senang, karena antarmuka pengguna telah berubah, tetapi setelah beberapa minggu suara mereka mereda. Proyek itu bekerja seperti jam. Itu segera dikerahkan ke seluruh Rusia.



RO senang. Tim proyek lama dibubarkan.



Saya diizinkan untuk merekrut dua programmer lagi.







Peleton rentetan kecilku berubah menjadi kompi penuh. Mereka membenci kami, tetapi tidak ada yang bisa mereka lakukan.



Orang-orang saya merasakan kekhasan posisi mereka. Mereka bergegas, dan mereka berhasil. Ada perasaan mengalir - keadaan konsentrasi maksimum dan kesiapan untuk bertindak. Kami dapat menulis ulang semua orang di sini dengan cepat dan efisien.



Ini memacu seluruh kompi.



Selain rasa takut ditimpa, ada pula rasa persaingan yang sehat. Jika para pendatang baru ini dapat bekerja dengan cepat dan efisien, lalu mengapa kita lebih buruk? Kami akan membela perusahaan kami sendiri! Mari kita lemparkan para pemula ini kembali ke dunia bawah dari mana mereka berasal!



Sebagian dari tim mengangkat sarung tangan yang terlempar, dan ini menguntungkan seluruh perusahaan. Bahkan, tim terbagi menjadi saudara dan lachers.



Para bruder melewatkan pola, selalu siap membantu, memikirkan tentang keuntungan perusahaan dan keberhasilan proyek mereka. Lachers bermain untuk waktu, tidak mengakui kesalahan, tidak ingin belajar kembali dan bernegosiasi. Anda melakukannya dengan jelas - saudara. Anda bodoh, Anda meletakkan jari-jari di roda, Anda menyakiti, Anda ingin mendapatkan banyak, tetapi melakukan sedikit adalah lacher.



Kami melakukan pekerjaan dengan baik dan memasang spanduk Ruby di atas DomClick yang ditaklukkan ketika bos terakhir dari cerita ini muncul pada saya.



Pada salah satu pertemuan di kantor tinggi, setelah cerita panjang tentang proyek baru, seorang pria yang sangat cerdas bertanya dengan suara rendah: "Tunjukkan ini pada hari Senin."



Dan tidak ada yang bisa ditampilkan. Itu hari Jumat malam. Ketika saya dipanggil ke ruang pertemuan, wajah tegang duduk dan memegangi kepala mereka dengan tangan, memikirkan apa yang harus dilakukan. Jangka waktu minimum bagi yang lain untuk siap menyelesaikan proyek itu “tidak kurang dari dua minggu,” tapi tiga hari. Saya setuju.



Seluruh kompi sedang menunggu bagaimana itu akan berakhir. Karyawan biasa dengan rasa ingin tahu, bos dengan perasaan akan bencana yang akan datang. Dan ketika matahari terbit pada hari Senin, tidak ada yang harus menulis surat pengunduran diri, menembak diri sendiri atau melarikan diri melintasi perbatasan negara bagian.



Semuanya bekerja dalam produksi. Tombol-tombolnya ditekan, halaman-halamannya disegarkan, dan semua orang senang. Dan di suatu tempat di Moskow, tiga programmer yang tidak bercukur tertidur seperti mati.



Ketika saya mengangkat telepon di malam hari, saya diberi tahu tiga kata utama dalam hidup saya: "Pekerjakan lebih banyak programmer."



Saat ini, departemen Rubyist terdiri dari sekitar 20 orang, 6+ proyek dengan kompleksitas yang berbeda-beda, dan kami terus berkembang.



Dan sekarang moral dari cerita tersebut.



Suatu ketika, pada salah satu pertemuan triwulanan, sebuah pertanyaan diajukan kepada pemimpin tetap kami: "Bagaimana saya bisa menjadi seorang pemimpin?", Yang mana kutipannya diberikan: "mereka tidak memberi kekuasaan - mereka mengambil alih kekuasaan." Jadilah efektif, berusahalah untuk sukses, dan jika Anda benar-benar ingin menjadi lebih baik setiap hari, Anda akan berhasil.



Secara umum, hidup ini terlalu singkat untuk menulis kode yang panjang. Gunakan permata, teman!



PS Juga berikut adalah video dengan penampilan kami, dari mana Anda dapat memahami apa yang memungkinkan kami menjadi cepat dan efisien:








All Articles