Indonesia, 14 Nov 2023
Halo semuanya, berikut adalah tips untuk junior programmer versi cepat, dalam artian nanti teman-teman bisa pakai tips ini untuk memulai cepat berkenalan dengan dunia programming agar bisa "mulai dulu" untuk membuat program.
Tips ini hasil observasi dan pengalaman saya selama kerja di bidang IT, dari mulai divisi support sampai sekarang kerja di divisi development, saya mengamati diri saya serta orang lain yang pernah share knowledge dengan saya, juga teman-teman yang ada di kampus yang notabene latar belakang mereka kebanyakan bukan dari SMK IT dan sejenisnya.
Tips ini tidak serta merta benar 100%, tapi sepengalaman saya, yang melakukan tips-tips ini dia punya nilai lebih sebagai programmer, dan itu yang akan membedakan dia dengan programmer-programmer lain yang semakin menjamur.
Bagian 1: Disiplin
Disiplin adalah kunci untuk memahami sebuah pengetahuan bidang apapun, tanpa disiplin kita tidak akan pernah menggapai yang kita inginkan. Ada kalimat bagus dari Mike Tyson:
"Disiplin adalah melakukan sesuatu yang Anda benci, seakan-kan Anda mencintainya"
Penjelasan kalimat di atas adalah bukan Anda harus melakukan hal yang dibenci untuk menjadi disiplin, tapi jika Anda sudah sampai di tahap ketika orang lain melihat Anda melakukan sesuatu seperti Anda sangat mencintai hal tersebut, akan tetapi ketika orang itu tanya apakah Anda suka melakukan hal itu, Anda menjawab "tidak" itu level disiplin tertinggi.
Sehingga seharusnya ketika Anda melakukan kepada hal yang benar-benar Anda cintai maka seharusnya itu akan menjadi hal yang luar biasa. Mungkin beberapa dari kita sering bergumam seperti ini: "Kayaknya gua salah jurusan", atau "Ah ternyata susah banget", "Udahan aja kali ya". Semua itu akan kalah dengan 1 kata: DISIPLIN.
Manusia adalah makhluk yang sangat dinamis, dia bisa melakukan hal yang tidak pernah dia lakukan sebelumnya bahkan yang dia benci sekalipun hanya karena dia DISIPLIN. Oleh karenanya, tetap semangat untuk latihan, belajar setiap harinya. Selama hal itu bermanfaat maka terus aja lakukan semaksimal mungkin sampai kita mendapatkan hasilnya.
Yang sulit itu bukan memulai, tapi bertahan pada apa yang dijalankan.
Bagian 2: Programming Fundamental
Menu utama kita, teman-teman inilah senjata utama kita, inilah pena kita, inilah kampak kita untuk mengukir karya entah dalam bentuk pekerjaan atau karya pribadi, akan tetapi untuk menguasai sebuah senjata kita harus menguasai fundamental senjata tersebut agar saat memakainya tidak banyak kesalahan, dan jika rusak kita akan bisa memperbaikinya. Sehingga kita harus kuasai betul fundamental pemrograman, seperti:
Bahasa Pemrograman (Java, PHP, Go, C, Python, JavaScript, dsb).
Struktur Data dan Algoritma.
OOP (Jika bahasa yang kalian gunakan bisa berorientasi object).
Memory in programming.
Parallel & concurrent programming.
Big O Notation.
Untuk PERMULAAN, saran yang sangat sering diutarakan adalah pilihlah SATU bahasa, dan jadikan bahasa tersebut senjata utama kalian yang nantinya akan digunakan berkarya, dan bekerja. Adapun rekomendasi bahasa yang cocok dipelajari untuk pemula bisa dilihat di sini.
Sambil kita berkarya dan bekerja, kita bisa belajar bahasa pemrograman lain untuk menambah spektrum pengetahuan kita tentang pemrograman. Lalu bisa juga sambil kita memperbaharui pengetahuan kita tentang hal-hal yang berkaitan dengan programming, seperti:
Database.
Authentication & Authorization.
CORS (Cross-Origin Resource Sharing).
Security (In terms of Web, or API, or Mobile Programming).
Programming Principles: SOLID, DRY, KISS, dsb.
Design Pattern: Creational Pattern, Structural Pattern, dsb.
Programming Achitecture: MVC, MVVM, MVP, Hexagonal Architecture, DDD, Event Driven, dsb.
Cache.
Bagian 3: Database Fundamental
Programmer yang mengerti database, bagaimana data tersebut disimpan dan diolah akan menjadi programmer yang mempunyai nilai lebih dari yang lainnya. Kenapa? Karena kita sebagai programmer mengelola data, akan sangat baik ketika kita mengerti bagaimana data itu disimpan, diambil, dihapus dan diubah.
Database yang disarankan untuk junior programmer bisa menggunakan MySQL / Postgresql
Adapun fundamental database yang perlu dipahami adalah struktur database, macam-macam dbms, normalisasi database, query-query dasar database
Bagian 4: Network Fundamental
Programmer harus tau minimal basic network dalam dunia komputer, seperti bagaimana cara komputer terhubung, apa itu IP? Apa itu port dan protokol? Sehingga kita sebagai programmer tau bagaimana nantinya data yang kita kelola lewat aplikasi yang kita buat berjalan. Alasannya? Karena dengan tau network fundamental akan menanamkan pada client / kantor bahwa kita benar-benar mengerti ruang lingkup kerja kita.
Programmer apapun Anda, entah desktop, website, android, IOS, atau backend developer kita semua bekerja menggunakan network, karena zaman sekarang komputer kita pasti terkoneksi satu dengan yang lain, sehingga sangat penting untuk tau network fundamental.
Bagian 5: Struktur Data & Algoritma Fundamental
Junior programmer sebaiknya mempelajari dengan baik struktur data dan algoritma, kenapa? Karena pada tahap ini, yang akan membedakan "value" Anda dengan programmer yang lain. Ingat, PROGRAMMER = PROBLEM SOLVER. Jadi jangan fokus hanya di bahasa atau framework atau libraries, karena itu semua hanya "TOOL", hanya alat, sifatnya support.
Sehingga silahkan di awal fokus di bagian struktur data dan algoritma atau biasa disebut DSA (Data Structure & Algorithm), mungkin akan terasa sulit di awal, akan terasa berat, waktu juga terasa lambat. Tapi ingat, itu hanya di awal, sekali kita mengerti materi ini, maka selamanya akan kita ingat.
Bagian 6: Kesimpulan
Materi ini bertujuan agar teman-teman yang baru mulai, atau baru jadi junior programmer bisa menemukan referensi belajar atau learning path agar bisa naik ke level selanjutnya yaitu Middle Programmer menjadi lebih mudah, sisanya silahkan teman-teman eksplore lebih lanjut, artikel ini hanya mencoba membantu di awal saja.
Yang perlu diingat adalah nikmati setiap prosesnya, karena semua orang pasti merasakan hal yang sama jika baru memulai. Semangat!
Semoga Anda selalu bersemangat dalam belajar, dan jangan lupa untuk mengajarkannya!