Pertama, saya telah mencari situs dan membaca semua topik "otodidak vs. perguruan tinggi" sebelumnya. Sebagian besar jawaban menyatakan bahwa melanjutkan ke perguruan tinggi adalah pilihan terbaik, karena dua alasan utama:
Pergi ke perguruan tinggi memberi Anda kertas, yang sangat penting untuk mendapatkan pekerjaan, terutama di masa ekonomi yang sulit.
Pergi ke perguruan tinggi memberi Anda basis pemrograman yang solid, mengajarkan Anda prinsip-prinsip yang akan penting terlepas dari bahasa / jalur yang Anda ambil.
Inilah pertanyaan saya: Saya sama sekali tidak khawatir tentang alasan 1, karena saya sudah memiliki perusahaan sendiri (saya membangun situs web / melakukan pemasaran afiliasi) dan situasi keuangan yang stabil, jadi saya cukup yakin saya tidak perlu melihat-lihat. untuk sebuah pekerjaan.
Saya khawatir tentang alasan 2. Yaitu, saya ingin memastikan bahwa saya akan memiliki landasan pemrograman yang solid seperti orang lain di luar sana, dan saya bertanya-tanya apakah itu mungkin dengan belajar mandiri.
Misalkan saya meluangkan waktu untuk mempelajari dasar-dasar yang sangat, seperti matematika diskrit, desain algoritma, logika pemrograman, arsitektur komputer, Majelis, pemrograman C, basis data dan struktur data - kebanyakan menggunakan buku, sumber daya online, dan banyak pengkodean. Katakanlah saya menghabiskan 1-2 tahun untuk membahas dasar-dasar itu.
Apakah Anda pikir yayasan saya akan solid, atau masih kurang dibandingkan dengan seseorang yang kuliah?
Jawaban:
Tentu saja. Iya itu mungkin. Bagaimana aku tahu? Karena saya berhasil!
Itu sulit. Tidak punya ilusi tentang ini. Tanpa tutor untuk pergi ketika hal-hal tidak berhasil, Anda harus mencari tahu sendiri masalah. Ada banyak yang harus dipelajari dan jika Anda tidak memiliki motivasi diri atau tidak cukup berdedikasi, Anda tidak akan dapat melakukannya. Bagi saya, saya merasa sulit untuk termotivasi tentang apa pun, tetapi saya sangat menikmati belajar dan pemrograman sehingga saya tidak perlu berjuang sendiri.
Beberapa tips:
Bagaimana Anda tahu kapan Anda selesai? Nah, alasan Anda mengambil gelar adalah agar Anda menjadi mahir dalam pemrograman. Ketika Anda yakin dapat menulis perangkat lunak apa pun yang diberikan dalam jumlah waktu yang wajar maka Anda adalah seorang programmer, tetapi itu tidak berarti Anda harus berhenti belajar.
Kebetulan, saya sekarang menderita dari titik satu. Jauh dari perusahaan pengembang perangkat lunak juga tidak membantu.
sumber
Saya pikir, tujuan paling penting dari Perguruan Tinggi / Universitas adalah untuk mengajarkan Anda cara belajar sendiri. Tidak masalah, apakah itu pemrograman, fisika, kimia, matematika, dll. Universitas mengajari saya cara belajar tanpa bantuan siapa pun.
sumber
Beberapa orang berkembang di lingkungan akademik dan bahkan mengharuskan mereka untuk belajar (biasanya sebagai bentuk motivasi). Orang lain (seperti saya) tidak dan bahkan dapat menemukan mereka mengesampingkan.
Saya memiliki karir yang panjang dalam perangkat lunak tanpa mendapatkan gelar. Menjelang akhir karir saya berada dalam peran arsitektur dan arsitek senior proyek saya mengatakan bahwa pengetahuan saya tentang perangkat lunak dan ilmu komputer (keduanya bukan hal yang sama!) Dengan mudah setara dengan memiliki gelar Master dari Waterloo University (satu sekolah CS top Kanada).
Ada beberapa kekurangan, tentu saja, di kumpulan pengetahuan saya. Keterampilan matematika saya hanya cukup untuk mengikuti apa yang saya pelajari hari ini. Saya benci matematika murni dan umumnya tidak bisa mengikuti perkembangan terbaru dan terhebat. Ini kadang-kadang menempatkan halangan dalam pemahaman saya tentang hal-hal (seperti, katakanlah, Haskell) sampai saya mendapatkan keterampilan matematika saya ke tingkat yang cukup untuk memahami konsep-konsep. Tetapi kenyataannya tetap bahwa informasi tersedia tanpa saya berada di dekat departemen CS atau matematika universitas. Yang bisa saya katakan adalah bahwa kadang-kadang urutan pembelajaran saya kurang optimal - Saya kadang-kadang harus mundur dan mengisi beberapa bahan dasar sebelum melanjutkan apa yang saya lakukan.
sumber
Saya pikir fondasi Anda akan solid, asalkan Anda memiliki disiplin untuk benar-benar duduk dan mengajar diri Anda sendiri semua hal itu dan bekerja melalui contoh-contoh. Saya memiliki gelar, tetapi dalam bidang Teknik, bukan Ilmu Komputer. Saya telah bekerja dengan banyak programmer profesional luar biasa yang telah belajar sendiri segala hal yang perlu mereka ketahui. Belajar mandiri adalah sesuatu yang harus Anda miliki untuk menjadi seorang programmer yang baik, karena selalu ada teknologi baru yang tidak Anda pelajari di sekolah.
sumber
Seperti kebanyakan hal dalam hidup, jawaban saya adalah padat, itu tergantung pada orangnya . Saya sangat yakin bahwa Anda tidak perlu gelar sarjana untuk menjadi programmer; Namun, berdasarkan pengalaman saya, perguruan tinggi memiliki kecenderungan untuk mengekspos orang pada masalah dan ide yang mungkin tidak mereka temui sendiri melalui studi independen.
Di zaman sekarang ini, orang yang termotivasi dapat online, dan terima kasih kepada sumber-sumber seperti MIT Open Courseware , mengumpulkan kursus studi independen yang akan memberi mereka pengetahuan yang cukup luas dan ini pengetahuan luas yang saya rasakan ini. apa yang membuat pengembang yang baik. Namun, seseorang yang tidak memiliki motivasi diri mungkin menemukan bahwa mereka dapat memperolehnya dengan mempelajari satu bahasa dan mungkin hanya bisa mendapatkan dengan bijaksana dalam karier.
Seperti yang saya katakan sebelumnya, saya merasa bahwa luasnya pengetahuan itulah yang membuat pengembang yang baik karena itu berarti mereka telah terkena lebih banyak masalah dan telah mengembangkan keterampilan pemecahan masalah mereka. Anda tidak perlu pergi ke sekolah untuk mendapatkan pengetahuan yang luas ini, tetapi sekolah pasti membantu dalam hal ini karena program gelar yang bagus akan memaksa Anda untuk mengembangkan pengetahuan yang luas.
sumber
Sebagai seorang programmer saya menemukan saya terus-menerus bermain dengan API dan bahasa terkait yang tidak berfungsi (Ruby on Rails, Python, Node.js, dll). Saya melakukan ini lebih untuk menarik daripada untuk bekerja. Saya memiliki 2 gelar associate tetapi bahkan setelah 10 tahun pemrograman di Java / JEE saya menemukan bahwa saya sangat merindukan teori gelar BS (Big O, Algoritma, Descrete Math, dll).
Saya mengambil kelas malam paruh waktu untuk mendapatkan gelar BS saya di Sistem Info Komputer, tetapi tidak banyak teori CS yang ditawarkan dalam program ini. Saya mendapatkan gelar saya terutama untuk memiliki "kertas" karena ini lebih banyak bisnis daripada teknis tetapi satu-satunya pilihan saya untuk kelas malam.
Lihat MIT Open Coursware . Ini gratis dan merupakan sumber yang bagus untuk mengisi celah teori CS / Matematika.
sumber
Saya percaya itu salah untuk berpikir bahwa perguruan tinggi / universitas akan secara definisi memberi Anda dasar pemrograman yang baik. Mereka akan mengajarkan Anda banyak teori, dan banyak cara berbeda untuk memikirkan masalah. Itu semua baik dan bagus, tetapi mengubah teori itu menjadi praktik adalah keahlian yang berbeda.
Satu-satunya cara efektif untuk mengajarkan penerapan teori yang benar adalah dengan membimbing dan melakukan. Singkatnya, Anda perlu berusaha menerapkan teori sebaik mungkin, dan mengandalkan seseorang dengan pengalaman lebih untuk memberi Anda kritik membangun atau mengarahkan Anda ke arah yang benar. Mentor Anda tidak akan melakukan pekerjaan untuk Anda, tetapi akan membantu Anda menjadi lebih baik dalam melakukan pekerjaan Anda.
Saya tidak akan menjadi pengembang seperti sekarang ini tanpa bantuan beberapa mentor yang baik di awal karier saya. Bekerja pada proyek-proyek sumber terbuka adalah cara yang baik untuk menemukan beberapa mentor yang bersedia meluangkan waktu untuk merinci. Setidaknya itu pengalaman saya. Saya juga memiliki seorang mentor dalam pekerjaan pemrograman pertama saya yang membantu saya memahami bagaimana merancang aplikasi yang diperluas dengan mudah.
Jadi adakah manfaat untuk kuliah / universitas? Iya nih. Namun, mereka tidak dilengkapi untuk membantu Anda mengubah teori menjadi praktik kecuali Anda menerimanya sendiri. Jika Anda mulai mencoba menerapkan apa yang Anda pelajari saat di universitas, Anda dapat mulai mengajukan jenis pertanyaan yang tepat yang akan membantu Anda benar-benar memahami teori di tingkat yang lebih praktis. Jika Anda menunggu sampai Anda berada di tempat kerja, Anda baru saja menunda proses belajar yang penting itu.
sumber
Orang cenderung melebih-lebihkan pentingnya landasan teori, matematika dan pengetahuan algoritmik IMO. Alasan mengapa pemrogram mendorong dan mewawancarai hal-hal ini adalah karena mereka sendiri "penggemar" matematika.
Sekarang tentu saja ada beberapa pemrograman di mana itu berguna untuk mengetahui apa "mesin negara" itu, atau bagaimana menggunakan pencarian "Booyer-Moore". Bahkan ada beberapa masalah yang berguna untuk mengetahui beberapa matematika nyata, seperti jika Anda bekerja dengan perhitungan keuangan atau simulasi fisika.
Namun, masalahnya 90% pemrograman umumnya tidak ada, tidak banyak dari kita yang melakukan pengembangan algoritme hardcore. Sebagian besar hal yang perlu Anda pelajari dapat Anda pelajari seiring berjalannya waktu. Tidak perlu membangun bangunan pondasi yang besar, tetapi tetap ingin tahu bagaimana memecahkan masalah yang berbeda.
Saya sendiri 100% belajar sendiri dan saya tidak pernah punya masalah untuk belajar tentang algoritma. Saya telah melakukan pekerjaan pada sistem keuangan dan bahkan itu bisa dilakukan tanpa keterampilan matematika teoretis yang lebih dalam.
Menjadi ahli dalam pemrograman bukan tentang fondasi, ini tentang terus memperluas kotak peralatan Anda dan pembelajaran yang Anda dapatkan jauh lebih bernilai ketika Anda dapat memasukkannya ke dalam konteks masalah yang benar-benar membutuhkan penyelesaian daripada hanya penelitian teoritis murni.
Anda tidak perlu mengetahui semuanya secara mendetail, itulah gunanya Google, StackOverflow dan Wikipedia :) Namun Anda perlu mengetahui keberadaan berbagai alat dan metode untuk menyadari bahwa mereka dapat digunakan dan diterapkan pada situasi Anda. Anda juga perlu mendapatkan pengalaman mengetahui alat mana yang paling baik untuk diterapkan. Yayasan umumnya dimanja oleh pemula karena mereka tidak memiliki pengalaman mengapa alat tertentu akan berguna. Jika Anda memiliki banyak pengalaman, beberapa hal hanya akan "klik" pada tempatnya.
Beberapa hal yang saya sarankan:
Jika belum, mulailah belajar tentang pola desain, itu alat paling praktis dan universal di kotak alat Anda.
Baca beberapa ikhtisar umum tentang berbagai algoritma jika Anda ingin tahu, hanya agar Anda tahu apa yang ada di sana saat Anda membutuhkannya
Pelajari tentang paralelisasi dan multithreading (dan beberapa pemrograman fungsional). Mampu mendukung banyak core adalah penting saat ini dan akan segera terabaikan sehingga ini merupakan pengetahuan yang sangat penting.
Lakukan proyek hobi yang menantang dan eksperimental yang mendorong keterampilan Anda ke depan dan memaksa Anda untuk mempelajari berbagai hal dalam konteks.
sumber
Satu hal yang perguruan tinggi akan membantu Anda dengan yang Anda mungkin menemukan kesulitan sendiri adalah kemampuan untuk membaca dan memahami makalah penelitian akademis terutama matematika. Namun, bahkan ini dapat dicapai sendiri, tetapi membantu jika ada instruktur dan rekan yang membimbing Anda dalam proses pembelajaran untuk mendapatkan pengetahuan lebih cepat dan lebih mudah.
Sebagai pemrogram umum sistem informasi, Anda kemungkinan tidak akan membaca makalah penelitian dengan baik. Sistem informasi saat ini cukup sederhana dan sebagian besar algoritma intens seperti pencarian, pengurutan dan pengindeksan dilakukan oleh sistem database. Selama Anda memahami konsepnya, Anda seharusnya tidak mengalami kesulitan.
Jika Anda memutuskan untuk terlibat dalam bidang pemrograman yang lebih sulit seperti mengembangkan sistem operasi mikro, pengembangan kompiler, kecerdasan buatan dan semacamnya, maka memiliki kemampuan untuk membaca dan memahami makalah penelitian dapat menjadi sangat penting untuk menerapkan sistem dengan cepat dan efisien.
Sejauh dapat menerapkan pengetahuan, itu sangat individualistis. Orang yang kuliah mungkin tidak dapat menerapkan prinsip-prinsip juga karena seseorang yang tidak kuliah. Ada pepatah lama yang mengatakan, 'tidak masalah apa yang masuk tetapi apa yang keluar'.
Singkatnya, pengetahuan yang Anda dapatkan dari kuliah dapat membantu Anda lebih memahami dan berkomunikasi dengan dunia akademik. Namun, pengetahuan itu bisa dicapai tanpa masuk perguruan tinggi. Memiliki gelar membuatnya lebih mudah untuk meyakinkan orang lain bahwa Anda tahu apa yang Anda lakukan dan dapat memahami makalah penelitian akademik.
sumber
Saya tidak berpikir banyak orang akan mendapatkan "fondasi" yang sama baiknya dengan belajar mandiri seperti yang mereka lakukan saat kuliah, setidaknya tidak dalam jangka waktu yang sama. Dua tahun membaca buku-buku acak dan bermain dengan masalah mainan di waktu luang Anda tidak akan membawa Anda ke tingkat yang sama dengan dua tahun studi terfokus dengan kurikulum terorganisir. Apakah itu akan membuat Anda cukup untuk bertahan? Sangat mungkin. Tetapi jika Anda benar-benar ingin "fondasi sebagus siapa pun di luar sana", maka itu akan memakan waktu lebih dari dua tahun.
Bukan untuk mengecilkan hati Anda, itu pasti tidak akan membuang-buang waktu. Saya hanya tidak terlalu percaya diri bahwa banyak orang dapat menyatukan setara dengan dua tahun kuliah dalam dua tahun sambil menjalankan bisnis mereka sendiri dan memiliki semacam kehidupan pribadi / keluarga.
sumber
Saya telah berkembang secara profesional selama satu dekade tanpa gelar. Ketika saya mewawancarai orang-orang saya tertarik pada kemampuan mereka untuk memecahkan masalah dan kode. Mengatakan itu, ada beberapa perusahaan / peran saya tidak memenuhi syarat untuk murni karena mereka menuntut gelar. Konsultan tertentu memiliki kebijakan ini karena mereka dapat menjual Anda lebih banyak kepada klien.
sumber
Jika Anda memainkan permainan angka, mereka yang bergelar sarjana mendapatkan pekerjaan yang lebih baik & membayar.
Tidak semua orang yang mendapat gelar belajar / mengingat apa pun.
Kebanyakan orang tidak akan meluangkan waktu untuk belajar banyak tentang teori / latar belakang / dasar seperti ketika mereka kuliah. Mungkin orang tua Anda akan mendukung Anda selama 4 tahun belajar mandiri; semua orang harus mendapatkan pekerjaan.
Kekurangannya adalah jika Anda memiliki gelar CS dan gagal memiliki tingkat tertentu, Anda mungkin dipandang memiliki tenaga kuda rendah. Mari kita hadapi itu, jika Anda tidak mendapatkannya dalam 4 tahun pemberian sendok, Anda tidak akan mengetahuinya sambil memegang dan pekerjaan penuh waktu. Pengecualian tentu saja.
sumber
Jika Anda benar-benar ingin mencari nafkah di bidang pengembangan perangkat lunak tanpa gelar, saya sarankan apa yang Anda lakukan adalah menghubungi Universitas setempat. Dapatkan dari mereka daftar kursus yang akan diminta jika Anda mendapatkan gelar. Sebagian besar universitas akan memiliki informasi yang tersedia berdasarkan permintaan, serta daftar sinopsis / silabus / buku untuk masing-masing program. Turun daftar itu. Cari buku yang dimaksud. Lihat topik apa yang mereka liput. Jika Anda melihat sesuatu yang tidak Anda pahami, beli / periksa buku itu dan pelajari. Pada akhir proses itu, Anda setidaknya harus tahu apa yang Anda ketahui dan apa yang tidak Anda ketahui, dan cukup bersaing dengan lulusan perguruan tinggi Anda (yang mungkin tetap tidur / selingkuh melalui beberapa kursus itu).
sumber
Iya dan tidak. Beberapa hal sangat sulit untuk dipahami tanpa seorang guru. Biasanya itu hal yang lebih matematis.
Saya percaya - dan masih percaya setelah membantu memulai jurusan CS sebagai TA - bahwa siapa pun tanpa keterbelakangan mental dapat belajar kode pada level PHP / Java / C #. Secara mendasar, ini tidak sulit.
Dalam hal ini, perakitan dan bidang teknologi lainnya tidak Anda sebutkan. Itu adalah detail implementasi yang Baik Untuk Diketahui.
Struktur data, algoritma, desain digital, arsitektur komputer, dan aljabar basis data cukup sulit, jika pembelajarannya dalam.
sumber
Saya tidak ragu bahwa orang yang bermotivasi dan berdedikasi dapat mencapai fondasi yang kuat tetapi jika Anda memilih untuk tidak meraih gelar Anda akan kehilangan banyak aspek yang akan meningkatkan perkembangan Anda. Salah satu dari hal-hal ini dan mungkin yang paling penting adalah paparan kepada orang-orang yang berpikiran sama dengan siapa Anda dapat bertukar ide dan konsep. Ini juga sangat baik untuk dapat mendengarkan pengalaman instruktur yang memiliki kebijaksanaan berharga untuk disampaikan dan kadang-kadang dapat meluruskan konsep disalahpahami dalam satu atau dua kalimat. Adalah baik untuk dapat mengklarifikasi konsep-konsep pada saat paparan awal daripada memiliki ide-ide yang salah dan harus mengatasinya nanti.
sumber