Katakanlah Anda bekerja untuk perusahaan dan apa yang Anda lakukan adalah mengembangkan perangkat lunak untuk mereka. Anda tidak tahu gambaran besarnya atau mungkin sedikit. Apa yang Anda miliki adalah tugas yang diberikan kepada Anda melalui sistem pelacakan masalah. Anda diberi tugas, Anda membuatnya bekerja dengan cara tugas itu menggambarkannya, Anda mengirimnya kembali. Seperti menambahkan 2 bilangan bulat:
function add(a,b){return a + b;}
Tetapi kemudian, ketika proyek berjalan maju, Anda melihat bahwa ketika add
menjadi lebih kompleks, Anda menyadari bahwa itu harus memerlukan beberapa bentuk arsitektur, lebih dari sekedar fungsi yang menambah parameter dan mengembalikan nilai. Namun, Anda tidak tahu itu. Pertama, yang mereka butuhkan adalah sesederhana itu add
. Anda tidak berharap menambah menjadi begitu rumit.
Proyek ini berjalan dengan lebih banyak fitur, yang awalnya tidak Anda harapkan. Dan pada akhirnya, Anda terus menumpuk hacks dan lapisan fungsi untuk menghindari melanggar / menulis ulang kode yang ada.
Bagaimana Anda menghadapi situasi ini? Bagaimana Anda melawan hutang teknis sebagai "pengembang terendah"?
Klarifikasi:
Anda adalah "pelaksana", yang terendah dalam hierarki.
Anda melihat masalahnya, tetapi tidak memiliki suara untuk masalah ini.
Saya tidak menghitung utang teknis atau mencari alat.
Mengenai "duplikat" ketiga
- Refactoring & Menulis Ulang - Anda dikunci untuk tugas Anda. Anda tidak dibayar untuk melakukan ekstra.
- Tinjauan Arsitektur - Anda tahu keseluruhan sistem, tetapi tidak tahu arsitekturnya.
- Pembekuan Kode - Bukan panggilan Anda. Anda bukan manajemen.
- Modularisasi - Tidak tahu arsitektur. Modul berubah seiring perubahan persyaratan.
- Tes Otomatis - Tidak ada.
Jawaban:
Setiap kali Anda melihat sesuatu seperti itu, masukkan tiket baru ke dalam sistem pelacakan masalah Anda.
Biasakan untuk menggunakan pelacak isu sebagai yang utama alat untuk mengomunikasikan hal-hal seperti itu, karena dari sana, akan mudah untuk memilih, mengevaluasi, dan memprioritaskan kolega senior Anda / pemimpin / manajer / siapa pun yang bertanggung jawab untuk melacak masalah di proyek Anda .
Gunakan alat yang tepat untuk pekerjaan itu. Saya selalu melakukannya dan sangat menyarankan Anda melakukan hal yang sama.
Sebagai contoh, berikut adalah tiket yang saya buat sekitar sebulan yang lalu. Setelah menyelesaikan fitur tertentu saya menemukan bahwa kode menjadi jauh lebih rumit daripada sebelumnya tetapi saya tidak dapat memperbaikinya dalam tenggat waktu yang diberikan untuk implementasi fitur.
(Nama fitur, tiket, dan kode yang digunakan dalam pelacak nyata dikaburkan, tetapi teks disalin sebagaimana adanya).
FWIW saran saya berlaku terlepas dari "level" Anda.
Saya telah menggunakannya pada level Anda saat ini ("terendah") dan saya menggunakannya sekarang karena level saya cukup jauh dari "terendah" dan saya sudah memuaskan "katakan" seperti yang Anda sebut, dan saya akan menggunakannya selalu apa pun yang terjadi.
Pikirkan saja, tidak ada level, tidak peduli berapa banyak otoritas yang Anda miliki, tidak mungkin ada cara yang lebih baik.
Jika Anda "mengatakan" hei kita punya masalah , itu hanya berderak udara. Dan bahkan jika bos / pimpinan Anda setuju dan mengatakan Anda benar, kami punya masalah , ini tidak mengubah apa pun - itu hanya udara yang bergetar lagi, dan itu tidak bisa apa-apa lagi.
Gunakan alat yang tepat untuk pekerjaan itu. Untuk pekerjaan yang Anda jelaskan, lacak pelacak adalah alat yang tepat.
Anda melihat masalah, Anda memasukkannya ke dalam sistem yang dirancang untuk melacak ini dan mengurus sisanya, dengan cara terbaik - hanya karena itu dirancang untuk itu :
Apa pun cara lain yang ingin Anda pilih untuk berkomunikasi, memiliki tiket di pelacak hanya akan memudahkan Anda.
Bahkan jika Anda lebih suka mengoceh , mengatakan "Saya ingin membahas TICKET-54321 ..." membuat titik awal yang lebih solid daripada "Dengar, saya ingin berbicara tentang beberapa kode yang saya bahas beberapa waktu lalu. ... "Dan Anda dapat dengan aman mengirimkan referensi ke tiket melalui surat: bahkan jika surat hilang, masalahnya masih ada di pelacak, dengan semua detail yang ingin Anda ceritakan.
sumber
Apa yang membuat saya merasa tidak enak tentang skenario Anda adalah persis apa yang Anda tulis di judul dan beberapa kali dalam teks pertanyaan:
Anda adalah pengembang terendah dalam rantai
Mengapa poin itu begitu penting? Pertama-tama, dan dari sudut pandang murni teknis, Anda tentu benar. Anda dipekerjakan sebagai apa yang Anda sebut "pelaksana" hal-hal, lebah pekerja yang bertindak atas perintah yang diberikan.
Tetapi bahkan jika Anda adalah pengembang terendah dalam hal peringkat, ini masih belum sepenuhnya benar. Kuncinya di sini adalah untuk menyadari, bahwa Anda hanya menganggap diri Anda sebagai pengembang terendah. Pernahkah Anda mencoba mengatasi persepsi diri itu dan benar-benar mengambil alih tanggung jawab untuk sesuatu ?
Mengambil! Jangan menunggu, sampai seseorang membuat Anda bertanggung jawab.
Biasanya itu justru sebaliknya: Anda dibayar lebih dan pendapat Anda lebih dihormati, begitu Anda menunjukkan bahwa Anda bernilai uang . Ini "do before have", bukan sebaliknya.
Apa yang saya harapkan dari orang-orang dalam tim saya adalah persis seperti itu: Rasa tanggung jawab atas proyek atau produk yang kami coba bangun dan untuk semua proses yang terkait dengan upaya itu. Setiap kali seseorang di tim saya membuat saya terkesan dengan mengambil alih tanggung jawab, misalnya mengusulkan perbaikan atau bahkan lebih baik mulai memperbaiki sendiri, ini adalah orang-orang yang akan dipromosikan.
Dengan kata lain: Tidak ada yang mempromosikan lebah pekerja, orang-orang secara pasif menunggu tugas-tugas yang diberikan kepada mereka, bahkan tidak memiliki kedipan inisiatif sekecil apa pun " karena mereka tidak dibayar untuk itu. ", akhirnya mengeluh bahwa mereka tidak pernah memiliki kesempatan.
Tentu saja, semua ini lagi tergantung pada budaya perusahaan Anda, dengan apa yang terkait dengan Joel dalam "Two Stories" yang ditautkan oleh Arthur. Jika manajer perusahaan benar-benar bodoh untuk memblokir orang-orang mereka sendiri dari membuat kemajuan, maka rasio fluktuasi mungkin sudah sangat tinggi dan mungkin sudah waktunya untuk mengambil kesimpulan dari itu. Tetapi jika itu tidak terjadi, masalah sebenarnya mungkin ada di dalam diri Anda.
sumber
Anda seorang profesional. Majikan Anda mempekerjakan Anda untuk menjadi profesional. Jadi, perlakukan kekhawatiran Anda dengan cara yang sama Anda inginkan profesional yang Anda sewa untuk memperlakukan pendapat profesional mereka . Secara khusus, Anda mengharapkan para profesional lain untuk melakukan optimasi dan koreksi yang diperlukan di sepanjang jalan, asalkan optimasi tersebut tidak secara tidak terduga meningkatkan biaya.
Sebagai contoh, misalkan Anda membawa mobil Anda ke mekanik untuk mengganti lampu. Mekanik memperhatikan empat hal:
Masing-masing skenario ini, dan saya yakin orang lain, memiliki paralel dalam pengembangan perangkat lunak - terutama jika Anda menganggap diri Anda seorang profesional dari tingkat apa pun . Sebagai seorang profesional, dengan sangat sedikit pengecualian, tugas Anda adalah mencapai tujuan akhir untuk meningkatkan produk dengan cara tertentu sesuai dengan pemahaman profesional Anda .
sumber
Anda melakukan ini dengan cara yang sama seperti petugas di kantor hukum berperang melawan perilaku yang tidak etis, pekerja makanan cepat saji berperilaku tidak bersih, atau petugas penegak parkir memerangi korupsi polisi.
Dalam contoh yang Anda berikan, dengan
add
fungsi yang telah mengalami creep fitur lengkap, luangkan waktu beberapa menit dan konsep garis besar apa yang akan memperbaikinya. Kirim itu kepada siapa pun yang Anda memerlukan persetujuan untuk mengimplementasikannya, dan lanjutkan.Dengan asumsi perusahaan Anda dikelola oleh orang-orang yang sangat kompeten dan terstruktur dengan benar, baik kekhawatiran Anda akan dialihkan ke perancang sistem yang tepat untuk suatu keputusan atau Anda akan diberikan kelonggaran untuk mengimplementasikan saran Anda. Sebagai pengembang junior, saya lebih khawatir tentang cara belajar perusahaan Anda daripada utang teknis - dan jika Anda tahu yang pertama, bagaimana menangani yang kedua harus jelas.
sumber
Saya belum pernah mendengar tentang organisasi yang tidak ingin karyawannya berpartisipasi. Anda mengatakan bahwa Anda hanya dibayar untuk melakukan tugas. Saya sungguh ragu Anda memiliki tugas yang tepat dalam pikiran. Karena Anda dibayar untuk menulis perangkat lunak yang bagus.
Ambil tanggung jawab ini. Katakan tidak untuk menambahkan fitur jika Anda tidak dapat mendukung basis. Nasihat pelanggan dengan keahlian Anda. Menginjak rem sekarang, sebelum terlambat dan Anda harus membuang seluruh proyek, karena itu tidak lagi dapat dipertahankan.
sumber