Minggu lalu, saya baru saja melihat wawancara yang menakjubkan ini oleh Kevin Rose dari Phillip Rosedale, dari Second Life.
Dan mereka melakukan diskusi yang luar biasa tentang bagaimana menemukan, merekrut dan mengidentifikasi programmer yang baik, dan betapa sulitnya menemukan yang baik.
Yang telah membuat saya benar-benar berpikir tentang cara kita belajar programmer, diajarkan. Bagi sebagian besar dari kita, termasuk saya sendiri, kita belajar sendiri. Yang hebat tentang menjadi seorang programmer, siapa pun dapat belajar dan mengembangkan keterampilan.
Tetapi ini juga berarti, bahwa tidak ada standar nyata tentang apa yang dimaksud dengan programmer yang baik, dan lingkungan seperti apa yang mendorong pertumbuhan keterampilan pemrograman.
Ini bukan pertanyaan, tetapi hanya keinginan dalam diri saya, untuk melihat bagaimana kita dapat mengubah budaya pemrograman, dan manajer pemrograman, sehingga pendidikan dan pengembangan diri didorong.
Ada banyak jalan untuk pendidikan berkelanjutan, video youtube, buku, konferensi, tetapi karena sifat pengalaman apa yang kita lakukan, tidak selalu jelas apa yang penting untuk dipelajari dan dikuasai.
Mari kita lihat The Joel 12 Steps.
Tes Joel
Apakah Anda menggunakan kontrol sumber?
Bisakah Anda membuat build dalam satu langkah?
Apakah Anda membuat build harian?
Apakah Anda memiliki basis data bug?
Apakah Anda memperbaiki bug sebelum menulis kode baru?
Apakah Anda memiliki jadwal terbaru?
Anda punya spec?
Apakah programmer memiliki kondisi kerja yang tenang?
Apakah Anda menggunakan alat terbaik yang bisa dibeli dengan uang?
Apakah Anda memiliki penguji?
Apakah kandidat baru menulis kode selama wawancara mereka?
Apakah Anda melakukan pengujian kegunaan lorong?
Saya pikir semua ini memiliki nilai penting, tetapi karena sesuatu yang saya sebut Experiential Gap, jika seorang programmer atau manajer tidak pernah mengalami konsekuensi negatif karena tidak melakukan item dalam daftar, mereka tidak akan pernah melihat perlunya melakukan apapun dari mereka.
Kesenjangan Experiental, adalah teori dasar saya, bahwa kita masing-masing memiliki pekerjaan dan pengalaman yang berbeda. Jadi bagi sebagian dari kita, yang selalu bekerja dengan puluhan programmer, kontrol sumber adalah suatu keharusan. Tetapi bagi orang-orang yang selalu menjadi satu-satunya programmer, mereka tidak bisa membayangkan perlunya kontrol sumber.
Dan karena kesalahan besar dalam cara kita belajar ini, kita mengevaluasi orang dengan praktik terbaik yang mereka lakukan atau tidak lakukan, dan alasan keduanya dapat memulai perang api.
Kami selalu mengevaluasi orang-orang di bidang kami berdasarkan apa yang mereka lakukan, dan berpikir, "Oh, jika orang ini tidak melakukan praktik terbaik xyz, dia tidak bisa menjadi programmer yang baik, jadi jangan buang waktu atau energi untuk berbicara dengan mereka . "
Inilah sebabnya kami memiliki begitu banyak pemrograman perang api, sehingga menjadi, karena Experiental Gap, kami tidak dapat membayangkan orang-orang tidak membuat keputusan yang harus kami buat.
Jadi ini membuat saya berpikir, bahwa kita benar-benar perlu memikirkan kembali bagaimana kita melatih, mendidik dan mengelola programer.
Misalnya, berapa persen dari Anda yang mendapat dorongan dari manajer Anda untuk pergi ke konferensi, dan bahkan meminta mereka membayarnya?
Bagi saya, dan banyak orang, ini sangat jarang, banyak dari kita akan senang pergi ke konferensi, untuk belajar lebih banyak, tetapi uang tidak ada di sana untuk melakukan itu.
Jadi inti dari pertanyaan ini adalah untuk memicu banyak bagaimana kita dapat melatih, belajar dan mengelola dengan lebih baik?
Bagaimana kita dapat menciptakan budaya belajar baru yang tidak menghina orang karena tidak memiliki pengalaman kerja yang sama.
Ya, kita semua memiliki pekerjaan dan pekerjaan yang harus dilakukan, tetapi kemampuan kita untuk melakukan pekerjaan dengan baik, tergantung pada keinginan, minat, dan dukungan kita dalam meningkatkan penguasaan keterampilan kita.
Saat ini, saya melihat budaya kita agak tidak teratur, kami mendukung elit, tetapi banyak dari kita yang ingin menjadi lebih baik, hanya saja tidak memiliki cukup dukungan untuk belajar dan meningkatkan diri kita sendiri.
Maksud saya, apakah kita sebagai industri, ingin dianggap hanya sebagai roda gigi yang dapat diganti?
Terima kasih...
Jawaban:
Wow, pertanyaan bagus untuk dipikirkan, sulit dijawab. Karena kita semua memiliki pengalaman dan keinginan yang berbeda, sulit untuk menghadirkan solusi satu ukuran untuk semua. Tapi saya akan membuang beberapa pendapat saya selama bertahun-tahun tentang topik yang sama.
1) Berhenti melihat pekerjaan melompat buruk dan dorong itu. Ganti perusahaan setiap beberapa tahun. Programmer mendapatkan banyak teknologi, metodologi, dan bisnis yang berbeda dalam perjalanan karier mereka. Bisnis mendapatkan aliran ide baru yang stabil.
2) Berhenti melihat diri Anda sebagai seorang programmer di perusahaan X dan melihat diri Anda sebagai seorang profesional yang memberikan layanan kepada perusahaan X. Jika Anda berpikir seperti seorang profesional Anda akan diperlakukan seperti seorang profesional. Jika kita dilihat sebagai roda gigi yang dapat diganti, itu karena kita bertindak seperti roda gigi yang dapat diganti.
3) Universitas perlu berubah. Mereka harus memiliki periode 2 tahun awal pendidikan dasar di komputer diikuti oleh pilihan. Ilmu Komputer atau Teknik Komputer. Dan jalur teknik membutuhkan profesional yang bekerja di lapangan setiap hari, bukan seseorang yang hanya menulis makalah. Dan apa yang diajarkan perlu praktis, sehingga Anda dapat memulai hari setelah lulus. Mungkin memiliki program magang untuk mereka yang tidak menempuh program sarjana.
4) Sunting: Ini sedikit kata-kata kasar. Yang saya maksudkan adalah bahwa kita semua harus belajar banyak dari satu sama lain tanpa memandang usia dan pengalaman.
5) Agak terkait dengan poin 2. Berhenti melihat majikan Anda sebagai yang bertanggung jawab atas karir Anda. Kamu adalah. Dan hanya kamu. Jika Anda ingin pergi ke konferensi, bayar sendiri jika perusahaan Anda tidak mau. Sisihkan uang setiap tahun khusus untuk buku dan pelatihan dan pengembangan profesional. Jika Anda menunggu majikan Anda mengirim Anda ke pelatihan, Anda akan menunggu lama. Menghabiskan waktu menonton keterampilan Anda menjadi tidak relevan. Tidak cukup menghasilkan untuk itu? Mengganti pekerjaan.
6) Kita harus jujur dengan diri kita sendiri dan dengan sesama programmer kita. Pemrogramannya sulit. Sangat keras. Saya masih melihat iklan untuk pelatihan komputer dengan kekayaan yang dijamin setelah lulus. Itu membawa banyak orang ke lapangan yang sama sekali tidak berkualitas atau lebih buruk tidak memiliki minat nyata di luar uang. Kita perlu menemukan cara untuk mendorong mereka memikirkan kembali rencana karir mereka.
Pada titik ini saya pikir kepala saya akan meledak, jadi saya akan menyimpulkan.
Pertanyaan bagus! Saya sangat menantikan untuk membaca lebih banyak tanggapan.
sumber
Saya tidak berpikir itu berantakan hanya karena kurangnya pengajaran. Saya pikir itu sebenarnya mencerminkan bahwa "praktik terbaik" akan berbeda dari pekerjaan ke pekerjaan. "Praktik terbaik" akan selalu didasarkan dalam konteks tertentu.
Memang ada banyak persimpangan untuk beberapa bidang kerja yang paling umum yaitu. pengembangan web. Namun, saya pikir adalah kekeliruan untuk percaya bahwa hanya karena itu baik untuk terlibat dalam praktik tertentu di sebagian besar pekerjaan itu harus digunakan dalam semua pekerjaan.
Praktik yang Anda lakukan harus berasal dari analisis dan eksperimen apa yang membuat Anda bekerja lebih baik. Mereka tidak harus dipilih melalui kepercayaan buta. Hanya karena sesuatu yang sering digaungkan di internet tidak menjadikannya sebuah kebenaran dalam situasi Anda, atau sebuah Kebenaran (untuk semua situasi).
sumber
Pertanyaan yang bagus untuk melatih pikiran, saya setuju sesuatu harus dilakukan, tetapi saya pikir tidak mungkin untuk menjawab. Usaha saya:
Pertama, jangan bunuh kreativitas secara umum. Saya harus mengatakan bahwa saya setuju dengan Sir Ken Robinson, saksikan pembicaraan TED yang hebat ini . Sistem pendidikan kita mematikan kreativitas dan itu harus diubah. Khusus untuk programmer.
Kedua, Ajarkan pola yang disukaibidang profesional kami tidak cukup dewasa. Kami memiliki banyak hal berbeda yang kami pikir merupakan jalan yang harus dilalui, tetapi kami tidak dapat menyetujuinya. (pikirkan TDD, BDD, Agile vs Waterfall, jumlah dokumentasi yang diperlukan, Java atau .Net) Dalam pikiran saya ini adalah karena membahas tanpa konteks dan banyak spesialisasi. Anda tidak dapat membuat pilihan yang tepat tanpa mengetahui dalam konteks apa pertanyaan itu diajukan dan Anda tidak bisa membuat pilihan yang tepat jika Anda hanya tahu satu opsi. Ketika Anda membawa ini kembali ke pendidikan, rasanya mustahil untuk diselesaikan. Anda tidak dapat mengharapkan seseorang untuk mengetahui semua konteks yang mungkin dan semua solusi yang mungkin. Tetapi dengan pola mereka sekarang beberapa solusi umum dan konteks berlaku dan konteks ketika solusi rusak. IMHO ini adalah cara yang perlu kita ajarkan,
Ketiga menempatkan penafian atas contoh-contoh yang saya pikir ada masalah dengan contoh-contoh yang kami perlihatkan di MSDN, di Blog, di buku-buku, dll. Contoh-contohnya sering dibuat-buat untuk memahami maksud yang penulis coba buat. Tetapi dalam contoh paling mendasar sudah ada keputusan di banyak tingkatan. Contoh-contoh ini mengajarkan semua keputusan lainnya salah. Saya pikir setiap contoh harus disertai dengan penafian yang mengatakan apa intinya dan apa yang tidak seharusnya Anda lakukan secara umum. Sebuah contoh yang bagus dari ini telah di-blog hari ini di sini .
Last Do Do Do Saya pikir perlu lebih banyak melakukan. Saya telah belajar untuk kebanyakan melakukan, gagal, memperbaiki, dan berdiskusi.
sumber