it-swarm-id.com

Bagaimana cara meningkatkan keterampilan pengkodean saya?

Berikut sedikit informasi tentang saya, sebelum memulai dengan pertanyaan.

Saya seorang Sarjana Ilmu Komputer, Java 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 teoretis.

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.

76
ykombinator

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. Rujuk ke SO pertanyaan tentang ini .

Anda mungkin juga menemukan buku, yang 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.

46
P Shved

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!

98
user2567

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, temukan mentor dan minta mereka melihat kode Anda.

21
JeffO

Berikut adalah presentasi Dan North memberi dan QCon pada bagaimana 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 terjadi di industri sekarang
  4. Berbagi pengetahuan: cara terbaik untuk mempelajari sesuatu adalah dengan memahami dan mengajarkannya
  5. Pertahankan kotak peralatan Anda: gunakan "abadi" dan alat baru
  6. Belajar cara belajar: memahami cara belajar bekerja
10
ysolik

Cobalah untuk menulis kompiler untuk beberapa bahasa sederhana dari awal. Anda akan meningkatkan keterampilan Anda sepanjang jalan (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 pengkodean Anda adalah dengan benar-benar melakukannya. Jadikan tangan Anda kotor dengan beberapa proyek besar. Tetapi kemudian untuk program besar, bahkan lebih penting lagi Anda menguasai teknik desain perangkat lunak, jika tidak, ukuran program tersebut tampaknya tidak dapat dikelola.

Ada satu kutipan yang 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 baris kode yang dapat Anda tulis per jam bukanlah tujuan yang Anda inginkan. Saya suka kutipan oleh 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! "

8
D. L.

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.

5
sal
  • Pilih proyek opensource yang bagus dan baca kodenya.
  • Ambil sendiri proyek ukuran sedang 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, mulailah dengan notepad dan lakukan improvisasi untuk mendukung fitur-fitur canggih (pencarian berbasis regex, untuk memulai).
4
Amarghosh

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 bisa berenang di sekitar mungkin pergi ke 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 PEAR dan modul cepatnya yang merupakan rintangan lain yang harus saya lalui tetapi bertekad dan bersemangat Namun.

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

4
Jonathan

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.

4
Muad'Dib

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/

4
jmservera

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)

3
user2528

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 tidak masalah sejauh bahasa digunakan, tetapi Anda harus menulis kode baik naik turun spektrum daya. Selain Java, saya sarankan melakukan beberapa proyek kecil di level yang lebih rendah bahasa (C adalah yang baik 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 pilihan yang baik), dan setidaknya merasa nyaman dengan membaca bahasa Majelis.

Juga, pilih beberapa variasi dalam jenis program yang Anda laksanakan. Lihatlah mengimplementasikan 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 mengetahui 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.

3
Cercerilla

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-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.

2
glenatron

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 segala sesuatu 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 pemikiran yang melanda mereka, dan mengapa mereka melakukan hal-hal seperti yang mereka lakukan.
  • 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 lainnya 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.
2
Tjaart

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.

2
missingfaktor

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.

1
Dima

Saya akan mengatakan bahwa Anda harus membaca tentang pola desain, seperti Builder, Factory, Composite, dan akhirnya Observer, Mediator, dan Flyweight. Pola desain bukan merupakan solusi pengkodean yang lengkap, tetapi menunjukkan bagaimana menerapkan konsep teoritis pemrograman berorientasi objek.

1
Tim Claason

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 sambil 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 memegang 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. Juga gunakan proyek untuk diri sendiri. Kemudian mulailah menambahkan beberapa fitur yang Anda inginkan. Bahkan coba tulis aplikasi yang sama atau mirip.

1
Freshblood

"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.

1
Ming-Tang