(note:posting lama dari blog saya sebelumnya)

Terinspirasi oleh tulisan endy saya juga mau cerita nih tentang pengalaman belajar java. Setiap orang punya jalab yang unik dalam belajar java, dengan melihat jalan-jalan ini orang yang baru belajar java dapat mengambil pelajaran untuk tidak melakukan kesalahan yang sama, atau dapat mengambil pelajaran yang berharga untuk diikuti.

First involvement in IT and computer

Gw berasal dari generasi yang ketemu dengan komputer primitif dengan 2 buah drive berukuran jumbo, disket 5″. pelajaran yang paling sering gw denger dari guru komputer smp gw adalah :
1. masukkan disket MS-DOS ke drive A,
2. nyalakan komputer, tunggu sampai a:\> muncul dilayar,
3. masukkan disket Word-star ke drive B,
4. ketik a:\>b:, kemudian ketik b:\>ws
Setelah itu anda dapat bekerja menggunakan editor WS, :O

My Early life in IT

Setelah masa-masa primitif komputer di SMP gw masuk ke masa-masa dimana komputer udah punya hardisk (wah ga perlu lagi masukin disket yha? dumb…) yang gw temukan di SMA. gw juga berkenalan dengan internet di SMA ini, setelah itu kena kecanduan chat akut!!

Di SMA gw belajar pascal sedikit-sedikit. pernah tuh di SMA ujian pascal ngerjainya ngasal2an sampe ada temen gw yg ngasih jawaban di lembar ujianya berpola, byar kelihatan keren katanya. misalnya A B C D E D C B A B C D E. yah karena pelajaran komputer ga akan masuk nilai di raport. tapi gw masih semangat, pernah ada kejadian yg agak sedikit memalukan. gw ngerjain soal ujian keterampilan komputer dengan model pilihan berganda cepet banged, ga sampe 30 menit, lha shaya ndak ngerti sama sekali soalnya… trus di depan kelas gw nanya sama ibu guru komputer gw, “bu ini gini yha cara njawabnya?”, ibunya “….” kaenya speechless liat kerjaan amburadul gw…

Saat SMA itu gw udah kecanduan banged sama IT, walau masih bl’oon, dan masih kecanduan ngenet, sampe pernah kelupaan bawa dompet ke warnet… akhirnya nggadein topi… aplikasi pertama yang gw oprek2 adalah jaringan peer-to-peer sharing mp3 penggantinya napster yang ditutup, yaitu gnutella, nggak sukses. karena cuma terbatas dari referensi gw di majalah IT, halah lupa namanya…

Dari SMA gw udah kepincut mau masuk mesin, karena dulu pas SMP nilai ketrampilan otomotif gw 9, dan suka banged oprek-oprek motor Kawasaki-GTO 2 tak punya babe gw, yang sering dipake nyari rumput kambing babe gw yg sekandang ituh. ( yeah dumb reason bwat masuk teknik mesin!!). Akhirnya manteb untuk menggabungkan dua keterkarikan gw dalam pilihan di UMPTN, pilihan pertama teknik mesin ITB, pilihan kedua Ilmu Komputer IPB.

Pas kelas 3 SMA beberapa bimbingan belajar masuk ke SMA gw untuk ngadain try-out gratis, seems that gw bisa pass tuh ke teknik mesin ITB, gimana kalo pilihan pertamanya dinaikin jadi TI ITB, pilihan kedua Teknik Mesin ITB? hmm.. seems doable. eh tapi akhirnya gw tahu juga ternyata di Teknik mesin ituh minim kaum hawanya… wah… masak 7 tahun gw bakalan ndekam di lingkungan minim kaum hawa?

Ternyata kenyataan jg malah memberikan gw pilihan yang jauh lebih sulit, ikut lomba atau UMPTN? kalo ikut lomba gw bisa jalan2 ke bombay + free pass ke IPB jurusan apapun, tapi ga bisa ikut UMPTN? ….hhhh… yah akhirnya gw memutuskan untuk ikut lomba dan melepaskan impian masuk ITB.

Akhirnya ya gini, sampe sekarang masih terdampar di Ilmu Komputer IPB yang gw cintai…

My IT Background

Di Ilmu Komputer IPB bahasa pemrograman pertama yang diajarkan adalah C, khususnya borland Turbo C 2.01, jadi pemahaman gw tentang pointer, Dynamic allocation memory dan Abstract Data Type cukup kuat, hal ini membantu gw memahami konsep class reference dan collection di java.

Perkenalan dengan java pertama kali pada waktu kuliah SBO, sistem berorientasi object, taon 2003. jaman itu sih java masih blom sebesar sekarang, terutama komunitas java. contoh-contoh pemrograman banyak yang menggunakan Java Applet. sekarang jarang deh orang yg nanya-nanya java applet.. :D

Setelah itu lebih banyak berkutat dengan VB dan championship manager… bwahahahah..

VB memberikan konsep databinding, event driven dan RAD yang sangat kuat ke gw. tapi yg gw rasakan paling kuat ketika jadi programmer VB adalah gw ga bisa ngehack VB component sampe dalem-dalemnya, kalo cari di internet, komponen VB rata-rata berbayar. serasa dibelenggu dalam penjara!! mau bikin ini itu ga bisa, cari ini itu di internet bayar!! ada pula pengalaman psoitifnya sperti VB yang menganut model dynamic variable binding memberikan pengalaman pemrograman yang berbeda dibanding C.

Gw juga belajar C++, bahkan waktu kuliah SBO itu gw bikin aplikasi simulasi dashboard mobil pake C++, masa-masa gw harus ngehack metode paint di layar hanya untuk menampilkan tombol!. paintfull!!. gw end up dengan nyaris 5000 line of code waktu dicompile…

Yang lebih parah lagi gw juga belajar Assembly di salah satu mata kuliah, can you emagine coding ratusan baris assembly pake notepad?? yeah that was dumb-me…!! use the simplest tool you can get and ask nobody!!

Gw juga belajar LISP, CLISP, PROLOG, ADA. haduh bahasa2 experimental and low level semua. mungkin karena ini gw masih suka ber-ketik-ketik ria dibanding ber-drag-and-drop, rasanya lebih macho! (endy, 2006)

Di akhir-akhir masa kuliah (hei!! inged lu kan blom lulus dodooll!) gw sempat membuat dua solusi berbeda dengan hasil berbeda pula, yang pertama semacam Point-of-Sales yang mencatat transaksi keluar masuk mobil di rental mobil Sriwijaya di jalan tole iskandar dinata depok, hehehe, dikembangkan menggunakan VB + Crystal report 9. sampe sekarang aplikasi itu masih Up and Running. :D

Aplikasi kedua adalah datawarehouse and reporting service untuk salah satu divisi di TikiJNE, ga sukses, pengembangan aplikasinya paintfull banged, masih blom ngerti query sama sekali, diambil semua datanya trus difilter di dalam array (List) PHP, dumb!. Reportnya menggunakan JPGraph dan FPdf, ini jg paintfull banged, ngepas-ngepasin reportnya pake methode setCellLocation(x,y)… 7 report satu bulan ga kelar!!

Semua pengalaman gw itu membuat gw mulai melirik ke java.

Pengalaman belajar java

Pengalaman kerja pertama gw ga ada hubunganya sama java. maintenance, debug and support financial app yang ditulis pake ASP + Com + Stored Procedure dimana 95% logic ada di T-SQL, ga gitu menarik secara teknologi. Tapi menarik untuk dipahami bahwa teknologi tersebut dapat menjalankan aplikasi dengan load yang sangat tinggi dan digunakan oleh puluhan concurent user. :D

So far sampe titik ini, gw blom punya pengalaman coding java secara extensive, hanya sebatas bikin aplikasi helo world! menggunakan netbeans 5.0 dari cd yang gw dapet di Sun developer day 2005.

Setelah menghadiri acara Sun Developer Day 2005 gw manteb untuk total belajar java, akhirnya gw mendaftarkan diri untuk ikut pelatihan java di brainmatics. Di sanalah gw ketemu Endy yang waktu itu jadi trainernya. Setelah itu gw mulai membaca-baca Java Howto Program dan SCJP preparation test dari Sun secara otodidak. Proses belajarnya hanya sebatas coba-coba dan mengingat-ingat konsep OOP yang dulu gw pelajari pas kuliah.

Di akhir kontrak kerja gw, gw dapet tawaran untuk kerja di badan penelitian kehutanan untuk membantu mengembangkan aplikasi simulasi hutan, SExI-FS, bwahahah namanya keren. Karena aplikasi ini dikembangkan menggunakan Java, gw ga mikir dua kali untuk menerima tawaran ini.

Setelah berhenti dari tempat kerja pertama, gw harus mengunggu proses administrasi dan kontrak kerja dengan tempat kerja baru selama 2 mingguan. Dalam waktu ini gw mati-matian membaca kata-per-kata modul SCJP preparation test dari Sun, karena modul ini menerangkan java language fundamental dengan sangat rinci, gw selingi dengan membaca Java Howto Program untuk latihan coding, yha karena kalo baca teruss ga ada latihan coding bisa bosen.

SCJP Preparation test module terdapat 9 chapter :
Chapter 1. Language Fundamentals

  • Java Programming Language Keywords
  • Literals and Ranges of All Primitive Data Types
  • Array Declaration, Construction, and Initialization
  • Using a Variable or Array Element That Is Uninitialized and Unassigned
  • Command-Line Arguments to Main

Chapter 2. Declarations and Access Control

  • Declarations and Modifiers
  • Declaration Rules
  • Interface Implementation

Chapter 3. Operators and Assignments

  • Java Operators
  • Logical Operators
  • Passing Variables into Methods

Chapter 4. Flow Control, Exceptions, and Assertions

  • Writing Code Using if and switch Statements
  • Writing Code Using Loops
  • Handling Exceptions
  • Working with the Assertion Mechanism

Chapter 5. Object Orientation, Overloading and Overriding,Constructors, and Return Types

  • Benefits of Encapsulation
  • Overridden and Overloaded Methods
  • Constructors and Instantiation
  • Legal Return Types

Chapter 6. Java.lang?The Math Class,Strings, and Wrappers

  • Using the java.lang.String Class
  • Using the java.lang.Math Class
  • Using Wrapper Classes
  • Using the equals() Method with Strings and Wrappers and Objects

Chapter 7. Objects and Collections

  • Overriding hashCode() and equals()
  • Collections
  • Garbage Collection

Chapter 8. Inner Classes

  • Inner Classes
  • Method-Local Inner Classes
  • Anonymous Inner Classes
  • Static Nested Classes

Chapter 9. Threads

  • Defining, Instantiating, and Starting Threads
  • Preventing Thread Execution
  • Synchronizing Code
  • Thread Interaction

Gw pribadi sih ga menyarankan kepada mahasiswa dan newbies untuk mempelajari modul ini secara otodidak, for the sake of your mental healthyness. ada banyak tempat kursus yang menyediakan kursus java language fundamental ini, nama modulnya SL275, lu-lu bisa cari modul ini dengan keyword “SL275 java” di google dan akan mendapatkan banyak search result mengenai materi ini.
Setelah selesai menguasai 9 chapter diatas, kita sudah mempunyai kuda-kuda yang kuat di dunia persilatan java, namun blom siap untuk membuat aplikasi java sama sekali? wow!! padahal 9 chapter itu ada sekitar 500 halaman!!, yup! face it, belajar java itu susah!!. Jika ingin belajar desktop java, kita masih perlu belajar mengenai Swing Component, Trigger-event-listener concept, JDBC, Java I/O dll. makanya Gw imbangi dengan Java Howto program yang sedikit-sedikit membahas swing application.

1 bulan pertama gw struggle beraat untuk get into java world, dan lagi gw harus belajar class-class di JDK + ratusan class library aplikasi SExI-FS. Untungnya ada proses hand-over dari orang yg gw gantiin disini selama 2 minggu. Konsep pertama yang gw pelajari di dunia swing adalah Trigger-event-listener concept dan Swing MVC, sebagai swing programmer konsep ini bisa dibilang kuda-kudanya ilmu swing, kalo nggak ngerti bakalan berdarah-darah develop aplikasi swing.

Hmm, learning curve belajar java memang berat dan panjang, jadi shaya menyarankan untuk setidaknya pernah membaca modul SL275 sebelum terjun kedunia kerja!! itu akan menghemat waktu belajar java di tempat kerja nanti.

Misalnya ada dosen yang membaca postingan ini, yha harapanya SL275 bisa dimasukkan ke dalam kurikulum kuliah, karena bisa menjadi modal yang sangat berharga bagi Fresh Grad yang akan terjun ke dunia kerja. langkah ini darurat sih, karena frans dan kawan-kawan sedang menyusun JENI, Java Edukasi Nasional Indonesia, (bener ga sih singkatanya?)

Ok, ini saran saya untuk memulai belajar java, berdasarkan path belajar java yang gw lalui
Kalo lu masih mahasiswa dan punya duit, ambil kursus SL275, banyak lembaga pelatihan menawarkan paket ini
Kalau gak punya cukup duit, cari buku yang mambahas java language fundamental, sperti Bruce eckle’s Thinking in java, Java Core 1 dan 2. tapi shaya tidak menyarankan Java Howto program.
Setelah java fundamentalnya kuat, cobalah membuat aplikasi kecil untuk belajar sambil membaca buku yang membahas pembuatan aplikasi java, sepeti Java Howto program, atau beberapa buku yang sudah tersedia di gramedia.
Cari kerja sebagai programmer java!! learning by doing is the best way.
Mulailah untuk aktif dalam komunitas java, sperti JUG-Indonesia, netbeans-indonesia atau JLinux. Dalam komunitas ini lu bisa bertanya jika ada kesulitan dan mengetes apakah pemahaman lu terhadap java sudah benar dengan menjawab pertanyaan atau menyatakan opini.

Kitab sakti untuk newbie yang ingin jadi programmer java :

  • Java SE Documentation
  • Java SE Tutorial
  • SL275 modul
  • Tinking in Java by Bruce Eckle
  • Java Education National Indonesia program dari diknas untuk memasukkan java ke dalam kurikulum pendidikan nasional. Sudah banyak materi pembelajaran java dalam bahasa indonesia.

Setelah mempunyai landasan kuat di java language fundamental dan mempunyai pengalaman terlibat dalam java, cobalah untuk mulai berfikir mengikuti Sertifikasi. Ini adalah langkah strategis untuk menaikkan kualitas kita sebagai java programmer.