Bagaimana cara menghentikan pelapisan emas dan menjadi puas untuk melepaskan perkembangan kerja [ditutup]

29

Tim pengembangan yang saya anggota baru-baru ini beradaptasi untuk bekerja sesuai dengan praktik Agile. Ini secara pribadi menyoroti fakta bahwa saya tidak dapat menghentikan diri saya sendiri kode pelapisan emas (dan dokumentasi) dan akibatnya saya melebihi perkiraan asli, ketika saya bisa memberikan solusi yang memenuhi persyaratan jauh lebih awal.

Saya pikir etika saya terbatas pada obsesif karena saya menjadi terlalu terikat pada kode saya dan jarang puas untuk melepaskannya sebelum saya refactored dan menyempurnakannya sampai tingkat ke-n. Saya senang telah menyadari hal ini tetapi bagaimana saya bisa mengubah sikap / mentalitas saya untuk merasa puas dengan kemajuan saya dan melepaskannya tepat waktu?

Andy Bowskill
sumber
7
Tentukan penyepuhan emas. Bagi saya, pelapisan emas menambahkan hal-hal yang tidak perlu (dalam istilah Lean, menghasilkan limbah seperti fungsi yang tidak perlu, terlalu banyak dokumentasi atau dokumentasi yang tidak menambah nilai). Sepertinya Anda tidak menambahkan hal-hal yang tidak diperlukan, tetapi hanya menghabiskan waktu refactoring daripada menarik produk kerja baru.
Thomas Owens
Dengan pelapisan emas yang saya maksudkan berusaha untuk menyempurnakan desain (mungkin untuk mencoba dan mendorong penggunaannya kembali di masa depan) yang sudah memenuhi persyaratannya, belum tentu menambah fungsionalitas baru.
Andy Bowskill
Apa yang dipikirkan atasan Anda?
JeffO

Jawaban:

22

Yang terbaik adalah musuh yang cukup baik.

Anda selalu dapat melakukan lebih banyak pengujian, menulis dokumentasi yang lebih baik, mencari tahu kasus-kasus sudut itu, mengisi apa yang Anda pikir fitur hilang, membuat arsitektur lebih bersih. Itu tidak pernah berakhir. Namun, itu harus berakhir. Ada tanggal jatuh tempo yang harus dipenuhi, kendala eksternal yang bergantung pada bagian Anda dari produk yang sedang diselesaikan. Berjuang untuk kesempurnaan dalam satu bagian kecil dari produk menyakiti produk secara keseluruhan.

David Hammen
sumber
2
Terima kasih David, itu mengingatkan saya pada sebuah kutipan terkait yang saya baca baru-baru ini: "Sempurna adalah musuh yang dilakukan".
Andy Bowskill
1
Karena aslinya adalah dalam bahasa Prancis (Voltaire), agak sulit untuk mengatakan versi mana yang "benar" - kecuali ada yang menulisnya dalam bahasa Prancis.
David Hammen
24

Pertama, saya berharap lebih banyak pengembang yang memiliki masalah ini, bukan karena perangkat lunak pada akhirnya akan dirilis lebih lambat dari yang diharapkan tetapi karena itu mungkin akan menjadi rilis berkualitas lebih tinggi.

Jika Anda melebihi perkiraan asli Anda sendiri, mungkin Anda harus memasukkan langkah-langkah "pelapisan emas" sebagai bagian dari perkiraan Anda. Jika itu bukan perkiraan Anda sendiri, mungkin Anda harus terlibat dalam merumuskannya.

Bagaimanapun, jika Anda memiliki tenggat waktu rilis, Anda harus menaatinya. "Pelapisan emas" apa pun harus dibiarkan sebagai langkah terakhir yang seharusnya tidak menahan rilis. Jika Anda benar-benar merasa itu harus dimasukkan sebagai bagian dari rilis, pertimbangkan untuk menambahkan "pelapisan emas" pada waktu Anda sendiri (yaitu di luar jam kerja).

Yang harus Anda lakukan adalah membawa langkah "pelapisan emas" ke tim dan / atau manajemen Anda dan diskusikan mengapa Anda merasa itu penting. Jika Anda dapat meyakinkan mereka bahwa langkah-langkah ini bermanfaat, mereka harus menjadi bagian dari rilis di masa depan.

Bernard
sumber
Bernard terima kasih, saran yang bagus. Ya ini juga menyoroti waktu dan biaya versus kualitas trade-off produk akhir.
Andy Bowskill
@AndyBowskill, saya mengalami masalah yang sama seperti yang Anda lakukan. Bagaimana kabarmu sekarang?
datan.io
14

Perangkat Lunak Berlapis Emas

Pertama kali saya melihat pelapisan emas yang digunakan sebagai deskripsi untuk perangkat lunak adalah dalam sebuah makalah oleh Barry Boehm di mana ia memberikan akar penyebab berikut:

Pelapisan emas. Spesifikasi persyaratan tetap sebelum desain cenderung mendorong perangkat lunak pelapisan emas. Pengguna bertanya tentang persyaratan mereka akan sering beralasan, "Saya tidak tahu apakah saya akan membutuhkan fitur ini atau tidak, tapi saya mungkin juga menentukannya untuk berjaga-jaga."

Dalam uraiannya, ia merekomendasikan menggunakan metode yang dijelaskan dalam penelitiannya termasuk model siklus hidup perangkat lunak spiral di mana proyek-proyek dicakup untuk menghasilkan serangkaian prototipe satu per siklus, dan ketika spiral semakin besar, produk fitur lengkap. Spiral memiliki pengaruh luas menyebar di antara para peneliti perangkat lunak, dan merupakan jembatan penting antara air terjun dan Agile. Batasan kritis spiral adalah bahwa setiap kali mengelilingi spiral, siklus menjadi lebih lama dan lebih mahal.

Seperti Agile, spiral mencoba menghindari pelapisan emas dengan pelingkupan yang lebih sempit dan menjadwalkan proyek yang cukup lama sehingga tim dapat menyelesaikan persyaratan, sementara pada saat yang sama menjadi cukup pendek untuk memungkinkan fokus pada tujuan dari hari pertama hingga hari pengiriman. Salah satu cara metode Agile seperti Scrum lebih unggul adalah Scrum berlari untuk jangka waktu yang tidak lebih lama dengan iterasi. Dari makalah, manajemen proyek tampaknya memiliki pengaruh lebih besar pada pelapisan emas daripada pengembang individu.

Bakat untuk Tinju Waktu

Mampu kotak waktu sangat penting, tetapi itu bukan keterampilan biner. Anda tidak memilikinya atau tidak memilikinya. Anda lebih baik atau kurang baik dengannya. Apakah itu berasal dari atasan Anda atau dari Anda, saya lebih suka jika tidak ada yang mengatakan bahwa Anda tidak dapat menghentikan pelapisan emas. Itu terdengar pribadi, meresap, dan permanen.

Analisis akar penyebab mungkin membantu mengidentifikasi beberapa masalah. Saya cukup yakin mereka tidak semua akan menunjuk pada Anda, dan bahwa kecuali Anda bekerja dengan psikopat, orang lain di tim Anda akan melihat kebutuhan serupa untuk meningkatkan keterampilan Agile mereka. Jika Anda mengenal seseorang tanpa masalah, Anda tidak mengenalnya dengan baik. Jika Anda mengenal seseorang yang berpikir mereka tidak perlu meningkat, mereka tidak mengenal diri mereka dengan baik.

Saya harap perbaikan yang Anda identifikasi akan menjadi hal yang dapat Anda selesaikan dengan kesadaran dan bantuan Anda sendiri dari tim. Namun, saya pikir itu bukan di mana ini berakhir. Harapan saya dari penyelia atau manajer yang menulis ulasan Anda adalah mereka juga dapat melatih bawahan mereka untuk menjadi sukses. Ini sangat penting ketika organisasi sedang mengalami perubahan revolusioner seperti beralih dari yang direncanakan ke Agile (atau ad-hoc ke Agile).

Prototipe Dikelola Cepat atau Kotor atau Risiko?

Saya memiliki seorang manajer yang biasa meminta tugas dilakukan dengan cara tertentu.

Cepat dan kotor, tapi cantik.

Dia tahu kekonyolan dari ini, dan itu adalah bagian dari rasa humornya yang masam. Banyak orang mengatakan hal-hal seperti ini dan mereka benar-benar serius. Di suatu tempat, ada kompromi atau peluang untuk meredakan masalah dengan teknologi atau pendekatan yang ditingkatkan.

Apa yang bisa kita korbankan agar sesuai dengan kotak waktu kita?

Dalam bab satu dari Extreme Programming Dijelaskan , edisi kedua, Kent Beck berbicara tentang apa yang diperlukan untuk bergerak cepat. Jawabannya adalah "Anda hanya melakukan apa yang perlu Anda lakukan untuk menciptakan nilai bagi pelanggan."

Risiko

Dalam edisi pertama buku yang sama, Beck mengidentifikasi sedikit lebih dekat dengan pandangan Boehm tentang mengendalikan risiko sebagai hal yang kritis untuk metodologinya dengan mengatakan:

"Risiko adalah masalah dasar pengembangan perangkat lunak"

Dalam kedua edisi, Beck mendaftar dan menjelaskan delapan risiko umum, diikuti oleh pernyataan bahwa XP (atau mungkin dengan ekstensi, Agile) membahas masing-masing dengan cara tertentu. Bagi saya, sebagian besar penjelasannya bermuara pada penggunaan peningkatan yang lebih kecil dan iterasi yang lebih cepat memungkinkan kita untuk mengarahkan hal-hal kembali ke jalurnya sebelum risiko tumbuh terlalu besar untuk ditangani.

Mentalitas Kecukupan

Beck membahas sumber daya dalam konteks sebuah cerita tentang Penduduk Gunung dan Penduduk Hutan dan memperkenalkan konsep yang disebut "Mentality of Sufficiency". Dalam konteks situasi Anda, ia bertanya, "Bagaimana Anda melakukannya jika Anda punya cukup waktu?" Hanya satu bab pertama ini, tersedia sebagai pratinjau buku, dapat memberikan banyak makanan untuk dipikirkan tentang bagaimana XP (dan metode Agile lainnya) memikirkan kendala seperti waktu.

Paksaan Mungkin menjadi Gejala, Bukan Penyakitnya

Bertahun-tahun yang lalu saya melihat sebuah buku tentang penundaan yang menyatakan bahwa banyak penundaan muncul dalam ketakutan. Jika Anda tidak memulai, Anda tidak membuat kesalahan, dan mungkin Anda tidak akan dikritik. Paksaan dan perfeksionisme memberi sesuatu yang menurut akal sehat kita lebih baik daripada menunda-nunda, tetapi mungkin memiliki hasil yang sama. Pertimbangkan bahwa mungkin Anda mengalami masalah dengan penundaan dalam bentuk lain?

Kritik dan Persaingan

Dalam metodologi Agile seperti Scrum, peluang untuk dikritik atau dihukum karena penundaan tidak pernah lebih tinggi. Itu adalah lingkaran setan. Saya menunda-nunda karena saya dikritik, saya dikritik karena saya menunda-nunda. Dengan rapat scrum harian, kami selalu waspada karena kami selalu sehari atau kurang dari melaporkan kepada tim apa yang kami capai.

Dalam tim yang ideal, Scrum memberikan peluang harian untuk memperbaiki penundaan. Kesalahan seharusnya tidak punya waktu untuk menjadi besar sebelum bantuan tiba. Tim tidak selalu berada di tempat yang seharusnya mereka percayai, sehingga para pemimpin dalam tim mungkin perlu secara proaktif mengatasi kritik atau ketakutan kritik agar hal-hal bergerak maju.

Dalam dunia kerja kita, setiap orang dalam tim juga harus bersaing dengan yang lain. Ini agak skizofrenik untuk percaya memiliki tim yang berbagi pekerjaan dan kemuliaan untuk pencapaian, tetapi kemudian menggunakan proses manajemen kinerja tahunan yang memberi hadiah 20% dari anggotanya, menghukum atau mengusir 10% atau lebih dari anggota, dan berpura-pura bahwa 70% mayoritas berkontribusi terbaik tanpa insentif. Saya pikir ini adalah gajah besar di ruangan WRT yang mempromosikan kerja tim, dan untuk merujuk kisah Kent Beck, itu menunjukkan ikatan budaya yang mendalam untuk menjadi Manusia Gunung.

Jalan lurus

Sebagai anggota tim Agile, akan baik untuk belajar dan berdialog dengan orang lain tentang apa yang berhasil. Jika tim Anda menggunakan TDD untuk mengotomatisasi tes unit mereka dengan alat, mintalah orang yang melakukan yang terbaik untuk melatih Anda. Jika supervisor atau manajer Anda memiliki masalah dengan pendekatan dokumentasi Anda, cari tahu apa yang dia sukai atau siapa yang melakukannya dengan cara yang dia sukai, dan ikuti pendekatan mereka. Jika bermuara pada kecepatan pengkodean mentah, selidiki apa yang diperlukan untuk kode lebih cepat.

Para pemimpin dapat mengambil langkah-langkah ke arah yang benar dengan memberi contoh peran perilaku yang diinginkan seperti pembicaraan jujur ​​tentang masalah mereka sendiri (bukan masalah orang lain), menawarkan dan menindaklanjuti dengan bantuan, melakukan dialog tentang bagaimana tim dapat pindah ke gaya Agile Marine (yaitu tidak ada laki-laki tertinggal). Tidak semua orang di tim memiliki kemampuan yang sama. Mungkin tepat untuk mengeksplorasi anggota tim pasangan atau menugaskan tugas dan peran yang dapat menekankan kekuatan pelengkap dari orang-orang yang terlibat. Perencanaan untuk pertumbuhan atau remediasi keterampilan harus menjadi bagian pekerjaan yang berharga baik untuk penyelia maupun bawahan, tetapi harus terjadi sejak dini dan sering kali agar efektif.

Pengembang Don
sumber
Bagus, jawaban terinci. +1. Re "tetapi harus terjadi lebih awal": Ini musim gugur, jadi saya akan menggunakan analogi olahraga Amerika. Bayangkan jika tim sepak bola beroperasi seperti bisnis biasa dengan ulasan karyawan tahunannya. "Kami memotong gaji Anda sebesar 50%. Anda melewatkan tiga tangkapan mudah di pertandingan pertama, dalam empat pertandingan berikutnya Anda tidak bisa menghadapi permainan sampai kuartal kedua, dan menjalankan Anda di bawah standar sepanjang musim." Setahun sekali kritik lebih merusak daripada kebaikan. Tidak ada yang namanya kritik konstruktif jika terlambat datang.
David Hammen
Tautan rusak ke orang gunung dan orang hutan.
Wildcard
7

Apakah Anda juga memprogram untuk bersenang-senang? Saya juga sudah jengkel dengan pembatasan di tempat kerja yang tidak menyenangkan pemrograman, dan sebagai imbalannya kadang-kadang saya akan menjalankan proyek baru di rumah dan "melakukannya dengan benar". Perpecahan ini memungkinkan saya untuk memuaskan: kebutuhan saya dan perusahaan.

Atau, Anda dapat mengembangkan keterampilan baru selain pemrograman untuk dilakukan di waktu senggang Anda yang (pada akhirnya) memenuhi apa yang tidak dapat diberikan oleh pekerjaan itu. ;)

duanev
sumber
Selamat datang dan terima kasih telah membuat posting pertama Anda di Programmer Stack Exchange. Harap pertimbangkan untuk memasukkan pertanyaan tindak lanjut sebagai komentar untuk pertanyaan tersebut daripada sebagai jawaban. Anda dapat mempelajari lebih lanjut tentang kriteria untuk menulis pertanyaan dan jawaban berperingkat tinggi, dan mendapatkan lencana dengan membaca faq di programmers.stackexchange.com/faq
PengembangDon
Terima kasih duanev, paragraf pertama Anda pasti benar juga!
Andy Bowskill