Bagaimana cara memasukkan pengembang pemula ke dalam proyek Anda?

9

Kami sedang mempertimbangkan untuk mengajar beberapa karyawan yang memiliki nol atau pengalaman pemrograman tingkat hobi umum untuk mengambil beban kerja dari saya.

Kami menggunakan Python / Django yang memiliki beberapa dokumentasi paling ramah dan mudah dipelajari.

Saat ini saya adalah departemen TI satu orang untuk perusahaan saya dan saya tidak punya cukup waktu untuk mengembangkan semua yang dibutuhkan perusahaan. Kami bukan perusahaan perangkat lunak, tetapi membantu memiliki IT internal untuk mengotomatisasi tugas, mengembangkan fitur layanan pelanggan, menganalisis data, dll.

Bagaimana Anda perlahan-lahan mengintegrasikan pemula yang bekerja pada basis kode Anda? Katakanlah Anda memiliki magang - apa yang mereka lakukan? Saya benar-benar enggan untuk membiarkan mereka mendesain atau mengembangkan kode inti karena kami akan berurusan dengan kesalahan / pola desain aneh mereka selama bertahun-tahun. Sebagai pengembang utama, saya akan menjadi orang yang harus mengerjakan kode mereka.

Pikir saya adalah untuk pemula hanya memodifikasi kode yang ada, tidak pernah membangun fitur inti. Saya dapat menurunkan pekerjaan ke mereka dengan tugas-tugas sederhana setelah saya membangun fitur itu sendiri.

Kami ingin karyawan kami belajar / menemukan nilai di perusahaan, dan kami umumnya memiliki orang-orang yang 'naik peringkat'.

Apakah ini praktik standar untuk mengajar orang dengan pemrograman tingkat umum / hobi? Bagaimana cara "naik peringkat" di perusahaan perangkat lunak bekerja untuk pemrogram tingkat junior? Kapan mereka mulai bekerja pada kode inti?

Saya mencoba untuk memutuskan apakah itu akan menyebabkan lebih banyak kerusakan daripada bantuan, dan atau jika ada cara kita dapat menggunakan bantuan mereka tanpa berpotensi membahayakan kode situs inti (lingkungan terisolasi?).

Yuji Tomita
sumber
3
"pemrograman tingkat umum / hobi" sangat berbeda dari "programmer level junior" dalam pikiran saya. Mantan terdengar seperti seseorang yang bermain-main dengan skrip shell / batch pada akhir pekan untuk men-tweak sistem mereka. Yang terakhir terdengar seperti seseorang yang baru saja menyelesaikan gelar CS. Menangani kedua tipe ini akan sangat berbeda. Katakan saja ...
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner Terima kasih! Saya tidak terbiasa dengan terminologi. Hobbyist yang saya maksud berarti telah mengajar sendiri beberapa bahasa pemrograman, membangun satu atau dua program, sebuah situs web. Tingkat SMP saya dianggap seseorang yang memiliki pengetahuan pemrograman yang cukup untuk dipekerjakan di sebuah perusahaan perangkat lunak, tetapi sekarang saya sadar bahwa keduanya mungkin sangat mirip (dalam definisi saya)?
Yuji Tomita
3
Orang muda dengan pendidikan CS formal dan tanpa pengalaman - naif, tetapi sering berbakat, belajar hal-hal baru dengan cepat dan beradaptasi dengan praktik kerja Anda. "Dokter hewan hobi" jauh lebih berbahaya, karena mereka sering menjadi budak dari kebiasaan mereka, sehingga mereka bisa enggan terhadap perubahan, dan memiliki masalah dalam ekosistem Anda. Namun demikian - hanya dengan memberi mereka kebebasan, Anda dapat melihat kebodohan, atau kecerdasan mereka. Jika Anda akan memberi mereka tugas-tugas duniawi yang primitif, mereka tidak akan belajar apa pun tentang pekerjaan, atau Anda akan belajar apa pun tentang mereka.
c69
@ c69 Terima kasih! Pertanyaan saya adalah bagaimana cara memudahkan rookie ke basis kode kami? Tujuannya bukan untuk mengacaukan mereka dan hanya melakukan tugas-tugas duniawi. Hanya berbahaya untuk memberi seseorang akses ke basis kode kami, dan minta mereka membangun proyek django / pemrograman pertama mereka sebagai bagian dari sistem kami (atau ini yang Anda maksud? Biarkan mereka coba dan lihat?). PS: Sepatutnya mencatat tentang dokter hewan hobi
Yuji Tomita

Jawaban:

5

Jika Anda mendelegasikan rookie ke peran yang tidak efektif dia tidak akan pernah belajar sesuatu yang substansial, dan mereka tentu tidak akan terlalu berguna bagi Anda.

Biarkan saya memberi Anda nasihat, pekerjaan TI pertama saya di luar sekolah adalah di sebuah perusahaan manufaktur yang relatif kecil di mana saya akan bekerja pada perangkat lunak untuk membantu insinyur penjualan dalam menulis kutipan untuk berbagai proyek. Saya juga seharusnya membantu orang IT yang sendirian mengelola IT untuk seluruh perusahaan.

Lelaki itu adalah orang yang stres karena terlalu banyak pekerjaan, dan perfeksionis pengelola mikro terburuk yang pernah saya tangani. Saya seharusnya meringankan beban kerjanya tetapi dia menghabiskan waktu hampir sama dengan mengkhawatirkan memeriksa saya dan pekerjaan saya karena saya menghabiskan bekerja (dia hampir tidak pernah meninggalkan kantor, saya pikir dia membenci keluarganya). Jika saya membuat satu kesalahan tunggal, dia akan benar-benar kehilangan akal dan mulai mengamuk, "Saya tahu saya seharusnya tidak memercayai Anda dengan ini, itu terlalu penting!" dan kata-kata kasar lainnya.

Poin yang ingin saya sampaikan adalah TIDAK seperti itu. Tidak hanya akan membuat para pemula sedih dan menghancurkan moral mereka, Anda akan membakar lilin di kedua ujungnya khawatir tentang pekerjaan mereka.

Beri mereka kesempatan untuk membuktikan diri tetapi memiliki spesifikasi teknis formal, ulasan desain, dan ulasan kode. Anda juga dapat menguji apa yang mereka hasilkan untuk memastikan memenuhi persyaratan.

Saya pikir Anda akan terkejut betapa mampunya beberapa dari mereka.

maple_shaft
sumber
1
Juga harus dikatakan bahwa jika Anda mendelegasikan rookie ke peran di mana mereka merasa tidak berguna, mereka akan mengambil sedikit pengalaman yang mereka peroleh untuk menemukan pekerjaan yang lebih baik. Bahkan seorang pemula harus dapat mengikuti arahan, tugas pemeliharaan baik-baik saja, tetapi kecuali jika Anda bersedia membantu mereka tumbuh berharap untuk selalu memiliki pemula.
Ramhound
Terima kasih atas masukan Anda - ini sangat dihargai. Kita harus mulai di suatu tempat karena kita mempertimbangkan orang yang benar-benar tidak memiliki pengalaman. Pengantar python 101, tutorial Django, skrip bash, cara menggunakan kontrol versi, dll., Saya akan memperhatikan peringatan Anda tentang tidak mengelola mikro. Dan ya! Saya percaya orang-orang kami cukup mampu.
Yuji Tomita
5

Saya dulu bekerja di toko perangkat lunak, di mana kami mengkodekan proyek besar (waktu peningkatan yang signifikan).

Pemula diperlakukan seperti dokter hewan. Mereka ditugaskan sebagai pemimpin teknis dan memulai fitur "sendiri". Gaya arsitektur didikte, tetapi mereka bebas untuk membuat desain bersih mereka sendiri. "Pola desain aneh" dikeluarkan selama ulasan kode peer (harian).

Satu kesalahan yang saya lihat di toko lain: menganggap "inti" itu keras dan "ui" itu mudah. Rookies memiliki waktu yang lebih mudah di inti, dan mengacaukan kode front-end UI.

Semoga berhasil!

louisgab
sumber
1
Ulasan kode yang sering adalah apa yang akan saya sarankan. Ini akan memakan waktu satu jam dari hari Anda dan akan membayar dalam sekop saat Anda mengajari mereka apa yang salah, mereka harus memperbaikinya dan keterampilan mereka meningkat. Setelah beberapa waktu, Anda tidak perlu menghabiskan banyak waktu dalam ulasan kode seperti beberapa minggu pertama. Juga pastikan mereka tahu cara menggunakan (dan memang menggunakan) kontrol sumber. Maka kesalahan apa pun dapat dibatalkan dengan cukup mudah.
HLGEM
1
@isgab - Desain Antarmuka Pengguna yang efektif sulit dicapai bahkan dengan pengalaman 30 tahun. Maksud saya lihat Microsoft dan Apple mereka berdua memiliki ide yang berbeda tentang bagaimana antarmuka pengguna harus bekerja.
Ramhound
Saya suka apa yang Anda katakan tentang inti vs ui. Saya pikir ada pro dan kontra untuk keduanya (rookie di backend, rookie di frontend). Di satu sisi, HTML sering tentang pengalaman - mengetahui apa yang tidak berhasil. Ini juga "aman" dalam proyek-proyek yang terisolasi. Backend bekerja persis seperti seharusnya, tetapi kode yang dibangun sekarang harus dipertahankan dan dikerjakan di masa depan.
Yuji Tomita
2

Anda ingin memulai dengan memberi mereka fungsionalitas potongan kecil dan terpisah untuk diterapkan. Tentukan input yang Anda janjikan dan output yang Anda harapkan, dan biarkan mereka menghubungkan titik-titik. Dan kemudian menggunakan peninjauan kode pimpinan tim untuk memastikan kualitas, dan tinjauan sejawat untuk melatih mereka untuk belajar dari satu sama lain dan untuk mengajar diri mereka sendiri.

Ini mengasumsikan bahwa Anda memiliki arsitektur aplikasi keseluruhan yang memungkinkan unit logika atom dibangun dengan cara dipisahkan. Jika tidak, Anda menuju dunia kesedihan karena banyak pengembang bekerja di dalamnya - itu akan menjadi masalah bahkan dengan pro lama.

Tak pelak Anda akan memiliki orang-orang tertentu yang melakukannya, belajar dengan cepat, dan bangkit. Pastikan Anda terus memberi mereka tugas yang hanya selangkah lebih kecil dari kemampuan mereka saat ini. Tidak ada yang mendidik seseorang seperti tugas yang dimulai mustahil. Tak pelak Anda akan memiliki beberapa orang yang mencoba dan tidak pernah benar-benar menangkapnya. Orang-orang itu harus berterima kasih atas upaya mereka dan dengan anggun beralih ke hal lain.

Dan Ray
sumber
1
"Pastikan kamu terus memberi mereka tugas yang hanya langkah kecil di luar kemampuan mereka saat ini." - Jika ini tidak dilakukan, Anda mungkin menemukan bahwa orang-orang membawa pengetahuan mereka ke perusahaan lain. Jika Anda tidak memberi makan, melatih, dan berjalan di Rookie, mereka akan lari seperti anjing Anda.
Ramhound
Opsi lain adalah: Berikan mereka fitur implement yang sudah (well), sehingga mereka dapat membandingkan output
Etsitpab Nioliv
1

Bagaimana perusahaan Anda dapat mengambil waktu dari karyawan lain, tetapi tidak mempekerjakan seseorang dengan pengalaman pemrograman? Jumlah pelatihan waktu Anda, pemecahan masalah dan memegang tangan mahal.

Satu-satunya hal yang pernah saya lakukan di bidang ini adalah mengajarkan orang bagaimana menggunakan penulis laporan atau mungkin beberapa kode VBA / Makro untuk Excel. Saya biasanya memberikan set data untuk digunakan kembali. Meminta mereka belajar SQL adalah hal yang sulit, tetapi saya telah melihatnya (Dibayar untuk mereka mendapatkan pelatihan di luar.) Sebagian besar dari mereka adalah analis keuangan yang memiliki kemampuan untuk belajar kode, tetapi mungkin tidak memerlukan waktu. Mencoba ini dengan beberapa orang dalam operasi adalah langkah panjang.

Pastikan Anda mendapatkan orang yang tepat dan mereka benar-benar ingin belajar kode. Anda tidak akan punya waktu untuk mengajari mereka segalanya. Mereka harus melakukan banyak hal sendiri.

JeffO
sumber
Saya menyebutkan bahwa kita sedang berbicara tentang orang-orang yang tidak memiliki pengalaman sebelumnya (atau jumlah yang sangat kecil) sehingga kita tidak berbicara tentang nilai upah yang diperlukan untuk menyewa seorang programmer profesional.
Yuji Tomita
Ah, dan perusahaan kami agak seperti keluarga: kami suka melakukan semuanya sendiri dan membuat orang naik pangkat. Saya terutama penasaran bagaimana cara menyusun alur kerja pemula untuk menjadi milik saya.
Yuji Tomita
0

@ louisgab benar tentang ulasan kode. Itu akan menjadi langkah pertama saya juga. Satu hal penting yang akan membantu Anda adalah memastikan mereka harus memperbaiki kesalahan sendiri apakah Anda menemukannya dalam ulasan kode atau yang lebih baru. Mereka tidak akan menang, bahkan menyadari bahwa mereka membuat kesalahan kecuali mereka harus memperbaikinya. Pastikan juga untuk menjelaskan mengapa solusi yang mereka gunakan adalah kesalahan dan mengapa apa yang Anda usulkan lebih baik. Beberapa minggu pertama akan terasa seolah-olah Anda memiliki lebih banyak pekerjaan karena memiliki orang-orang ini, tetapi jika Anda melakukan review kode Anda dan menjelaskan hal-hal dan mengharapkan mereka untuk belajar, dalam beberapa minggu mereka akan jauh lebih membantu daripada jika Anda hanya lakukan semuanya sendiri. Tetapi ada komitmen awal waktu Anda untuk meningkatkannya yang perlu disadari manajemen Anda.

HLGEM
sumber