Bagaimana cara meningkatkan keterampilan pengkodean saya? [Tutup]

76

Berikut sedikit informasi tentang saya, sebelum memulai dengan pertanyaan.

Saya seorang Sarjana Ilmu Komputer, Jawa menjadi bahasa pengkodean utama saya.

Masalah dasar di Universitas saya adalah standar pengajaran. Tidak ada yang peduli tentang mengajarkan pengetahuan coding kepada siswa, bukan hanya pengetahuan teoritis.

Efeknya, sebagian besar teman kuliah saya tidak mengerti pemrograman sama sekali.

Bahkan saya belum bisa keluar dari lingkungan pemrograman tradisional, yang membatasi pengkodean saya sampai batas tertentu.

Apa cara yang memungkinkan saya dapat mengembangkan dan memperluas keterampilan pemrograman / coding saya.

Juga, dapatkah Anda menyarankan sumber yang sama?

Diedit : Sumber menyarankan pengembangan keterampilan pengkodean.

ykombinator
sumber
13
FYI: Dari pengalaman saya, pengetahuan teoritis pasti akan membantu Anda di bagian selanjutnya
Gopi
6
Bisakah Anda berenang hanya dengan membaca buku "belajar sendiri cara berenang di hari X"?
pramodc84
9
"Latihan yang disengaja". Lakukan sesuatu yang sedikit lebih sulit daripada level Anda saat ini, selesaikan, pelajari darinya, ulangi.
7
@ pramodc84 Tapi tentu saja membaca buku yang berhubungan dengan berenang dan kemudian melompat ke sungai pasti akan membantu DARIA langsung melompat ke sungai dan mencoba belajar berenang
Gopi
5
Seperti itu di kebanyakan universitas. Gelar bukanlah tentang menjadi seorang pengkode yang baik; ini adalah tentang mengetahui teori di balik itu, dan bagaimana menerapkannya - Anda dapat mengatakan bahwa menjadi pembuat kode yang baik dibiarkan sebagai latihan bagi lulusan.
konfigurator

Jawaban:

46

Pemrograman adalah salah satu bidang di mana pengalaman penting. Oleh karena itu, untuk menjadi pembuat kode yang lebih baik, Anda harus lebih banyak kode. Namun, menulis bukanlah satu-satunya hal yang harus Anda lakukan. Anda juga harus membaca kode pengembang lain dan belajar darinya apa itu kode yang baik. Lihat pertanyaan SO tentang ini .

Anda mungkin juga menemukan buku, yang secara khusus dikhususkan untuk pengkodean, berguna; seperti "Kode Lengkap". Mereka berisi deskripsi tentang apa kode yang baik, yang, dikombinasikan dengan pengetahuan dasar Anda, dapat membuat Anda seorang programmer yang baik.

P Shved
sumber
8
Code Complete adalah bacaan yang bagus - itu adalah buku yang paling saya harap saya baca ketika saya keluar dari perguruan tinggi sebagai seorang programmer.
glenatron
2
Sekarang buku itu ada di must-readdaftar saya . :) terima kasih!
ykombinator
2
@ykombinator:(push 'code-complete must-read)
Giorgio
98

Kutipan favorit saya dari Konfusius:

Saya dengar, saya tahu. Saya mengerti, saya ingat. Saya mengerti, saya mengerti.

Semua pengetahuan yang saya dapatkan, adalah dari menerapkan satu dan satu strategi:

Ambil jalan yang paling menantang, selalu.

Anda ingin belajar C #? Dapatkan pekerjaan sebagai pengembang C #.

Anda ingin belajar bahasa Italia? Pergi ke sana dengan kamus bahasa Inggris / Italia, dan berbicara bahasa Italia

Anda ingin belajar coding? Kode!


sumber
19
+1 untuk selalu mengambil jalan tersulit. Akhirnya, mereka menjadi jalan yang mudah! Jawaban yang bagus.
Ryan Hayes
3
Tampaknya memang tugas yang menakutkan untuk mempersiapkan diri menghadapi tantangan, tetapi saya merasa menghasilkan motivasi untuk berhasil. Jawaban yang bagus Bahasa yang saya tahu paling baik adalah bahasa yang saya lakukan pertama kali tanpa petunjuk dan terus belajar dengan setiap proyek.
Chris
2
Saya berubah paling keras oleh sebagian besar tantangan. Ini lebih positif
2
Pemrograman yang baik bukan olahraga penonton.
Incognito
4
@Pierre, Anda ingin belajar 1) Latin dan 2) Perl. Kode Perl dalam bahasa Latin: csse.monash.edu.au/~damian/papers/HTML/Perligata.html
21

Pengodean adalah saran yang bagus, tetapi tanpa seseorang di sana untuk memberi Anda umpan balik, Anda hanya perlu mengulangi kesalahan Anda. Temukan pekerjaan, kerjakan proyek sumber terbuka, cari mentor dan minta mereka melihat kode Anda.

JeffO
sumber
1
Persis! Itu poin yang bagus. Mungkin saya belum memiliki mentor, sampai sekarang.
ykombinator
4
Tulis beberapa kode, dan kirimkan dengan pertanyaan spesifik di StackOverflow.com dan Anda akan mendapatkan banyak.
JeffO
2
Inilah sebabnya saya terus mengeluh untuk memiliki ulasan kode pada proyek kami, tetapi "tidak ada waktu untuk itu."
MetalMikester
1
@MetalMikester - tetapi selalu ada waktu untuk menyelesaikannya.
JeffO
1
@ Jeffe Itulah yang terjadi sekarang. :(
MetalMikester
10

Berikut adalah presentasi yang diberikan Dan North dan QCon tentang cara pindah dari pemula ke programmer ahli yang disebut Sharpening the Tools . Di bawah ini adalah saran utama dari presentasi:

  1. Berlatih dasar-dasarnya: kata, kode untuk bersenang-senang ...
  2. Belajar dari orang lain: baca buku, blog, dll., Baca kode, program berpasangan ...
  3. Memahami tren: apa yang sedang terjadi di industri sekarang
  4. Berbagi pengetahuan: cara terbaik untuk mempelajari sesuatu adalah memahami dan mengajarkannya
  5. Pertahankan kotak peralatan Anda: gunakan "abadi" dan alat-alat baru
  6. Belajar cara belajar: memahami cara belajar bekerja
ysolik
sumber
8

Cobalah untuk menulis kompiler untuk beberapa bahasa sederhana dari awal. Anda akan banyak meningkatkan keterampilan Anda sepanjang waktu (dengan beberapa teknik teoretis yang bagus dari teori bahasa formal sebagai bonus). Saya mencoba menulis versi sederhana Excel, dan ini juga latihan yang sangat bagus.

Seperti kata orang lain, satu-satunya cara untuk meningkatkan keterampilan coding Anda adalah dengan benar-benar melakukannya. Jadikan tangan Anda kotor dengan beberapa proyek besar. Tetapi kemudian untuk program besar, bahkan lebih penting bagi Anda menguasai teknik desain perangkat lunak, jika tidak, ukuran program tersebut tampaknya tidak dapat dikelola.

Ada satu kutipan bagus dari Nate Kirby:

"Programer yang buruk mengabaikan detail. Desainer yang buruk tersesat dalam detail."

Jadi beralih di antara dua level abstraksi ini adalah keterampilan yang harus Anda kuasai.

Juga kecepatan berapa banyak baris kode yang dapat Anda tulis per jam bukanlah yang harus Anda tuju. Saya suka kutipan dari David Parnas :

"Saya sering mendengar pengembang digambarkan sebagai 'seseorang yang tahu cara membangun sistem besar dengan cepat.' Tidak ada trik dalam membangun sistem besar dengan cepat; semakin cepat Anda membangunnya, semakin besar hasilnya! "

DL
sumber
5

Saya telah menerapkan kumpulan taruhan atau permainan Baccarat di hampir setiap bahasa yang saya pelajari.

Jenis perangkat lunak ini mencakup

  • Tanggal dan waktu, dengan perhitungan
  • Jenis mata uang dan hal-hal yang dapat dikonversi ke dan dari mata uang
  • Seperangkat aturan terpisah yang mudah diuji
  • Negara, transisi antara negara dan beberapa entitas yang bertanggung jawab untuk transisi negara
  • Banyak pengguna dengan tampilan berbeda dari model yang sama
  • Berbagai kondisi ujung

Beberapa pemain blackjack dan poker juga bisa digunakan.

Satu peringatan adalah bahwa dalam pekerjaan sehari-hari saya bekerja pada sistem keuangan dan ada tumpang tindih besar antara hal-hal yang perlu dipertimbangkan ketika menulis permainan peluang multi pemain dan sistem perdagangan.

sal
sumber
4
  • Pilih proyek opensource yang bagus dan baca kodenya.
  • Ambil proyek ukuran sedang untuk Anda sendiri dan mulai koding
    • Jika Anda tertarik pada pengembangan web, cobalah untuk membangun situs yang ada dari awal menggunakan teknologi favorit Anda; bagaimana dengan twitter di Django?
    • Jika Anda tertarik dengan pengembangan aplikasi desktop, mulai dengan notepad dan lakukan improvisasi untuk mendukung fitur-fitur canggih (pencarian berbasis regex, untuk mulai dengan).
Amarghosh
sumber
4

Pikirkan seperti ini .... Tiger Woods tidak bisa menjadi pegolf "terbaik" dengan menonton golf atau membaca tentang itu. Dia seperti itu, seperti halnya atlet lainnya, dengan belajar, dengan berlatih, dengan menemukan di mana dia dapat meningkatkan permainannya dan melakukan sesuatu tentang hal itu.

Pengodeannya sama. Cara terbaik untuk menjadi lebih baik adalah dengan mempelajari apa yang dilakukan orang lain, memahami MENGAPA mereka melakukannya dengan cara itu, dan kemudian melakukannya sendiri.

Muad'Dib
sumber
Ya, Tiger Woods bisa menjadi pegolf "terbaik" dengan memiliki banyak kekasih. :-) Jadi dia bukan contoh yang bagus.
DL
4

Seperti dalam aktivitas manusia lainnya, cara terbaik untuk meningkatkan adalah mempraktikkan pengetahuan Anda, tetapi Anda memerlukan beberapa latihan untuk itu. Dave Thomas , salah satu penulis buku The Pragmatic Programmer, memperkenalkan konsep Code Katas , mirip dengan konsep kata dalam seni bela diri.

Anda dapat melihatnya di sana: http://codekata.pragprog.com/

jmservera
sumber
4

Lompat ke dalam air, mungkin akan terasa dingin pada awalnya dan Anda akan tergoda untuk keluar tetapi segera tubuh Anda akan terbiasa dan menjadi hangat lagi dan saat Anda merasa nyaman di dalam air, Anda kemudian bisa berenang di sekitar mungkin masuk ke dalam ujung yang dalam.

Saya baru saja menyelesaikan kuliah beberapa bulan yang lalu di mana saya belajar Jawa. Sama seperti Anda saya tidak memiliki petunjuk tentang cara kode dengan benar. Sekitar sebulan yang lalu saya ingin membangun aplikasi web dalam PHP. Saya tidak tahu apa yang saya lakukan tetapi hanya melakukannya. Itu menakutkan dan luar biasa pada awalnya tetapi ketika Anda berlatih itu menjadi alami. Saya bahkan menulis aplikasi berkali-kali, setiap kali semakin menyederhanakannya. Sekarang saya sedang mengerjakan aplikasi dari awal tetapi kali ini saya mencari tahu bagaimana melakukannya berorientasi objek dan menggunakan bentuk cepat PEAR dan modulnya yang merupakan rintangan lain yang harus saya lalui tetapi tetap bertekad dan bersemangat.

Jadi berlatihlah. Lompat ke dalam air! Semoga berhasil :)

Jonathan
sumber
3

Saya sarankan mempelajari semua sintaks bahasa favorit Anda. Memahami cara menggunakan fungsi virtual, pewarisan, lambda jika ada. dll. Satu hal yang saya lakukan adalah mengambil perpustakaan menakutkan yang besar (saya melakukan ini dengan boost dan STL untuk C ++) dan melihat apakah setiap baris dan setiap kata kunci masuk akal.

Atau sebagai alternatif Anda dapat membaca referensi sintaksis bahasa jika ada yang bagus yang mencakup versi paling terbaru. Sebagai contoh di sini adalah referensi C # (Bukan versi di atas. Saya membuat kesalahan dengan melihat versi lama yang lebih populer yang tidak memiliki sintaks yang saya cari)


sumber
3

Konsensus umum adalah "menulis lebih banyak kode", yang saya setujui, tetapi saya akan menambahkan saran itu bahwa Anda harus menulis banyak jenis kode yang berbeda. Java baik-baik saja sejauh bahasa berjalan, tetapi Anda harus menulis kode baik naik turun spektrum daya. Selain Java, saya sarankan melakukan beberapa proyek kecil dalam bahasa tingkat rendah (C adalah yang bagus untuk ini), bahasa scripting (saya lebih suka perl, tetapi python juga merupakan pilihan yang baik), bahasa fungsional ( lisp adalah rekomendasi umum di sini, tetapi OCaml dan Haskell juga merupakan pilihan yang baik), dan setidaknya merasa nyaman dengan membaca bahasa majelis.

Juga, pilih beberapa variasi dalam jenis program yang Anda implementasikan. Lihatlah penerapan setidaknya GUI Desktop, aplikasi web yang kaya, klien jaringan dan server, driver, utilitas munging data, pelacak sinar, dan simulasi fisika.

Semua proyek harus memiliki cakupan yang relatif kecil, tujuannya bukan untuk memiliki program yang lengkap, tetapi untuk mendapatkan pengalaman luas dalam berbagai domain yang mungkin Anda temui, untuk mempelajari berbagai jenis pemikiran yang diperlukan untuk masing-masing, dan untuk mencari tahu di mana minat Anda.

Setelah Anda selesai melakukannya, Anda akan memiliki ide bagus tentang jenis pemrograman apa yang paling menarik bagi Anda, dan Anda dapat menemukan atau memulai proyek sumber terbuka untuk mendapatkan pengalaman bekerja pada basis kode besar, berurusan dengan istilah proyek, dan bekerja dengan pengembang lain.

Cercerilla
sumber
2

Anda mendapatkan beberapa jawaban yang serupa dan jawaban saya juga akan sama. Tulis kode Ada dua cara bagus yang bisa Anda lakukan.

  1. Pilih sesuatu yang benar-benar menarik bagi Anda atau minat Anda dan hanya tentang mengimplementasikannya. Jika Anda suka game, tulis game. Jika Anda tertarik pada hal-hal web, kumpulkan situs web yang menarik dan asli. Anda mungkin tidak berhasil menyelesaikannya, tetapi pengalaman itu akan mengajarkan Anda banyak hal.
  2. Pilih proyek open source yang menurut Anda menarik dan terlibatlah dengannya. Belajar dari kode yang ada dan menggunakannya untuk memperbaiki bug, membangun pengujian unit dan mengimplementasikan fitur baru.

Salah satu dari mereka akan memberi Anda pengalaman langsung pemrograman yang Anda butuhkan serta keterlibatan dalam komunitas pemrograman saat Anda belajar dan harus mengajukan pertanyaan untuk mendapatkan lebih banyak dari itu. Anda akan membuat banyak kesalahan. Ini bagus - jika Anda berhenti membuat kesalahan, Anda telah berhenti belajar dan Anda perlu menemukan cara baru untuk menantang diri sendiri.

glenatron
sumber
2

Saran saya

  • Temukan proyek kesayangan dan tulis dalam bahasa yang berbeda (lyke python / c #) dengan yang Anda kenal. Ini akan mengajarkan Anda lebih dari yang dapat Anda bayangkan. Lihatlah proyek-proyek lain yang serupa dan cobalah untuk mendapatkan paritas fitur dengan mereka. Anda bisa lambat dengan ini dan memiliki tujuan sederhana, terus meningkatkan tingkat kesulitan Anda dengan fitur-fitur baru. Ini juga menjadi bagian pertunjukan Anda ketika Anda pergi untuk wawancara kerja.
  • Temukan kegunaan dalam proyek Anda untuk teknologi yang relevan seperti layanan web, javascript, ajax, geocoding dan pada dasarnya apa pun yang membuat kemajuan di dunia perangkat lunak.
  • Bermain dengan sistem operasi lain seperti Linux / freebsd. Semakin banyak paparan yang Anda dapatkan ke berbagai jenis sistem, semakin Anda akan memahami cara berpikir mereka, dan mengapa mereka melakukan hal-hal dengan cara yang sama.
  • Ketika Anda selesai dengan bagian-bagian kode Anda, kembalilah ke sana dan coba tingkatkan terus-menerus. Temukan ketidakefisienan, tambahkan lebih banyak komentar saat dibutuhkan, cobalah untuk menyempurnakannya.
  • Gali di c2.com. Ada banyak praktik pengkodean yang baik. Pelajari ini dan coba terapkan dalam proyek Anda sendiri.
  • Baca buku-buku seperti programmer pragmatis dan kode lengkap, mereka akan memberi Anda pengetahuan tentang pemrograman pertempuran diperketat.
  • Ini mungkin terdengar tidak berhubungan, tetapi temukan hobi teknis lain jika Anda belum memilikinya seperti balap mobil RC, memainkan alat musik atau belajar bahasa asing. Semakin banyak bagian otak Anda yang digunakan semakin baik, dan Anda perlu bersantai dari waktu ke waktu karena pemrograman dapat menjadi terlalu banyak.
Tjaart
sumber
2

Ulasan rekan sangat membantu meningkatkan kualitas kode Anda. Jika Anda tidak memiliki mentor nyata, Anda dapat memposting kode Anda [setelah dikurangi menjadi minimum yang diperlukan] di StackOverflow atau RefactorMyCode atau milis dan orang-orang akan membantu Anda meningkatkan kualitas kode Anda.

missingfaktor
sumber
1

"Praktek!" Itu klise.

Anda harus meninjau apa yang telah Anda pelajari di kelas matematika, dan membuat beberapa program yang menangani masalah tersebut. Juga, terapkan program lift, mesin penjual otomatis (yang menghitung perubahan koin), untuk mempertajam keterampilan logika Anda. Pikirkan segala sesuatu dalam kehidupan sehari-hari, dan terapkanlah.

Ming-Tang
sumber
1

Ya, latihan sangat penting untuk mengembangkan keterampilan pemrograman dan menjaganya agar tetap tajam. Namun berlatih sendiri hanya akan membawa Anda sejauh ini. Anda juga harus belajar dari orang yang lebih tahu dari Anda. Ada teknik yang belum pernah Anda dengar, praktik yang manfaatnya tidak segera jelas, dan trik yang tidak akan pernah Anda temukan sendiri.

Banyak cara untuk mempelajari teknik baru, trik yang rapi, dan praktik yang bermanfaat. Membaca buku-buku. Bicaralah dengan rekan kerja. Mengajukan pertanyaan. Tinjau kode orang lain, dan minta mereka meninjau kode Anda. Baca blog dan artikel tentang pemrograman, termasuk situs ini. Singkatnya, jangan bekerja dalam ruang hampa.

Oh, dan jika Anda tidak yakin apa artinya NP-complete, atau jika notasi-O besar membuat Anda takut, maka Anda mungkin harus mengambil beberapa teori kelas komputasi dan algoritma.

Dima
sumber
1

Saya akan mengatakan bahwa Anda harus membaca tentang pola desain, seperti Builder, Factory, Composite, dan akhirnya Observer, Mediator, dan Flyweight. Pola desain bukanlah solusi akhir semua untuk pengkodean, tetapi mereka menunjukkan bagaimana menerapkan konsep teoritis pemrograman berorientasi objek.

Tim Claason
sumber
1

Saya hanya dapat menyarankan hal apa yang berhasil bagi saya. Saya bermimpi untuk belajar bahasa pemrograman dan membuat mesin catur dengannya. Saya telah menghabiskan waktu untuk buku, artikel, dan sampel kecil. Jadi saya memutuskan untuk memeriksa proyek nyata yang memiliki dokumentasi yang lebih baik untuk pengembang. Saya telah memilih satu dan mulai membaca proyek hari demi hari. Jangan berpikir bahwa melewati hari-hari membuang-buang waktu saat membaca. Jauh lebih baik daripada menghabiskan waktu membaca artikel dan buku. Anda akan menemukan banyak hal yang tidak jelas pada pandangan pertama tetapi hari demi hari ini akan berubah jika Anda mencoba penelitian dengan sabar. Jangan berharap untuk memahami semuanya dalam seminggu. Anda harus mempertahankan harga diri rendah ketika Anda tidak memahami beberapa hal. Hanya mencoba untuk menemukan bagaimana hal luar biasa ini bekerja dan dinikmati.

Pilih proyek yang sudah ada yang Anda sukai. Mulailah membaca kode, men-debug-nya, dan mencoba memahami cara kerja setiap hari. Gunakan juga proyek ini untuk Anda sendiri. Kemudian mulailah menambahkan beberapa fitur yang Anda inginkan. Bahkan coba tulis aplikasi yang sama atau mirip.

Darah segar
sumber