Latar Belakang Kecil
Saya berusia 28 hari ini, dan saya tidak pernah memiliki pelatihan formal dalam pengembangan perangkat lunak, tetapi saya memiliki dua gelar pendidikan tinggi yang setara dengan BA dalam Hubungan Masyarakat dan MBA Eksekutif yang berfokus pada Manajemen Proyek. Saya telah bekerja di bidang-bidang tersebut selama sekitar 6 tahun, 2,5 tahun yang lalu saya berhenti / kehilangan pekerjaan dan memutuskan untuk mengubah arah.
Setelah sebulan memikirkan segalanya, saya memutuskan untuk mulai lepas mengembangkan situs web kecil di WordPress. Saya belajar sendiri jalan saya ke dalamnya dan hari ini saya bisa mengatakan saya menjalankan karir yang sederhana tetapi berhasil mengembangkan tema dan plugin dari awal untuk klien saya - sebagian besar agen outsourcing beberapa pekerjaan dev mereka untuk situs web menengah / besar.
Tetapi kadang-kadang saya hanya merasa bahwa tidak cukup belajar matematika, atau tidak memiliki pemahaman formal tentang hal-hal yang benar-benar menghambat saya ketika saya harus bersaing atau bekerja dengan pengembang yang lebih berpengalaman. Saya terus mencari cara untuk belajar lebih banyak tetapi sepertinya saya tidak memiliki dasar-dasarnya.
Sayangnya, menghabiskan 4 tahun lagi di Ilmu Komputer bukan merupakan pilihan saat ini, jadi saya mencoba mempelajari semua yang saya bisa dari buku dan sumber daya online. Metode ini tidak akan membuat NASA mempekerjakan saya, tetapi saya benar-benar tidak peduli sekarang. Tujuan saya adalah untuk terlebih dahulu lulus ujian dan untuk dapat menyebut diri saya seorang programmer sejati.
Saat ini saya menghabiskan waktu luang saya mempelajari Java For Programmer (untuk memahami bahasa yang semua orang katakan sulit / menuntut), membaca kutipan Kode Lengkap (untuk mendapatkan praktik terbaik) dan juga Kode: Bahasa Tersembunyi Komputer Hardware dan Software (untuk memahami cara kerja komputer).
TL; DR
Jadi, situasi saya saat ini adalah ini: Saya pada dasarnya mampu menulis sistem lengkap apa pun di PHP (dengan bantuan Google dan beberapa buku), mengintegrasikan Ajax, SQL dan yang lainnya, dan mungkin sedikit lebih lambat dari yang diharapkan oleh dev yang berpengalaman. karena semua penelitian yang terlibat.
Tapi saya terdampar kemarin mencoba mencari (bukan Google) solusi untuk tes FizzBuzz karena saya tidak memiliki if($n1 % $n2 == 0)
metode modulus operator hafal.
Apa yang Anda sarankan sebagai cara yang baik untuk menyelesaikan dilema ini? Apa mata pelajaran / buku yang harus saya pelajari yang akan membuat saya memecahkan masalah lebih cepat dan mungkin lebih "dengan cara programmer"?
EDIT - Tampaknya ada beberapa kebingungan tentang apa yang tidak saya ketahui untuk menyelesaikan FizzBuzz.
Mungkin saya tidak mengekspresikan diri saya dengan benar: Saya tahu langkah-langkah yang diperlukan untuk menyelesaikan masalah. Yang tidak saya hafal adalah operator modulus. Masalahnya adalah dalam mentransposisikan matematika dasar ke program, bukan dalam mengetahui matematika dasar.
Saya mengikuti tes untuk bersenang-senang, setelah membacanya di Coding Horror . Saya baru saja memutuskan itu adalah garis perbandingan dasar yang baik antara saya dan para devs yang terlatih secara formal.
Saya hanya menggunakan ini sebagai contoh bagaimana tidak berurusan dengan matematika di lingkungan komputer sebelum membuat saya kehilangan waktu mencari hal-hal dasar seperti operator modulus untuk dapat memecahkan masalah sederhana.
I'm basically capable of writing any complete system in PHP (with the help of Google and a few books)
dan menggabungkan ini dengan Anda tidak tahuif($n1 % $n2 == 0)
, saya bertanya-tanya tentang paparan Anda terhadap hal-hal yang ditulis dalam PHP. Saya pikir sebagian besar hal yang Anda lakukan melampaui perhitungan modulo sederhana. Bisakah Anda memberi lebih banyak wawasan tentang apa yang menurut Anda bisa Anda lakukan?stuck b/c I didn't memorize %
masalah ini, perlu dicatat bahwa ada cara lain untuk melakukan ini: (dengan asumsi $ n2! = 0)if (is_int ($n1 / $n2))
atauif (($n1 / $n2) == (int) ($n1 / $n2))
Mengetahui kata kunci adalah satu hal, dan mengetahui bagaimana mengekspresikan ide yang mendasarinya tanpa adanya solusi bawaan adalah lain.Jawaban:
Dalam kasus Anda, karena Anda belajar sendiri dan sudah memiliki apa yang tampaknya merupakan pendekatan pembelajaran yang baik, sehat, dan tanpa-BS. Masih beberapa saran ...
Latihan membuat sempurna
Saya pikir Anda harus terjun ke dalam latihan progamming, seperti:
Bahkan ambil pertanyaan ujian sebelumnya dari universitas terkenal di sekitar Anda, atau kompetisi pemrograman lokal (atau jarak jauh). Sebagai contoh, kami memiliki yang bagus di Perancis untuk calon programmer sekolah menengah yang disebut Prologin , dan itu memang memberikan setiap tahun serangkaian teka-teki yang menggaruk-garuk kepala (mungkin hanya bahasa Prancis, maaf, tapi itulah yang saya maksudkan ).
Untuk lebih lanjut: Di mana saya dapat menemukan Teka-teki dan Tantangan Pemrograman?
Buku dan Referensi Klasik
Kami juga bisa merekomendasikan daftar buku - buku menakjubkan yang sangat panjang , tetapi saya akan mengatakan jawaban Zen adalah bahwa tidak ada satu pun cara yang tepat untuk Pencerahan.
Akan sulit untuk memberi tahu Anda mana yang berada di daftar teratas. Jadi teruslah membaca banyak hal untuk mempelajari jebakan umum yang harus dihindari dan praktik terbaik yang harus diikuti, seperti yang Anda lakukan dengan benar sekarang.
Untuk lebih:
Mendorong Batas
Juga, cari bahan yang menggaruk kepala, seperti:
Tidak harus diambil sebagai contoh hal yang harus dilakukan saat ini, tetapi patut untuk mencoba mencari tahu apa yang terjadi di sana.
Sistem Peer adalah Motivasi
Anda mungkin juga ingin bersembunyi di sekitar (dan terlibat dalam) komunitas berikut untuk meningkatkan keterampilan Anda secara bertahap dengan dikonfrontasi dengan orang lain.
Pendidikan Paruh Waktu
Jika Anda tidak memiliki waktu atau motivasi untuk ikut serta dalam kursus 4 tahun atau sesuatu yang serupa (yang bahkan mungkin tidak diperlukan atau bermanfaat sama sekali, dan mahal), Anda dapat mempertimbangkan untuk mencari materi pengajaran online. Tentu saja, ini tidak terbatas pada ilmu komputer.
Berkat upaya MIT OpenCourseWare yang asli , sekarang ada banyak universitas yang mengikutinya , dan Anda dapat menemukan banyak materi kursus tingkat universitas secara gratis. Tidak selalu mudah dinavigasi dan membacanya sendiri, tetapi beberapa dilakukan dengan cukup baik. Untuk memulai dari bawah ke atas dan naik ke atas, pertimbangkan juga untuk melihat Akademi Khan .
Beberapa melangkah lebih jauh, dan menawarkan kursus online nyata gratis, di mana Anda juga memiliki akses ke materi kursus, tetapi di mana mereka juga menyediakan kuliah mondar-mandir dan penilaian diri secara teratur. Misalnya, kunjungi Coursera atau Udacity .
Sebagian besar di atas sering menerbitkan kuliah mereka di Youtube atau iTunesU, jadi Anda akan menemukan banyak materi jika kehausan Anda akan pengetahuan belum padam oleh semua tautan sebelumnya.
Jika Anda menginginkan sesuatu yang memberikan pengalaman lebih dekat ke universitas "nyata", Anda dapat mempertimbangkan universitas jarak jauh, yang juga memungkinkan Anda untuk bekerja paruh waktu, tetapi mengharuskan Anda untuk mengikuti langkahnya, dan memiliki penilaian mandiri dan akhir ujian tahun (kadang-kadang di tempat), seperti dengan OpenUniversity dan varian internasionalnya.
Passion Keeps You Going
(dan dapatkan bola mata yang cukup melihat kode Anda untuk mengkritik Anda dan perspektif berbedaveve)
Orang Prancis berkata:
Terus lakukan apa yang Anda lakukan, dan akhirnya Anda akan menjadi ahli. Membutuhkan waktu dan kerja.
Lihat juga Saya Mengalami Kesulitan Belajar untuk saran lebih lanjut.
PS: Walaupun itu alat yang sangat kontroversial untuk wawancara, dan tidak membantu mengidentifikasi kandidat yang baik, saya sering menggunakan FizzBuzz untuk setidaknya menyingkirkan "yang buruk". Jadi, lakukan latihan ini! :)
sumber
Saya belum lama mengkode (mulai belajar sendiri SQL sekitar 27 bulan yang lalu dan mulai menulis dalam Perl sekitar 20 bulan lalu), tetapi kutipan di atas terdengar seperti beberapa hal yang saya dengar dari mantan siswa:
Oke, yang terakhir itu mungkin agak keras ... tapi intinya saya mencoba membuat penyelesaian masalah bukanlah menghafal . Jika ya, maka beberapa orang jenius dapat memprogram komputer untuk menyelesaikan setiap masalah, dan tidak ada di antara kita yang harus berpikir lagi (betapa nerakanya dunia itu ...).
Sekarang, memang benar bahwa setiap upaya intelektual terdiri dari setidaknya sedikit hafalan. Secara khusus, jika Anda akan membuat kode dalam PHP, maka Anda harus memahami tipe data dasar (angka, string, array), hal-hal dasar yang dapat Anda lakukan dengan mereka (untuk angka: penambahan, pengurangan, perkalian, pembagian, dan modulus; untuk string: concatenation, substrings, replacement, dan setidaknya beberapa pengetahuan tentang regular expressions; untuk arrays: concatenation, tacking on elements, splicing out elemen, looping, menghitung elemen, dll), dan struktur logis dasar yang dapat digunakan seseorang (if / then / else pernyataan, foreach loop, while loop, dll).
Kemudian, ketika Anda menemukan masalah, gunakan masalah untuk memberikan konteks untuk alat apa yang Anda butuhkan. Untuk FizzBuzz, Anda perlu tahu kapan angka dapat dibagi 3, 5, atau 15. Oke, jadi kita berhadapan dengan angka .... alat dasar apa yang memungkinkan kita memberi tahu ketika satu bilangan bulat dapat dibagi dengan yang lain? Nah, operator modulus. Jadi, gunakan itu. (Tentu saja, jika nomor Anda adalah
$n
, Anda bisa menjadi mewah dan melihat apakah digit terakhir$n
adalah 0 atau 5, dan / atau jika angka-angka$n
dijumlahkan dengan sesuatu yang dapat dibagi oleh 3, tapi saya ngelantur ...) Anda harus lakukan ini untuk setiap angka antara 1 dan 100, sehingga untuk menghindari terowongan karpel, gunakan satuforeach
lingkaran.Moral dari cerita ini adalah bahwa jika di satu sisi Anda mengatakan "Saya pada dasarnya mampu menulis sistem lengkap dalam PHP" dan di sisi lain Anda tidak dapat kode FizzBuzz, maka pernyataan pertama tidak benar. Beberapa mantan siswa kalkulus saya bersumpah bahwa mereka memahami konsep, tetapi mereka tidak bisa melakukan masalah pada ujian ... atau masalah pekerjaan rumah ... atau masalah kuis. Mereka salah tentang pengertian mereka juga.
Berhentilah mencari alasan dan pelajari dasar-dasarnya.
sumber
Anda mungkin berpikir FizzBuzz adalah masalah mainan; kapan saya harus menggunakan operator modulus dalam program nyata. Tapi sungguh Anda menggunakannya sepanjang waktu. Tiga contoh umum:
row_number % 2 == 0
) dan menampilkan satu warna untuk baris genap dan satu untuk baris ganjil.if item_number % N == 0
ditulis sebagai setara (if item_number|divisbleby: N
).if cur_item_number % 50 == 0 then commit_data
.Tentu ada cara lain untuk melakukan semua hal ini. Tetapi Anda dapat melakukan desis desis tanpa menggunakan operator modulus atau membandingkan divisi float ke divisi integer. Misalnya, untuk FizzBuzz Anda dapat melakukan sesuatu seperti pseudo-code berikut.
Untuk menyimpulkan, jika Anda ingin menjadi programmer hebat suatu hari nanti, jangan langsung belajar buku bahasa. Ya, sebuah buku PHP / Java akan membuat Anda mendapatkan jawaban dari google / stackoverflow dan program setengah kerja jauh lebih cepat daripada yang lain. Tetapi untuk benar-benar dapat mengetahui cara menulis program optimal yang berkualitas dan berpikir seperti seorang programmer Anda perlu beberapa paparan buku CS nyata.
Mulailah dengan buku CS yang memperkenalkan bahasa pemrograman dan latar belakang CS, dengan contoh terkenal tentang Struktur dan Interpretasi Program Komputer (yang akan mengajarkan Skema - dialek Lisp) atau mungkin yang lain seperti Think Python Cara Berpikir Seperti Komputer Ilmuwan (yang belum saya baca). Keduanya gratis online.
Anda akhirnya harus membaca buku algoritma yang bagus, yang terbaik adalah Algoritma CLRS (tidak gratis), meskipun buku algoritma online gratis inibisa menjadi pengganti berbiaya rendah (meskipun jika Anda bisa membeli CLRS). Buku algoritma akan mengajarkan Anda bagaimana cara memecahkan masalah komputer dan memperkenalkan Anda ke berbagai struktur data (Array / Linked Linked / Heaps / Binary Trees / B-Trees / HashTables) dan algoritma penting yang perlu Anda ketahui cara menggunakan secara optimal . Anda tidak perlu mengingat setiap bukti atau tahu cara menulis dengan sempurna setiap algoritma (yang pernah menggunakan Fibonacci Heap); tetapi Anda harus secara intuitif tahu dua bersarang untuk loop adalah O (N ^ 2); jenis perbandingan paling baik adalah O (N lg N), pencarian biner adalah O (lg N), dapat menemukan median dalam O (N), mengapa basis data hard disk menggunakan B-Trees, dll.). Minimal, pengetahuan yang kuat tentang buku algoritma akan membantu Anda ace wawancara pemrograman teknis dari berbagai google / facebook. Saat membaca buku pemrograman, jangan hanya membaca sekilas; kamu'
Saya juga merekomendasikan buku tentang rekayasa perangkat lunak (baik Code Complete atau Pragmatic Programmer) setelah Anda melewati buku CS dan algoritma, yang akan mengajarkan praktik terbaik tentang cara menulis kode yang baik yang dapat dipelihara (nama yang jelas; komentar hanya bila perlu ; simpan kode bersama; refactor bila perlu; gunakan kontrol versi; dll).
sumber
Tidak ada yang menghafal hal itu. Anda seharusnya membuat sendiri. Jika Anda tahu operator modulus dan Anda tahu apa fungsinya, maka itu sangat cocok untuk masalah FizzBuzz.
Saya akan mengambil risiko di sini dan umumnya menyarankan bahwa masalahnya adalah PHP. Saya suka mengatakan bahwa Java adalah bahasa terburuk yang pernah dirancang, dan PHP adalah bahasa terburuk yang pernah ada , karena bahkan penciptanya mengakui bahwa itu tidak pernah dirancang. Sulit untuk mempelajari praktik rekayasa perangkat lunak yang baik ketika lingkungan Anda secara praktis merupakan definisi bagaimana tidak melakukannya. Dan tergantung pada kerangka kerja untuk menyelesaikan semuanya tidak banyak bicara.
Jawa adalah salah satu bahasa yang termudah dan terburuk yang ada. Hanya ada satu hal: warisan manual yang dikumpulkan dari sampah. Jika teman atau penasihat Anda mengatakan bahwa Java itu sulit, maka cari teman baru. C ++ adalah bahasa yang sulit yang mencakup banyak konsep, dan bahwa tak seorang pun akan membantah. Anda juga bisa melakukan C #, yang setidaknya memiliki beberapa obat generik dan lambdas.
Bagaimana Anda akan belajar membuat kode, ketika bahasa Anda dirancang dan diimplementasikan oleh orang-orang yang tidak bisa membuat kode, dan Anda bergantung pada kerangka kerja untuk semua yang Anda lakukan?
sumber
Saya pikir Anda harus memperhatikan mengapa Anda terdampar mencoba mencari tahu FizzBuzz. Jadi, misalkan, Anda ingat ada operator yang memberi
$n
tahu Anda jika itu dapat dibagi dengan angka. Dan Anda memiliki nasib buruk untuk melupakan apa itu. Baik, mengapa Anda tidak mencoba melakukannya dengan cara lain? Jika Anda tahu sesuatu tentang kode, Anda harus dapat menemukan selusin cara lain untuk melakukannya. Beberapa dari mereka mungkin terlihat aneh - seperti, misalnya, menempatkan setiap kelipatan 5 dalam sebuah array dan kemudian memeriksa apakah$n
ada di antara mereka - dan itu adalah solusi yang buruk, tetapi masih akan menjadi solusi. Namun, Anda mengatakan Anda tidak memilikinya, Anda hanya terjebak. Ini mungkin merupakan gejala dari masalah yang lebih besar.Ada dua hal dalam pemrograman yang perlu Anda pelajari.
Dari deskripsi Anda sepertinya Anda mulai dengan bagian pertama, tetapi agak kurang pada bagian kedua. Kursus CS yang baik biasanya banyak membantu, tetapi bukan satu-satunya cara. Mencoba memecahkan masalah yang berbeda dan membaca tentang bagaimana masalah ini perlu diselesaikan, membaca buku-buku mendasar yang dikutip di sini - semua itu akan membantu. Setelah Anda memiliki pola pikir programmer, Anda akan menemukan bahwa menggunakan tas trik baru tidak akan menjadi masalah. Anda harus google di sana-sini, tentu saja, tetapi Anda tidak akan pernah terdampar.
sumber
Anda menjadi pandai dalam pengembangan seperti halnya Anda pandai dalam hal lain: berlatih. Ada konsep yang bagus di dunia pemrograman yang disebut kode kata . Ini pada dasarnya adalah latihan di mana Anda memberi kode solusi untuk masalah yang relatif kecil, menganalisis apa yang baik dan apa yang buruk, membuang semuanya, dan melakukannya lagi. FizBuzz adalah kata dalam dirinya sendiri. Jadi, lakukan, dan lakukan lebih banyak. Ketika Anda menemukan hal-hal yang tampaknya tidak terlalu baik atau tidak berfungsi, lakukan penelitian dan teliti tentang hal itu. Ajukan pertanyaan di situs Q&A, baca artikel dan blog, lihat bagaimana orang lain menangani ini, dan kemudian praktikkan apa yang telah Anda pelajari.
Dalam melakukan praktik ini, Anda akan belajar berapa banyak tambahan matematika / teori yang mungkin Anda butuhkan. Jika Anda menabrak konsep yang tidak bisa Anda hafal, maka bacalah tentang mereka dan pengetahuan prasyarat mereka dan putuskan berdasarkan kasus per kasus jika Anda ingin mengambil kursus atau apa pun yang Anda miliki untuk memperluas latar belakang teoritis.
sumber
Saya menafsirkan itu berarti, Anda tidak tahu tentang dan / atau tidak ingat operator modulus. Jika demikian, tempat untuk memulai adalah meninjau konstruksi bahasa dalam bahasa yang Anda gunakan. Tinjau apa pun yang Anda tidak 'tahu dingin', dan pelajari apa pun yang tidak Anda ketahui.
sumber
Terus koding, terus belajar. Akhirnya, dengan dedikasi yang cukup, Anda akan melihat FizzBuzz dan bertanya-tanya mengapa Anda harus memikirkannya. Banyak perusahaan melakukan pertanyaan gaya FizzBuzz sebagai bagian paling awal dari wawancara mereka, jadi jika gagal kali ini berarti Anda setidaknya telah mempelajari sesuatu tentang proses perekrutan.
Teruslah menulis kode, memunculkan ide proyek, dan meneliti.
sumber
Bolehkah saya merekomendasikan belajar JavaScript sebelum Java, C ++? Alasan untuk Anda:
Sumber Daya Pemula Gratis
http://www.codecademy.com/tracks/code-year
https://stackoverflow.com/tags/javascript/info
Saya memiliki sekitar 10 tautan lagi, tetapi SE tidak akan membiarkan saya mempostingnya sampai saya menekan 10 rep.
Mempelajari C ++, Java, dll juga membantu, tetapi tidak IMHO tidak memiliki dampak keseluruhan pada pemrograman web seperti halnya JS, karena Anda dapat menggunakannya di bagian depan & belakang. Selamat bersenang-senang!
sumber
Anda dapat menemukan dan membantu orang lain misalnya memberi.kode (pengungkapan: situs saya) atau Kode untuk Amerika atau apa pun. Ini adalah cara terbaik untuk mendapatkan lebih banyak eksposur ke masalah pembuatan halaman web non-PHP dan merasa baik juga.
Ketika Anda memiliki masalah untuk dipecahkan - atau membantu memecahkan, atau hanya memahami - mengambil kode datang secara alami di sepanjang jalan. Memiliki tujuan adalah cara terbaik untuk mempelajari sesuatu.
sumber
Jadi Anda tidak bisa menyelesaikan masalah FizzBuzz. Masalah besar. Sekarang Anda bisa, dan saya bertaruh Anda tidak akan pernah melupakan banyak cara bagaimana. Cobalah untuk tidak terlalu bersemangat untuk menyebut diri Anda seorang programmer yang buruk hanya karena Anda tidak bisa menyelesaikan satu masalah bodoh di atas kepala Anda.
Itu satu masalah. Yang lain adalah bahwa Anda tampaknya merasa sedikit di belakang kurva pembelajaran pemrograman. Seperti yang orang lain katakan, terus koding dan terus membaca. Semakin banyak Anda melakukannya, semakin baik Anda mendapatkannya. Sesederhana itu. Mulailah dengan apa pun yang Anda rasakan sebagai lubang terbesar di latar belakang Anda dan lanjutkan dari sana.
sumber
Saya tidak berpikir saya akan menolak untuk merekomendasikan seseorang untuk disewa karena mereka tidak tahu itu adalah operator modulus asalkan:
Tidak selalu (meskipun biasanya)%, dan beberapa bahasa aneh. Dan sial, setelah satu dekade, saya tidak dapat dengan jujur mengatakan bahwa saya tahu semua operator perl (dan apa yang dilakukan pesawat ruang angkasa itu lagi?) Atau saya tidak dapat selalu mengingat operator bitwise dengan sempurna. Sudah beberapa tahun sejak saya melakukan sesuatu yang bahkan membutuhkan itu.
Apa yang mungkin membuat saya ragu untuk merekomendasikan seseorang adalah jika itu menyebabkan mereka mengalami serangan panik karena melewatkan pertanyaan / tes itu. Itu mungkin memberi saya kesan mereka agak terlalu hijau (kecuali itu adalah posisi yang sangat entry level). Tidak ada yang membutuhkan seseorang yang (atau merasa perlu) menghafal hal-hal itu. Anda membutuhkan seseorang yang memahami konsep yang jauh lebih luas. Tidak ada yang akan peduli jika Anda mencari di google, tetapi Anda harus yakin dalam wawancara bahwa mengetahui% bukan masalah besar dan juga Anda tahu menggunakan "operator" sebagai kata kunci saat Anda melakukan google cepat Cari.
Juga, ini hanya sebuah ide ... tetapi jika community college lokal Anda memiliki program compsci, kredit Anda yang lain semuanya akan ditransfer, dan Anda kemungkinan hanya membutuhkan sekitar 20 kredit untuk gelar 2 tahun. Hampir bisa menyelesaikannya dalam satu semester. Mereka ingin Anda melakukan kursus struktur data, juga semoga algoritma ... mungkin membuat Anda sedikit lebih kuat.
sumber
Berikut ini contoh programnya: http://www.ox.ac.uk/admissions/undergrad_courses/courses/computer_science/computer_science_.html
Saya sarankan baca di berikut ini yang pertama: Pemrograman berorientasi objek (sangat umum, digunakan di mana saja, ini adalah di mana java masuk) Concurrency (untuk menulis program java yang tidak crash secara misterius di dunia nyata, belajar tentang kebuntuan) Konsep basis data (sebagian besar aplikasi perlu menyimpan data, teori penting di sini) Paradigma pemrograman (baca tentang setidaknya satu bahasa non-oops, lebih disukai fungsional, untuk memperluas pemikiran Anda dan mempelajari hal-hal baru)
Ketika saya melihat 4 tahun pendidikan sains comp, jujur saja saya pikir hanya ada beberapa program yang perlu Anda serius.
Struktur data dan algoritme (dan Anda perlu matematika di sini untuk benar-benar bagus dan dianggap serius oleh programmer lain), jaringan komputer dan sistem operasi datang ke pikiran sebagai yang paling penting. Subjek lain yang berurusan dengan kode level yang lebih rendah, seperti bisa kode dalam perakitan bisa dibilang tidak begitu penting bagi Anda. Rekayasa dan pengujian perangkat lunak memaparkan Anda pada konsep yang berguna dan Anda dapat mengambilnya seiring waktu.
Unduh saja pdf yang menjelaskan konsep-konsep ini dengan cara yang intuitif dan Anda akan berada di jalan Anda.
Dalam beberapa program ilmu sains, setidaknya di tambang, tahun pertama adalah pengantar untuk semua bidang teknik, seperti mekanik, listrik, sipil, dll. Ada banyak matematika yang rumit, ingatlah, yang lagi-lagi mungkin atau mungkin tidak relevan untuk sebagian besar programmer aplikasi saat ini. Jadi, banyak insinyur di sekitar hari ini sebenarnya hanya memiliki 3 tahun pendidikan sains yang nyata (Semoga ini membuat Anda merasa lebih baik :)
Inti dari jawabannya: Anda dapat mengambil waktu untuk belajar setiap hari, katakan sekitar satu jam, dan dalam jangka waktu tertentu menjadi programmer yang cukup baik. Teruslah belajar. Dan ingatlah untuk menulis beberapa kode setiap hari.
sumber
Bagi saya, strategi saya adalah saya hanya menyerang masalah yang relevan dengan apa yang saya kerjakan, jadi saran saya adalah Anda tidak harus mempelajari semuanya, cukup baca hal-hal yang relevan dengan apa yang Anda kerjakan, karena jika Anda mencoba mempelajarinya sekaligus maka ada kecenderungan Anda bersujud dan akhirnya membenci pemrograman.
Perdamaian
sumber