Saya seorang mahasiswa di University of South Florida yang frustrasi dengan lingkungan pendidikan dalam program Ilmu Komputer. Saat ini, saya mengambil "Desain Program." Saya harus belajar bagaimana mengatur kode sumber saya ke dalam fungsi dan modul untuk membuat program saya dapat dibaca dan dikelola; sebagai gantinya, saya belajar tentang array dan rekursi di C. Semester berikutnya, saya harus mengambil "Desain Berorientasi Objek," yang diajarkan melalui C ++ ( ngeri .)
Dua tahun lalu, saya jatuh cinta pada pemrograman, dan saya sudah belajar sebanyak yang saya bisa sejak saat itu. Prospek mengambil kelas C ++ lain membuat saya hampir menangis. Untuk alasan itu, saya pikir saya akan memulai klub pemrograman untuk bertemu dengan siswa yang sama ambisiusnya, belajar bahasa baru, mendiskusikan topik pengembangan perangkat lunak, dan bekerja dengan pengembang siswa lainnya.
Namun, saya mulai menyadari bahwa mungkin tidak ada siswa lain yang berbagi pengalaman pengembangan perangkat lunak saya. Itu bukan karena kurangnya motivasi tetapi kurangnya kesempatan: Saya hanya tahu satu kelas pemrograman lain ("Bahasa Pemrograman") dan tidak ada kelas tentang pengembangan perangkat lunak dunia nyata. Semua orang hanya memiliki pengalaman menulis skrip sepele dalam C dan C ++.
Saya menyadari bahwa jika saya ingin bekerja dengan pengembang perangkat lunak siswa lain, saya harus melatih mereka sendiri. Sekarang, saya berencana untuk menjadikan klub bootcamp pengembangan perangkat lunak, mengajar anggota bagaimana mengembangkan perangkat lunak dengan alat dan bahasa modern. Jelas, memulai kursus pengembangan perangkat lunak tidak resmi adalah tugas yang monumental dengan banyak pendekatan yang mungkin. Pertanyaan saya kepada Anda, pembaca yang budiman, adalah
Apa rencana serangan saya?
Haruskah saya
- kuliah klub sendiri, mencoba menyeimbangkan pekerjaan klub dengan pekerjaan rumah?
- meminta staf pengajar CS untuk mengajarkan topik-topik dalam keahlian mereka yang mungkin kurang relevan bagi anggota?
- mencoba mencari pengembang yang simpatik dan berpengalaman di dalam atau di luar sekolah yang dapat berbagi beban kerja saya?
- tampilkan video ceramah (dari MIT OpenCourseWare , Google Tech Talks , dll)?
- mengadakan lokakarya pemrograman langsung?
- menugaskan pekerjaan rumah?
- melakukan sesuatu yang lain?
sumber
Jawaban:
Sejujurnya seluruh sikap Anda menyangkut saya. Anda bahkan belum menyatukan kelompok dan sudah Anda anggap Anda akan menjadi satu-satunya yang memiliki pengetahuan untuk diberikan dan orang yang harus memutuskan apa yang akan dilakukan kelompok.
Taruhan terbaik adalah mengumpulkan kelompok awal dan, sebagai kelompok, bertukar pikiran tentang apa yang ingin mereka lakukan. Apa yang ingin Anda lakukan secara pribadi tidak relevan dalam hal apa yang ingin dilakukan kelompok. Memutuskan apa yang harus dilakukan tanpa masukan dari anggota kelompok lain sebelum pertemuan pertama, Anda akan dianggap sebagai orang idiot yang sombong yang saya tidak ingin bekerja dengan sukarela. Dengan demikian Anda akan membunuh grup sebelum memulai.
sumber
Karena semua orang di klub Anda datang secara sukarela, Anda harus membuatnya menarik dan memotivasi. Dan pekerjaan rumah tidak sepenuhnya memotivasi.
Mengajar siapa pun itu sulit, tetapi mengapa tidak mencoba mengajar dengan cara seperti apa pada akhirnya? Pada dasarnya Anda mengumpulkan semua orang dan membuat proyek kelompok dan bahasa. Proyek ini harus menarik dan dapat menunjukkan kemajuan yang terlihat tetapi tidak terlalu sulit. Setelah bahasa Anda dipakukan, Anda mengajari mereka dasar-dasar (sintaks, paket / ruang nama, kelas, pengetikan statis / dinamis, dll.). Anda kemudian memberi mereka sumber daya (buku, tutorial online, dokumentasi online), cara mudah untuk menghubungi Anda, dan bagian spesifik dari proyek untuk dikerjakan. Setiap orang kemudian mengerjakan proyek di waktu luang mereka, berkonsultasi dengan dokumentasi dan Anda sesuai kebutuhan.
Apa keuntungan dari proses ini?
Satu-satunya cara untuk melihat apakah itu berhasil adalah dengan mencobanya.
sumber
Melihat diagram alur kursus untuk jurusan Anda, Anda benar-benar salah paham tentang apa yang diharapkan di berbagai kelas jurusan Ilmu Komputer.
Kelas yang Anda bicarakan adalah kelas pengantar yang memperkenalkan siswa pada berbagai konsep dasar dalam pengkodean. Sepertinya "Konsep Pemrograman" merupakan pengantar untuk profesi ini dengan ikhtisar 1 minggu dari semua bidang dasar ilmu komputer, tanpa pengkodean aktual. Dari sana, itu NORMAL untuk memiliki kursus pengantar di C, dan kursus pengantar lain di C ++ adalah NORMAL untuk jurusan Ilmu Komputer. Anda mungkin masuk ke program dengan beberapa pengalaman pengkodean, tetapi kebanyakan orang tidak. Program harus mengajarkonsep seperti rekursi, dan cara menulis kelas, dan overloading operator, dan templat dan semua itu (belum lagi mengajar tentang variabel, for-loop, jika-pernyataan, dll ...), jadi ada dua kelas yang pada dasarnya dirancang untuk mengajarkan Anda cara membuat kode dalam beberapa bahasa pemrograman. Dan mereka biasanya memiliki jenis nama yang menyesatkan yang dilakukan oleh kelas universitas Anda. Kelas yang mengajarkan tingkat organisasi yang Anda inginkan biasanya dinamai "Rekayasa Perangkat Lunak" atau "Pola Desain". Yang pertama biasanya merupakan persyaratan, dan yang terakhir biasanya pilihan (mungkin di tingkat pascasarjana), tetapi keduanya mungkin pilihan.
Ada perdebatan akademis dan industri tentang apakah kurikulum Ilmu Komputer berfokus pada organisasi perangkat lunak sebanyak yang seharusnya, apakah jurusan harus ditata ulang, dan apakah Ilmu Komputer dan Rekayasa Perangkat Lunak adalah jurusan yang berbeda, tetapi untuk saat ini, program Ilmu Komputer Anda adalah NORMAL .
(Dan bertahan di sana - dalam satu atau dua semester, Anda akan mendapatkan kelas yang lebih menantang yang mengajarkan hal-hal yang belum Anda pelajari sendiri.)
sumber
Bagaimana dengan kompetisi pemrograman? Bahkan sesuatu seperti Perl Golf (atau PHP Golf), di mana Anda memiliki orang (atau tim) yang bekerja untuk memecahkan masalah menggunakan kode seminimal mungkin? Ini cara yang bagus untuk belajar lebih banyak tentang bahasa dan kompetisi selalu membuat hal-hal menarik.
Tentu saja Anda harus menawarkan lebih dari sekadar kompetisi, tetapi mereka cukup mudah diatur dan saya selalu menikmatinya.
sumber
Anda benar bahwa Anda memerlukan beberapa struktur; Anda ingin memaksakan diri Anda dan orang lain untuk belajar, dan tidak hanya duduk-duduk mengobrol tentang perangkat lunak / menggerutu tentang pilihan kursus yang buruk. Tapi saya tidak yakin memperlakukan ini sebagai kelas dengan Anda sebagai gurunya adalah cara untuk pergi; Anda belum ahli, dan Anda dalam hal ini untuk belajar sesuatu juga.
Bagaimana kalau mengatur klub di sekitar proyek perangkat lunak? Bukan beberapa program pekerjaan rumah mainan, tetapi sesuatu yang menurut Anda mungkin berguna bagi Anda. (Perhatikan bahwa "sedikit berguna" masih memenuhi syarat sebagai "berguna"; Anda sedang mencoba belajar sambil bekerja, tidak menemukan startup. :-)) Jika klub memiliki cukup banyak orang untuk beberapa tim, bentuk beberapa tim. Tim memutuskan bahasa apa yang ingin digunakan, apa spesifikasinya, bagaimana tenaga harus dibagi, dll., Dll., Dan mengerjakannya secara individual dalam waktu mereka sendiri. Kemudian pada pertemuan klub mingguan Anda, Anda membahas bagaimana hal itu akan berhadapan muka, di mana penghalang jalan, hal-hal rapi yang telah Anda pelajari, dll.
Saya juga sangat suka ide membawa dosen tamu, baik itu dosen, profesional, atau video yang menurut Anda atau orang lain layak untuk dibagikan. Jadi, Anda bisa mengatur pertemuan malam seperti ini:
Itu akan memakan waktu malam dan diisi dengan kebaikan yang meningkatkan pengetahuan. Semoga.
Bagaimanapun, saya berharap Anda beruntung dengan proyek ini. Ketika Anda mendapatkannya dari tanah, saya harap Anda akan kembali ke sini dan memberi tahu kami bagaimana hasilnya.
sumber
Proyek kelompok adalah ide bagus. Terutama jika proyek itu adalah sesuatu yang dapat membantu universitas, atau teman sekelas Anda.
Saya bergabung dengan grup saat di perguruan tinggi yang mengerjakan proyek untuk siswa.
Proyek paling populer adalah tur virtual 360 derajat kampus.
Kami membeli peralatan yang dibutuhkan dan mulai mengambil foto di sekitar kampus. Kemudian kami membangun sebuah situs web untuk menampung tur, mencari hosting, dan menampilkannya di situs web universitas untuk calon mahasiswa. Proyek ini menjangkau lebih dari sekedar tugas pemrograman, dan membuat non-programmer juga tertarik.
Cobalah mengidentifikasi situs web atau aplikasi baru yang tidak hanya akan Anda gunakan, tetapi semua orang di kampus juga ingin menggunakannya. Saya pikir lebih mudah dan lebih menyenangkan untuk dipelajari jika Anda memiliki tujuan dalam pikiran.
sumber
Jika ini akan menjadi kegiatan ekstra kurikuler, jangan lakukan pekerjaan rumah. Itu hanya timpang.
Anda mungkin bisa mendapatkan sesuatu yang keren dengan memulai grup github dan mengirim poster / email di sekolah Anda (saya kira anak-anak sekarang juga menggunakan Facebook dan Twitter? Mungkin juga merupakan ide bagus untuk mencapai poin tersebut). Ketika Anda mendapatkan sekelompok 5-6 orang yang benar-benar tertarik bersama, putuskan proyek dan kerjakan saja.
Jika tidak ada minat, sangat mudah untuk bergabung dengan proyek sumber terbuka jika Anda cukup terampil. Sederhana seperti mencari sesuatu yang Anda minati di github, dan mulai berbicara dengan pengembang.
Keuntungan yang Anda miliki bahwa generasi sebelumnya tidak adalah bahwa sama sekali tidak sulit untuk terhubung ke programmer di tingkat Anda, dan dalam bahasa Anda, sementara secara geografis sangat berbeda. Dan maksud saya bukan hanya mengirim email. Skype / iChat / Ventrilo membuat konferensi suara menjadi mudah, alat-alat seperti git / mercurial (dan halaman proyek terkait online) membuatnya mudah untuk dikodekan sebagai grup bahkan jika Anda berada di sisi yang berlawanan dari atlantic. Sebenarnya tidak ada alasan untuk tidak mengkode secara sosial hari ini, jika itu yang ingin Anda lakukan.
Akhirnya, jangan biasakan menilai orang berdasarkan bahasa yang mereka tahu / ingin ketahui. Ini adalah jebakan mudah untuk jatuh ke dalam ketika Anda satu-satunya Smalltalker dalam kawanan orang yang berpikir C ++ mewakili batas pemrograman, tetapi itu tidak akan membuat Anda banyak teman, dan itu akan memberi Anda bias terhadap alat tertentu. Saya telah bertemu peretas yang jauh di depan saya dalam hal keterampilan dan pengalaman, yang telah menggunakan LISP, Perl dan C pada proyek yang sama . Orang-orang yang berada di puncak tumpukan pengembang profesional cenderung tidak peduli berapa level alat mereka selama mereka melakukan pekerjaan itu.
sumber
Ini kedengarannya seperti peluang jaringan, saya yakin ada sejumlah siswa yang tertarik dalam pemrograman dengan tingkat pengalaman / pelatihan yang sama ... Anda tidak menemukannya ...
Sudahkah Anda menghadiri salah satu Code Camps (pelatihan terkait pengembang gratis) di area Tampa Bay, atau bergabung dengan salah satu kelompok pengguna pemrograman lokal?
Kedua sumber daya ini akan memberi Anda peluang jaringan. Dan alih-alih merasa harus melatih sesama siswa, Anda akan dapat mengundang teman-teman Anda bersama Anda dan kemudian membahas apa yang dibahas.
Anda juga akan mendapatkan akses ke orang-orang yang memprogram sebagai karier dan bisa mendapatkan gambaran tentang situasi seperti apa yang akan Anda hadapi di "dunia nyata".
Setelah menjelajahi sumber daya lokal ini, Anda mungkin masih menemukan peluang untuk berbagi pengetahuan dengan melakukan presentasi sendiri, yang hebat. Membagikan apa yang telah Anda pelajari dengan grup pengguna atau sebagai pembicara presentasi kamp kode adalah cara yang baik untuk mendapatkan umpan balik tentang apa yang telah Anda pelajari dan membuka Anda untuk belajar lebih banyak juga.
Saya tumbuh di daerah Tampa Bay dan menghadiri banyak acara yang disponsori Microsoft gratis, grup pengguna lokal Anda harus memiliki informasi tentang cara untuk terlibat dalam acara-acara itu juga.
Yah, ini adalah balasan panjang lebar ...
Code Camp berikutnya di Tampa adalah pada 13 November 2010 menurut situs web tampacodecamp.
Berikut ini tautan ke grup pengguna INETA / pemrograman lokal Anda:
http://www.tampadev.org/
(Saya baru di grup ini dan hanya dapat menyertakan satu tautan.)
sumber
Bagaimana kalau menemukan proyek sumber terbuka (atau lebih dari satu) yang membuat kontribusi kelompok Anda?
Saya pikir tantangan terbesar yang mungkin Anda hadapi adalah ketika menulis kode itu menyenangkan, itu semua admin sekitarnya dll yang dapat dengan cepat mengubahnya menjadi pengalaman yang menyakitkan. Jika Anda dapat menemukan proyek open-source yang ada, Anda setidaknya harus memiliki beberapa kerangka kerja dukungan.
Open source akan membawa Anda ke beberapa kebiasaan baik, dan meskipun Anda akan sedikit basah di belakang telinga dibandingkan dengan beberapa kontributor Anda akan memiliki satu keunggulan utama dibandingkan orang lain - Anda semua akan berada di lokasi yang sama dan dapat mengadakan percakapan dengan anggota tim Anda yang biasanya merupakan salah satu yang terbesar dengan kerja komunitas open source ...
sumber