Cara Menentukan Jumlah Programer yang dibutuhkan untuk suatu proyek

18

Bagaimana Anda tahu berapa banyak programmer yang dibutuhkan proyek tertentu untuk berhasil?

Perusahaan tempat saya bekerja memenuhi pesanan untuk perusahaan klien. Kami telah menulis sistem manajemen gudang in-house yang menangani manajemen inventaris berbasis lokasi, pemrosesan pesanan, pembuatan bill-of-lading, penagihan, pengauditan dan pelaporan barang (mungkin 50 laporan). Ini juga memiliki fungsi pemindaian barcode dan portal klien bersama dengan puluhan fitur lain yang lebih kecil. Ini juga mencakup kunci waktu karyawan penuh. Terintegrasi dengan Quickbooks, UPS dan FedEx. Ini menangani pekerjaan untuk setidaknya 50 klien, semuanya sedikit berbeda dalam fungsinya. Misalnya, kami mengimpor pesanan dari file yang dikirim oleh pelanggan tetapi setiap pelanggan mengirimkan format file yang berbeda (csv, excel, flat file, dan layanan web) sehingga kami memiliki lebih dari selusin pengaturan metode konversi pesanan. Ekspor adalah cerita yang sama.

Proyek ini kompleks dan berkembang dalam kompleksitas setiap hari dengan lebih dari seperempat juta baris kode. Ini sekitar 250.000 baris kode VB.NET, 6.200 baris kode Ruby dan mungkin 5.000 baris PHP. Ini juga memiliki database MySQL dengan sekitar 200 tabel.

Karena persyaratan yang terus berubah dan kebutuhan yang berbeda dari puluhan klien, kode itu sendiri sangat bervariasi dalam kualitas dari sangat miskin ke kode yang relatif baik.

Saat ini, proyek ini hanya memiliki satu programmer - sendiri. Saat ini saya juga melakukan semua dukungan produk untuk perusahaan kami yang terdiri dari 75 orang. Itu termasuk pemecahan masalah dan pengaturan klien baru dan semua fitur baru yang diperlukan. Plus, kami mencoba untuk menulis ulang semuanya menjadi 100% berbasis Ruby on Rails. Dan kami ingin memasarkan seluruh sistem dalam satu tahun ke depan atau lebih untuk digunakan oleh perusahaan lain.

Saat ini, kami hanya memiliki diri saya sebagai seorang programmer tetapi saya tidak percaya itu sudah cukup. Apakah ada yang punya rekomendasi untuk berapa banyak programmer yang harus memiliki proyek sebesar ini atau bagaimana kita harus menentukan jawaban untuk pertanyaan itu? Terutama mengingat fakta bahwa manajemen ingin produk menjadi kualitas komersial tahun depan?

kstevens715
sumber
11
Saya sedang menunggu lelucon bola lampu :(
Oded
lol ... google judulnya dan Anda mungkin akan menemukannya. Ketika saya googling, saya benar-benar menemukan sekelompok lol yang tidak sengaja.
kstevens715
8
Jika persyaratan terus berubah, tidak ada tangan tambahan yang akan membuat produk ini dikirim dan keluar dari pintu. Anda harus memenuhi persyaratan terlebih dahulu.
Oded
Itu benar dalam kasus saya. Saya tahu pertanyaan yang saya ajukan mungkin tidak terlalu bisa dijawab. Tetapi jika saya dapat membandingkan jenis proyek apa yang sedang dikerjakan orang lain dan berapa banyak orang yang terlibat penuh waktu dalam proyek-proyek itu, mungkin itu akan membantu.
kstevens715
Pertanyaan ini tampaknya sangat mirip dengan pertanyaan ini . Mungkin Anda juga akan menemukan beberapa jawaban yang berguna.
S.Robins

Jawaban:

3

Saya akan mengatakan setidaknya 5 orang. Satu untuk pengujian, satu untuk spesifikasi, dukungan dan dokumentasi dan 3devs. Ada banyak hal yang harus diuji dalam kasus Anda, jadi 50% tester khusus seharusnya tidak masuk akal. Seseorang yang menuliskan persyaratan dan meminta dukungan pelanggan untuk menyiapkan infrastruktur Anda untuk pengujian, dll. Harus ada di sana. Tiga pengembang yang saya rasa cukup rendah untuk proyek seperti ini. Bagian belakang yang besar yang terintegrasi ke banyak sistem pihak ketiga, dan lengkap lengkap dengan banyak laporan khusus. Saya ingin memilikinya.

  1. Pengembang back end yang baik (kegigihan / lapisan bisnis)
  2. Pengembang kelas menengah / akhir yang baik membuat kelas tindakan dan Desain CSS JavaScript.
  3. Arsitek akting pengembang yang baik tetapi juga membuat kode di semua lapisan dengan bantuan ahli dari dua lainnya. Pengembang ini juga dapat melakukan hal-hal seperti mengatur kerangka kerja JUnit percabangan Maven Jenkins Git dan sebagainya.

Apa yang terjadi jika Anda pergi, sakit, berlibur, dll. Satu orang per proyek tidak pernah pintar. Juga tidak baik untuk sendirian karena Anda tidak berevolusi secara profesional tanpa rekan kerja. Saya bekerja cukup sering sendirian, membuat arsitektur baru dan sebagainya, sering kali dalam tim yang terdiri dari 5 pengembang, tetapi saya tidak pernah berevolusi sebanyak ketika saya berkata kepada rekan kerja, mari kita atur ini bersama-sama dan kita mengunci diri kita seminggu, berbicara, berdiskusi dan memilih kerangka kerja. Pemrograman pasangan sangat memberi dan tidak dapat dilakukan dengan satu pengembang, dan siapa yang akan membuat tinjauan kode jika Anda merasa tidak pasti? Jika Anda terjebak, siapa yang akan membantu Anda? Saya hanya akan melakukan proyek satu orang jika itu merupakan bagian dari ruang lingkup yang lebih besar dan dapat meminta sumber daya ahli jika diperlukan.

Petani atau
sumber
1
Saya mengambil liburan 2 hari musim panas lalu dan seseorang harus masuk ke rumah saya untuk mendapatkan laptop saya ... ya. Saya selalu berbicara tentang bekerja di ruang hampa karena saya tidak memiliki banyak pengembang lain untuk berinteraksi. Dan tinggal di kota kecil bahkan tidak ada grup pengguna atau apa pun untuk bergabung. Kami (saya?) Baru mulai menulis kode uji baru-baru ini, sebenarnya ketika kami mulai beralih ke Rails. Saya sudah tidak bisa membayangkan berkembang tanpa tes. Saya suka gagasan memiliki tester khusus 50%.
kstevens715
1
Setidaknya satu dev harus menjadi sepcialist basis data.
HLGEM
8

Selamat datang di dunia sumber daya yang kerap kali sulit !

Masalahnya bukan pada Ukuran Proyek vs Ukuran Tim. Itu kesalahpahaman yang sangat umum yang sering menyembunyikan masalah lain yang biasanya terkait manajemen. Masalahnya adalah semua tentang Lingkup . Anda perlu memutuskan apa yang bisa Anda capai dengan sumber daya Anda saat ini - alias Anda. Maka Anda perlu memutuskan apakah kapasitas Anda untuk menangani beban kerja cukup untuk menangani tugas dalam kerangka waktu yang telah Anda alokasikan. Dengan demikian kebutuhan proyek Anda harus diidentifikasi dan dicakup.

  • Apakah Anda ingin menghabiskan waktu membersihkan basis kode yang ada?
  • Apakah ini persyaratan mendasar untuk memastikan keberhasilan proyek?
  • Apakah Anda memiliki fitur baru untuk ditambahkan ke sistem? Apa aspek paling penting dari proyek Anda yang harus ditangani, dan apa saja hal-hal kecil yang ada dalam daftar keinginan?
  • Bisakah salah satu persyaratan diabaikan, atau paling tidak ditunda sampai rilis pemeliharaan berikutnya?

Ketika Anda memiliki gagasan tentang ruang lingkup persyaratan Anda, Anda dapat lebih mudah menentukan beban kerja yang diperlukan untuk mencapai hasil dalam jangka waktu tertentu. Jika sumber daya Anda cenderung digunakan secara berlebihan, maka Anda akan membutuhkan lebih banyak staf. Jika sumber daya Anda cenderung kurang dimanfaatkan, maka Anda mungkin dapat memindahkan tenggat waktu Anda lebih dekat, atau meningkatkan cakupan proyek Anda.

Jika insting Anda memberi tahu Anda bahwa Anda tidak memiliki cukup staf untuk mengelola proyek, Anda mungkin benar, tetapi Anda perlu memahami mengapa Anda memberi tahu Anda hal ini. Tidak cukup hanya dengan memiliki perasaan. Sebagai gantinya, Anda harus dapat memeriksa masalah secara ilmiah untuk memberikan bukti untuk mendukung naluri Anda, dan Anda harus siap menghadapi kemungkinan bahwa naluri Anda bahkan mungkin salah. Setelah Anda mengumpulkan bukti - Yaitu: mencakup proyek, maka Anda benar-benar perlu untuk duduk bersama manajemen Anda dan membuat kasus untuk mengurangi ruang lingkup proyek, atau meningkatkan sumber daya yang tersedia untuk memastikan keberhasilan proyek, berdasarkan pada bukti yang ada.

S.Robins
sumber
Lingkup tampaknya akan sepenuhnya menulis ulang sistem SLK 250K menjadi sesuatu yang berkualitas menyusut (atau setidaknya kualitas perangkat lunak konsultasi). Keuntungannya adalah bahwa pengumpulan persyaratan dan desain keseluruhan mungkin sudah dilakukan. Ini tidak kecil, dan bukan sesuatu untuk satu pengembang yang memiliki tanggung jawab lain.
David Thornley
@ Davidvidhorn Itu sangat tergantung pada ruang lingkup tugas pengembang, tenggat waktu, beban kerjanya, bagaimana perusahaannya sudah memasarkan produk. Saya telah melihat banyak proyek kompleks yang dikerjakan oleh tim 1-2 orang yang sangat sukses karena dikelola dengan baik ... dan banyak lagi yang gagal. Namun saya setuju bahwa tugasnya adalah tugas besar, dan itu sendiri sudah merupakan tanda bahaya dalam hal sumber daya. Masalahnya adalah, tidak layak hanya mempekerjakan banyak orang tanpa melakukan pekerjaan rumah terlebih dahulu, yang merupakan inti dari jawaban saya. :-)
S.Robins
Lingkup adalah sesuatu yang telah saya bahas beberapa bulan terakhir. 20% dari proyek memiliki 80% dampak pada perusahaan. Itulah yang saya coba fokuskan. Sayangnya, 80% yang memiliki 20% dampaknya terdorong ke garis depan saat kami mencoba menangani "keadaan darurat" dengan melemparkan lebih banyak kode dan fitur padanya. Saya pernah meminta pembekuan fitur sehingga saya bisa memperbaiki beberapa masalah inti. Mereka memberi saya 5 hari. Tak perlu dikatakan itu 5 tahun kemudian dan banyak masalah inti tetap. Terima kasih untuk posting Anda, sangat membantu.
kstevens715
6

Keberhasilan produk / proyek akan tergantung pada komitmen perusahaan yang membayarnya. Jika mereka akan mempekerjakan lebih banyak programmer / staf pendukung, akan ada penurunan produktivitas yang melekat dari satu programmer, yang tahu harus melatih, mengajar, mengelola, dll. Bukan itu hal yang buruk .. tetapi akan ada menjadi penurunan sebelum peningkatan terjadi .. ada juga kebutuhan untuk analis bisnis, manajer, penjualan, dan dukungan produk setelah itu tersedia secara komersial ..

Hosting aplikasi komersial jauh lebih dari sekadar menciptakan platform yang solid. ada persyaratan dukungan, dukungan teknis, perbaikan bug, pelatihan pengguna, dll.

apakah Anda memiliki prosedur analisis / spek / estimasi yang baik? jika tidak, mulailah sekarang , Anda dapat melakukannya sendiri.

apakah Anda sedang melatih otak Anda saat ini? Jika demikian, bersiaplah untuk bekerja dua kali lebih keras jika Anda diharapkan untuk mengelola proses ini dan terus berkembang (menaikkan hak?) ..

dan inilah jawaban dari pengalaman saya sebelumnya dalam situasi yang sama dalam penetapan harga wilayah California Selatan:

5-6 orang && ~ 500k

  • 1 Pemimpin Pengembang / pengelola pemakai semua topi (~ 100k - 120k)

  • 2 pemrogram Sr (sangat mampu, mandiri) dengan pemahaman dan Keterampilan DB yang baik (2x ~ 80 - 100k)

  • 1 Manajer Proyek untuk berinteraksi dengan Manajemen ($$?) Orang ini juga harus dapat memahami kebutuhan aplikasi, dan mengomunikasikan kebutuhan tersebut secara langsung ke programmer

  • 1? (HTML / UI) pengembang? dengan keterampilan javascript (saya benci pemrograman UI / kode Markup)

  • 1? Orang basis data? namun, sebagian besar programmer yang baik tidak memiliki masalah dalam membuat struktur data yang dapat diskalakan, namun, jika Anda akan masuk ke masalah optimisasi, Anda setidaknya ingin memiliki konsultan

Hanzolo
sumber
1
+1 Saya suka rincian Anda sangat bagus! Lengkapi OT, gaji yang Anda kutipkan terasa menyedihkan bagi saya karena saya telah berpikir untuk bekerja di SoCal tetapi mereka tidak jauh lebih tinggi daripada Eropa Barat, jika orang-orang Sr seperti MSc + 5 tahun bekerja.
Petani
1
Saya setuju kecuali bahwa saya juga merekomendasikan programmer entry level untuk mengambil alih tugas dukungan (pengaturan klien dan peningkatan kecil) dan untuk melakukan pekerjaan kasar umum. Menggabungkan beberapa peran dapat bekerja tergantung pada tingkat keterampilan yang terlibat.
jfrankcarr
Wow, Anda bisa mendapatkan pengembang senior di So Cal untuk 80-100 ribu? Itu tampaknya cukup rendah mengingat biaya hidup. Mungkin kita punya ide 'senior' yang berbeda; para senior devs yang saya kenal di Dallas mendapatkan lebih dari itu.
kevin cline
Kami mungkin memiliki ide berbeda tentang apa rasanya enak juga .. Saya merekrut 2 .Net Sr. yang muda dan berbakat dengan banyak pengalaman selama 10 tahun terakhir yang bersedia bekerja dalam kisaran itu. Kami menggunakan Microsoft Stack terbaru (TFS, .NET 4, C #, EF 4.1, MSSQL 2008 R2, bla bla ..), dan tidak punya masalah dengan menghapus kode bersih yang baik. Kami adalah tim kecil, dan masalah yang kami temukan saat mencoba mempekerjakan beberapa Sr. adalah bahwa mereka tahan terhadap pembelajaran dan memiliki terlalu banyak pendapat dan membawa terlalu banyak bagasi (Kami juga tidak memiliki banyak jendela perekrutan)
hanzolo
2

1 programmer pada basis kode besar dengan semua tanggung jawab untuk mengkonfigurasi, menguji, berkomunikasi, mendukung, mendokumentasikan dan memperbaiki bug tidak akan punya banyak waktu untuk menulis kode baru atau menambahkan fitur (atau bahkan refactoring kode lama).

Hancurkan minggu Anda dengan persentase tugas-tugas wajib ini yang tidak memperluas bisnis dan Anda akan terkejut melihat betapa cepatnya manajemen mempekerjakan bantuan tambahan.

Proyek besar memiliki sejumlah overhead terkait yang tidak akan hilang (terutama jika menerapkan / menguji dengan klien baru sepanjang waktu seperti yang Anda bayangkan). Ini adalah alasan Anda memiliki rotasi dukungan dan dukungan secara umum; jadi beberapa dari mereka di tim punya waktu untuk mengerjakan fitur baru.

Anda mungkin juga ingin melihat buku-buku tentang estimasi perangkat lunak. Buku-buku ini mungkin kedengarannya tidak banyak bicara, tetapi memuat studi kasus menarik dari berbagai bidang dan mendukung klaim mereka dengan bukti.

brian
sumber
95% waktu saya dihabiskan untuk melakukan salah satu tugas itu. Saya suka ide rotasi dukungan. Itu mungkin sesuatu yang perlu dipertimbangkan jika kita mempekerjakan seseorang yang dapat saya putar dengan lol. Hari ini, misalnya, saya benar-benar mulai bekerja pada beberapa kode inti dan terganggu karena seseorang membutuhkan baterai.
kstevens715
@ kstevens715 - Kedengarannya Anda butuh bantuan, meskipun itu anak seseorang yang teknis. Saya berasumsi bahwa Anda dibayar setidaknya penghasilan 5 digit, jika saya disuruh membeli baterai, biayanya sekitar $ 10 untuk karyawan saya (35% dari upah per jam saya).
Ramhound