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?
agile
programming-practices
productivity
development-process
scrum
Andy Bowskill
sumber
sumber
Jawaban:
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.
sumber
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.
sumber
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:
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.
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:
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.
sumber
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. ;)
sumber