Kapan boleh mengorbankan "kerapian" desain untuk menyelesaikan proyek?


15

Ketika mengerjakan suatu produk yang perlu dilakukan segera dan bekerja dengan baik, kapan bisa mengorbankan pemeliharaan dan "kerapian" desain untuk menyelesaikan pekerjaan dan keluar dari pintu dengan cepat? Dan sampai sejauh mana itu baik-baik saja, terutama ketika teknik yang digunakan untuk membuatnya "rapi" adalah hal baru bagi saya?


3
Hanya ketika itu benar-benar diperlukan.
FrustratedWithFormsDesigner

1
Ini adalah norma di mana saya bekerja. "Anda dapat membayar sekarang, atau Anda dapat membayar saya nanti" tidak pernah benar.
MetalMikester

Kedengarannya seperti tenggat waktu yang menjulang ...

1
Saya akan mengambil pandangan pelawan dan mengatakan selalu . Jika suatu proyek tidak dilakukan, tidak ada yang peduli jika itu rapi.
drxzcl

1
@ MrJ, saya benar-benar berpikir tentang pengguna.
drxzcl

Jawaban:


18

Ingatlah bahwa Anda dipekerjakan untuk mendukung bisnis. Dalam beberapa hal, perangkat lunak Anda memengaruhi garis bawah bisnis. Anda perlu menemukan keseimbangan antara solusi yang sempurna secara teknis, dan waktu untuk memasarkan produk Anda dan seberapa besar manfaat bisnis yang akan diperoleh darinya.

Dalam pengalaman saya, pengembang sering terpaku pada kekhawatiran tentang kesempurnaan teknis. Tetapi ada alasan yang sangat valid untuk mengorbankan atribut kualitas seperti pemeliharaan atau kinerja agar produk keluar lebih cepat. Itu tergantung pada bisnis dan produk. Tapi "selalu berusaha untuk desain yang sempurna" adalah pendekatan yang terlalu sederhana.

Pada akhirnya, satu-satunya hal yang penting adalah nilai bagi bisnis. Cari tahu bagaimana memaksimalkannya dalam jangka pendek dan panjang dan bertujuan untuk target itu.


3
Saya setuju dengan semangat jawaban Anda, tetapi Anda melewatkan beberapa detail. You need to strike a balance between a technically perfect solution, and the time to market of your productSaya tidak setuju, itu di luar tanggung jawab pengembang. Mereka mutlak harus tetap menyadarinya, tetapi mereka harus memberikan informasi kepada seseorang yang bertanggung jawab untuk membuat keputusan bisnis.
StuperUser

2
Lihatlah Blizzard misalnya. Mereka memiliki kesuksesan besar dengan permainan mereka dan tidak terlalu peduli waktu untuk memasarkan, karena mereka berpikir bahwa kualitas unggul pada akhirnya akan membuahkan hasil. Dan itu terjadi, meskipun mungkin tidak untuk semua jenis perangkat lunak.
Falcon

1
Saya benar-benar setuju dengan @StuperUser dan @Peter Rowell. Seringkali merupakan tanggung jawab pengembang untuk mengomunikasikan risiko teknis, masalah dengan memotong sudut, dll. Kepada orang-orang yang lebih tinggi dalam rantai makanan yang membuat keputusan. Jika itu adalah peran Anda, Anda harus fokus pada komunikasi yang seakurat mungkin. Namun, semakin Anda mengerti apa yang mendorong rantai nilai bisnis, semakin baik Anda akan mendapatkan komunikasi itu.
RationalGeek

1
@ Falcon Blizzard memang bisa mengorbankan perolehan jangka pendek dalam rilis awal untuk game jangka panjang dalam game yang solid, stabil, dan menyenangkan. Itu mungkin keseimbangan yang tepat bagi mereka. Tetapi ini bukan keseimbangan yang tepat dalam semua kasus.
RationalGeek

4
Kenyataannya adalah bahwa sebagian besar produk perangkat lunak baru akan gagal di pasar, bukan karena masalah kualitas, tetapi karena pelanggan tidak menginginkannya. Jadi, mendedikasikan banyak waktu / upaya untuk menciptakan arsitektur yang dapat dikelola dengan baik dalam versi 1 produk mungkin bukan penggunaan sumber daya terbaik. Para pebisnis yang mendorong untuk mengeluarkan sesuatu bukanlah idiot yang menurut Anda banyak dari mereka; memasukkan produk ke tangan pelanggan untuk menentukan kelayakan adalah hal yang sangat cerdas untuk dilakukan.
Kristopher Johnson

12

Istilah "utang teknis" sangat berguna untuk membantu menginformasikan keputusan bisnis seperti ini. Pekerjaan apa pun yang tidak Anda lakukan sekarang akan menyebabkan sejumlah pekerjaan nanti. Sama seperti dengan keuangan, mengambil utang itu berisiko tetapi mungkin layak untuk dimanfaatkan jika Anda akan dapat membayar utang nanti.

Karena itu, utang teknis bukan rasio 1: 1 pada saat pengembalian. Bug lebih mahal untuk diperbaiki setelah rilis, dan dampaknya pada produktivitas di masa depan ketika berkembang dari sistem warisan yang berantakan bisa sangat memalukan. Anda bisa melihat menghabiskan dua kali lipat waktu untuk memperbaiki kesalahan Anda, atau mungkin 1.000 kali lebih banyak dari jam kerja dan sumber daya.

Tugas Anda dalam keputusan ini adalah untuk memahami konsekuensi dari potongan sudut tertentu yang Anda pertimbangkan, dan kemudian mengomunikasikan konsekuensi tersebut kepada orang-orang yang membuat keputusan bisnis. Keterampilan estimasi khusus ini mungkin membutuhkan banyak penelitian dan bekerja pada bagian Anda untuk berkembang dengan baik sekarang, tetapi itu akan sangat berharga selama karir Anda.


1
+1. Utang teknis adalah cara paling jelas untuk menggambarkan ini.
crazy2be

8

Ketika diterima dan konsekuensinya dipahami oleh pemilik / klien / pengguna.

Seorang tukang ledeng harus mengambil tempat pembuangan sampah untuk diperbaiki. Saya ingin menggunakan wastafel untuk sementara waktu, tetapi dia harus menagih saya untuk waktu dan bahan untuk dimasukkan ke dalam pipa sementara menggunakan selotip yang bisa pecah. Ini juga akan menunda membawa pembuangan kembali ke bengkel. Jika saya menerima tagihan tambahan dengan pengertian bahwa saya berisiko tersumbat. Butuh satu hari lebih lama untuk memperbaiki pembuangan dan penundaan yang lebih lama sebelum dia bisa mengembalikannya, itu bisa diterima.

Anda bisa tepat waktu dan sesuai anggaran sekarang, tetapi mengorbankan / mengambil risiko biaya yang lebih tinggi dalam jangka panjang. Ini bisa sulit untuk membuat orang-orang non-teknis mengerti, tetapi itulah gunanya staf penjualan.


5

Banyak orang menyerah dengan cara cepat ketika mempelajari sesuatu yang baru dan hanya melakukannya dengan cara yang selalu mereka lakukan. Jika ini adalah pola, kode Anda tidak hanya akan terganggu, tetapi keterampilan Anda sebagai programmer juga akan tetap terbatas.

Namun, pada akhirnya, satu-satunya perangkat lunak yang berhasil adalah yang dikirimkan.


"Tetap saja, pada akhirnya, satu-satunya perangkat lunak yang berhasil adalah yang dikirimkan." Sampai jatuh dan terbakar beberapa tahun di jalan karena tidak dirancang dengan baik. Keterbelakangan beraksi.
Wayne Molina

1
Jika Anda tidak pernah mengirim, Anda tidak akan pernah berhasil beberapa tahun ...
Jeremy

Jika Anda tidak dapat mengirimkan sesuatu yang tidak akan mengganggu Anda dalam jangka waktu yang lama karena manajemen jangka pendek, Anda tidak layak berada dalam bisnis sejak awal!
Wayne Molina

3

Setelah batas waktu lunak berlalu. Dan bahkan itu adalah tingkat "OK" yang sangat rendah. Setelah tenggat waktu yang keras berlalu, tentu saja, bisa diperdebatkan. Karena itulah sifat tenggat waktu yang sulit.

Selanjutnya, ini menimbulkan hutang teknis. Untuk setiap jam / hari yang Anda habiskan untuk mengambil jalan pintas dalam mentalitas git-er-done, Anda akan dikenakan biaya kira-kira dua kali lebih banyak waktu ketika berikutnya Anda harus menyentuh proyek ini. Jika Anda harus maka yang terbaik adalah bergegas, mengirim, dan kemudian segera mulai memperbaiki semua pita bebek Anda. Kembali ke proyek mata yang diretas bertahun-tahun kemudian adalah mimpi buruk. Jika Anda tidak akan pernah menyentuhnya lagi, biarlah, tidak ada yang akan peduli. Tapi satu-satunya waktu saya meninggalkan proyek berbohong selamanya adalah ketika saya berganti pekerjaan.

Ingat juga, mengatur waktu hal-hal ini adalah pekerjaan manajer proyek. Jika Anda tergesa-gesa memenuhi tenggat waktu, itu adalah kesalahan PM. Lakukan dengan benar, lakukan sekali, dan lakukan dengan tenang dan benar. Hidup ini terlalu singkat untuk hal lain.


2

Semua jawaban lain yang diposting di sini bagus. Saya ingin menambahkan bahwa meskipun sebagai pengembang pada proyek ini, Anda adalah pelayan (pelindung) desain.

Jika Anda tidak membela solusi teknis yang tepat maka tidak ada orang lain yang akan saya janjikan. Anda harus selalu berdebat untuk melakukan hal-hal dengan cara yang benar untuk bos Anda dan PM harus selalu berdebat untuk tenggat waktu.

Semoga jika Anda berada di organisasi yang masuk akal kompromi akan tercapai yang membantu memenuhi tenggat waktu dan juga tidak menyimpang terlalu jauh dari desain pada saat yang sama.

Dengan itu, jangan berasumsi bahwa jika tenggat waktu PM tidak tercapai, dunia akan berakhir dan proyek akan gagal. Biasanya tidak hitam dan putih dan sebagian besar waktu tenggat waktu PM lembut dan memiliki ruang untuk penyesuaian.

Hampir setiap tenggat waktu yang pernah saya ikuti dalam jadwal PM sebagian besar adalah buatan. Mereka akan mempertahankannya dengan gigih dan berpura-pura namun karena jika PM mendorong batas waktu maka PM TERLIHAT BURUK!

Hanya karena PM terlihat buruk bukan berarti proyek telah gagal. Jika Anda memahami hal ini, Anda akan terkejut betapa banyak Anda bisa mendapatkan PM untuk ditekuk.


1

Mengutip klien untuk desain yang rapi. Jika kutipan itu tidak dapat diterima oleh mereka, maka masuklah ke rincian berapa biaya setiap komponen (biasanya biaya == waktu pengembangan). Biarkan mereka mengambil barang dari "a la carte" jika mereka mau. Banyak yang akan melompati waktu untuk hal-hal yang "tidak berguna" seperti pengujian dan desain. Jelaskan risiko dari pendekatan ini, tetapi jika mereka menerima risiko, maka lanjutkan seperti yang diarahkan. Jika saya hanya punya cukup uang untuk mobil clunker, maka saya akan membeli mobil clunker, bahkan jika saya tahu itu mungkin akan rusak dalam 8 bulan. Klien Anda memiliki tanggung jawab untuk menimbang risiko ini dan menerima konsekuensinya.

Satu hal yang tidak ingin Anda lakukan adalah memberi tahu klien bahwa mereka memiliki perangkat lunak yang dirancang dengan indah, ketika mereka hanya membayar (dan menerima) sepotong sampah yang belum diuji. Jika terjadi kesalahan (yang kemungkinan akan terjadi), dalam skenario pertama mereka akan terlihat buruk, tetapi dalam skenario kedua Anda akan terlihat buruk.


1

Tidak pernah apa - apa, tetapi kadang-kadang Anda harus berkompromi demi menyelesaikan suatu proyek. Kenyataan yang menyedihkan adalah bahwa kebanyakan pebisnis benar-benar bodoh dan lebih dari rela mengorbankan pemeliharaan untuk sesuatu saat ini. Kuncinya adalah mengetahui bagaimana mencapai keseimbangan; mungkin proyeknya tidak akan serapi mungkin, tetapi selama itu bukan kandang babi, itu adalah kompromi yang layak.


0

Itu sepenuhnya tergantung pada pertanyaan "Apakah Anda atau orang lain mungkin ingin mengubahnya nanti?" Jika ya, Anda harus mencoba memiliki desain "rapi", jika tidak, Anda berisiko harus membuang semuanya dan mulai lagi 6 bulan kemudian.

Tentu saja, Anda bisa mengambil kerapian terlalu jauh, tetapi umumnya sedikit kerapian akan menghemat kerja Anda nanti.


4
Tidak ada yang namanya produk yang tidak memerlukan perawatan, tidak peduli apa yang klien katakan kepada Anda.
Edward Strange

@ crazy-eddie Cukup banyak tidak. Itu dimaksudkan sebagai pertanyaan penuh; Saya benar-benar tidak bisa memikirkan banyak kasus di mana Anda akan menjawab "tidak" untuk pertanyaan itu. Bahkan naskah singkat yang dimaksudkan hanya untuk satu hal dan tidak akan pernah digunakan lagi, bisa saja diedit dan diperbaiki kemudian.
Jo-Herman Haugholt
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.