Cara Menjadi Programmer Secara Otodidak

by Manggisan.Net
Menjadi Programmer Secara Otodidak

Menjadi programmer yang baik butuh waktu. Kabar baiknya, kita bahkan bisa melakukannya secara mandiri atau otodidak.

Saya adalah seorang programmer otodidak (belajar-mandiri), lulusan universitas jurusan Filosofi, dan untuk beberapa tahun ber-filsuf adalah pekerjaan saya di siang hari :). Coding hanya sekedar untuk hobi.

Lalu pada suatu saat saya merasa tertarik untuk melakukan hal lain. Sekarang saya bekerja sebagai seorang software engineer, dan saya pun merasa begitu bahagia. Ketika kuliah, dulu saya memilih penjurusan Filosofi Logika dan Analitis sehingga saya sedikit banyak memiliki background dalam matematika. Mungkin inilah yang membuat saya belajar computer science dengan lebih mudah.

Pemrograman sekilas terlihat mudah. Setiap orang dengan kepintaran rata-rata dapat belajar menulis kode program dengan cukup mudah, serta relatif tidak terlalu menguras biaya jika dibandingkan mereka yang memang kuliah di jurusan computer science.

Saat ini pemrograman (terutama untuk web development) lebih membutuhkan kemampuan dalam memadukan kode yang sudah ada dengan ide yang kita miliki lalu menampilkannya dengan jelas dan praktis, daripada melakukan perhitungan matematis ataupun logaritma yang rumit (jadi lebih kepada berpikir logis dan memiliki citarasa keindahan/estetik).

Meskipun demikian, sesekali mungkin kalian akan dihadapkan dengan masalah yang tidak bisa diatasi tanpa memiliki pengetahuan teoretis yang cukup. Jadi, kalau kalian ingin bersaing dengan lulusan perguruan tinggi lulusan computer science, kalian perlu membaca lebih banyak lagi. Dengan kata lain, kalianlah yang menentukan seberapa cepat kalian mempelajari sesuatu, serta dengan motivasi yang jauh lebih berkesan daripada “sekedar lulus ujian”, sehingga dalam hal ini autodidak bisa menjadi berkah tersendiri yang tidak dapat dimiliki oleh mereka yang belajar di perkuliahan.

Aturan yang pertama, hindari buku-buku dengan judul Mahir Dalam 24 Jam – itu hanyalah pemborosan uang dan waktu. Buku-buku itu biasanya ditulis dengan jelek sekali, dan pembahasan yang hanya sekilas membuat bab-bab yang kalian senangi akan jauh lebih sulit untuk dipahami. Tidak perlu terlalu fanatik pada suatu bahasa atau framework tertentu – kalian kelak dapat mempelajarinya sambil lalu tanpa masalah berarti (kalau kalian bekerja sebagai programmer maka proyek-proyek nantinya jelas akan membuat kalian belajar berbagai bahasa pemrograman dan framework-nya). Pelajari saja ilmunya dulu.

Nah sekarang, beberapa bab dan buku-buku yang saya rasa cukup enak untuk dipelajari diantaranya:

Algorithms, Computational Complexity dan Struktur Data

Saya sarankan membaca buku Introduction to Algorithms yang ditulis oleh Cormen et al. Buku ini sangat bagus dan penjelasannya juga lengkap; selain itu kode yang ditulis juga bersih. Jangan lewatkan bab-bab yang membahas teori dengan detail. Kalau ingin menggali lebih dalam, kalian bisa baca Computational Complexity karangan Papadimitriou.

Networking

Bagi saya pribadi bab ini agak membosankan, dan saya dulu juga hendak mengabaikannya kalau saja tidak sedang mempersiapkan wawancara dengan Google (si pewawancara begitu baik mau memberitahu daftar bacaan yang harus dipersiapkan – saya merasa berhutang pada orang ini karena sebagian besar karir pemrograman saya secara profesional didasari atas nasehatnya ;-). Buku Head First Networking tidak saya sangka ternyata sangat bagus.

Database

Database Systems oleh Ullman et al. cukup bagus.

Structure and Interpretation of Computer Programs yang disusun oleh Abelson-Sussman-Sussman (sering juga disebut Buku Ajaib). Bagi saya buku ini merupakan salah satu buku yang paling banyak memberikan pencerahan. Buku ini menggunakan bahasa pemrograman Scheme (yang tidak begitu populer), tapi ini seharusnya tidak membuat kalian putus asa. Kalau kalian harus memilih satu buku saja yang harus dibaca dari seluruh buku yang saya sarankan di sini, maka pilih buku ini. Buku ini dapat diperoleh di internet dengan bebas (bahkan ada beberapa video penjelasannya).

Buku The Pragmatic Programmer karangan Hunt dan Thomas. Setahu saya buku ini tidak diajarkan di kuliah, padahal bagi saya buku ini begitu membuka mata.

Harusnya buku ini menjadi buku-wajib bagi setiap orang yang ingin belajar software engineer.

Pragmatic Programmer

Orang kebanyakan mulai belajar pemrograman dari Java atau PHP. Hal ini tidaklah salah, namun saya sendiri yakin jika kalian belajar dimulai dengan Ruby atau Python maka kalian dapat menjadi programmer yang lebih matang (kedua bahasa tadi seakan memaksa kita untuk memiliki kebiasaan menulis kode dengan benar).

Belajarlah bahasa pemrograman yang jarang digunakan, terutama pemrograman dengan bahasa yang non-imperative. Contohnya adalah Haskell, Scheme, Prolog, Scala, Erlang, Clojure, Common Lisp, OCaml. Bermain-main dengan pemrograman functional atau declarative akan membuat kalian menjadi programmer imperative yang jauh lebih baik karena akan membuat kalian lebih paham mengenai apa yang sedang kalian program.

Pelajari dan gunakanlah Linux. MacOS X cukup mirip, tapi tetaplah tidak sama. Ber-eksperimenlah dengan OS kalian, ubah, modifikasi, baca peringatannya. Lakukan saja apa yang kalian mau. Sering-seringlah melakukan backup karena kalian akan seringkali merusak atau mengacaukan sesuatu 😉
Buku The Art of UNIX Programming karangan Raymond cukup bagus (dan sebenarnya tidak terlalu rumit). Belajar gunakan Vim atau Emacs (bisa keduanya tentu lebih baik).

Artificial Intelligence

Paradigms of Artificial Intelligence karangan Norvig adalah buku yang luar biasa. Artificial Intelligence: a Modern Approach oleh Russel dan Norvig juga cukup bagus, tapi saya rasa buku ini lebih sulit dipahami daripada yang tadi.

Mungkin ini adalah daftar bacaan yang cukup panjang, tapi jangan kuatir. Menjadi programmer yang baik butuh waktu. Jangan paksa diri kalian untuk membaca hal-hal yang tidak dipahami; kalian seringkali baru akan memahaminya ketika membacanya ulang beberapa waktu kemudian.

Sumber:
https://www.quora.com/What-should-a-self-taught-programmer-read-and-learn

Related Posts

Leave a Comment