Bagaimana saya bisa mendapatkan lebih banyak pengalaman pemrograman [tertutup]

9

Saya akan menjadi mahasiswa ilmu komputer tahun ketiga dan saya telah membaca Head first Java, Head First C, dan saya sedang membaca C ++ yang merupakan bahasa yang paling saya sukai karena memiliki gaya mengajar yang baik untuk orang-orang yang berpengalaman. Saya berencana untuk belajar membuat perangkat lunak dengan QT, belajar objektif-C (untuk iphone), atau membaca Efektif C ++.

Bagaimana saya bisa mendapatkan pengalaman sebagai programmer? Apakah saya memiliki keterampilan untuk bergabung dengan proyek sumber terbuka atau apakah saya perlu belajar php, mySQL atau bahasa lainnya. Saya suka pemrograman dan ilmu komputer secara umum meskipun beberapa kelas bisa sangat sulit (ilmu komputer teoretis). Saya juga berencana untuk menjadi guru di c ++ tapi itu tidak akan terjadi dalam waktu dekat.

Anthony
sumber
1
Sudahkah Anda menulis program yang digunakan orang lain? Jika tidak, tulis satu yang dibutuhkan anggota keluarga yang dicintai, dan buat itu bermanfaat baginya (mungkin perlu beberapa kali pengulangan). Bagian terakhir adalah tempat pelajaran yang sebenarnya.
Bagaimana Anda bisa sampai di Carnegie Hall?
jfrankcarr
1
Saya akan terdengar seperti orang brengsek sebentar tapi ... pengalaman - Partisipasi aktif dalam acara atau kegiatan, yang mengarah pada akumulasi pengetahuan atau keterampilan. Jadi mulailah berpartisipasi aktif dalam pemrograman.
Steven Evers
1
BTW, apa perbedaan antara StackOverflow dan Programmer? Apakah pola pertanyaan penutup dimaksudkan untuk membuat Programmer hanya StackOverflow lain? Apa gunanya kalau begitu - hanya menggabungkan keduanya. Kami dulu bisa mengajukan pertanyaan esoterik pada Programmer yang kami tidak bisa di StackOverflow.
שינתיא אבישגנת

Jawaban:

11

ABC - SELALU MENJADI CODING. Sangat sederhana. Salah satu cara favorit saya untuk mengenal suatu bahasa adalah dengan menulis juru bahasa mainan untuk subset dari bahasa dalam bahasa itu sendiri atau jika itu bukan hal Anda maka mungkin pelacak sinar atau sesuatu yang hanya cukup besar untuk menjadi non-sepele tapi tidak terlalu besar sehingga tidak bisa selesai dalam sebulan atau lebih. Intinya adalah bekerja pada sesuatu yang akan memaksa Anda untuk melihat perpustakaan standar dan fasilitas abstraksi data yang ditawarkan bahasa tersebut. Terkadang proyek ini sukses, terkadang tidak, tetapi pada akhirnya saya cukup tahu tentang bahasa untuk mengetahui apa kelebihan dan kelemahannya dan apakah saya ingin terus belajar lebih banyak. Jika ternyata saya menyukai bahasa maka setiap kali saya membaca makalah atau posting blog yang menarik saya mencoba memulai proyek di mana saya menerapkan beberapa ide yang disajikan dalam makalah atau posting blog. Dengan cara ini saya selalu berlatih dan mempelajari ide-ide baru sehingga menjadi semacam siklus yang baik.

Beberapa proyek yang telah bekerja sangat baik untuk saya di masa lalu: juru bahasa untuk subset dari beberapa bahasa, pelacak sinar, generator pengurai PEG, pengurai header HTTP, klien / server gema sederhana, bot twitter untuk secara otomatis memposting tweet dari antrian, produk amazon scraper untuk mencari penawaran.

davidk01
sumber
+1 Anda menyebutkan beberapa proyek yang sangat menarik, terima kasih.
Anthony
8

Sebagaimana dijelaskan dengan baik dalam Program Teach Yourself dalam Sepuluh Tahun , Anda harus mengikuti langkah-langkah selanjutnya:

  • Dapatkan tertarik pada pemrograman, dan lakukan beberapa karena itu menyenangkan. Pastikan itu terus menjadi cukup menyenangkan sehingga Anda akan bersedia untuk memasukkan sepuluh tahun / 10.000 jam Anda.

  • Program . Jenis pembelajaran terbaik adalah belajar sambil melakukan. Singkatnya, "tingkat kinerja maksimal untuk individu dalam domain yang diberikan tidak dicapai secara otomatis sebagai fungsi dari pengalaman yang diperluas, tetapi tingkat kinerja dapat ditingkatkan bahkan oleh individu yang sangat berpengalaman sebagai hasil dari upaya yang disengaja untuk meningkatkan . " (hal. 366) dan "pembelajaran yang paling efektif membutuhkan tugas yang didefinisikan dengan baik dengan tingkat kesulitan yang sesuai untuk individu tertentu, umpan balik informatif, dan peluang untuk pengulangan dan koreksi kesalahan." (hal. 20-21) Buku Kognisi dalam Praktek: Pikiran, Matematika, dan Budaya dalam Kehidupan Sehari-hari adalah referensi yang menarik untuk sudut pandang ini.

  • Bicara dengan programmer lain; baca program lain . Ini lebih penting daripada buku atau kursus pelatihan apa pun.

  • Jika Anda mau, masukkan empat tahun di perguruan tinggi (atau lebih di sekolah pascasarjana). Ini akan memberi Anda akses ke beberapa pekerjaan yang membutuhkan kredensial, dan itu akan memberi Anda pemahaman yang lebih dalam tentang bidang ini, tetapi jika Anda tidak menikmati sekolah, Anda bisa (dengan dedikasi) mendapatkan pengalaman serupa di pekerjaan Anda sendiri atau di tempat kerja . Bagaimanapun, belajar buku saja tidak akan cukup. "Pendidikan ilmu komputer tidak dapat membuat siapa pun menjadi programmer ahli seperti mempelajari kuas dan pigmen dapat membuat seseorang menjadi pelukis ahli," kata Eric Raymond, penulis The New Hacker's Dictionary. Salah satu programmer terbaik yang pernah saya pekerjakan hanya memiliki gelar SMA; dia menghasilkan banyak perangkat lunak yang hebat, memiliki grup berita sendiri, dan membuat cukup banyak opsi saham untuk membeli klub malamnya sendiri.

  • Kerjakan proyek dengan programmer lain . Menjadi programmer terbaik di beberapa proyek; menjadi yang terburuk pada beberapa orang lain. Ketika Anda yang terbaik, Anda bisa menguji kemampuan Anda untuk memimpin proyek, dan untuk menginspirasi orang lain dengan visi Anda. Ketika Anda yang terburuk, Anda belajar apa yang dilakukan oleh para tuan, dan Anda belajar apa yang tidak mereka sukai (karena mereka membuat Anda melakukannya untuk mereka).

  • Bekerja pada proyek setelah programmer lain . Memahami program yang ditulis oleh orang lain. Lihat apa yang diperlukan untuk memahami dan memperbaikinya ketika programmer asli tidak ada. Pikirkan tentang bagaimana merancang program Anda untuk membuatnya lebih mudah bagi mereka yang akan memeliharanya setelah Anda.

  • Pelajari setidaknya setengah lusin bahasa pemrograman. Sertakan satu bahasa yang mendukung abstraksi kelas (seperti Java atau C ++), bahasa yang mendukung abstraksi fungsional (seperti Lisp atau ML), bahasa yang mendukung abstraksi sintaksis (seperti Lisp), bahasa yang mendukung spesifikasi deklaratif (seperti templat Prolog atau C ++), satu yang mendukung coroutine (seperti Icon atau Skema), dan yang mendukung paralelisme (seperti Sisal).

  • Ingatlah bahwa ada "komputer" dalam "ilmu komputer". Ketahui berapa lama waktu yang dibutuhkan komputer Anda untuk menjalankan instruksi, mengambil kata dari memori (dengan dan tanpa kehilangan cache), membaca kata-kata berturut-turut dari disk, dan mencari lokasi baru pada disk. (Jawaban di sini.)

  • Terlibat dalam upaya standardisasi bahasa. Ini bisa berupa komite ANSI C ++, atau bisa memutuskan apakah gaya pengkodean lokal Anda akan memiliki 2 atau 4 tingkat indentasi ruang. Apa pun itu, Anda belajar tentang apa yang disukai orang lain dalam suatu bahasa, seberapa dalam mereka merasakannya, dan mungkin bahkan sedikit tentang mengapa mereka merasakannya.

  • Memiliki akal yang baik untuk keluar dari upaya standardisasi bahasa secepat mungkin.

BЈовић
sumber
3

Saya sarankan Anda melatih diri dengan secara efektif menulis program fungsional. Ambil proyek yang lebih besar begitu Anda merasa memiliki dasar-dasarnya. Pelajari kerangka qt untuk pengembangan perangkat lunak dan terus berlatih. Cara terbaik untuk belajar program adalah dengan benar-benar menulis kode.

Saya akan mengatakan membaca juga memainkan peran penting, Anda dapat mencari tim pengembang yang menjadi tuan rumah proyek open source (Carilah di github, atau situs serupa lainnya) karena mereka dapat menawarkan Anda pengalaman pengembangan tim yang berharga.

Bugster
sumber
2

Kadang-kadang tempat-tempat seperti sourceforge agak menakutkan pada awalnya. Cara yang sangat bagus untuk menemukan sesuatu untuk dilakukan, adalah menjelajah melalui pelacak masalah proyek dan menemukan bug / masalah yang Anda suka suara memperbaiki.

Pada beberapa proyek github skala kecil ini menjadi lebih mudah diakses. Anda secara efektif memiliki arah dan tujuan dalam mencoba untuk mendapatkan kode, alih-alih membacanya secara membabi buta.

lwm
sumber
1

Sampel dalam buku atau tugas di universitas adalah titik awal yang baik untuk memahami bagaimana pemrograman bekerja dan mereka menunjukkan kemungkinan untuk proyek masa depan Anda.

Bekerja pada proyek nyata

Tetapi tanpa pengalaman proyek nyata, Anda cenderung melupakan hal-hal yang Anda pelajari.

Masalah adalah peluang untuk menunjukkan apa yang Anda bisa

Selain itu Anda melihat dalam proyek nyata betapa kompleks persyaratan dapat dan Anda mengalami kesulitan untuk mengetuk masalah. Masalah-masalah ini adalah peluang untuk menunjukkan apa yang Anda bisa. Anda dapat melihat sisi lemah Anda yang harus Anda tingkatkan.

Kayser
sumber
-1

saya perlu belajar php, mySQL, atau bahasa lainnya.

Ya, tuan, pertimbangkan bahasa-bahasa di web. HTML5, CSS3, dan JavaScript.

Inilah alasannya:

  1. Mereka cepat belajar, dan semakin kaya untuk mengimplementasikan.

  2. Mereka tidak lagi hanya menulis web, tetapi juga os, server dan, database.

  3. Paling Penting *

    Mereka sekarang digunakan untuk mendefinisikan kembali Ilmu Komputer 101 - oleh pencipta jQuery, John Resig.

Jangan tembak kurirnya, cukup periksa tautan ini ke akademi sekolah khan .

c / c ++ / c # desain pola transfer ke JS di sana.

Semoga itu bisa membantu.

Jack Stone
sumber
+1 - Sangat salah bahwa ini diturunkan ke undian. Informasi itu valid. Tautan dapat dipercaya. Sumbernya adalah jQuery Genius John Resig - memulai kursus pemrograman 101 dengan JavaScript, dan itu akan berhasil. Lihatlah Akademi Khan. Suara positif untuk potensi memajukan pendidikan; paling tidak. Terima kasih.
Jack Stone