Pada prinsipnya sama seperti kita ingin menuju Roma, akan ada banyak jalan. Kita bisa lewat Bogor, kemudian ke Bandung lalu sampai di Roma. Atau kita juga bisa lewat Karawang, kemudian ke Jakarta, selanjutnya mendaki gunung Krakatau dan sampailah di Roma (anggap saja itu benar :D). Ya, untuk menjadi seorang programmer pun demikian, ada banyak cara yang bisa ditempuh untuk belajarnya.
Beberapa di antara kita tentu berbeda-beda caranya dalam mempelajari pemrograman, dan ini dipengaruhi oleh banyak faktor, seperti latar belakang, kecepatan belajar, keadaan ekonomi dan juga mungkin lingkungan. Selain itu, cara saya jatuh cinta dengan pemrograman bisa jadi berbeda dengan cara Kamu. Dan mungkin itu pun mempengaruhi.
Sesuatu yang harus kita pahami adalah, bahwa tidak mungkin hari ini ingin jadi seorang master programmer, kemudian kita hanya nonton tv, kemudian tidur dan pagi harinya kita tiba-tiba bisa membuat program super keren yang bisa mengalahkan sofware buatan Microsoft. Tidak ada ceritanya kita sedang berjalan-jalan di musium Taman Mini, tiba-tiba ada seekor laba-laba yang menggigit kita, kemudian kita ketiduran di jalanan, dibangunkan satpam dan setelah bangun kita langsung bisa coding sambil bergelantungan di pohon. Satu hal yang harus kita sepakati adalah, ada sebuah proses yang harus kita lalui untuk itu.
Pernah ada yang bertanya pada saya, “Kak, saya sudah lama ingin belajar pemrograman, gimana ya caranya?”. Kemudian saya tanyakan, “Apa yang sudah kamu lakukan supaya Kamu bisa belajar pemrograman?”, kemudian dia menggeleng dan menjawab “belum ngapa-ngapain sih”. Kemudian saya tanya, “Kamu sudah coba beli buku tentang pemrograman?”, dia jawab “belum”. “Kamu sudah baca artikel di internet tentang pemrograman?”, dia pun menjawab belum. Saya kaget, kok bisa menginginkan sesuatu, tapi tidak melakukan sesuatu untuk mencapainya? Semua butuh proses kawan…
Sesuatu yang saya ingin sampaikan di atas adalah, buat Kamu yang ingin bisa pemrograman, Kamu harus siap untuk menjalani prosesnya, tidak ada yang instan untuk pandai pemrograman. Tidak gampang memang, tapi saya jamin akan menarik. Kalau kamu sependapat dengan saya, sebenarnya programming itu bukan hanya sebatas ilmu untuk membuat program komputer, tetapi juga merupakan gaya hidup, dan kamu bisa menikmatinya.
Artikel ini saya tulis bukan untuk yang sudah mahir pemrograman, tidak… tidak mungkin saya mengajarkan ikan cara untuk berenang :D. Artikel ini khusus untuk Kamu yang baru melihat keindahan dari pemrograman, dan kamu tergoda untuk mendalaminya, karena kamu melihat ada secercah kebahagiaan yang bisa didapatkan di dalamnya, namun Kamu bingung bagaimana cara memulainya.
Apa yang akan saya sampaikan selanjutnya, tidak bersifat absolute, artinya tidak mesti demikian. Karena seperti yang saya singgung di awal, ada banyak jalan untuk menuju Roma. Dan cara setiap orang berbeda-beda. Namun semoga ini bisa membantu Kamu untuk memulai. Buat teman-teman yang sudah lama mendalami programming, dan punya sebuah “cara”, nanti bisa dishare juga ya di kotak komentar, itu pasti akan bermanfaat.
Berikut ini adalah beberapa hal yang bisa Kamu lakukan untuk memulai belajar pemrograman:
Sebelum Kamu melakukan sesuatu, Kamu harus tau dulu dong apa yang ingin Kamu lakukan. Kamu harus tau dulu apa itu programming. Sama seperti Kamu suka seorang wanita, sebelum Kamu mulai melakukan pendekatan, apalagi menembaknya, minimalnya Kamu harus punya informasi tentang dia. Misalnya Kamu harus tau berapa jumlah lubang hidungnya, apakah dia makan menggunakan tangan atau tidak, bagaimana cara berjalannya, apakah kakinya ada 2, apakah ibunya perempuan :D. Semakin banyak informasi yang Kamu tau, maka akan semakin baik. Dan mungkin akan membuat Kamu semakin jatuh cinta.
Sebagian dari kita tidak mencoba mendalami pemrograman, karena mungkin hanya tau sebagian saja. Misalnya hanya tau, “pemrograman itu lo akan nulis kode di texteditor dan lo bisa bikin program”. Kalau hanya itu yang diketahui, wajar saja jika dia tidak tertarik untuk belajar pemrograman.
Bayangkan jika kita tau bahwa dengan pemrograman kita bisa membuat sebuah program yang bermanfaat bagi orang banyak, semua dunia akan senang menggunakan program kita, bahkan dengan program itu kita bisa menjadi kaya raya, kita bisa membuat perusahaan sendiri, kita bisa membuka lapangan pekerjaan baru, dan bisa membuat orang lain bahagia dan sejahtera. Itu akan terdengar lebih menarik. Atau mungkin juga, ketika kita punya anak nanti, kita bisa membuatkan game khusus edisi spesial untuk ulang tahun anak kita, atau membuatkan website untuk keluarga bahagia kita, atau mungkin kita bisa membuat sebuah aplikasi untuk menembak gebetan kita dengan aplikasi yang super romantis. Bro.. Bayangkan banyak sekali yang bisa kita lakukan. Semakin banyak informasi yang kita tahu, maka semakin banyak juga alasan yang kita punya untuk mempelajari pemrograman.
Pada akhirnya kita memang harus memilih. Banyak sekali bahasa pemrograman yang ada di dunia, mulai dari bahasa mesin, bahasa tingkat rendah, bahasa tingkat menengah dan bahasa tingkat tinggi. Kamu bisa cek sendiri di sini http://id.wikipedia.org/wiki/Bahasa_pemrograman, silahkan pelajari kelebihan dan kekurangannya masing-masing. Atau buat kamu yang masih bingung saking banyaknya bahasa pemrograman dan butuh rekomendasi juga pencerahan untuk memilih bahasa pemrograman apa yang harus kamu pelajari untuk memulai belajar, kamu bisa baca artikel “Bahasa Pemrograman Apa yang Cocok untuk Dipelajari Pertama Kali ?”.
Kamu mungkin bisa saja mempelajari semuanya, tapi saya sarankan pilihlah satu terlebih dahulu. Kuasailah satu terlebih dahulu. Dalamilah. Yang harus kita ingat adalah, bahasa pemrograman bukanlah sebuah agama yang kita hanya boleh memilih satu dan tidak bisa seenaknya kita ganti. Kamu bebas saja berganti-ganti bahasa pemrograman yang Kamu ingin kuasai nanti, jika Kamu mau. Tapi… Pelajarilah dulu satu. Kuasailah secara mendalam.
Sekarang Kamu sudah tau apa itu pemrograman dan Kamu sudah punya bahasa pemrograman yang ingin Kamu kuasai, selanjutnya pelajarilah. Belajarlah algoritma dasar dengan bahasa pemrograman yang Kamu pilih. Caranya banyak sekali, bisa melalui buku, bisa juga melalui artikel-artikel di internet, tutorial-tutorial pemrograman di internet seperti Tutorial CodePolitan dan Academy Dicoding. Atau Kamu juga bisa coba belajar pemrograman dari majalah pemrograman seperti CodePolitan Magazine, kuliah jurusan IT, kursus pemrograman, mengikuti seminar atau workshop. Ya, banyak sekali caranya. Silahkan Kamu pilih sendiri yang paling sesuai dengan metode belajarmu.
(sumber: http://rumadimatematika.blogspot.com)
Belajar saja tidak cukup, harus dipraktekan. Cobalah buat program-program sederhana. Jika Kamu masih sekolah, Kamu bisa mencoba membuat program sederhana untuk mata pelajaran Matematikamu, seperti membuat program “menghitung luas lingkaran”, “menghitung volume balok”. Itu sangat menarik kawan, dulu saya melakukan hal itu. Kalau Kamu adalah seorang guru, mungkin Kamu bisa membuat program untuk menjelaskan pada muridmu bagaimana sebuah planet berputar. Atau apa saja lah… Nggak mesti yang serius juga bisa, misalnya membuat program untuk mendaftar nama mantan-mantanmu. Hehehe… Pada intinya, cobalah untuk membuat sesuatu, mulai dari yang sederhana dari apa yang Kamu sudah kuasai.
Informasi sangat penting kawan. Boleh jadi apa yang Kamu sedang pelajari sudah tidak lagi dipelajari oleh orang lain karena sudah ada yang lebih menarik atau lebih baik. Kamu tidak akan tau itu kecuali Kamu update informasi.
Salah satu cara update informasi adalah, kamu bisa mengunjungi web-web yang senantiasa memberikan informasi, seperti SitePoint, Mashable, OMG! Ubuntu! atau CodePolitan (website yang sedang kamu baca ini).
Kamu juga bisa like fan page dan follow twitter, pihak-pihak yang senantiasa memberikan informasi tentang programming atau teknologi secara umum.
Beberapa akun twitter orang hebat yang bisa Kamu follow bisa Kamu baca di sini http://www.codepolitan.com/koleksi-akun-twitter-pembuat-framework/.
Bagi anda yang belum mengenal bahasa pemrograman, tentu akan merasa bingung, bahasa pemrograman apa yang akan dipelajari pertama kali. Terlebih lagi anda juga bingung bahasa pemrograman apa yang cocok untuk tujuan anda belajar. Apakah itu untuk pembuatan web ? pembuatan mobile apps ? atau untuk pembuatan webservice di server ?
Sebuah situs Make A WebsiteHub merangkum infografik beberapa bahasa pemrograman yang layak untuk dipelajari baik bagi pemula ataupun yang sudah menguasai bahasa pemrograman lainnya. Infografik ini dibuat berdasarkan data yang diperoleh dari situs JobTrends pada awal tahun 2016 ini.
Dan ini adalah infografik tentang bahasa pemrograman, sejarah singkatnya, dan juga peruntukannya.
Tidak ada bahasa pemrograman yang jelek, karena mungkin yang jelek adalah bagaimana cara kita menulis kode program dan menentukan strategi algoritma. Ada berbagai faktor yang dapat menjadi pertimbangan kenapa bahasa pemrograman server side tertentu harus dipelajari. Berikut ini adalah beberapa bahan pertimbangan yang dapat direnungkan bagi seorang newbieyang baru ingin belajar pemrograman atau bagi seorang fresh graduate yang ingin mulai menapaki karir sebagai programmer profesional di bagian server side.
Untuk Anda yang masih kuliah atau yang baru akan kuliah, pastikan cari tahu apa bahasa pemrograman apa yang dipelajari di kampus. Jika tidak punya niatan untuk bekerja sambil kuliah, lebih baik fokus pelajari saja apa yang diajarkan kampus. Bukan tidak mungkin bila kamu punya semangat lebih pasti belajar yang tidak mainstream di kampus. Biasanya perguruan tinggi IT di Indonesia mengajarkan bahasa pemrograman server side seperti PHP, Java, dan ASP.NET.
Bahasa pemrograman server side tersebut dipilih karena beberapa faktor, diantaranya karena mudah dipelajari bagi pemula (mahasiswa IT), cocok untuk memulai bekerja sebagai fresh graduate, karena lowongan yang tersedia untuk bahasa pemrograman server side tersebut sangat banyak, dan tentunya ketersediaan bahan belajar yang mudah diakses dan cukup banyak untuk didapat dibandingkan bahasa pemrograman lain.
Biasanya kegalauan ini terjadi ketika seseorang baru saja lulus, ada yang belum bisa melakukan pemrograman ada juga yang sudah menguasai bahasa pemrograman sudah sejak lama tertentu tapi tidak sesuai dengan kebutuhan perusahaan yang dilamarnya. Ketika Anda akan bekerja pada suatu perusahaan, pastikan melihat apa yang dibutuhkan perusahaan, bila perusahaan tersebut tidak membutuhkan python programmer, Anda mungkin akan kesulitan untuk terpilih sebagai programmer ASP.NET.
Memang ada beberapa perusahaan yang membutuhkan fresh graduate untuk dibina menggunakan bahasa pemrograman tertentu, tapi itu semua tergantung kondisi perusahaan. Bila mereka sudah cukup melakukan pembinaan, biasanya mereka membutuhkan orang yang sudah mumpuni dan berkemampuan tinggi pada suatu bahasa pemrograman.
Sebelum memilih bahasa pemrograman server side yang pasti Anda perlu mencari bahan belajar untuk bahasa pemrograman server side tersebut. Bahan belajar dapat berupa video di Youtube, slide di Slideshare, web tutorialseperti di W3SChools atau TutorialsPoint, atau berbagai buku gratis legal yang dapat dicari melalui Google.
Kenapa harus mencari bahan belajar? terkadang dokumentasi resmi saja tidak cukup apalagi bila dokumentasi resmi yang disediakan kurang informatif dan tertata rapi, sehingga bahan belajar tambahan tadi dapat membantu mempertajam kemampuan untuk memahami bahasa pemrograman tersebut.
Bila Anda gemar mencari jawaban dari web forum seperti StackOverFlow, pastikan lihat berapa jumlah pertanyaan yang ada tentang bahasa pemrograman tersebut, sehingga bila suatu saat nanti butuh referensi, Anda tinggal kembali ke StackOverFlow.
Bila Anda memilih bahasa pemrograman server side yang kurang bahan belajarnya, tentunya Anda harus mengeluarkan tenaga dan sumber daya lebih untuk mempelajari bahasa pemrograman tersebut. Bisa jadi Anda membeli dokumentasi resmi dengan harga tertentu, atau mempelajari sendiri source code atau dokumentasi API dari bahasa pemrograman tersebut.
Ketika Anda ditugaskan oleh system analyst untuk menggunakan RDBMS MySQL misalnya, tentu saja MySQL memiliki sejumlah bahasa pemrograman yang mendukung interaksi data denganya. Diantaranya ada PHP, Python, Java, C#, C/C++, Perl, dan lainnya. Dengan demikian kita dapat mengeliminasi bahasa pemrograman lain yang mungkin akan membuat kita bimbang untuk dilibatkan dalam proyek.
Setelah itu Anda tinggal melakukan diskusi dengan tim bahasa pemrogramanserver side manakah yang akan digunakan dalam proyek. Lalu misalkan Anda diminta untuk membuat fitur generate laporan berupa PDF, dan Anda ditugaskan untuk menggunakan library HTML2PDF atau DomPDF, sudah pasti yang akan digunakan adalah PHP, jadi pilihan hanya jatuh kepada PHP. Bila ingin menggunakan bahasa pemrograman lain, Anda harus membuatnya sendiri.
Dengan demikian selain memilih karena trend, pastikan Anda memilih suatu bahasa pemrograman karena masalah yang akan diselesaikan dan teknologi apa yang harus didukung oleh suatu bahasa pemrograman server side.
Sebagai contoh, setelah melakukan penelusuran lowongan pekerjaan “programmer” di kota Bandung dari Maret 2016 hingga April 2016 di websitepenyedia lowongan pekerjaan seperti Jobstreet, JobsDB, dan LinkedIn Jobs, umumnya lowongan untuk bekerja sebagai web developer ditempatkan diserver side, frontend a.k.a client side, dan mobile development.
Ada beberapa bahasa pemrograman server side yang dibutuhkan perusahaan IT di kota Bandung, untuk menguatkan bisnis mereka. Tentu saja karena ini bukan survei formal, Anda tidak harus percaya seratus persen dengan rekomendasi ini. Berikut adalah beberapa bahasa pemrograman server sideyang dibutuhkan beberapa perusahaan di Kota Bandung:
Tidak menutup kemungkinan, di kota – kota besar lainnya mungkin ada lowongan pekerjaan programmer yang membutuhkan bahasa pemrogramanserver side seperti Go, Haskell, Clojure, Elixir, Perl, dan lainnya.
Dunia IT (information technology) merupakan sebuah ranah ilmu yang terlihat semacam satu kesatuan (asalkan bisa menggunakan komputer) bagi orang awam namun kenyataannya terdapat banyak sekali cabang ilmu yang tidak bisa kita ambil semuanya dalam waktu yang sebentar. Sebagai contoh kecil, di dunia IT sendiri terdapat fokus ilmu pada bidang teori komputasi, jaringan komputer, algoritma dan pemrograman, sistem informasi, kecerdasan buatan, dan masih banyak lagi bidang ilmu di dunia IT yang bahkan dalam kuliah pun hanya dibahas kulitnya saja.
Bagi seseorang yang baru mengenal dunia IT tentu punya ambisi untuk ingin menguasai segalanya. Mulai dari jaringan komputer hingga menguasai semua bahasa pemrograman. Sekarang kita akan ambil contoh kasus dalam konteks seseorang ingin menguasai bahasa pemrograman. Tentu bahasa pemrograman merupakan salah satu hal yang menarik bagi seseorang yang ingin menguasai dunia IT. Kenapa? ada banyak sekali bahasa pemrograman yang cukup membuat seseorang ingin menguasainya.
Bahasa pemrograman ini ada banyak sekali ragamnya. Dari segi sistem operasi ada yang hanya tersedia untuk Windows (C#, Visual Basic), ada yang hanya tersedia untuk OSX (Swift, Objective-C), ada yang hanya tersedia untuk Linux (BASH), dan ada juga yang tersedia untuk semuanya (Python, PHP, Javascript, C, C++). Dari segi perangkat ada yang hanya disediakan untuk komputer desktop, perangkat mobile, perangkat IoT, dan embedded machine. Dari sedikit aspek yang telah disebutkan, waktu yang dibutuhkan untuk semuanya tidak akan pernah cukup. Berikut ini adalah beberapa hal yang dapat Anda simak untuk memilih apakah harus mencoba banyak atau menguasai beberapa bagi Anda yang masih kuliah di jurusan IT atau baru mengenal dunia IT khususnya pemrograman.
Di kehidupan nyata mungkin ada seorang mahasiswa IT yang mencoba 10 bahasa pemrograman, ada yang mencoba menguasai 3 bahasa pemrograman untuk digunakan mengerjakan tugas kuliah yang diberikan dosennya, ada yang ingin memperdalam 1 bahasa pemrograman untuk hobi dan proyeknya. Tidak ada yang keliru dengan hal ini, namun dapat dipastikan seseorang yang mencoba menguasai bahasa pemrograman terlalu banyak belum pernah terlibat dalam proyek freelance ataupun membuat karya tertentu.
Berbeda dengan seorang mahasiswa yang fokus pada 3 bahasa pemrograman misalnya. Dia menggunakan 2 bahasa pemrograman untuk kuliah dan proyek pribadinya, satu lagi mungkin untuk hobinya. Jadi waktu yang diinvestasikan seorang penguasa 3 bahasa pemrograman tercurahkan untuk fokus pada pengembangan produk yang dibuatnya. Belum lagi timeframe yang dimiliki seorang mahasiswa hanya 4 ~ 7 tahun. Ketika lulus apakah perusahaan akan mencari seseorang yang menguasai banyak bahasa pemrograman namun tidak mendalam? atau seorang fresh graduate yang menguasai sedikit bahasa pemrograman namun lebih fokus dan menguasai satu saja bahasa pemrograman sampai topik spesifik? Akan semakin lebih baik apabila memiliki sebuah karya dalam bentuk aplikasi dengan menggunakan bahasa pemrograman yang dipilihnya.
Berikut ini adalah diagram sederhana yang dapat menunjukkan kenapa kita harus fokus pada bahasa pemrograman tertentu”
Jadi sekarang Anda dapat memilih apakah ingin menguasai 10 bahasa pemrograman hanya kulitnya saja? atau menguasai sedikit atau satu bahasa pemrograman namun punya kompetensi dan kemampuan yang mendalam hingga ke bagian inti dari bahasa pemrograman tersebut. Pilihan tersebut akan selalu ada di tangan Anda.
Misal Anda hanya ingin fokus pada PHP dan Javascript namun harus menguasai Visual Basic untuk memenuhi tugas kuliah desktop programming? atau harus menggunakan Matlab hanya untuk membuat skrip perhitungan matriks dan aljabar linier? tidak masalah, pelajari saja Visual Basic dan Matlab tersebut sampai tugas Anda benar – benar terpenuhi untuk mata kuliah tersebut. Setelah beres perkuliahan Anda dapat meninggalkan kedua bahasa pemrograman tersebut apabila memang tidak benar – benar dibutuhkan dan bukan menjadi fokus utama untuk kemampuan programming yang akan Anda kuasai.
Hal serupa pun dapat terjadi ketika Anda yang sudah biasa menggunakan suatu Relational Database, misalnya MySQL, namun diminta menggunakan Microsoft SQL Server untuk suatu proyek yang Anda dapatkan. Anda dapat mencoba untuk mulai mempelajarinya dan kuasai beberapa hal yang dapat menyokong pengerjaan Anda pada proyek tersebut. Bila ada orang lain yang lebih expert dalam tim Anda, tentu itu akan lebih membantu Anda karena tidak harus menguasai seluk beluk dari SQL Server tersebut. Tapi bila tidak ada lagi orang yang diamanahi, Anda dapat mulai mempelajarinya hanya untuk lingkup proyek tersebut.
Jadi menguasai hal baru diluar fokus yang Anda kejar, dapat Anda lakukan hanya di waktu yang tepat. Terlebih waktu yang Anda miliki pasti terbatas bila harus semua Anda coba dalam satu waktu.
Ketika Anda melihat seorang teman yang piawai membuat game dengan menggunakan ActionScript 3.0, tentu Anda akan terpukau melihatnya bahkan sedikit tergiur untuk mencoba membuat game tersebut. Bila Anda memang ingin fokus di dunia game development, hal tersebut bisa menjadi sebuah jalan bagi karir Anda. Tapi bila hanya untuk hobi? itu juga tidak masalah, namun Anda tidak perlu merasa malu bila teman Anda dapat menguasai suatu hal yang tidak dapat Anda kuasai. Sejatinya manusia hidup dengan cara berkelompok dan kolaborasi. Suatu saat mungkin saja kemampuan Anda dan teman Anda dapat dibutuhkan dalam suatu proyek. Anda memperoleh bagian Anda, teman Anda memperoleh bagiannya sendiri.
Kadang ketertarikan untuk mengikuti seseorang tersebut terjadi karena kurangnya kepercayaan diri yang kita miliki. Ada kalanya apa yang kita pelajari terasa kurang menarik untuk saat ini ataupun di masa depan. Tapi tunggu dulu. Bila Anda hanya baru sebulan, 6 bulan, atau satu tahun mencoba. Tentu hasil yang diharapkan tidak akan dapat Anda peroleh begitu saja. Misal bila Anda adalah seorang web programmer bila hanya mencoba Javascript selama satu tahun, mungkin yang Anda kuasai baru dasarnya saja. Tapi bila Anda sudah terlibat dengan proyek dan konsisten mencoba Javascript selama lebih dari 1 ~ 2 tahun, bukan hal asing bila Anda akan sudah menguasai Ajax, Validasi Form, membuat komponen web sendiri, dan mungkin Anda membuat library Javascript untuk Anda sendiri.
Untuk menguasai kompetensi terdalam dalam suatu bahasa pemrograman, Anda tidak dapat melakukannya hanya dalam “satu hari” saja, Anda bukanlah Sangkuriang yang harus menyelesaikan sesuatu dalam satu malam, bahkan menurut legenda Sangkuriang pun tidak pernah menyelesaikan perahunya. Dalam suatu bahasa pemrograman selain ada bidang yang secara umum dapat dilakukan dengan bahasa pemrograman tersebut, ada juga bidang khusus yang tidak dapat dilakukan suatu bahasa pemrograman. Kita ambil contoh sebuah bahasa pemrograman seperti C, Javascript, dan Java.
Secara umum, kita dapat menggunakan ketiga bahasa pemrograman tersebut untuk keperluan belajar algoritma dan logika pemrograman. Tapi Anda dapat menemukan bidang spesifik yang hanya dapat dilakukan oleh salah satu bahasa pemrograman tersebut. Misalnya bahasa C sendiri merupakan bahasa pemrograman yang banyak digunakan di dunia mikrokontroler danembedded system, bahkan C sendiri digunakan untuk membuat library bagi bahasa pemrograman lain. Tapi tentunya C belum pernah digunakan untuk manipulasi halaman web yang saat ini dikuasai oleh Javascript. Javascript digunakan untuk membuat konten web semakin menarik dan interaktif sehingga halaman HTML statis yang biasa tampil tak bergerak akhirnya memiliki animasi yang indah dan memberikan reaksi interaktif terhadap pengguna web. Begitupun Java, yang saat ini menguasai ranah mobile apps development khususnya di Android.
Jadi ketika Anda sedikit merasa malu bahwa Anda hanya bisa menguasai satu bahasa pemrograman, atau hanya beberapa saja. Tidak perlu ragu. Kuasailah bahasa pemrograman tersebut sampai ke akar – akarnya dan bidang khususnya. Sehingga setelah waktu yang Anda lalui cukup lama, Anda dapat menjadi ahli untuk bahasa pemrograman tersebut beserta bidang yang Anda geluti.
Fenomena ini sangat menarik, karena selalu terjadi di setiap generasi dan pada semua orang yang baru saja mengenal dunia IT. Pada akhirnya seseorang akan melihat dan mengakui Anda sebagai seorang expert yang di bidangnya. Katakanlah bila Anda menguasai bahasa pemrograman PHP sampai bagian terdalam, orang akan memiliki kepercayaan lebih terhadap Anda dibandingkan Anda yang hanya menguasai bagian kulit dari banyak bahasa pemrograman yang Anda coba.
Tulisan ini sebagian besar didasari oleh pengalaman penulis sendiri dan beberapa teman penulis di dunia IT khususnya programming selama kuliah hingga sekarang bekerja. Tulisan ini bisa saja berbeda dengan kenyataan pembaca. Bila ada perkataan yang kurang berkenan sekiranya mohon maaf, karena kesempurnaan hanya milik Tuhan semata. Semoga bermanfaat.
Programmer dan developer merupakan salah satu pekerjaan yang paling hangat dibahas di dunia IT. Namun banyak orang masih menganggap bahwa programmer dan developer adalah pekerjaan yang mempunyai tingkatan yang sama. Hmm, benarkah? Ini dia perbedaan programmer dan developer.
Programmer adalah seseorang yang mampu menyelesaikan masalah dengan menggunakan bahasa pemrograman. Mereka mempunyai banyak kemampuan terdiri dari berbagai level, mereka handal dalam menulis kode, mengerti algoritma dan sering bekerja sendiri.
Seorang programmer menguasai setidaknya satu bahasa pemrograman dan handal dalam menggunakannya. Programmer biasanya merupakan lulusan dari Universitas dengan jurusan ilmu komputer atau informatika. Ada juga programmer yang bukan berasal dari Universitas, seperti pelajar sekolah menengah kejuruan di bidang informatika, atau orang yang belajar otodidak dari buku, internet, kursus, bootcamp dan sebagainya.
Developer adalah seorang programmer yang sudah terlatih, mereka tidak hanya menyelesaikan masalah, namun juga membangun suatu produk. Mereka melakukannya sesuai dengan prinsip-prinsip desain dan implementasi rekayasa perangkat lunak, termasuk hal-hal seperti kinerja,maintainability, skalabilitas, ketahanan, dan idealnya keamanan diikutkan juga.
Developer juga bisa dikatakan sebagai seseorang yang dapat menggunakan banyak sistem dan bahasa pemrograman yang berbeda serta membuatnya terhubung satu sama lain. Developer merupakan seseorang yang profesional, dapat bekerja dengan orang lain, dan punya kemampuan berkomunikasi yang baik.
Developer memiliki pengalaman yang cukup untuk menyelesaikan masalah yang sudah pernah ia selesaikan sebelumnya dan tahu mana metode yang berhasil dan mana yang tidak. Developer biasanya menggambarkan tujuan, dan mereka merancang perangkat lunak yang akan diambil. Developer memiliki lebih banyak kebebasan karena mereka memiliki pengalaman yang lebih dalam.
Programmer juga bisa disebut coder, sedangkan developer juga bisa disebutsoftware engineer. Lebih sederhana, programmer bisa dikatakan seorang penyelesai masalah dan Developer bisa dikatakan seorang yang tidak hanya menyelesaikan masalah namun punya kinerja yang terstruktur dan disiplin.
adi perbedaan antara programmer dan developer yang paling mendasar adalah tingkatan derajatnya. Developer lebih banyak membutuhkan waktu, tenaga, dan pengalaman dibanding programmer. Sedangkan programmer dapat mempercepat penyelesaian masalah dengan jumlah waktu yang lebih singkat, tetapi mereka tidak akan sampai ke titik dimana mereka akan melakukan hal yang sama.
Kalo Kamu, programmer atau developer?
Sepintas judul artikel ini serasa aneh sendiri buat saya. Itu seperti “Mahasiswa Kebidanan Harus Bisa Membantu Pesalinan”, yang apabila itu dijadikan pertanyaan maka jawabannya pasti “ya iyalah”. Tapi ternyata tidak demikian pada kenyataannya, mungkin hampir semua kita sepakat akan bilang “ya iyalah”, tapi ternyata nggak sedikit temen-temen mahasiswa IT yang kemudian tersesat atau mungkin membiarkan diri tersesat, seolah berkata “ya iyalah bro, kecuali mungkin gue”. Mari kita tengok kembali berita ini: Lulusan TI Banyak yang Mengecewakan.
Berita itu sudah lama sekali, sekitar 4 tahun yang lalu, mudah-mudah sekarang keadaan sudah berubah. Terlepas dari berita itu sudah basi atau belum, saya rasa perlu kita tinjau ulang sisi pentingnya seorang mahasiswa IT untuk mampu menguasai skill coding, agar kemudian tidak ada lagi yang tersesat.
Ditinjau dari sisi pendidikan dan kurikulum, Pak Romi Satria Wahono telah memaparkan dengan sangat jelas pada artikel “Wajibnya Skill Coding Bagi Mahasiswa Computing“, betapa pentingnya skill coding bagi mahasiswa IT. Ada satu pernyataan yang menarik buat saya pada artikel Pak Romi tersebut, yaitu “mahasiswa computing tanpa skill coding itu bagaikan garam tanpa asinnya”. Sedikit menggelitik, namun sangat mengena maknanya. Betapa coding dan mahasiswa IT itu adalah sesuatu yang tidak bisa dipisahkan. Bukan hanya sebagai tambahan atau opsi yang kalaupun tanpanya garam masih tetap garam. Asin bagi garam adalah inti, artinya jika tanpa asin, apalah arti garam? Itu berarti, jika tanpa skill coding, apalah arti lulusan IT.
Di awal sudah saya singgung sedikit perbandingannya dengan mahasiswa kebidanan. Coding bagi lulusan IT itu ibarat membantu persalinan bagi seorang lulusan kebidanan. Apalah gunanya seorang kuliah di jurusan kebidanan jika dia tidak bisa membantu seorang ibu melahirkan.
Oke, kita mungkin sudah tahu bahwa skill coding memang wajib ain bagi mahasiswa komputer, dan kita tahu bahwa meninggalkannya adalah salah. Namun terkadang kita tahu ada hal baik yang harus dikerjakan, tapi tetap saja tidak kita kerjakan, dan sebaliknya ada hal tidak baik yang kita harus jauhi malah justru kita kerjakan. Maksud saya adalah, tidak serta merta ketika kita mengetahui hal baik lantas kita mengerjakannya, ada banyak variabel lainnya yang juga terlibat. Mari buat lebih sederhana, saya ibaratkan dengan sholat bagi seorang muslim. Semua orang muslim di dunia ini tahu bahwa sholat adalah wajib, tapi nyatanya masih ada yang meninggalkannya. Pun demikian yang saya maksud di atas.
Sebenarnya alasan seseorang masuk kuliah jurusan IT itu berbeda-beda dan pemahaman tentangnya di awal pun berbeda-beda. Ada yang kuliah hanya karena mencari gelar, ada juga yang mengincar ijazahnya, ada juga yang memang belajar. Pada dasarnya itu adalah hak, dan bebas-bebas saja. Namun terlepas dari tujuan, ketika kita masuk ke dalam perkuliahan, kita akan terikat oleh tanggung jawab bidang keilmuan kita, sesuai jurusan yang kita pilih. Karena pada akhirnya setelah lulus kita akan dikenal sebagai lulusan dari jurusan tersebut.
Pada prinsipnya, apapun jurusan kita saat di perkuliahan tidak mengharuskan kita menjadi apa kita nantinya. Kita bebas-bebas saja, bahkan berprofesi yang tidak ada kaitannya sama sekali dengan jurusan kita pun tidak masalah. Bukankah sukses itu tentang bahagia, bukan tentang kita menjadi apa karena jurusan kita. Pak Mario Teguh tidak pernah punya sejarah pernah kuliah di jurusan motivasi, tapi nyatanya beliau menjadi motivator hebat saat ini. Bahkan Iskandar Soiesman sang pembuat Panada Framework justru berasal dari jurusan Sosiologi, namun justru menjadi programmer yang handal. Bahkan Bill Gates sendiri malahan tidak menamatkan perkuliahannya. Saya rasa banyak sekali contohnya, orang yang hebat dan besar bukan karena jurusan di perkuliahannya. Namun, jadi apapun kita nantinya ketika lulus, bukankah baik jika kita bertanggung jawab terhadap bidang keilmuan kita? Paling tidak itu akan menjadi bekal kita nantinya. Karena saya sendiri percaya bahwa, apa yang dipelajari itu tidak akan sia-sia, mungkin belum saat ini, atau mungkin bukan di dalam profesi kita, tapi kita pasti akan merasakan manfaatnya.
Mungkin agar lebih menyegarkan lagi, mari kita tengok kembali tulisan saya sebelumnya di CodePolitan tentang alasan mengapa kita harus belajar coding. Terutama jika Kamu mahasiswa IT, kamu sebenarnya sudah berada di track yang baik.
Sebenarnya, akan repot sendiri jika mahasiswa IT tidak memiliki skill coding. Bagaimana tidak, banyak sekali tugas dan aktivitas di perkuliahan yang selalu berkaitan dengan coding. Paling tidak, tugas akhir atau skripsi. Bayangkan betapa repotnya jika mahasiswa IT tidak memiliki skill coding atau tidak mengerti coding, sedangkan dia harus membuat aplikasi atau program yang jelas-jelas harus coding.
Yang saya lihat, ada satu kesalahan umum yang sering dilakukan oleh mahasiswa IT yang tidak mengerti coding ketika perkuliahannya, yaitu terlalu lama mencari jati diri. Maksud saya adalah, mereka terlalu lama memikirkan akan fokus mempelajari bahasa pemrograman apa, atau akan menjadi apa nantinya. Mungkin karena terlalu banyak bahasa pemrograman yang diajarkan sehingga bingung harus mulai mempelajari bahasa pemrograman yang mana dulu. Dan kemudian sadar-sadar sudah di semester tua, dan sebentar lagi harus skripsi. Sebenarnya saya juga tidak terlalu ngerti kenapa mahasiswa IT banyak disuguhi bahasa pemrograman di perkuliahan, kenapa tidak fokus 1 saja dulu sebagai dasarnya. Mungkin tujuannya untuk memperkenalkan bahwa ada banyak lho bahasa pemrograman di dunia, tapi akhirnya malah akan membuat mahasiswa bingung harus mulai belajar coding dengan bahasa apa. Tapi saya yakin kurikulum itu sudah dipikirkan matang-matang.Pengambilan peminatan sejak dini (masih semester awal-awal) saya rasa akan berdampak baik. Jangan terlalu lama memikirkan akan mempelajari bahasa pemrograman apa atau akan fokus mempelajari bidang apa. Bukan tidak memikirkan, karena itu juga sangat penting, namun jangan terlalu lama asik memikirkan, mulai sajalah. Mulailah fokus untuk mempelajari bahasa pemrograman apa yang ingin dikuasai nantinya. Kemudian jadikan bahasa pemrograman itu sebagai bahasa pemrograman yang digunakan untuk tugas kuliahmu.
Demikianlah, semoga bermanfaat terutama bagi mahasiswa IT yang masih kebingungan. Segeralah bertaubat, pelajarilah sebuah bahasa pemrograman tertentu, milikilah skill coding. Terlepas dari apakah kamu akan menjadi apa nantinya, jika kamu memiliki skill coding, pasti ada sesuatu yang bisa kamu lakukan, dan yakinlah itu sangat bermanfaat.
Tingkatan atau level seorang programmer bisa dilihat dari skill yang dia miliki dalam menyelesaikan masalah pemrogramannya. Berikut ini, CodePolitan akan membahas tingkatan seorang programmer berdasarkan skill levelnya mengikuti Model Dreyfus. Model Dreyfus adalah model yang digunakan untuk mengelompokan level seseorang berdasarkan bagaimana ia mendapatkan skill kemahirannya melalui instruksi formal ataupun praktis. Pada model ini tingkatan atau skill seseorang dikelompokan menjadi 5, yaitu: Novice, Advance Beginner, Competent, Proficient, dan Expert.
Dalam penerapannya kepada tingkatan seorang programmer berdasarkan skill-nya, maka bisa dijelaskan sebagai berikut:
1. Novice Programmer
Novice adalah tingkatan paling rendah programmer dalam skill-nya. Ini bisa dibilang merupakan level pemula. Yang masuk level ini adalah mereka yang baru mengenal pemrograman, masih bingung tentang pemrograman itu sendiri dan bagaimana cara memulainya.
Programmer yang skill-nya masih ada di level ini biasanya membutuhkan panduan secara mendetail jika mempelajari sesuatu atau mengikuti tutorial. Misalnya cara menulis kode PHP, harus dijelaskan tentang bagaimana menginstal web server terlebih dahulu, kemudian menggunakan code editor apa, dan bagaiamana cara menyimpan kode program. Biasanya pada tingkatan ini, programmer masih sangat kaku terhadap konteks. Dia bisa saja menyelesaikan satu program sederhana dengan mengikuti tutorial, tapi akan kesulitan jika harus memodifikasi program tersebut.
Saya rasa semua programmer pasti pernah berada di level ini, ya karena semua pasti butuh proses. Nggak ada ceritanya seseorang programmer langsung jago coding.
2. Advance Beginner Programmer
Tingkatan selanjutnya adalah Advance Beginner Programmer. Programmer yang berada di level ini sudah memiliki skill yang lebih tinggi dari pada Novice Programmer. Karena sudah lebih banyak belajar, programmer di tingkatan ini biasanya sudah mengerti tentang programming dan apa yang ia lakukan dengan programming itu sendiri. Selain itu, programmer di level ini sudah tidak terlalu kaku dengan konteks lagi, jika dia mempelajari sesuatu, dia bisa memodifikasinya sesuai dengan kebutuhannya. Misalnya dia mempelajari panduan untuk membuat sebuah aplikasi perpustakaan, dia sudah bisa menyesuaikan mana yang dia butuhkan dan mana yang ia tidak dia butuhkan dari panduan tersebut.
Hanya saja, kelemahan dari programmer di level Advance Beginner ini adalah mereka tidak terlalu memahami konsep secara keseluruhan. Ketika mempelajari sebuah framework atau tools, dia hanya mempelajari apa yang dia butuhkan saja, dia tidak mengerti bagaimana framework atau tools itu bekerja. Orientasi utamanya adalah menyelesaikan masalah yang ia hadapai, jika beberapa fungsi saja sudah cukup untuk menyelesaikan masalahnya, maka dia hanya akan tahu tentang fungsi-fungsi tersebut saja. Dia tidak terlalu tertarik untuk memahami big picture bagaimana framework atau tools itu bekerja.
3. Competent Programmer
Level yang lebih tinggi selanjutnya adalah Competent Programmer. Seorang yang berada di tingkatan ini biasanya sudah memiliki pengalaman yang lumayan. Ciri utamanya adalah dia telah mampu melakukan troubleshooting. Ia mampu menyelesaikan masalah yang bahkan belum ia temui sebelumnya dari bekal pengalaman per-codingan-nya selama ini. Dalam belajar, programmer di level ini sudah bisa mandiri dan mengeksplorasi sendiri. Kekuatan utamanya adalah pengalaman.
4. Proficient Programmer
Naik level lagi. Level ini adalah level yang semakin master, yaitu Proficient Programmer. Seorang programmer yang sudah sampai pada tingkatan ini biasanya sudah cenderung melihat sesuatu secara keseluruhan. Tidak lagi hanya mempelajari dan menerapkan satu fungsi saja asalkan masalahnya terselesaikan, tetapi benar-benar ingin mengetahui bagaimana sesuatu itu berjalan.
Karena pengetahuannya yang menyeluruh terhadap sesuatu terkadang dia bahkan mampu memberitahukan dimana letak kesalahan sebuah kode, bahkan tanpa menjalankan kode tersebut.
5. Expert Programmer
Tingkatan paling tinggi seorang programmer dilihat dari skill-nya adalah seorang expert. Dari merekalah muncul karya-karya luar biasa. Mereka tidak hanya mempelajari sebuah konsep secara keseluruhan dari sebuah tools, mereka malahan menciptakan tools. Mereka membuat bahasa pemrograman, mereka membuat library, mereka membuat framework, membuat IDE, mereka membuat konsep-konsep baru yang bermanfaat untuk pemrograman, mereka membuat buku. Dari merekalah kita belajar banyak hal.
Semua level di atas selalu bertahap. Sebelum menjadi seorang expert, pasti mengalami menjadi proficient. Pun demikian sebelum di sampe situ kita juga pasti pernah menjadi seorang pemula (Novice). Memang begitu prosesnya. Tidak ada yang instan. Tapi mudah-mudahan dari apa yang saya sampaikan di atas, kita bisa tahu dimana posisi kita saat ini, apakah kita ada di level Expert, Proficient, Competent, Advance atau baru ada di tingkatan Novice. Jika kita telah tahu posisi kita, maka selanjutnya kita bisa belajar lebih banyak lagi sehingga skill kita terus meningkat. Seandainya di Indonesia semakin banyak Expert Programmer, sepertinya akan menarik 😀
Mari kita belajar kawan-kawan, mari tingkatkan kemampuan kita 😀
Semoga bermanfaat..