Mencari Developer Software

Beberapa waktu yang lalu saya menghadiri acara Bekraf yang diorganisir oleh Dicoding di Bandung. Acara ini mengumpulkan developer software (pengembang aplikasi) di kota Bandung dan diberikan berbagai pengetahuan (seminar, training). Berikut ini adalah contoh foto yang hadir. Banyak! Lebih dari 1000 orang!

DSC_0217_0001

Namun yang menjadi masalah adalah ketika saya mencari developer, ternyata kesulitan. Sebetulnya mereka ada dimana? Ini adalah sebuah paradoks; katanya banyak SDM yang mencari pekerjaan tetapi ada banyak perusahaan yang kesulitan mencari SDM.

Saya mendapat permintaan untuk programmer dan support (untuk berbagai jenis software baik yang sudah kadaluwarsa maupun yang masih baru). Akhir-akhir ini malahan dapat permintaan tiap minggu! Nah, apakah perlu saya tanggapi permintaan-permintaan ini dengan lebih serius? Dahulu kami memang pernah memiliki perusahaan outsourcing seperti yang dimaksudkan, tetapi sekarang para pengembangnya sudah tersebar. (Ada yang pindah ke luar kota, mengambil kuliah di luar negeri, menjadi freelancer, membuat perusahaan sendiri, atau menjadi bagian dari perusahaan kami lainnya.) Nah, perlukah kami membuat kembali perusahaan ini?

Iklan

Potensi Aplikasi Mobile di Indonesia

Banyaknya pengguna handphone di Indonesia merupakan kesempatan untuk mengembangkan aplikasi-aplikasi mobile. Namun jika kita lihat, kesempatan ini belum dimanfaatkan oleh pengembang aplikasi mobile di Indonesia. Coba kita lihat daftar aplikasi yang paling populer.

  1. Daftar aplikasi terpopuler di Indonesia dari Google Playstore
  2. Daftar aplikasi terpopuler di Indonesia dari Apple Store

Dari daftar tersebut dapat kita lihat bahwa aplikasi mobile yang populer kebanyakan (hampir semua malahan) tidak dikembangkan oleh pengembang dari Indonesia. Walah.

Jika kita teliti lebih lanjut, aplikasi-aplikasi yang populer dari pengembang Indonesia biasanya terkait dengan bisnis pemilik aplikasi tersebut. Sebagai contoh, aplikasi Tokopedia merupakan pendukung dari market place Tokopedia. Demikian pula dengan Bukalapak, Go-jek, MyTelkomsel, dan seterusnya. Tidak ada aplikasi yang berdiri sendiri sebagai aplikasi.

Hal yang menarik lainnya adalah pasar aplikasi mobile di luar negeri didominasi oleh Games. Di Indonesia, meskipun sudah banyak yang berusaha, pasar ini malah belum barhasil dikuasai.

Hasil berbincang-bincang dengan berbagai pengembang aplikasi mobile, kebanyakan mereka mengembangkan aplikasi sesuai dengan kebutuhan klien. Misal ada klien yang berupa sebuah perusahaan yang minta dibuatkan aplikasi, maka aplikasinya ya memang khas untuk perusahaan tersebut, bukan untuk umum.

Jadi bagaimana masa depan pengembang aplikasi mobile di Indonesia?

Koding Atau Buat Dokumentasi

Sekian lama saya tidak ngeblog itu ada alasannya. Saya lagi (kebanyakan) koding. Membuat kode program untuk berbagai hal, terutama untuk aplikasi Internet of Things (IoT). Tentu saja ada kegiatan-kegiatan lain yang harus saya lakukan (dan bahkan mungkin juga yang lebih dominan), tetapi kali ini saya ingin menyoroti masalah koding.

Salah satu masalah yang sering dikeluhkan terhadap para koder (programmer) adalah kuranganya dokumentasi dari kode yang mereka buat. Ini betul. Sebagai seorang koder, saya juga sering mengalami dilema. Di satu sisi saya ingin membuat dokumentasi, tetapi di sisi lain saya masih harus meneruskan kodingan. Kalau tadi beres satu bagian, maka masih ada bagian lain yang harus dikodekan. Belum lagi kode bagian sebelumnya juga masih harus dimodifikasi. Akibatnya, waktu malah digunakan untuk membuat kode baru dibandingkan dengan membuat dokumentasi.

Yang menjadi masalah adalah banyak hal yang harus didokumentasikan. Design decisions, misalnya. Mengapa saya melakukannya seperti itu di sebuah kode? Ada alasannya. Kalau tidak didokumentasikan, maka koder selanjutnya akan kesulitan untuk memahami kode yang sudah saya buat. Jangankan koder lain, saya sendiripun kalau sudah lewat sekian bulan maka sudah lupa dengan kode-kode yang saya buat sebelumnya.

Singkatnya mengabaikan dokumentasi itu buruk! Iya semua orang tahu, tetapi tetap saja dilakukan. Sayapun tetap melakukannya. Nah, sebetulnya waktu yang saya gunakan untuk ngeblog ini dapat digunakan untuk membuat dokumentasi. Ini malah ngeblog. ha ha ha. Tapi kalau saya tidak memaksakan ngeblog, pasti ada saja yang lebih “penting”(?). Akibatnya ya blognya jadi kosong.

Dokumentasi harus menunggu. Ngeblog dahulu. Wah.

Masa Depan Industri Mikroelektronika

Menebak masa depan bukanlah hal yang mudah. Orang yang hebatpun sering salah dalam memprediksi. Saya sendiri pernah “beruntung” menebak masa depan beberapa teknologi dengan baik karena kebetulan berada di tempat yang tepat pada waktu yang tepat pula. (I was in the right place and the right time.) Sebuah keberuntungan.

Sebagai contoh, saya mengenal World Wide Web (WWW) sejak pertama kali dibuat oleh Tim Berners-Lee. Kebetulan pada saat itu saya harus bekerja menggunakan NeXT computer. Pada saat yang sama, di Swiss, Tim Berners-Lee juga menggunakan komputer NeXt untuk mengembangkan WWW-nya. Saya sempat katakan bahwa WWW memiliki masa depan yang cerah, tetapi orang-orang tidak percaya karena waktu itu sedang musimnya protokol / aplikasi “Gopher”. Untuk membuktikannya, saya membuat halaman tentang Indonesia yang pertama. (The Indonesian homepage.)

Hal yang sama juga terjadi dengan Linux. Pada masa itu saya membutuhkan sistem operasi UNIX untuk komputer di rumah. Di kampus / kantor saya menggunakan Sun Microsystem untuk pekerjaan dan penelitian saya. Di rumah saya hanya punya komputer berbasis Intel. UNIX yang ada saat itu adalah SCO UNIX yang mahal dan Minix (yang entah kenapa kurang sreg). Ternyata di Finlandia ada seorang mahasiswa yang sedang berusaha membuat sebuah sistem operasi yang mirip UNIX. Saya jadinya ikut ngoprek juga. Ternyata asyik. Saya ngajakin teman-teman buat perusahaan pendukung Linux, tetapi pada sibuk sekolah semua. Akhirnya kami tidang ngapa-ngapain. Muncullah RedHat.

Nah, saya punya perasaan yang sama tentang Internet of Things (IoT) ini. Ini adalah masa depan.

Ketika saya berbicara dengan orang-orang pembuat perangkat keras, manufakturing elektronika dan mikroelektronika, kebanyakan masih mengarah kepada produk SIM card (smartcard). Dapat dipahami karena pasar SIM card di Indonesia saja ada lebih dari 500 juta unit pertahunnya. Sebuah pasar yang sangat besar. Maka akan sangat sulit untuk membujuk mereka untuk berubah haluan.

Kalau kita perhatikan lebih lanjut perangkat IoT ini, tidak ada yang menggunakan SIM card. Komunikasi antar perangkat ini sekarang kebanyakan menggunakan WiFi. Ke depannya apakah akan tetap menggunakan WiFi? atau Bluetooh (BLE)? Zigbee? LoRa? Yang pasti nampaknya bukan yang berbasis seluler. (Halo perusahaan seluler. Siap-siap menurun.)

photo559633135318444158

Komponen utama dari IoT adalah “prosesor” dan “media komunikasi”. Kunci utamanya adalah harus murah. Sangat murah. Mereka tidak harus menggunakan prosesor yang paling hebat (secara komputasi), tetapi yang cukup bagus dan murah. Masalahnya, jumlah yang diproduksi ini skalanya adalah milyaran unit. Beda 10 sen saja sudah beda jauh biayanya.

Jadi prosesor jenis apa? Nah, itu kita belum tahu. Sama-sama mencari tahu. Bahkan perusahaan besar sekalipun, seperti Intel dan IBM, masih mencari-cari. Mari kita perhatikan perkembangannya.

[Hal lain yang terkait dengan software dan data akan kita bicarakan dalam topik terpisah. Kita masih mencari “killer application” untuk IoT sebagaimana adanya Visicalc (spreadsheet) untuk komputer dan SMS untuk handphone. Google-nya IoT?]

IoT Programming

Steve Jobs pernah berkata, “Untuk setiap penggemar hardware, ada 10 orang yang suka ngulik software. Software hobbyists”. Tidak persis benar, tetapi kira-kira begitulah kata-katanya. Itulah sebabnya dia (dan Steve Wozniak) membuat komputer Apple ][. Sebelumnya kalau mau ngoprek software, harus ngoprek kit komputer. Harus tahu hardware. Padahal ada orang yang tidak memiliki latar belakang hardware, tapi ingin ngoprek komputer.

Salah satu kesulitan ngoprek hardware adalah menyambung-nyambungkan komponen. Bahkan untuk sekedar menyambungkan LED juga tidak mudah. Padahal “hello world” di dunia hardware itu adalah blinking LED.

Jika menyambungkan 1 LED saja sudah susah, apalagi menyambungkan 6 LED (atau lebih). Itulah sebabnya jarang yang membuat tutorial untuk menyalakan LED lebih dari 1 buah.

Salah satu solusi yang kami tawarkan adalah  membuat LED board yang cocok dengan board yang umum ada di lapangan. Sebagai contoh, ini adalah tampilan ProcodeCG LED (6 buah LED) yang disambungkan dengan NodeMCU. Bersih kan? Tidak perlu ada kabel-kabel.

p_20170306_092518-nodemcu-procodecg-0001

Sekarang kita dapat membuat kode Knight Rider LED tanpa perlu pusing dengan kabel-kabelnya. Jadi orang yang gemar software tetapi tidak memiliki latar belakang hardware dapat juga ikut ngoprek IoT (Internet of Things).

[Nanti video dan kode untuk menyalakan LED tersebut akan saya unggah ke YouTube. Sekarang akses internet lagi lemot.]

Selamat ngoprek.

Ngoprek IoT

Sudah seminggu ini (atau mungkin lebih?) saya ngoprek Internet of Things (IoT). Apa sih IoT itu? Pada dasarnya ini adalah perangkat keras (hardware) dalam ukuran kecil yang dapat diprogram untuk mengambil data (misal data temperatur) dan meneruskannya ke internet. Teknologi elektronika dan komputer berkembang dengan pesat sehingga perangkat dapat menjadi lebih kecil dan murah. Demikian pula kecepatan akses internet menjadi lebih cepat dan juga lebih murah. Kedua hal inilah yang menyebabkan populernya IoT.

p_20170220_075632-kopi-iot-01
NodeMCU boards

Latar belakang saya memang elektronika, sehingga seharusnya tidak banyak kesulitan dalam ngoprek IoT ini. Kenyataannya ada hal-hal yang sangat spesifik sehingga harus saya oprek dulu sebelum bisa jalan. Tadi malam saya ngoprek sampai jam 2 pagi (eh, 2 malam?). he he he.

Saya memiliki banyak development boards. Begitu ada yang baru, beli atau minta. (Yang terakhir itu yang menarik, minta. he he he.) Terus dioprek. Hasilnya saya masukkan ke YouTube dan kodenya saya simpan di Github supaya dapat dimanfaatkan orang lain. Ayo ngoprek IoT juga.

Mengajarkan Debugging?

Bagaimana ya cara mengajarkan “debugging” (mencari sumber masalah dalam koding, sistem)?

Seringkali kita memberikan tutorial atau tugas tentang satu hal (kode pemrograman misalnya). Kemudian siswa mengikuti tutorial tersebut. Ketika ada masalah, tidak jalan, maka siswa kesulitan mencari sumber masalahnya. Ketika melapor, yang dilaporkan juga tugas tidak jalan. Nah ini membingungkan karena ada banyak hal yang membuat sebuah kode / sistem tidak jalan.

Hal yang sama juga terjadi dalam pengembangan sebuah sistem. Ketika ada masalah maka kita harus mencari sumber masalahnya dan memperbaikinya. Debugging.

Kemampuan debugging ini ternyata tidak dimiliki oleh semua orang. Namun semestinya bisa diajarkan. Bagaimana ya cara mengajarkannya yang baik?

Salah satu ide adalah dengan membuat soal yang memiliki kesalahan, kemudian siswa diminta untuk mencari kesalahan tersebut dan memperbaikinya. Semakin sering melakukan hal ini (mencari kesalahan dan memperbaikinya), mudah-mudahan meningkatkan kemampuan untuk debuggingnya.

Hal lain juga yang perlu diajarkan adalah bagaimana membagi-bagi sistem. Divide and conqueror. Ini bisa jadi topik terpisah.