Kadang-kadang ketika saya memiliki masalah yang perlu diselesaikan, saya menemukan bahwa cara termudah untuk menyelesaikannya adalah dengan menulis program kecil sebagai alat pribadi. Saya tidak membuatnya super berguna atau super kuat, karena saya satu-satunya yang akan menggunakannya, dan saya tidak punya waktu untuk memperbaikinya dan mengujinya secara menyeluruh.
Kemudian seorang rekan kerja melihat program dan memintanya, karena ia telah mengalami masalah yang sama dan alat itu dapat membantu. Saya memberinya sanggahan "Ini tidak cantik tapi itu akan menyelesaikan pekerjaan" dan biarkan dia melakukannya.
Hal berikutnya yang saya tahu, atasan saya menelepon saya, memberi tahu saya bahwa dia sedang berusaha agar perangkat lunaknya berfungsi di komputer klien tetapi menunjukkan pesan kesalahan X. WTF ?? Perangkat lunak itu tidak siap untuk rilis, saya juga tidak diberitahu bahwa itu perlu siap untuk rilis. Tetapi untuk beberapa alasan, atasan saya berpikir itu cukup bagus dan dirilis tanpa memberi tahu pengembang aslinya.
Sekarang, masalah khusus ini mudah diperbaiki dengan MessageBox.Show("DO NOT GIVE TO CLIENTS!");
. Namun masalahnya adalah indikasi dari masalah yang jauh lebih dalam: budaya perusahaan kita ceroboh. Perangkat lunak ceroboh OK dan proses ceroboh OK. Jangan khawatir tentang masa depan - usahakan cukup agar tidak berfungsi sekarang, letakkan binari dalam file .zip, dan kirimkan. Cukup bagus untuk pekerjaan pemerintah.
Ini adalah perusahaan kecil dengan 10 karyawan penuh waktu, sedang tumbuh, dan telah ada untuk sementara waktu. Jangan salah sangka; Saya suka bekerja di sini dan saya suka perusahaan. Jangan suruh aku lari; Saya ingin menjadi bagian dari membuat perusahaan lebih baik. Bagaimana Anda mulai membawa perubahan yang bagus pada budaya semacam ini?
Jawaban:
Satu-satunya cara untuk berubah adalah membuat orang lain melihat sisi buruk dari budaya yang ceroboh dan, mungkin yang lebih penting, meminta manajemen untuk memperbaikinya. Pada kenyataannya, itu tidak terjadi dan Anda tidak akan dapat mengubahnya. Itu mungkin bukan jawaban yang Anda harapkan untuk didengar, tetapi setelah sekitar lima tahun mencoba dan gagal di beberapa pekerjaan untuk mengubah budaya ceroboh, saya dapat mengatakan dengan beberapa otoritas bahwa biasanya tidak sepadan dengan usaha yang harus dilakukan.
Langkah pertama adalah mencari tahu apakah ada orang lain yang tahu atau peduli tentang budaya ceroboh; jika Anda adalah satu - satunya orang yang melihat masalah, upaya Anda sia-sia.
sumber
Anda mungkin perlu duduk bersama rekan kerja dan bos dan menjelaskan bahwa Anda memiliki prototipe dan tidak siap digunakan klien. Jika mereka menginginkannya agar siap digunakan oleh klien, Anda dapat membuat perubahan itu dengan waktu yang cukup tetapi tolong jangan mengambil barang "cepat dan kotor" dan meneruskannya kepada pelanggan. Hanya karena sesuatu berhasil tidak menjadikannya pelajaran yang baik untuk dipelajari. Sementara Anda memberikan penafian ada sesuatu yang bisa dikatakan untuk memberikan rasa hormat karena jika tidak, inilah yang bisa terjadi.
sumber
Anda tidak bisa memperbaiki kebodohan. Jika bos Anda melakukan hal-hal seperti yang Anda jelaskan tidak mungkin Anda akan dapat mengubahnya. Terutama jika dia bukan pemilik - ingat, dia memiliki tekanan yang datang dari arah lain, dan arah itu menandatangani cek gajinya. Sama dengan rekan kerja Anda yang lain. Langkah pertama terbaik yang dapat Anda lakukan adalah membiasakan diri. Gunakan teknik seperti kotak pesan yang Anda gambarkan. Simpan semua email. Dapatkan sebanyak yang Anda bisa dalam bentuk tertulis. Dengan cara ini Anda tidak mengambil beban ketika kebodohan menyerang. Kemudian, saat Anda dipromosikan, lakukan perubahan yang Anda inginkan dengan mereka yang berada di bawah pengawasan Anda.
sumber
Suatu hari, seorang kolega menceritakan kepada saya sebuah kisah tentang alat uji sederhana untuk memungkinkan seorang insinyur di lab mengeluarkan perintah tunggal ke widget, dan mengubah variabel yang sesuai dengan perintah tersebut. Ini ditulis 9 tahun yang lalu sekarang, dan terakhir dia tahu, masih digunakan sampai sekarang. Alat yang ditulis dalam beberapa jam dengan pengujian minimal untuk membuktikan, di lab, bahwa sesuatu bekerja, adalah dasar untuk seluruh alat uji laboratorium teknik. Setelah Anda menulis kode, kode itu ada. Jika itu melakukan sesuatu yang bermanfaat dan dilihat oleh orang lain, orang akan menginginkannya. Jika bagus dalam hal ini, orang akan memintanya melakukan X. Hal berikutnya yang Anda tahu, alat sederhana Anda adalah komponen penting.
Saya pikir tanggung jawab pertama ada pada pengembang perangkat lunak untuk memastikan bahwa siapa pun yang melihat kode atau menggunakan alat memahami bahwa ini adalah prototipe atau bukan sistem produksi dan mengatakan mengapa demikian. Sepertinya Anda melakukan itu, namun rekan kerja Anda lalai untuk memikul tanggung jawab itu. Untuk mengatasi ini, saya akan merekomendasikan berbicara kepada mereka, mengulangi bahwa ini bukan kode produksi dan hanya ditulis untuk memudahkan pekerjaan Anda. Jika mereka merasa itu berguna, mungkin menawarkan untuk mengerjakan alat atau mendukung orang lain yang mengerjakan alat untuk meningkatkannya dan membuatnya lebih cocok untuk produksi.
Sejauh proses organisasi atau perubahan budaya, berharap itu akan memakan waktu. Mulailah dengan memberi contoh. Jika Anda belum membaca The Pragmatic Programmer , lakukanlah. Perhatikan kiat-kiat seperti Peduli Tentang Kerajinan Anda, Jadilah Katalisator untuk Perubahan (perlihatkan kepada orang cara yang lebih baik), Jangan Hidup Dengan Windows yang Rusak, Perbaiki Masalahnya Bukan Salahkan. Sepertinya Anda mengenali beberapa masalah yang ditangani oleh kiat-kiat ini, jadi mulailah bekerja dan hidup sebagai teladan bagi kolega Anda.
sumber
Sampai pembuat keputusan tidak lagi menanggung konsekuensi dari kode yang buruk dan bersedia membayar / mengubah cara mereka untuk memperbaiki masalah.
Ini adalah keputusan sulit bagi perusahaan kecil dan berkembang. Mereka tidak tahu di mana harus berusaha. Ada risiko membuat kode terlalu kuat ketika aturan bisnis dan kadang-kadang seluruh lini bisnis muncul, berubah, dan menghilang dalam semalam.
Berusaha keras untuk menulis kode yang baik. Pastikan Anda memberi tahu semua orang tentang konsekuensinya sehingga mereka dapat membuat keputusan yang tepat. Jika kode buruk dimasukkan ke dalam produksi, perhatikan dengan cermat jika Anda bisa dan terus menyarankan untuk memperbaikinya terutama jika bagian bisnis itu menjadi kritis.
Membuat orang menunggu apa yang Anda lihat sebagai kode minimal yang layak tampaknya berada di luar harapan mereka saat ini.
sumber
Saya akan menunjukkan bahwa bagian dari masalah di sini adalah bahwa Anda telah menulis alat yang cepat dan kotor. Memang, ada alasan bagus. Memang, itu berhasil. Tapi , saya telah menemukan bahwa apa pun yang memecahkan masalah, akan jatuh ke dalam perangkap solusi "cukup baik", jika Anda mulai membagikannya.
Jika teman Anda menginginkannya, katakan dengan sopan padanya bahwa itu tidak berfungsi penuh, dan Anda menyimpan kuncinya. Anda dapat menjalankannya untuknya dari waktu ke waktu. Atau, tambahkan fungsionalitas ekstra, lebih disukai dari awal proyek.
Semua alat cepat dan kotor saya pada saat ini berasal dari file kerangka yang sangat teruji. Ini memungkinkan saya untuk pergi dengan cepat, memberi saya titik awal yang berfungsi, dan membuat saya lupa menambahkan semua tepi tumpul yang diperlukan. Saya tidak perlu khawatir tentang perpustakaan getopts, dan kebiasaannya. Saya tidak perlu mengingat detail tentang manajemen memori ketika saya menggunakan python. Bangun program sehingga ia melakukan satu tugas sederhana dan hanya satu . Itu membuatnya mudah untuk diuji jika mereka mencoba untuk menekuknya agar tidak berbentuk.
Akhirnya, manfaatkan arsitektur mesin keadaan terbatas. Jika Anda tahu masuk ke semua kemungkinan status, jauh lebih mudah untuk memastikan bahwa apa pun yang terjadi, pengguna tidak akan pernah dapat melompat trek. Saya punya program yang saya tulis untuk mengikuti paradigma ini. Ini menerima file input sewenang-wenang, yang dibaca melalui byte demi byte. Bahkan jika klien menyuruhnya membaca biner yang dapat dieksekusi, ia tidak akan memiliki masalah. Karena tidak akan menemukan hal-hal yang dicari, buffer internal akan terisi. Itu akan menyebabkannya dengan anggun membersihkan, menutup, dan melaporkan kepada pengguna bahwa mereka membutuhkan saya untuk melihatnya.
sumber
Yah, jawabannya tidak ada hubungannya dengan pemrograman, kecuali bahwa perangkat lunak itu bagus sehingga sulit untuk dengan mudah menilai kualitas.
Anda mungkin tidak dapat mengubah budaya, karena orang mungkin tidak memiliki motif sebenarnya tidak menjadi ceroboh, karena orang-orang dipengaruhi oleh kualitas perangkat lunak tidak memiliki banyak hubungannya dengan proses. Sebagai contoh, klien Anda mungkin diharuskan untuk membeli dan menggunakan perangkat lunak untuk melakukan pekerjaan mereka, tetapi memiliki sedikit kepentingan pribadi dalam seberapa efektif perangkat lunak itu, karena mereka tidak akan secara pribadi disalahkan atas masalah itu atau dihargai karena kebajikannya (sebagian besar karena tidak ada yang benar-benar tahu jika perangkat lunak yang bersaing akan lebih baik). Jadi, Anda mungkin hanya harus memenuhi permintaan fitur mereka tanpa terlalu lama, tetapi tidak perlu terlalu khawatir tentang apakah itu buggy. Jadi, Anda semua bisa sangat ceroboh tanpa konsekuensi (kepada siapa pun yang membuat keputusan yang memengaruhi Anda).
Saya tidak tahu apakah hal seperti ini yang terjadi, tetapi jika memang demikian, Anda mungkin mengalami kesulitan mengubah budaya karena orang yang ingin Anda ubah tidak akan menjadi lebih baik jika mereka melakukannya.
Jika mereka akan lebih baik, Anda mungkin memiliki waktu yang lebih mudah, karena Anda berpotensi meyakinkan mereka mengapa mereka mau. Sayangnya, jika tidak ada semacam situasi politik yang membuat kecerobohan OK, mereka mungkin tidak akan ceroboh di tempat pertama, jadi sepertinya akan sulit. Anda selalu dapat mencoba argumen "suatu hari nanti Anda mungkin memiliki pekerjaan yang mengharuskan melakukan hal-hal yang benar" (mungkin lebih diplomatis diungkapkan ...)
sumber