Diposting oleh Salvatore Sanfilippo, Pengembang dan Pemelihara Mesin Redis Database GratisBeberapa bulan yang lalu, saya ditulis oleh pengelola proyek sumber terbuka satu sistem dengan komunitas yang agak besar dan aktif. Dia menulis bahwa selama bertahun-tahun dia telah berjuang untuk mendukung proyeknya, tetapi sedang mengalami tekanan psikologis yang serius. Saya meminta saran. Saya menjawab bahwa saya hampir tidak dapat memberikan saran, tetapi saya berjanji untuk menulis posting blog tentang apa yang saya pikirkan tentang ini.
Beberapa minggu berlalu, saya mulai menulis posting ini beberapa kali dan berhenti karena saya tidak punya waktu untuk memikirkannya dengan seksama. Sekarang, tampaknya, saya telah menyelesaikan analisis diri tentang kelemahan, kesulitan, dan keinginan saya akan kebebasan. Perasaan-perasaan ini mau tidak mau merangkul pikiran manusia ketika berkonsentrasi pada beberapa tugas, dan aspek negatif memanifestasikan dirinya untuk waktu yang lama. Tentu saja, mendukung proyek Open Source juga membawa banyak kegembiraan dan kesenangan. Sepuluh tahun terakhir kehidupan profesional saya tentu akan diingat untuk waktu yang lama. Ini adalah tahun-tahun yang baik, meskipun bukan yang terbaik (bahkan lebih menyenangkan selama peluncuran). Tapi di sini saya akan fokus pada sisi negatifnya. Perlu diingat bahwa ada poin positif.
Longsoran permintaan
Saya tidak percaya pada "tindakan cepat", "berpikir cepat", "kemenangan seiring waktu" dan sejenisnya. Saya tidak suka dunia yang dangkal dengan kurangnya konsentrasi dan perhatian di mana kita hidup karena jejaring sosial, ruang obrolan, email, dan jadwal yang penuh dengan acara. Pada tahun-tahun awal Redis, saya masih punya banyak waktu. Ketika surat itu tiba, saya bisa dengan tenang berkonsentrasi pada apa yang penulis coba katakan. Saya dapat mengingat bagian yang relevan dari kode Redis dan, setelah mempertimbangkan masalah ini dengan hati-hati, akhirnya mengungkapkan pikiran saya yang sebenarnya. Saya percaya ini adalah cara kebanyakan orang harus bekerja, tidak peduli apa pekerjaan mereka.
Ketika proyek perangkat lunak mencapai popularitas, seperti Redis, dan komunikasi antara orang-orang sangat disederhanakan seperti dalam alat sosial modern, maka semuanya berubah. Pengguna memperlakukan Anda sebagai entitas mati, dan jumlah pesan, pertanyaan, permintaan, saran tumbuh secara eksponensial. Tetapi pada saat yang sama di komunitas Redis (walaupun bagi saya ini adalah masalah umum), jumlah orang yang mampu menjawab pertanyaan-pertanyaan ini berkembang sangat lambat. Kemacetan jelas dibuat. Kebanyakan orang terlalu pragmatis tentang masalah ini. Kami menutup tiket jika starter teratas belum menjawab pertanyaan kami dalam waktu dua minggu. Tutup semua tiket dengan kata-kata yang tidak jelas. Dan opsi lain untuk pembersihan aliran secara mekanis. Tetapi kenyataannya adalah bahwa dibutuhkan waktu untuk memproses ulasan dengan baik. Kalau tidak, Anda hanya berpura-pura bahwa proyek ini memiliki beberapa tiket terbuka. Akan menyenangkan jika memiliki banyak sumber daya untuk merekrut tenaga ahli penuh waktu yang dibayar untuk mendukung setiap subsistem Redis selama sehari penuh, tetapi pada kenyataannya ini tidak layak.
Jadi apa yang sedang terjadi? Anda mulai memprioritaskan lebih banyak: apa yang harus dipertimbangkan dan apa yang tidak. Dan Anda merasa seperti omong kosong, mengabaikan begitu banyak pertanyaan dan begitu banyak orang, dan kontributor percaya bahwa Anda tidak peduli dengan pekerjaan mereka. Ini adalah situasi yang sulit. Biasanya, pada akhirnya, hanya masalah kritis yang dipecahkan pada akhirnya. Semuanya baru diabaikan, karena fungsi-fungsi baru belum menjadi dasar, dan siapa yang ingin meningkatkan basis kode, bahkan mendapatkan lebih banyak permintaan dan masalah tarikan? Anda mungkin mulai menulis kode yang lebih membingungkan daripada biasanya. Semakin membingungkan kode, semakin sulit melacak penyebab utama jika terjadi kesalahan kritis.
Perubahan peran
Karena longsoran permintaan yang dijelaskan di atas, pekerjaan Anda juga tiba-tiba berubah. Redis menjadi populer karena saya agak tahu cara mendesain dan menulis kode. Dan sekarang, sebagai gantinya, saya terutama berurusan dengan pemecahan masalah dan menarik permintaan. Dan terus-menerus tampaknya saya sendiri yang akan menulis kode yang lebih baik daripada permintaan tarik ini. Walaupun terkadang kodenya lebih baik daripada yang bisa saya lakukan sendiri, karena ada programmer yang lebih baik di komunitas Redis. Tetapi
kebanyakan hanya ditulis untuk memecahkan satu masalah spesifik. Sementara saya selalu mewakili sistem secara keseluruhan, karena saya telah mengerjakannya selama bertahun-tahun. Tetapi tidak ada lagi waktu untuk melakukan ini. Dengan demikian, fungsi-fungsi baru yang besar kurang terintegrasi secara organik ke dalam kode utama. Apa yang harus dilakukan? Kadang-kadang saya hanya menghabiskan beberapa minggu untuk tiket dan menarik permintaan karena saya membuat kode atau desain: ini adalah pekerjaan yang sangat saya sukai dan nikmati. Tetapi ini, pada gilirannya, meningkatkan tekanan psikologis, karena saya mengabaikan semua orang.
Untuk melakukan apa yang saya sukai dan tahu bagaimana melakukannya dengan baik, Anda harus merasa seperti sampah.
Waktu
Ada dua masalah pekerjaan panjang pada satu proyek, setidaknya untuk saya.
Pertama, sebelum Redis, saya
tidak pernah bekerja tanpa istirahat, setiap hari kerja. Saya bisa bekerja seminggu, berhenti selama dua, lalu bekerja selama sebulan, menghilang selama dua bulan. Selalu. Orang perlu mengisi ulang, mendapatkan energi dan ide baru, menjadi kreatif. Dan pemrograman tingkat tinggi adalah karya kreatif. Redis sendiri hidup seperti ini selama dua tahun pertama, yaitu ketika ia berkembang dengan kecepatan maksimum. Karena total knalpot dari pekerjaan saya ketika saya ingin bekerja lebih besar daripada ketika saya harus bekerja setiap hari secara berkelanjutan.
Ketika saya bekerja sendiri, saya bisa mendapatkan jadwal gratis. Segera setelah saya mulai mendapatkan uang dari Redis Labs, etika saya tidak lagi mengizinkan ini. Saya harus memaksakan diri untuk bekerja dengan jadwal normal. Ini adalah pertarungan serius dengan diri saya sendiri, yang telah saya lakukan selama bertahun-tahun. Selain itu, saya yakin bahwa karena ini kualitas dan volume pekerjaan telah menurun, tetapi tidak ada yang harus dilakukan: semuanya diatur di dunia ini. Saya tidak menemukan cara untuk menyelesaikan masalah ini. Saya bisa memberi tahu Redis Labs bahwa saya ingin kembali ke jadwal lama saya, tetapi tidak masuk akal, karena saat ini saya "melaporkan" ke masyarakat, dan bukan ke perusahaan.
Masalah lain adalah bahwa banyak pekerjaan pada satu proyek juga merupakan hal yang sulit, secara mental. Di masa lalu, saya secara khusus mengubah proyek setiap enam bulan. Saya sudah melakukan hal yang sama selama sepuluh tahun sekarang. Untuk menjaga pikiran saya, saya memulai sub proyek di dalam Redis. Setelah saya membuat cluster, yang lain - penyimpanan disk (sekarang ditinggalkan), kemudian HyerLogLogs, dll. Pada dasarnya, hal-hal ini berguna untuk proyek, tetapi pada dasarnya mereka adalah sesuatu yang lain. Tetapi pada akhirnya, Anda selalu kembali ke halaman yang sama dengan tiket dan menarik permintaan dan melakukan hal yang sama setiap hari: "Replika terputus karena batas waktu" dan seterusnya. Baiklah, mari kita selesaikan ini sekali lagi.
Ketakutan
Saya selalu takut kehilangan kepemimpinan teknologi dalam proyek ini. Bukan karena saya tidak pandai mendesain dan mengembangkan Redis, tetapi karena saya tahu jalur saya tidak cocok dengan apa yang diinginkan banyak pengguna, dan apa yang oleh kebanyakan orang di TI dianggap sebagai perangkat lunak yang baik. Oleh karena itu, saya harus terus-menerus menyeimbangkan antara apa yang saya anggap sebagai desain yang bagus, serangkaian fungsi, kecepatan pengembangan (lambat), ukuran proyek (minimal), dan apa yang harus saya berikan kepada sebagian besar pengguna. Untungnya, ada persentase pengguna Redis yang memahami cara Redis dengan sangat baik, jadi setidaknya saya mendapatkan beberapa kata dukungan dari waktu ke waktu.
Ketidaksepakatan
Beberapa orang benar-benar brengsek. Mereka ada di mana-mana, itu alami. Menurut pendapat saya, ada banyak orang yang lebih baik dalam pemrograman daripada di bidang lain. Tapi selalu ada beberapa persentase dari bajingan absolut. Sebagai pemimpin proyek OSS yang populer, Anda harus tetap berurusan dengan mereka. Mungkin ini adalah salah satu hal yang paling membuat saya stres selama pengembangan Redis.
Kesia-siaan
Kadang-kadang bagi saya tampak bahwa bahkan perangkat lunak yang paling baik tidak akan pernah bertahan selamanya, sebagai karya sastra. Harap dicatat bahwa ini bukan karena kualitasnya, tetapi sebagai efek samping dari fungsi utilitariannya ... Ini berguna dalam praktiknya. Itulah sebabnya sesuatu yang lebih bermanfaat akan datang untuk menggantikannya. Saya ingin punya waktu untuk kelas lain. Karena itu, kadang-kadang tampaknya semua pekerjaan saya, pada akhirnya, sia-sia. Kami merancang dan menulis sistem, tetapi yang baru akan muncul. Secara umum, apakah paling tidak satu pemrogram terapan, dan bukan ahli teori dengan "gagasan besar", yang mampu meninggalkan jejak apa pun? Dari waktu ke waktu, saya pikir saya memiliki kesempatan untuk mengerjakan ide-ide hebat, tetapi saya fokus pada penulisan perangkat lunak, daripada memikirkannya. Karena itu, saya tidak dapat menggunakan potensi saya dalam hal ini. Ini kebalikan dari sindrom penipu: maaf harus lebih rendah hati.
Meskipun demikian, saya dapat bekerja selama bertahun-tahun, melakukan apa yang benar-benar saya sukai, yang memberi saya teman, pengakuan, uang. Ini bukan untuk mengatakan bahwa itu adalah kesepakatan yang buruk. Namun, saya sepenuhnya memahami bahwa orang-orang menghadapi tantangan besar segera setelah proyek mereka menjadi populer. Artikel ini didedikasikan untuk mereka.