Persiapan untuk Belajar Pemrograman
Kepingin mulai belajar ngoding tapi gak tau cara nya atau mulai dari mana? Artikel ini semoga membantu anda.
Pemrograman merupakan aktivitas yang banyak mengunakan kerja otak dan waktu yang cukup panjang karena ngoding(alias memrogram) tidak cukup 15 atau 30 menit karena ini bukan olahraga dan aktivitas konsumtif lainya, namun produktif.
Produktif tidak sekedar aktivitas menghasilkan sesuatu (produk) dari tenaga dan waktu anda, namun bagaimana anda untuk tetap produktif.
Belajar programing sebenarnya tidak sulit namun tidak cepat, karena perbedaan ketika anda menulis kode yang berhasil dan paham maksud kode sangatlah tipis. Program anda berjalan dan anda tahu penyebabnya, namun apakah anda bisa menerapkan hal tersebut untuk penyelesaian masalah ? ini perbedaanya.
Essensi anda memprogram ialah menyelesaian masalah dengan memberdayakan komputer, maka sebelum anda mengenal pemrograman anda wajib mengetahui bagaimana komputer berkerja.
Masalah anda mau jadi heker, programer, developer, engineer etc dari belajar pemrograman itu kembali seberapa usaha anda menapaki niat anda, namun anda berada dijalan yang tepat untuk memulainya.
Pola Pikir
Pemrograman penuh dengan rekayasa(engineering) dan teknik yang menyertainya, maka anda perlu berfikir seperti seorang insinyur.
Rekayasa membuat sesuatu yang tidak ada menjadi ada , tukang mengada-ada
Saat memrogram mungkin anda akan memikir kode apa yang ditulis ketimbang mengenali masalah dan solusi apa yang mungkin, ini merupakan suatu kesesatan. Ini juga yang membedakan saat anda mengetik teks biasa dan memrogram, pengenalan masalah dan imaginasi anda.
Pemrograman banyak gambarkan secara keliru dengan mengetik cepat , layar hitam hijau dan dipenuhi oleh karater yang penulisnya sendiri tidak memperdulikanya (begitu juga dengan pentester dan sebagainya). Imaji palsu ini merupakan kesesatan yang membuat pandangan bahwa program harus bisa mengetik sepuluh jari dan semacam (pribadi saya tidak mengetik 10 jari, saya mengetik dengan cara yang menurut saya nyaman).
Imaginasi merupakan salah satu pemikiran yang perlu dari 4 cara pikir berikut:
- Abstraksi
- Pengenalan Pola
- Penguraian
- Penyusunan Algoritma
Cara berfikir ini disebut berpikir komputasional, saya tekan ini bukan anda berfikir layaknya komputer atau komponenya. melainkan cara anda untuk berhadapan dan mengolah masalah.
Dekomposisi
Ini tentang bagaimana kita memecah permasalahan menjadi bagian yang kecil untuk mudah diselesaikan.
Bayangkan bila anda ingin menebang pohon besar yang berada di samping rumah anda (tentu tidak ingin menimpah rumah anda), anda memanjatnya dan memulai dari bagian yang kecil dan mudah potong : pucuk dan ranting. Kemudian ketika semua ranting dan pucuk habis, maka memulai motong cabang dahan pohon yang lebih besar sampai badan utama pohon. Penyelesaian ini mengunakan pendekatan dekomposisi dengan mengunakan bagian terkecil yang mewakili seluruh entitas masalah : menebang (memotong).
Pengenalan Pola
Masih pada masalah menebang pohon, kita mengenali satu pola yang menonjol : memotong bagian pohon.
Namun ditelusuri lebih dalam, dahan pohon memiliki percabangan rimbun dan lebat, kita harus melihat bagaimana agar saat kita menebang pohon agar tidak menebang dahan yang anda pijak bahkan menimpah rumah anda.
Penyusunan Algoritma
Setelah anda mendapatkan pola, anda menyusun cara untuk memperhitungan dahan pohon mana yang akan dipotong terlebih dahulu dan bila ingin memotong cabang tersebut anda harus pindah kecabang lain, dengan tujuan tidak menimpah rumah dan menjatuhkan anda.
pohon = {dahan1: [rantingA,rantingB], dahan2: [rantingC,rantingD]}
posisi = "diatas pohon"posisi = dahan1while dahan1.length != 0 || dahan2.length != 0
if pohon[posisi] > 1
potong_batang(pohon[posisi])
elsif pohon[posisi] =< 1
posisi_sebelum = posisi
pindah_posisi
potong_batang(pohon[posisi_sebelum])
end
end
pindah_posisi
potong_batang(pohon)
Semi Pseudo-code diatas , merupakan skenario posisi saat ingin menebang pohon. Ketika dahan1 dan dahan belum 0 (habis dipotong) maka tetap diatas dan bekerja, ketika sudah habil pindah_posisi (turun) dan potong_batang utama pohon.
Abstraksi
Mungkin muncul pertanyaan:
Kenapa tidak memotong bagian yang terkecil seperti daun atau kulit dahan ?
Di sini abstraksi berkerja, absatraksi ialah mengambil fokus pada hal yang berkaitan dengan masalah dan mengabaikan hal lain yang tidak berkaitan. Disini kita ingin menebang pohon bukan mengunduli atau mengulitinya.
Saya mungkin tidak menjelaskan bahwa sesorang untuk belajar pemrograman itu perlu jago logika dan pandai matematika seperti banyak yang orang bilang, ya karena saya langsung menuju akarnya : berpikir terstruktur.
Kebiasaan
bisa karena terbiasa
Pepatah ini akan cocok untuk mengambarkan sub-bab ini, untuk menguasai sesuatu anda perlu terbiasa , terasah dan tertanam dalam hal demikian.
Sempat dibahas untuk mengalokasi waktu untuk belajar pemrograman, namun cara untuk membiasakan tidak hanya dengan anda terus bergelut diatas kode dan error. Berikut latihan mebiasakan anda dengan program :
- Menulis kode diatas kertas
Terkesan seperti pengulangan , namun disini nilai jualnya. Kita mengunakan pengulangan untuk mengukur ketajaman anda dalam konsep dan kosa kata dengan tidak menghafal (hindari ini), namun membangun komposisi kode dari hasir pemikiran anda. Hal ini menguji seberapa familiar anda dengan konsep, tata tulis dan kata kunci pemrograman .
- Menyusun rencana/strategi/komposisi
Programming serupa dengan saat anda merencanakan strategi atau membangun kompesisi sesuatu : berpikir secara struktur dan berarah. Saat anda menyusun strategi, anda memperhatikan arah sebab-akibat suatu proses dan menrangkai setiap hasil proses menjadi terstruktur untuk mencapai tujuan.
Seperti masalah menebang pohon tadi, tidak menebang secara buta namun terarah oleh batasan dan kondisi.
- “Tiada Hari Tanpa Koding” — Inggriani Liem
Sebelumnya sempat disinggung tentang membiasakan dengan meluangkan waktu tidak cukup 15 sampai 30 menit sehari, namun ini tidak cukup sehari. Tiada hari tanpa ngoding — bagi saya pribadi hal ini menginspirasi saya, Durasi waktu yang ngoding yang saya anjurkan minimal 2 jam sampai 4 jam, bisa 4 jam anda potong 2 jam pagi dan 2 jam sebelum tidur. Pastikan anda ngoding ditempat yang nyaman (jauh dari distraksi) dan diwaktu yang bagi diri anda produktif, tentunya setiap hari (bahkan kalau perlu seumur hidup, coding till die).
Bila anda merasa banyak godaan dan bermalasaan, itu merupakan anda sedang dalam masa inkubasi atau perlu istirahat bila anda susah mikir. suatu usaha anda menjadi suatu keberhasilan didorong oleh : kontrol diri dan bersikap bodo amat.
Malas itu manusiawi, namun bukan untuk menjadi candu. Ingat, kebiasaan yang mebuat suatu pola pikir menjadi gaya hidup maka hiduplah otentik.
Perkakas dan Logistik
Sub-bab sebelumnya sesak dengan pemaparan softskill dan keperluan anda untuk tahu diri, sekarang akan membahas tentang keperluan praktis, softskill yang berguna untuk hardskill dan taktis (bukan senapan atau helm kevlar) .
Untuk keperluan praktis, anda perlu perangkat keras :
- Komputer/Laptop
Komputer atau Laptop memang perlu , namun yang terpenting ialah perangkat komputer ( tidak hanya komputer/laptop) yang memiliki sistem operasi dan bisa dipasang:
- Kompiler/Interpreter Bahasa Pemrograman
- Browser
- Kode Editor
- Git
- Bluelight filter / tema gelap pada tema desktop (opsional, agar mata gak capek dan gak silau)
- Kopi/Susu/Teh buat nemenin ngoding (opsional , pilihan pribadi saja)
Setelah perkakas perangkat lunak dan perangkat keras tersedia, Internet perlu untuk melihat dan mencari dokumentasi, penjelasaan dan bersosialisasi. Untuk lebih efektif penggunaan perkakas perlu dibarengi oleh softskill :
- Kemampuan Bahasa Inggris (bahasa ini sudah menjadi lingua franca dari internet dan bahasa pemrograman itu sendiri).
- Minat membaca dan berasa ingin tahu tinggi (curios and inquisitive).
- Bisa memakai komputer (saya sarankan GNU/Linux serta perangkat lunak FOSS lainya) dan mengunakan terminal (CLI, command-line interpreter).
- Riset dan eksplorasi solusi/pemasalahan dan pembaharuan diri terhadap perkembangan dunia pemrogramaan bahkan teknologi informasi (agar anda berkembang).
- Berfikir komputasional , kritis dan kreatif ( K Triplet/ Triple C Thinker).
- Mampu belajar mandiri ( programming umumnya perkerjaan yang menyendiri bahkan dalam tim anda tetap mengerjakan bagian anda secara individu).
- Etika yang baik dalam dikusi dan forum.
Setelah anda memiliki cukup softskill (kalau belum, belajar sambil lanjut tapi jangan lupa).
Sekarang saatnya suplemen logistik taktis, bagian ini berisi referensi tentang materi pemrograman :
Mungkin ada yang suka mendengar cerita :
Saran pribadi dari saya , agar tidak kebingung dari pemaparan saya. Bila anda pertama mengenal pemrograman pilih Go, C/C++ atau Java, karena ini mengenalkan anda dengan pembedaan tipe data serta mudah untuk mengenal konsep pemrograman.
Untuk kode editor saya untuk mengunakan VSCodium, karena banyak bantuan kustomisasi + FOSS (Free Open Source Software).
Serta pelajari Git dan Github untuk mengatur dan manjemen kode anda, ada yang bilang Git ini adalah mesin waktu yang lebih bagus dari CTRL+Z dan CTRL+R, git revert.
Sampai sini tulisan saya kali ini , berikut ringkasaan dari sub-bab diatas:
Programing terlihat sepele , namun merupakan proses produktif yang banyak rintanganya : malas melakukanya , diremehkan dan terkadang disalahpahami (sebagai ahli reparasi komputer).
Programing/Koding bukan seperti proses latih jenis olahraga penuh keringat dan tensi, namun layaknya meditasi atau yoga. Perlu ketenangan , kenyamanan dan penghayatan proses sehingga tidak perlu buru-buru bahkan tidak tau diri.
Sekian dan Terima Kasih