Apa yang akan Anda tambahkan dalam Daftar Periksa Proyek Pengembangan Perangkat Lunak ini? [Tutup]

14

Saya penggemar daftar periksa. Ada Travel Checklist , Moving Checklist, dan bahkan Scrum Checklist .

Konteks : Anda telah direkrut oleh perusahaan besar dan diberi misi untuk mengatur seluruh lingkungan pengembangan perangkat lunak, proses, tim, dll. Anda memiliki "carte blanche". Anda akan bertanggung jawab atas pembuatan penambahan perangkat lunak yang berfungsi. Ukuran proyek: 2000 orang / hari.

Item apa yang akan Anda tambahkan ke daftar centang berikut (sengaja kecil dan tidak lengkap):

  • Instal Server Integrasi Berkelanjutan
  • Tulis DoD
  • Tulis pedoman pengkodean satu halaman
  • Buat jaminan produk
  • Instal Sistem Pelacakan Bug
  • Jadwalkan Waktu Wajah Biasa
Thomas Owens
sumber

Jawaban:

10

* 1.) Bicaralah dengan pengembang untuk melihat apa yang benar-benar mereka butuhkan! *

2.) Selidiki solusi untuk memunculkan beberapa lingkungan dengan sangat cepat (pikirkan contoh cloud publik atau pribadi atau mesin virtual kuno jika Anda tidak mematuhi kata kunci)

3.) Kontrol sumber / versi

4.) Sistem peninjauan kode (Crucbile / Fisheye sebagai contoh)

5.) Dinding Kanban (atau yang serupa)

6.) Protokol komunikasi (obrolan waktu nyata adalah nilai tambah yang besar), wiki juga mendorong kolaborasi. Ini juga mencakup hubungan masyarakat secara internal - bagaimana Anda akan terlibat dengan pemilik bisnis, staf dukungan teknis, dan kelompok lainnya?

7.) Papan tulis elektronik

8.) Lingkungan yang nyaman untuk pengembang (sofa, meja, area bersantai, WiFi yang baik, dll)

9.) Kopi yang enak !!!

Martijn Verburg
sumber
kopi membuat perbedaan:) + 1
RBA
apa papan tulis elektronik yang Anda gunakan?
@Pierre 303 - Mencetak hasil sesi papan tulis a (foto berkualitas tinggi akan melakukan trik yang sama kurasa).
Martijn Verburg
8
  • Pengaturan Toolchain - IDE, server CI, server kualitas kode, kontrol sumber, server web, basis data, pelacak masalah, dll.
  • Cadangan - Peran apa yang dimiliki setiap orang dalam tim? Proses / modul apa yang dia 'miliki' dan siapa cadangannya?
  • (Penerimaan Pengguna) Pengaturan lingkungan pengujian - Tidak hanya integrasi berkelanjutan. tes unit, tetapi tes integrasi untuk mencakup hal-hal yang benar-benar buruk, beberapa platform, server aplikasi, VM, dll.
  • Pengaturan Tes Kinerja - Semakin awal semakin baik, karena Anda akan memerlukan data historis untuk menjawab "Dengan fitur / tonggak manakah kinerja turun begitu buruk?"
  • (Pengguna Akhir) Garis besar dokumentasi - Apa yang akan ada dalam dokumentasi? Apa jenis dokumentasi yang dibutuhkan?
  • Saluran pemasaran - Bagaimana tonggak internal dan rilis eksternal diumumkan? Apakah Anda memiliki nama keren untuk perangkat lunak, logo, warna, kata-kata dll?
  • Komunikasi internal - Bagaimana rekan sejawat dari tim lain akan diberi informasi tentang perubahan? Bagaimana kolaborasi dilakukan? Wiki? Hak akses?
  • Orang & proses Penjaminan Mutu - Siapa yang akan menguji kriteria apa, seberapa sering, dan apa?
  • Proses rilis - Kapan, seberapa sering, bagaimana, siapa yang melakukannya, siapa yang menerima rilis dll.
  • Manajemen risiko - Skenario Kasus Terburuk (dari proyek mgmt pov dan dari runtime pov, mis. 'Pelanggan kehilangan uang karena perangkat lunak gagal pada modul X, apa rencana cadangan?)
  • Mengamankan lingkungan pengembangan inti, mis virtualisasi untuk Escrow
  • Lokasi untuk pertemuan formal dan informal
  • Pelatihan atau intro untuk semua orang, sehingga mereka tahu apa semua pengaturannya, untuk apa masing-masing bagian dan bagaimana mereka menggunakannya.
  • Mengidentifikasi juru kunci dan memberinya semua hal (mis. Izin) yang benar-benar harus diurusnya ketika segalanya memburuk
mhaller
sumber
+1 untuk cadangan dan pelatihan
Liviu T.
backup, walaupun saya pikir beberapa di antaranya terlalu berat.
BlackICE
5

Ulasan Postmortem - Karena Anda sedang mengerjakan berbagai hal dalam blok, saya akan menjadwalkan review satu hingga dua jam (tergantung pada ukuran tim) untuk mengadakan pertemuan tatap muka (jika mungkin) di mana semua orang berkeliling dan mengatakan apa yang dilakukan dengan benar, apa bisa dilakukan lebih baik, dan apa yang tidak diperlukan. Mampu belajar dari kesalahan Anda dalam proses pengembangan awal berarti Anda dapat menghindari melakukannya nanti ketika Anda tidak punya banyak waktu untuk bekerja.

rjzii
sumber
4

Mari kita mulai dengan merekrut tim profesional profesional yang tepat untuk proyek Anda. Dalam aplikasi bisnis biasa, Anda perlu merekrut pengembang basis data dan dba, orang QA, admin sistem, analis bisnis, pengembang aplikasi, spesialis UI, dan arahan tim minimal. DBA, System Admin, analis bisnis, dan QA harus berada dalam rantai pelaporan terpisah dari tim pengembangan. Spesialis basis data pengembangan harus melapor ke pimpinan teknis yang sama dengan pengembang aplikasi dan spesialis UI.

Siapkan ruang kantor. Kantor pribadi sangat bagus jika Anda bisa mendapatkannya (saya berharap Anda beruntung dengan ini), tetapi di minumum Anda memerlukan meja, telepon, komputer, papan tulis dan beberapa ruang konferensi khusus. Pastikan ada tempat untuk istirahat makan siang, lemari es, minuman ringan, makanan ringan, dan kopi tersedia. Minuman ringan dan kopi gratis bahkan lebih baik.

Menyiapkan dev / qa / staging dan mendorong server untuk aplikasi dan database. Database tidak boleh berada di server yang sama dengan aplikasi. Bergantung pada ukuran dan ruang lingkup proyek, Anda mungkin perlu beberapa server atau SAN, dll untuk setiap lingkungan.

Segera setelah server diatur, jadwalkan pencadangan dari sistem file, basis data dan log transaksi basis data. Lakukan ini pada hari pertama semuanya diatur. Menyewa perusahaan seperti Iron Mountain untuk mengambil cadangan di luar situs setiap minggu.

Menyiapkan sistem kontrol sumber dan membuat dokumen yang menjelaskan bagaimana itu akan digunakan. Jangan lupa untuk bersikeras bahwa SEMUA perubahan struktural basis data dan sisipan data untuk tabel jenis pencarian harus dalam skrip dalam kontrol sumber. Ini akan membuat penyebaran lebih mudah.

Beli perangkat lunak komersial atau unduh perangkat lunak open source untuk toolset yang Anda putuskan untuk digunakan dengan lisensi untuk semua pengguna terkait.

Beli mesin pengembang yang berteriak cepat dan memiliki dua monitor. Beli setidaknya satu mesin uji pengguna yang mengerang lambat dan khas apa yang akan dimiliki pengguna di desktop mereka.

Latih pengembang baru Anda tentang bagaimana Anda ingin segala sesuatunya selesai. Jika Anda memiliki tim yang cukup besar untuk memiliki beberapa pengembang junior, maka jadwalkan pelatihan tambahan untuk mereka dan sertakan waktu dalam perencanaan proyek Anda. Pantau juniornya dengan sangat erat selama setidaknya tiga bulan. Pantau semua karyawan baru dengan cermat untuk bulan pertama. Singkirkan pengembang kayu mati dan nakal sesegera mungkin.

Tentukan apa yang perlu dilakukan dalam urutan apa (jalur kritis). Jangan tetapkan tugas di ujung jalur kritis sampai tugas yang menjadi sandarannya selesai.

Buat rencana dan persyaratan pengujian.

Atur pertemuan kemajuan terjadwal secara teratur dengan klien. Mereka layak tahu apa yang Anda lakukan dan apa hambatannya. Jangan gagal memberi tahu mereka kapan akan terlambat. Jika Anda tiga minggu lagi dari tenggat waktu dan Anda sudah tahu Anda akan melewatkannya, defisit itu tidak akan hilang secara ajaib sebelum Anda harus memberi tahu klien. Pastikan bahwa klien tahu bahwa persyaratan tambahan berarti biaya tambahan dan waktu dan bahwa setiap persyaratan tambahan harus memiliki tugas lain yang dibatalkan atau batas waktu akan berubah dengan jumlah jam dalam tugas-tugas baru. Menjelaskan hal ini sejak awal akan menghemat banyak rasa sakit dan jam lembur dan kelebihan biaya yang diserap oleh kelompok Anda dan bukan klien.

Siapkan lingkungan untuk pengujian kinerja, bukan hanya kecepatan satu pengguna, tetapi juga lingkungan tempat Anda dapat menguji jumlah pengguna simultan yang diharapkan. Jangan menunggu untuk melakukan pengujian ini sampai sehari sebelum Anda ditayangkan.

Dalam perencanaan proyek, anggap QA akan menemukan bug dan mereka akan membutuhkan waktu untuk memperbaikinya. Jangan menjadwalkan QA hanya satu hari di akhir.

Buat data uji yang kira-kira ukuran yang Anda pikir akan menjadi basis data. Buat semua pengembang menguji kode mereka terhadap database ukuran ini. Jangan izinkan pengembang hanya mengembangkan terhadap basis data kecil di mesin pribadi mereka. Ini adalah penyebab sering kode yang berfungsi dengan baik hingga mencapai produksi.

Rencanakan imbalan ke dalam anggaran. Ini mendemotivasi orang ketika mereka bekerja selama berbulan-bulan dan hanya manajer yang mendapat bonus. Juga ucapkan terima kasih sering dan secara tertulis.

Anda mungkin memerlukan sistem manajemen proyek atau setidaknya mengatur spreadsheet untuk melacak apa yang perlu Anda lacak. Saat melakukan perencanaan proyek, anggap tidak lebih dari enam jam sehari dalam rencana Anda. Ini membantu memperhitungkan waktu yang akan dihabiskan bukan untuk proyek, seperti liburan, waktu sakit, liburan, pertemuan SDM, ulasan kinerja, dll. Jika Anda tahu proyek ini dalam periode ketidaktersediaan yang tinggi (katakanlah proyek yang berjalan dari Nov1 - 1 Jan di AS), Anda mungkin perlu membuat tunjangan tambahan untuk lebih banyak waktu cuti dan liburan. Tidak adil untuk mengharapkan bahwa pengembang akan memberikan cuti dan liburan mereka dan tidak ada yang bisa memprediksi kapan hal-hal seperti waktu sakit, tugas juri, waktu berkabung dll akan terjadi. Asumsikan mereka akan terjadi pada tim Anda di proyek ini.

HLGEM
sumber
Saya pikir mesin uji pengguna harus "mengerang lambat", bukan "menjerit lambat";) daftar yang sangat bagus.
BlackICE
@david, saya suka saran Anda dan telah mengubahnya dalam teks.
HLGEM
Jawaban yang bagus - poin-poin atau nama bagian mungkin sedikit membantu.
JBRWilkinson
3

Beberapa hal yang tidak saya lihat dalam pertanyaan dan jawaban berikutnya:

  • Rencana Pemulihan Bencana. Bagaimana Anda mencadangkan kotak dev, pementasan, pengujian dll? Apakah setiap pengembang memiliki apa yang mereka butuhkan untuk bekerja dari rumah di hari salju sesekali? Dll

  • Rencana Pelatihan. Berapa minggu pelatihan yang harus dilakukan devs Anda agar tetap tajam? Adakah yang melacaknya? (Lembar kerja dapat mencukupi untuk sebagian besar tim.) Memiliki mekanisme bagi mereka untuk melaporkan (mengirim seseorang email yang mengatakan bahwa mereka menonton 2 jam siaran web tentang "apa pun" mungkin cukup) dan bagi manajemen untuk merencanakan - misalnya siapa yang harus kita kirim ke apa konferensi tahun ini.

  • Posisi Alat. Apakah ini "kami memberi Anda semua langganan MSDN; tolong jangan instal apa pun di mesin kerja Anda" jenis tempat atau "kami menginginkan kode Anda, tetapi kami tidak peduli apa yang Anda gunakan untuk mengedit, menyusun dan mengujinya "semacam tempat. Buat dan catat keputusannya.

  • sebanyak ALM terintegrasi yang Anda bisa berdiri atau mampu. Biasanya alasan untuk "ketidakcocokan impedansi", entri ganda, tumpang tindih alat, dan integrasi aplikasi kursi putar adalah bahwa sistem tumbuh sedikit demi sedikit. Mulai dari awal, Anda ingin menunjukkan bahwa orang-orang Anda dapat tetap menggunakan satu alat selama siklus. Tidak mengetik kode dalam X, mengkompilasi dengan Y, menguji dengan Z, mengubah status item pekerjaan / tugas dengan A, melaporkan waktu mereka dihabiskan dengan B, memberi tahu orang yang sedang menunggu bahwa mereka sekarang dapat melanjutkan dengan C, mencoba mencari angka apa yang harus dilakukan selanjutnya dengan D, kemajuan keseluruhan guaug dengan E, dll.

Kate Gregory
sumber
2

Negosiasikan lebih banyak hari kerja.

Ini adalah peristiwa langka ketika orang mengalokasikan cukup pada awalnya.

[Kemudian ... negosiasi ulang lebih lanjut ...]

Orbling
sumber
Memiliki pandangan bahwa lebih banyak hari kerja harus selalu dinegosiasikan bukanlah sesuatu yang akan saya rekomendasikan, saya lebih suka untuk memberikan perkiraan yang akurat dan dapat diandalkan tentang durasi pekerjaan atau proyek.
NimChimpsky
@NimChimpsky Ada diskusi di sini baru-baru ini tentang apakah kemampuan untuk memperkirakan dengan andal adalah mitos dalam proyek komputer. Kecuali jika pekerjaannya sangat terkenal dan tidak mengandung penelitian, maka secara intrinsik sulit untuk memprediksi waktu. Bahkan jika Anda dapat memprediksi jadwal tim Anda sendiri - memprediksi faktor-faktor eksternal dan penundaan hampir tidak mungkin. Jadi perkiraan "akurat dan dapat diandalkan" bukanlah sesuatu yang saya yakini ada sebagai umum.
Orbling
@Orbling mereka ada di tempat saya bekerja. Sekitar 250 pengecer nasional terdaftar di Inggris. Beberapa proyek terlambat, tetapi tidak terlalu terlambat, dan mereka adalah pengecualian.
NimChimpsky
@NimChimpsky Dimungkinkan untuk mendapatkan perkiraan yang relatif akurat jika Anda memiliki kendali penuh atas semua hasil dalam suatu proyek, tidak diblokir oleh pihak luar dan tugas yang ada tidak melibatkan penelitian. Memberikan anggaran Anda meluas ke analisis menyeluruh sebelum estimasi waktu. Di sebagian besar perusahaan, anggaran tidak ada untuk menyelidiki sepenuhnya sebelum dimulainya.
Orbling
@orbling Mungkin saja selalu meminta lebih banyak waktu adalah murni arbitrer dan sama sekali tidak didasarkan pada bukti, hasil, analisis atau anggaran.
NimChimpsky
2

Melihat bahwa saya memiliki masalah paling besar dengan perpustakaan pihak ke-3 dan penggunaannya:

  1. Tentukan perpustakaan dan versi yang akan Anda gunakan.
  2. Buat proses mengintegrasikan pembaruan perpustakaan ke proyek Anda.
  3. Pastikan pengembang semua ada di papan pilihan perpustakaan.
  4. Buat saluran yang bermanfaat untuk diskusi terbuka tentang teknologi yang digunakan.

Mengapa? Saya tidak dapat memberi tahu Anda berapa kali perpustakaan pihak ke-3 (milik) memiliki bug henious yang mengirim kami kembali minggu waktu pengembangan karena kami tidak memiliki proses untuk bergerak naik atau mundur. Atau berurusan dengan pengembang yang mengatakan "versi mana yang Anda gunakan? Mengapa Anda menggunakan fungsi yang ditandai usang?"

wheaties
sumber
1

Biaya besar bagi organisasi tidak menetapkan anggaran untuk keamanan selama siklus hidup pengembangan, ini berarti keamanan biasanya berakhir setelah fakta yang tidak efektif, serangkaian kegiatan atau kontrol yang mahal dilakukan terlambat untuk melakukan banyak hal baik.

Dapatkan keamanan yang dibangun dari rencana proyek awal, dengan tonggak penting, sama seperti yang Anda lakukan dengan semua aspek pembangunan lainnya, dan gunakan proses berulang-ulang untuk menjaga agar panduan keamanan tetap mutakhir. Pengunduran diri terakhir dari keamanan harus sepuluh menjadi pemeriksaan yang tidak mengejutkan bahwa semua kontrol keamanan dilaksanakan sesuai desain.

Kalau tidak, Anda akan berakhir menjalankan keamanan setelah implementasi - yang biayanya 8 - 10 kali lipat (angka dari Gartner, IBM, dan lainnya), akan membuat orang kesal karena fungsionalitas kemungkinan akan terpengaruh dan mungkin sudah terlambat untuk mencegah eksploitasi dan kerusakan.

Rory Alsop
sumber
Saya ingin tahu, ini harus menjadi bagian dari daftar periksa pengaturan proyek? Saya memasukkannya sebagai bagian dari pengembangan perangkat lunak, tetapi saya tidak tahu tentang pengaturan proyek. Saya akan memasukkannya dengan tonggak dev, tapi saya tidak berpikir itu yang ditanyakan OP, saya bisa salah.
BlackICE
David - mungkin Anda benar bahwa level detail ini seharusnya tidak ada di sana, tapi saya pikir setidaknya harus ada item baris untuk keamanan. Lebih baik?
Rory Alsop
1

1. Bawa ke tim

Tanyakan kepada programmer! Sungguh, itu hal yang paling penting. Anda akan menemui banyak perlawanan jika para devs tidak terlibat langsung dalam perubahan ini. Bagaimanapun, ini tentang bagaimana mereka bekerja, bukan kamu. Tak usah dikatakan, tetapi mencoba untuk memaksa metode dan alat pada orang biasanya menjadi bumerang mengerikan.

2. Memeriksa dan beradaptasi

Mintalah tim mencari cara terbaik untuk bekerja, menggunakan pengalaman Anda untuk dengan lembut membantu mereka mencapai jalur yang dipilih. Kemudian, secara teratur dan kolaboratif, lihat kembali bagaimana Anda (mereka) melakukan dan menyesuaikan proses untuk membuatnya lebih baik.

Martin Wickman
sumber