Oh boy, itu banyak jika Anda benar-benar berarti semuanya terjadi pada Anda!
PERINGATAN : Dalam banyak poin di bawah ini Anda mungkin merasa seperti saya mengkritik Anda dan bahwa saya ingin membuat Anda bertanggung jawab atas kesalahan-kebahagiaan dan tidak mempertimbangkan faktor-faktor eksternal. Bukan saya. Hanya saja Anda tidak memberikan banyak perincian, dan saya hanya memberikan daftar tindakan untuk memastikan bahwa semuanya tidak berjalan salah. Saya tahu saya sendiri telah melakukan banyak kesalahan (semua orang) dan kita hanya akan menjadi lebih baik jika kita belajar darinya. Dan untuk belajar dari mereka, kita harus mulai melihatnya sebagai kesalahan sejak awal, dan menerima tanggung jawab atas kesalahan kita. Sial, terima tanggung jawab atas kesalahan yang terjadi di bagian orang lain, Anda bisa belajar dari itu juga.
Proyek Anda gagal
Tidak banyak yang dapat Anda lakukan untuk mengurangi itu sekarang.
Namun Anda dapat melakukan banyak hal untuk menghindari hal itu terjadi di masa depan. Saya sarankan mencoba meningkatkan keterampilan manajemen proyek dan waktu Anda.
Salah satu buku dengan rasio terbaik ((saran yang valid) / halaman) yang pernah saya baca tentang subjek ini, sementara mungkin bukan yang terbaik, itu adalah Rad Thomsett's Radical Project Management .
Anda tidak benar-benar menentukan apa proyek Anda gagal, tetapi saya akan menganggap kombinasi hal yang membawa ketidakseimbangan dalam biaya / waktu / qualiy segitiga biasa . Faktor yang paling penting di mata saya adalah untuk memimpin proyek dan pengembangan sambil selalu berhubungan dengan kedua aktor teknis Anda (pengembang dan penguji) tetapi juga para pemangku kepentingan Anda. Terlalu banyak proyek gagal karena tidak mendengarkan sponsor atau pemangku kepentingan dan tidak mendorong mereka untuk terlibat dalam proses.
Jika mereka tidak terlibat, Anda tidak bisa tahu apa yang mereka inginkan. Jika Anda tidak tahu apa yang mereka inginkan, Anda tidak bisa mengirimkannya. Jika Anda tidak mengirimkannya, mereka tidak akan senang. Itu gagal. Selain itu, jika Anda tidak melibatkan pemangku kepentingan Anda, mereka terputus dari realitas rekayasa perangkat lunak, yang berarti mereka tidak memahami masalah Anda. Jika mereka sering berhubungan dengan Anda, mereka mendapatkan pemahaman yang lebih baik tentang apa yang harus Anda tangani. Mereka akan lebih bisa memahami ketika Anda memberi tahu mereka bahwa fitur [tawa] "kecil" akan memakan waktu berbulan-bulan. Mereka dapat mempercayai perencanaan Anda dengan lebih baik karena mereka membantu membangunnya. Sebuah proyek tidak dapat berhasil hanya dengan "spesifikasi di awal, dev, pengujian, pengiriman di akhir". Itu tidak pernah terjadi. Anda dapat memberikan apa yang diminta dalam spesifikasi,
Yang paling penting juga, lakukan retrospektif , dan pastikan itu tanpa ego dan bukan permainan menyalahkan. Identifikasi saja masalah.
Pengodean yang Anda habiskan selama berhari-hari ditolak oleh tim Anda
Saya sudah dalam situasi itu. Sekali lagi, tidak banyak yang dapat Anda lakukan untuk mengurangi itu kecuali:
- Simpan di SCM untuk nanti.
- Mungkin mencoba untuk mendorong potongan-potongan kecil secara progresif ke basis kode utama alih-alih refactoring besar.
Tetapi ada beberapa hal lagi yang dapat Anda lakukan untuk mencegah situasi seperti ini:
- Kenapa ini terjadi? Apa alasan penolakan itu?
- Sebagian besar waktu ketika saya melihat ini terjadi (dan itu juga terjadi pada saya), itu berarti pengembang menjadi solo atau dalam mode pengodean cow-boy dan menghasilkan hal-hal yang tidak pernah diminta. Kode yang tidak berasal dari persyaratan bisnis mungkin mewah dan "lebih baik", tetapi seringkali membuang-buang waktu dan uang. Plus, akan lebih mahal jika Anda mengintegrasikannya karena akan perlu pengujian lagi. Berpikirlah seperti orang-orang yang memberi Anda uang: Anda harus efisien pada tingkat itu juga.
- Apakah kualitas perangkat lunak yang dihasilkan memuaskan? Apakah itu mematuhi standar dan konvensi dalam kegiatan di perusahaan Anda?
- Apakah Anda secara berkala (dan sering!) Melaporkan kepada manajer langsung tentang hal ini? Apakah Anda sesekali bertukar dengan pengembang tim lainnya? Jika tidak, mereka tidak tahu apa-apa tentang itu, itu akan menjadi biaya waktu yang sangat besar bagi mereka untuk menilai dan memeriksanya sekarang. Ini TIDAK memperhitungkan waktu yang sama pada akhirnya. Ini seperti selalu mencoba menunda membersihkan apartemen sewaan Anda dan kemudian mencoba untuk membersihkannya hanya ketika Anda pindah: Ini adalah pekerjaan yang buruk, melelahkan, lebih sulit daripada seharusnya jika dilakukan secara teratur, dan seringkali tidak akan dilakukan Baik.
- Apakah Anda menghasilkan tes produksi? Tes unit? Tes integrasi?
- Apakah kode Anda diperiksa ke dalam SCM secara teratur? Apakah itu di cabang yang berbeda? Apakah perlu cabang lain atau mungkinkah dilakukan di bagasi? Menunda kode komitmen biasanya merupakan pertanda buruk. Jelas kadang-kadang Anda tergoda untuk melakukannya, tetapi Anda hanya menembak diri sendiri.
Tidak ada yang mendengarkan ide Anda di perusahaan Anda
Ada 2 opsi di sini, dan kita akan melihat keduanya:
- Ide Anda buruk.
- Ide Anda bagus.
Mari kita mulai dengan menganggap mereka buruk (sekali lagi, merefleksikan diri sendiri tentang itu dan menerima ide Anda benar-benar buruk mungkin sulit, saya tahu). Apa yang Anda lakukan untuk mengubahnya?
- Mengapa Anda datang dengan ide itu? Apa alasannya ? Apakah ada kebutuhan nyata atas apa yang coba dibawa oleh ide Anda ke meja?
- Bagaimana Anda mendapat ide itu? Apakah Anda melakukannya sendiri? Apakah Anda berbagi? Brainstorm? Rencana? Prototipe? (lakukan ini dalam urutan yang benar. Jika gagal di jalan, maka buang idenya, jangan teruskan. Atau setidaknya tidak pada jadwal kerja Anda.)
Gagasan hanyalah gagasan. Jika Anda hanya menyarankan mereka sebagai ide dan mereka ditolak, saya tidak melihat mengapa Anda akan merasa sedih karenanya. Namun jika Anda bertindak atas mereka tanpa memberitahu siapa pun dan MAKA hanya mengirimkan ide-ide Anda dan mereka ditolak, jelas saya merasakan frustrasi pada saat itu sia-sia. Dan manajer Anda melakukannya!
Anggap ide Anda bagus:
- Apakah presentasimu bagus?
- Apakah cara Anda menyampaikan presentasi itu baik? (Saya seorang pengembang, saya tahu apa yang saya bicarakan: Kami PITA yang pemarah, sombong , dan bertele-tele yang selalu benar dan dengan siapa sulit untuk bekerja sama karena sering kali ego kita yang tidak proporsional ).
- Apakah Anda memiliki rencana untuk mengimplementasikannya? Apakah Anda memikirkan biaya dan waktu? Apakah Anda memikirkan manfaatnya bagi pengguna / pelanggan? Apakah Anda memikirkan dampaknya terhadap penjualan? Apakah Anda berpikir bagaimana mengerjakan ide itu dapat memengaruhi proyek dan prioritas lain? Anda akan memberi tahu saya, "mengapa saya harus melakukan semua ini, mereka adalah pekerjaan manajer saya dan tim pemasaran atau penjualan ?!" Kecuali saat ini, Anda mencoba melakukan sebagian dari semua pekerjaan mereka.
Pola desain yang Anda perkenalkan dengan kekuatan di tim Anda membuat kekacauan
- Mengapa Anda memperkenalkan polanya?
- Jika itu membuat kekacauan, maka kemungkinan itu salah:
- bukan pola yang tepat,
- tidak diterapkan dengan benar,
- tidak terintegrasi dengan benar.
- Bagaimana Anda memperkenalkannya? Bagaimana tepatnya Anda mendefinisikan negara "berantakan"?
- kode yang kurang mudah dibaca?
- kurang bisa dirawat?
- membangun rusak?
- Ada berbagai jenis "kekacauan". Mengetahui apa kekacauan itu mungkin membantu untuk mengetahui apa kegagalan di sana, dan apakah itu kesalahan pola desain.
Juga, saya sedikit terkejut dengan pendekatan itu sendiri. Anda harus benar-benar mendorong untuk pola desain yang akan diperkenalkan? Itu agak aneh. Sebuah pola sudah ada di sana, atau Anda perlu memperbaiki bagian dari solusi Anda sesuai dengan pola tersebut. Anda tidak mendorongnya seperti Anda akan mengadopsi kerangka kerja atau teknologi (seperti orang - orang mendorong sangat keras untuk memiliki XML di mana-mana, dan sekarang seperti orang-orang mulai mendorong untuk dapat menulis HTML5 pada sampul produk mereka dalam huruf-huruf besar yang terang).
Mengapa Anda harus mendorong? Mengapa ada perlawanan? Mungkin itu dibenarkan.
Apakah Anda dapat memberikan contoh bahwa pola tertentu ini akan membantu meningkatkan basis kode Anda secara signifikan (misalnya, dengan mencocokkannya dengan contoh Refactoring ke Pola ).
Catatan yang sepenuhnya di luar topik, tetapi itulah yang pertama kali saya pikirkan ketika saya membaca judul pertanyaan ketika saya pikir itu merujuk pada kegagalan perangkat lunak ... Saya memiliki perangkat lunak yang mengimplementasikan kelas BlackHole untuk mengelola jenis pengecualian yang sangat khusus di salah satu komponen. Ini mungkin terlihat seperti (dan benar-benar) peretasan yang jelas-jelas aneh dan kotor, tetapi penamaannya sendiri sangat luar biasa, kami semua menghargainya karena cara yang cukup keren untuk menangani kegagalan! :)