Haruskah seorang programmer baru fokus pada satu teknologi sampai dia mahir dalam hal itu? [Tutup]

10

Ok, saya sudah mengajar teman bagaimana memprogram untuk sementara waktu sekarang. Dia pembelajar yang sangat cepat, dan dia cukup pandai pemrograman sejauh ini. Namun, dia punya satu "masalah" yang terus saya coba koreksi.

Dia melompat dan mulai melakukan pemrograman tingkat tinggi tanpa mempelajari beberapa dasar-dasarnya (Dia menciptakan aplikasi web yang penuh sesak tetapi masih tidak tahu pagination atau manajemen sesi).

Ini bukan masalahnya. Dia terus melompat ke teknologi baru (Node.js, MongoDB, EC2, dll). Saya mencoba mengatakan kepadanya bahwa ia harus mempelajari beberapa dasar-dasar tentang RDMS pilihannya (MySQL) ketika ia menggunakannya setiap hari sebelum menginvestasikan banyak waktu untuk mempelajari dasar-dasar MongoDB (Dan mungkin pindah ke sesuatu yang baru).

Apakah saya yang salah di sini, atau haruskah dia mencoba fokus pada satu hal pada satu waktu dan menjadi sangat baik dalam hal itu?

Brandon Wamboldt
sumber
6
Kedengarannya seperti peluang bagus untuk menuntut aplikasi web-nya mendukung sesi dan pagination. Bukankah itu akan membuatnya belajar?
Juga yang teknologi tunggal harus dipelajari?
@ ThorbjørnRavnAndersen Tidak begitu banyak teknologi tunggal, tetapi tumpukan LAMP adalah apa yang ia kerjakan setiap hari. Saya pikir dia harus mempelajari semua dasar / relevan dengan detail pekerjaannya tentang MySQL, Apache, PHP dan JavaScript paling tidak.
Brandon Wamboldt
1
Maka pada dasarnya Anda telah menjawab pertanyaan Anda sendiri dengan "tidak".
1
Bukankah dia sudah belajar banyak teknologi seperti web, database, dll sekaligus? Apa batasan dari apa yang merupakan teknologi di sini?
JB King

Jawaban:

18

Secara pribadi, saya pikir ini bisa menjadi ide bagus untuk mencicipi berbagai teknologi dan bahasa saat belajar memprogram. Berfokus pada satu teknologi memiliki manfaat yang jelas membuat Anda sangat pandai dalam hal itu, tetapi kerugian yang jelas hanya dengan mengetahui satu teknologi saja.

Tapi saya pikir kelemahan yang lebih penting adalah bahwa bahasa dan kerangka kerja umumnya datang dengan ideologi. Ada banyak programmer (mungkin kebanyakan programmer) yang hanya menerapkan satu ideologi dalam semua program mereka. Ini sering karena mereka mempelajari satu kerangka kerja dalam satu bahasa dengan sangat baik dan sekarang mereka tidak dapat melihat apa pun tanpa kacamata itu menyala.

Khusus untuk seseorang yang baru belajar memprogram, saya tidak berpikir itu masalah untuk ingin mencoba apa yang ada di luar sana, dan menunggu untuk fokus pada sesuatu sampai nanti. Lagi pula, akan sulit untuk menulis sesuatu yang substansial tanpa mengetahui teknologi dengan baik.

Kris Harper
sumber
2
+1 untuk paragraf kedua. Saya akan menambahkan bahwa dengan melihat berbagai bahasa, kerangka kerja dan API dapat mengajarkan Anda banyak tentang MENGAPA para perancang memilih untuk menerapkan bahasa / kerangka / API tertentu seperti yang mereka lakukan. Memberi pelajar pemahaman yang lebih dalam tentang pemrograman dan perangkat lunak secara keseluruhan. Setidaknya, imho
Jamie Taylor
+1 Ada beberapa situasi di mana Anda akan belajar untuk fokus, seperti ketika Anda memiliki pekerjaan pemrograman "nyata". Tetapi bagaimana Anda mendapatkan pekerjaan jika Anda hanya terpapar pada satu kerangka kerja? Belajar menulis sesuatu di lebih dari satu kerangka / pustaka sehingga Anda dapat mengisi CV Anda dan menunjukkan bahwa Anda tidak bias terhadap satu teknologi tertentu. ;-) Anda dapat mempelajari hal-hal seperti pagination dan RMDB nanti setelah Anda mendapatkan konteks aktual untuk melakukannya.
Spoike
@Seperti Dia memiliki pekerjaan pemrograman "nyata", maka alasan saya mencoba membuatnya fokus pada teknologi yang dia gunakan setiap hari untuk pekerjaan itu
Brandon Wamboldt
1
@RougeCoder: Beri dia tugas yang sesuai (halaman daftar raksasa ini, saring item, gambar diagram dengan sampel yang dikelompokkan, dll.) Untuk memungkinkannya mempelajari cara melakukan konsep yang Anda ingin dia ketahui. Jika tidak ada tugas seperti itu maka tidak ada konteks baginya untuk membuat pengetahuan itu melekat.
Spoike
1
Dulu saya pikir itu BS, atau setidaknya berlebihan, ketika orang mengatakan hal-hal seperti "belajar pemrograman fungsional membuat Anda berpikir secara berbeda." Ternyata, mereka sedang memotong efeknya pada kode Anda. Kode saya sudah benar - benar berbeda, dan saya belum mahir dengan bahasa fungsional pilihan saya juga tidak mencoba mengubah cara saya menulis kode. Ini benar-benar pembuka mata.
Steven Evers
5

Ada alasan bagus di kedua sisi masalah ini. Mengetahui " cukup " tentang banyak teknologi berbeda tentu berharga. Mengetahui " sedikit " tentang banyak teknologi berbeda? Tidak terlalu banyak.

Pengetahuan yang mendalam tentang teknologi tertentu tentu bisa berharga - JIKA ada permintaan yang berkelanjutan untuk mereka. Mengetahui " segala sesuatu yang perlu diketahui " tentang teknologi tertentu? ... kemungkinan besar berlebihan.

Jadi, semuanya seimbang. Jika dia akhirnya membangun aplikasi yang bagus dengan nosql, mengapa dia harus tahu perbedaan antara mesin InnoDB dan mesin MyISAM?

pbr
sumber
Nah, perbedaan antara InnoDB dan MyISAM pada dasarnya adalah transaksi. Jika dia tidak memahami transaksi, peluang apa yang dia miliki untuk bekerja dengan benar dengan konsep-konsep seperti "konsistensi akhirnya"?
Michael Borgwardt
Maaf? Tidak ada yang mengatakan dia tidak mengerti transaksi, dan apa yang saya tulis tidak menyiratkan itu sama sekali.
pbr
3

Saya setuju sebagian. Dia memang perlu mengetahui prinsip-prinsip yang mendasarinya - tetapi dia tidak perlu hanya duduk pada satu hal dan menjadi sangat baik dalam hal itu. Tidak ada yang tahu.

Duduk dengan satu hal dan menjadi sangat baik

Saat ini saya sedang bekerja dengan C # dan Microsoft XNA untuk membuat game. Saya belajar banyak tentang XNA ketika saya pergi, dan sementara saya sudah cukup kompeten dengan C #, pengetahuan saya berkembang sedikit demi sedikit (hari ini saya belajar tentang batasan pada parameter tipe ).

Namun, tidak perlu bagi saya untuk menjadi 'sangat baik' di XNA atau C #. Jika saya harus menyelesaikan proyek saya sekarang dan melanjutkan dan tidak pernah menggunakan salah satu dari mereka lagi, saya akan benar-benar puas dan pembelajaran saya akan berlanjut di tempat lain.

Prinsip-prinsip itu penting

Setidaknya saya mengerti prinsip yang mendasarinya. Ketika saya membuat sesuatu dalam C # dan XNA, saya mengerti apa yang saya lakukan - dan jika tidak, saya mempelajarinya.

Jika saya menulis pagination, saya akan mengerti bagaimana pagination bekerja. Jika teman Anda membuat pagination dan tidak tahu cara kerjanya, itu masalah. Jika dia tidak membuat pagination, tidak ada alasan dia perlu tahu.

Masalahnya di sini adalah: apakah dia tahu apa @ $ #! dia melakukannya, atau dia seorang programmer yang tidak tahu cara memprogram?

doppelgreener
sumber
Anda meningkatkan poin bagus. Masalahnya adalah, dengan beberapa hal yang dia tahu apa yang dia lakukan tetapi dengan hal-hal lain yang tidak dia lakukan (saya pikir dia tidak mau mempelajarinya sehingga dia terus menyalinnya dari proyek lain). Sebagai contoh, dia menulis pagination, saya sudah memeriksa sepotong demi sepotong, tapi dia masih tidak mengerti. Saya tahu dia bisa memahaminya, karena itu konsep yang sangat sederhana, dan dia melakukan hal-hal yang jauh lebih kompleks.
Brandon Wamboldt
Ya, dan itu adalah masalah. Jika dia menulis kode dia tidak mengerti dia setengah jalan untuk menjadi programmer copy-paste, dan menjadi programmer yang tidak tahu apa yang dia lakukan.
doppelgreener
3

Saya kira dia mencoba bahasa lain karena dia memiliki sesuatu yang ingin dia bangun. Anda selalu dapat kembali ke bahasa atau kerangka kerja dan mempelajari lebih lanjut.

Ada garis tipis antara mempelajari teori / membangun fondasi dan berusaha tetap termotivasi.

Setidaknya dia tidak terjebak dalam satu bahasa. Terkadang Anda mengambil yang baik dengan yang buruk.

JeffO
sumber
3

Saya menemukan sikapnya sebagai aset daripada kewajiban. Kemampuannya melakukan penelitian di atas rata-rata. Kurva belajarnya juga dangkal. Mengapa tidak memanfaatkan sifat ini jika Anda ingin dia belajar sesuatu.

Pikirannya yang selalu ingin tahu selalu dalam perjalanan, mengapa tidak memberinya arahan. Mulailah dengan memberi tahu dia mengapa pagination adalah penting dan esensial. Biarkan dia melihat situs web dengan pagination dan situs web tanpa itu.

Bagaimana dengan memberikan kritik yang membangun terhadap apa yang dia lakukan. "Wow, Anda telah melakukan sesuatu yang hebat, tetapi bukankah akan lebih baik jika Anda melakukannya dengan penekanan pada optimasi dan praktik terbaik.

Saya pikir melakukan perbandingan antara praktik yang baik dan praktik yang buruk dapat benar-benar merangsang pikirannya.

Jangan membatasi dia, dia akhirnya akan menemukan sesuatu yang dia suka dan puas dengannya untuk beberapa waktu. Jika saya jadi Anda, saya memberinya banyak materi pembelajaran tentang hal-hal yang sangat ia sukai.

Saya pikir dia sedang melakukan pendekatan top down sementara Anda di sisi lain ingin dia melakukan pendekatan bottom up

Dorward Villaruz
sumber
1

Kenapa itu buruk?

Sebaliknya saya pikir itu sangat bagus! Ini menunjukkan keingintahuan dan keinginan untuk belajar. Selain itu, ia ingin menemukan alat yang tepat untuk pekerjaan yang tepat! Lebih baik daripada bertahan dengan teknologi pilihan pertama yang tidak memadai. ;)

Sebenarnya, saya juga melakukannya, sebagai programmer berpengalaman. Dan saya merekomendasikannya. Setiap kali saya memiliki proyek baru, perilaku saya adalah sebagai berikut:

  1. jelajahi (teknologi potensial yang mungkin berguna)
  2. bereksperimen (dengan yang terlihat menjanjikan)
  3. pilih teknisi Anda (atau bereksperimen sedikit lebih jauh sampai Anda tahu)
  4. tetap menggunakannya (kembangkan aplikasi Anda dan tarik melalui)

Saya pikir itu masuk akal.

dagnelies
sumber
1

Secara pribadi, jika seseorang harus fokus hanya pada satu teknologi, saya akan mengatakan itu harus C # / Java, digunakan bersama dengan SQL.

Dari sini, saya percaya, Anda dapat beradaptasi dengan teknologi lain.

Tetapi berpegang teguh pada satu teknologi bisa membatasi jika seorang pria ingin masuk ke lingkungan perusahaan.

Idealnya, satu platform berorientasi objek, satu platform seluler, satu platform web dan kemudian pengetahuan SQL yang sangat baik (atau lingkungan db lainnya).

Dan dasar-dasarnya terlebih dahulu, kalau tidak, dia AKAN macet nanti!

Pierre Pretorius
sumber
0

Tidak buruk jika dia pemula dalam pemrograman.

Dia akan melihat bagaimana beberapa hal bekerja. Tetapi jika dia tidak mengerti apa yang dia lakukan, lebih baik tidak melakukannya sama sekali.

Saya punya masalah dengan diri saya sendiri, saya ingin tahu semuanya Java, C, C ++, C #, Phyton, ASP.NET ... dll tapi saya sadar saya tidak tahu semuanya, jadi saya fokus pada beberapa hal dan itu jauh lebih baik.

Jadi apa yang harus dia lakukan (menasihatinya):

  1. Pikirkan hal-hal apa yang ingin Anda lakukan
  2. Jelajahi semua opsi
  3. Temukan yang cocok untuk Anda
  4. Pelajari itu
  5. Jangan berhenti belajar

Saya tidak akan setuju dengan @arnaud jika Anda selalu menjelajahi dan mempelajari hal-hal baru ketika proyek baru ada di depan Anda (yah tidak sepenuhnya). Diperlukan terlalu banyak waktu untuk mengeksplorasi dan mempelajari hal-hal baru berulang kali dan beberapa proyek memiliki batas waktu. Tetapi di sisi lain jika Anda perlu mempelajari beberapa hal baru yang sederhana tidak apa-apa: D.

AeOn
sumber
0

Saya setuju dengan Anda, kadang-kadang mudah untuk mendapatkan pengetahuan yang dangkal tentang kerangka kerja atau teknologi atau bahasa tertentu, tetapi untuk mendapatkan pemahaman nyata yang terbaik untuk terlibat dalam pengembangan dunia nyata hingga selesai, dan memeliharanya - menjadi seseorang yang orang lain datang untuk meminta nasihat. Lebih disukai menjadi jack dari semua perdagangan, master satu daripada hanya jack semua perdagangan, master tidak ada . Karena itu, saya tidak akan mencegahnya belajar hal-hal baru karena dia jelas memiliki tingkat antusiasme yang baik.

dodgy_coder
sumber