Berita Perpecahan Antara Pengembang Junior dan Senior – O'Reilly

zaskia nana

Berita Perpecahan Antara Pengembang Junior dan Senior – O'Reilly

Saya khawatir tentang AI.

Saya tidak khawatir hal itu akan mengambil pekerjaan saya. Saya yakin AI adalah alat produktivitas yang sesungguhnya. Maksud saya, hal ini dapat membuat pengembang memproduksi lebih banyak.

Belajar lebih cepat. Gali lebih dalam. Lihat lebih jauh.

Pertanyaannya adalah apakah para pengembang tersebut menghasilkan sesuatu yang bagus atau tidak.

Perbedaan antara pengembang berpengalaman dan junior adalah pengembang berpengalaman mengetahui:

  • Ada lebih dari satu solusi yang baik untuk setiap masalah.
  • Jawaban “apa solusinya” adalah “tergantung.”
  • “Tergantung” pada apa, atau setidaknya ada pegangan bagaimana mengetahui bergantung pada apa.

Cara kami melatih junior, baik di universitas atau di kamp pelatihan atau apakah mereka melatih diri mereka sendiri dari materi yang kami sediakan untuk mereka (Hidup Internet), sejak awal kami menyiratkan bahwa ada jawaban yang benar. “Ini adalah solusi untuk mencetak deret Fibonacci menggunakan rekursi.” Pengembang junior dilatih untuk berpikir bahwa jika kode tersebut menyelesaikan masalah, maka pekerjaannya selesai.

Namun, apa yang biasanya kami lakukan dalam pengembangan perangkat lunak belum telah dilakukan sebelumnya. Jika sudah, biasanya dikodifikasi ke dalam bahasa, kerangka kerja, atau perpustakaan.

Apa hubungannya ini dengan AI? Saat ini, AI generatif memberi Anda Jawabannya. Seiring dengan kemajuan AI, AI mungkin akan memberi Anda jawaban yang berhasil. Ini bagus! Kita tidak perlu lagi menghabiskan banyak waktu untuk melatih pengembang; kita dapat melatih mereka untuk menjadi “insinyur yang cepat” (yang membuat saya berpikir tentang pengembang yang datang tepat waktu), dan mereka akan meminta kode dari AI, dan kode tersebut akan dikirimkan.

Tapi ini lebih rumit dari itu. Dengan asumsi jawaban pertama yang diberikan AI kepada kita dikompilasi dan berfungsi, itu mungkin tidak cocok dengan gaya kode kita; tim mungkin tidak menggunakan perpustakaan dan kerangka kerja yang tersedia untuk mereka; mungkin tidak mempertimbangkan kekhasan domain bisnis dari aplikasi spesifik kami; itu mungkin tidak memenuhi persyaratan kinerja kami. Pengembang berpengalaman akan melihat semua ini dan meminta AI untuk menyusun jawabannya ke dalam bentuk yang benar atau melakukannya sendiri. Pengembang junior mungkin tergoda untuk memasukkan kode ini ke dalam aplikasi dengan cara apa pun yang berhasil.

Saya ingin memperjelasnya di sini. Saya tidak menyalahkan pengembang junior untuk ini. Ini adalah bagian dari pembelajaran. Kami telah melakukan ini selama beberapa dekade. Ketika saya lulus dengan gelar ilmu komputer, saya menggunakan AltaVista (ya, saya sudah setua itu) untuk menemukan solusi bagi masalah saya dan memasukkan kode hingga menghasilkan apa yang saya inginkan, sering kali terlepas dari alat, kerangka kerja, atau pola desain apa pun kami menggunakan. Belakangan, para junior menggunakan kode dari Stack Overflow sebagai inspirasi, tanpa menyadari baris mana yang mereka tempelkan ke basis kode yang tidak menghasilkan apa-apa dan mana yang benar-benar relevan. Saat ini, baris kode yang ditempel tersebut akan menjadi kode yang dibuat oleh AI generatif.

Tanggung jawab kami sebagai sebuah industri adalah selalu mengarahkan pengembang baru ke arah yang benar. Penting bagi para insinyur berpengalaman untuk menunjukkan kelemahan suatu pendekatan dan menunjukkan kepada junior cara-cara yang lebih baik atau lebih baru dalam melakukan sesuatu. Saya masih ingat dengan jelas seorang pengembang, yang hanya dua tahun lebih tua dari saya, yang menjelaskan kepada saya mengapa saya harus menggunakan ArrayList dan tidak Vector. Tumbuh sebagai seorang insinyur bukanlah tentang belajar menulis lebih banyak kode; ini tentang mempelajari pertanyaan apa yang harus diajukan, kompromi apa saja yang ada dan masalah “itu tergantung”, dan solusi apa yang mungkin tepat untuk masalah tertentu.

Jadi, mari kita kembali ke alasan saya mengkhawatirkan AI. Saya khawatir pengembang berpengalaman akan menambahkannya ke gudang alat mereka untuk menyelesaikan pekerjaan, seperti penyelesaian kode IDE, Stack Overflow, dan Google. Mereka akan belajar bagaimana (dan kapan) menggunakannya untuk memberi mereka ide, mengarahkan mereka ke suatu arah, dan melakukan pekerjaan berat dalam membuat boilerplate atau potongan kode umum. Mereka akan belajar bagaimana melatih AI untuk memberi mereka kode yang “lebih baik” (untuk beberapa definisi lebih baik) seiring berjalannya waktu. Selama ini mereka melatih AI, bukan melatih pengembang junior. Faktanya, para insinyur berpengalaman didorong untuk melatih AI generatif dengan cara yang mereka lakukan tidak pernah didorong untuk menginvestasikan waktu dalam melatih junior.

Dan junior—ya, junior akan menganggap kode yang dihasilkan AI berfungsi. Insinyur berpengalaman akan sangat sibuk melatih AI sehingga mereka tidak akan membantu juniornya naik level. Junior tidak akan memiliki alat untuk melakukan perbaikan, dan pengembang senior mungkin menghabiskan begitu banyak waktu untuk memperbaiki bug dalam kode yang diterapkan dengan buruk dari junior sehingga organisasi mungkin memutuskan bahwa junior tidak hanya tidak diperlukan tetapi sebenarnya menguras produktivitas yang tidak diinginkan.

Apa masalahnya? Tentunya apakah kita melatih junior atau melatih AI, hasil akhirnya sama? Kode yang berfungsi untuk masalah kita. Tentu, dan seiring dengan kemajuan AI, mungkin kita akan lebih mengandalkannya. Dan katakanlah, sebagai argumen, AI sudah cukup berkembang untuk menggantikan pengembang junior. Apakah ini akan cukup baik untuk menggantikan pengembang berpengalaman? Mungkin, tapi kita belum sampai ke sana. Jika tidak cukup baik untuk menggantikan pengembang dan arsitek berpengalaman, dan jika kita tidak berinvestasi pada generasi junior saat ini, kita tidak akan memiliki senior di masa depan. Kita akan membutuhkan pengembang yang berpengalaman di masa mendatang, meskipun “hanya” untuk melatih AI atau membantu menciptakan alat AI generasi berikutnya.

Di luar masalah saluran pipa, saya ingin mengatasi sesuatu yang menurut saya sering diabaikan dalam industri kita. Pengembang bukanlah mesin pembuat kode. Tugas kita bukan mengetik kode. Yang saya maksud bukan hanya pengembang berpengalaman; Saya juga memasukkan junior dalam hal ini. Saat saya bekerja dalam tim yang berpasangan secara teratur, saat saya menjadi pengembang dengan pengalaman solid lebih dari 10 tahun, orang yang paling menantang saya adalah para junior. Ya, saya belajar a Besar kesepakatan dari orang-orang cerdas dan berpengalaman seperti Dave Farley dan Martin Thompson. Apa yang saya pelajari dari mereka sering kali merupakan hal-hal baru yang belum saya ketahui, atau hal-hal tersebut menegaskan keyakinan dan gagasan yang sudah saya miliki. Tapi para junior, merekalah yang sangat membantuku untuk memahami apa yang aku pedulikan dan mengapa aku melakukan hal-hal yang aku lakukan. Junior sangat menantang Anda sebagai pengembang. Junior mengajukan pertanyaan bagus: Mengapa Anda melakukannya seperti itu? Mengapa Anda menolak gagasan ini? Apa yang Anda pikirkan saat mencoba memutuskan pendekatan mana yang akan diambil? Mengapa sulit untuk lulus ujian ini?

Pertanyaan-pertanyaan ini membantu kami berkembang sebagai pengembang tingkat menengah dan senior. Mengapa telah melakukan kita melakukannya seperti itu? Apakah karena suatu saat seseorang menunjukkan kepada kita cara melakukan hal tersebut, dan kita hanya mengikuti pendekatan tersebut secara membabi buta? Atau apakah kami menemukan, setelah melakukan Google secara ekstensif dan mencari di Stack Overflow, setelah banyak percobaan dan kesalahan dan akhirnya penyempurnaan, bahwa ini adalah cara terbaik untuk melakukannya? Jawabannya akan memberi tahu kita banyak hal tentang seberapa besar kita memahami hal ini dan apakah kita memahami pengorbanan yang kita lakukan saat mengambil rute tersebut. Hal ini juga harus membuat kita berpikir apakah kita perlu melakukan lebih banyak penelitian mengenai pendekatan atau alat ini—Apakah sudah diperbarui sejak kita mempelajari pendekatan ini? Apakah ada cara yang lebih baru/lebih baik/lebih cepat/lebih bersih untuk melakukan hal yang sama?

Tentu saja kita bisa duduk diam merenungkan pertanyaan-pertanyaan ini dan kemudian melanjutkan melakukan apa pun yang kita lakukan (atau memutuskan untuk melakukan sesuatu secara berbeda). Namun mengungkapkan percakapan batin, keraguan atau kepastian yang kita miliki tentang jawaban secara verbal, tidak hanya akan memberi junior wawasan tentang proses berpikir kita tetapi juga membantu mereka menciptakan proses mereka sendiri dalam mengambil keputusan. Boleh saja kita mengatakan, “Saya tidak yakin, sungguh. Saya selalu melakukannya seperti itu. Haruskah kita melakukan sedikit riset untuk mengetahui apakah ada cara yang lebih baik?” Atau “Yah, di pekerjaan terakhir saya, kami memiliki batasan jumlah koneksi yang terbuka, jadi saya selalu menutupnya jika saya bisa. Hal ini tidak terlalu berlaku di sini, tapi sepertinya ini merupakan kebiasaan yang baik. Bisakah Anda memikirkan alasan untuk tidak melakukan ini?” Ada baiknya untuk mengajukan pertanyaan kepada junior agar mereka berpikir, dan sangat bagus untuk melakukan percakapan dua arah tentang trade-off dan keputusan implementasi. Ya ampun, kita semua terjebak berpikir berputar-putar tentang suatu masalah, hanya untuk menyelesaikannya hanya dengan mengajukan pertanyaan. (Kita sering kali bahkan tidak membutuhkan jawabannya!)

Para senior tahu bahwa jawaban untuk semuanya adalah “tergantung.” Berkembang sebagai pengembang berarti menemukan lebih banyak hal yang “tergantung” pada hal tersebut, mampu menemukan hal-hal tersebut dalam kode, infrastruktur, atau organisasi, dan mengajukan pertanyaan untuk mengungkap hal-hal yang tidak diketahui. Menjawab pertanyaan-pertanyaan junior, atau membimbing mereka untuk mendapatkan jawaban mereka sendiri, membantu mereka dalam perjalanan mereka untuk mencari tahu apa yang “tergantung” dan di mana harus mencapai keseimbangan dalam trade-off. Hal ini juga membantu kita untuk lebih memahami proses kita sendiri dan memperbaruinya jika diperlukan.

AI tidak mengajukan pertanyaan. Ini memberi jawaban. Dengan percaya diri. Itu tidak menantang Anda. Ia tunduk pada kebijaksanaan Anda ketika Anda mengungkapkan pendapat namun juga melakukan apa yang diinginkannya.

Kita perlu ketegangan antara senior dan junior. Itulah yang membantu kita semua berkembang. Sebagai junior, kita bisa bertanya, belajar sendiri, dan membantu senior menantang asumsi mereka. Sebagai senior, kami memiliki lebih banyak pengalaman mengenai seluk-beluk alasan kami memilih solusi tertentu dan preferensi apa yang mungkin kami atau tim kami miliki terhadap solusi kami. Namun meskipun kita dapat membentuk AI untuk memberikan jawaban yang mungkin telah kita tulis sendiri, AI tidak akan bertanya kepada kita, “Tetapi mengapa Anda ingin melakukannya seperti itu?” atau “Masalah apa yang Anda khawatirkan dengan solusi ini?” Pertanyaan-pertanyaan inilah yang perlu kita kembangkan sebagai individu, untuk menciptakan kode yang lebih baik hanya berfungsi tetapi memenuhi persyaratan bisnis, pengguna, dan tim yang memelihara kode. Membuat perangkat lunak yang baik adalah olahraga tim.

(Saya juga membuat video tentang topik ini: https://youtu.be/AK9pFlLJwbQ?feature=shared.)

Sumber

Mohon maaf, Foto memang tidak relevan. Jika keberatan atau harus diedit baik Artikel maupun foto Silahkan Klik Laporkan. Terima Kasih

Also Read

Tags

tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr tr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url url