Apa yang harus dilakukan ketika proyek "gagal" Anda sebenarnya "berhasil"?

14

Apa yang akan Anda lakukan jika Anda berada dalam situasi di mana proyek yang sedang Anda kerjakan jelas dibangun dengan buruk dan akan mengalami kegagalan di masa depan dan menjadi mimpi buruk untuk dipertahankan ... tetapi itu dianggap sebagai "sukses" oleh manajemen karena klien Senang?

Haruskah aku tidak peduli? Apakah boleh bahwa klien bahkan tidak menyadari bahwa mereka dapat memiliki aplikasi yang lebih baik dari ini?

Pada titik apa saya berhenti peduli untuk membangunnya dengan benar dan mengikuti arus?

James P. Wright
sumber

Jawaban:

37

Jika klien senang, Anda melakukan sesuatu dengan benar. Banyak orang menikmati hot dog tanpa mengetahui bagaimana mereka dibuat ...

Jika aplikasi tersebut merupakan solusi yang baik untuk masalah tersebut tetapi Anda khawatir bahwa fondasinya salah, cari tahu bagaimana cara meningkatkan hal-hal secara bertahap dan mengajukan rencana untuk mengimplementasikan peningkatan tersebut saat Anda memperbarui produk. Tambahan adalah kuncinya: jika Anda ingin menulis ulang seluruh bagiannya, manajer Anda akan dengan tepat mengatakan itu tidak masuk akal. Yang sempurna bisa menjadi musuh yang baik. Lihatlah kisah jwz tentang bagaimana Netscape membiarkan IE memimpin karena mereka "harus" menulis ulang Navigator.

Jika UI aplikasi itu sendiri berantakan, klien mungkin masih senang karena mereka membandingkannya dengan "jalan yang sulit" dan bahkan program kereta bisa jauh lebih baik dari itu. Anda membandingkannya dengan cita-cita yang dapat Anda bayangkan karena latar belakang dan keterampilan Anda. Sekali lagi, pertimbangkan bagaimana Anda dapat meningkatkan hal-hal dengan cara tambahan, dan menyebutnya sebagai bagian dari rencana.

Jangan berhenti peduli: Anda ingin pekerjaan Anda menjadi yang terbaik. Tetapi juga ingat bahwa pelangganlah yang membayar tagihan Anda, dan Anda menulis perangkat lunak untuk mereka, bukan Anda.

benzado
sumber
Hai Robert, terima kasih telah menambahkan tautan itu. Saya mengetik di iPhone saya dan tidak ingin beralih konteks untuk mencarinya.
benzado
1
Terkait: The Duct Tape Programmer karya Joel Spolsky dan respons Zawinski .
benzado
Juga: jwz's Groupware Bad . (Maaf untuk semua tautan, saya senang membacanya kembali sekarang ...)
benzado
Saya bekerja pada perangkat lunak yang berumur 20 + tahun, sudah lewat tanggal ini, dan itu mulai ditulis dengan buruk (bahkan menurut standar 20 tahun yang lalu). ("Kode ini adalah breakefast anjing - sekarang saatnya makan malam" adalah kutipan yang mudah diingat) Jika membutuhkan banyak uang untuk mempertahankan - 10x apa yang seharusnya, tetapi penghalang untuk masuk ke kompetisi sangat tinggi, sehingga pelanggan hanya membayarnya. Alternatifnya adalah compeditor dengan perangkat lunak simlar dan struktur biaya. Ini adalah lisensi untuk mencetak uang, dan itulah sebabnya bisnis menulis perangkat lunak, jika mereka melakukan untuk keunggulan teknis, akan bangkrut.
mattnz
4

Itu bukan mimpi buruk bagi mereka. Ini akan menjadi mimpi buruk bagi Anda dan mereka tampaknya berpikir Anda tahu apa yang Anda lakukan, jadi itu akan diperbaiki. Apakah Anda lebih suka orang yang tidak melakukan dan pemrograman berpikir aplikasi Anda lebih buruk daripada yang sebenarnya? Ini bukan pengecualian. Nikmati itu selagi kamu bisa. Anda lebih baik berharap klien melebihi aplikasi ini. Mereka mungkin melangkah jauh ke arah lain sebagai bisnis sehingga ini sama sekali tidak berguna. Anda bisa menulis ulang untuk serangkaian alasan yang berbeda dari yang Anda pikirkan.

JeffO
sumber
3

Saya tidak berpikir Anda harus berhenti peduli, bahkan jika sepertinya manajemen tingkat atas telah berhenti. Saya pikir hal penting untuk mengambil dari pengalaman ini adalah untuk mengingat dan mendokumentasikan semua hal yang menurut Anda salah. Menghindari kesalahan-kesalahan ini di masa depan pada akhirnya akan dikenali, jika bukan grup manajer saat ini, mungkin grup manajer berikutnya tempat Anda bekerja.

djnotepad
sumber
2

Saya akan mulai menyajikan ide-ide untuk langkah-langkah pengembangan selanjutnya yang mencakup anjak piutang untuk meningkatkan kualitas kode. Tinggal jauh dari pergi terlalu dalam ke detail teknis, tetapi lakukan titik bagaimana perbaikan Anda sarankan akan berarti lanjutan kepuasan pelanggan. Bersiaplah untuk memadukan pembersihan dengan fitur baru, karena manajemen akan selalu mencari sesuatu yang baru untuk dijual.

Secara umum, klien tidak akan peduli tentang pemeliharaan sampai ada masalah. Idealnya, perusahaan Anda akan peduli dengan reputasinya, dan ingin melindunginya dengan mempertahankan kode tersebut.

Namun - jika produk ini dipandang sebagai jangka yang sangat pendek, mungkin sebenarnya tidak ada nilai tambah untuk melakukannya dengan benar. Dalam hal ini - cari perbaikan murah - hal-hal dengan sedikit usaha yang memiliki nilai besar untuk kewarasan pengembang.

bethlakshmi
sumber
2

Kamu tidak. Anda menggunakan kesuksesan untuk mendapatkan dana / izin / pembelian untuk memulai refactoring ke arah yang benar secara teknis dan mudah untuk dipertahankan. Atau Anda menggunakan kesuksesan untuk dipromosikan keluar dari departemen "Saya bisa mempertahankan basis kode lama".

Wyatt Barnett
sumber
0

Mungkin prioritas / sudut pandang Anda salah.

Hal terpenting dari setiap proyek perangkat lunak adalah memenuhi persyaratan pengguna.

Ini adalah trilyun kali lebih penting daripada menjadi "benar" menurut mode desain C / S bulan ini.

Ya, Anda harus menggunakan pola desain yang benar, menggunakan teknologi dengan benar, dll. tetapi hanya sejauh itu membuatnya lebih mudah untuk mengimplementasikan persyaratan pengguna dengan cara yang kuat dan dapat dipertahankan.

Sistem yang benar-benar ditulis dengan buruk yang benar-benar memenuhi kebutuhan bisnis selalu lebih baik daripada sepotong kode yang didokumentasikan dengan indah yang tak seorang pun mau atau punya alasan untuk menggunakannya.

James Anderson
sumber
0

Cobalah untuk berkomunikasi dengan pengguna saat ini dan tanyakan kepada mereka aspek mana yang menurut mereka perlu ditingkatkan. Kemudian Anda dapat meningkatkan beberapa aspek yang menurut Anda perlu ditingkatkan dan juga meningkatkan aspek yang diusulkan pengguna. Anda dapat membenarkan perbaikan Anda sebagai "diperlukan untuk menerapkan peningkatan yang diusulkan pengguna"

Misalnya: jika pengguna berpikir fungsi pencarian lambat. Anda bisa meningkatkannya dengan membuat Layer Data yang lebih baik yang jelas melayani lebih dari sekedar pencarian, tetapi Anda kemudian dapat membenarkan waktu yang dihabiskan.

Bazzz
sumber