Mengapa masih banyak startup TI yang mencari superman?

Beberapa hari yang lalu, saya sempat berdiskusi dengan teman-teman penggiat startup di Yogyakarta, dan satu startup dari Surabaya. Mereka berkumpul dan berdiskusi masalah progress pekerjaan developer-nya yang terkesan lambat, tidak sesuai target waktu yang ditetapkan si pemilik startup.

Lantas, di mana letak kesalahannya?

Keterlambatan deliverable progress pekerjaan dari developer, bukannya hanya mutlak kesalahan si developer itu sendiri, ada beberapa faktor keterlambatan sebuah proyek, di antaranya kurangnya komunikasi antar personil, keterbatasan resource (SDM), dan kehabisan budget. Berikut ini sedikit cerita pengalaman saya di beberapa startup TI

Saya beberapa kali menjadi “penasehat” a.k.a konsultan TI dalam hal resource di beberapa startup. Dan ini ada kasus yang menurut saya menarik diambil hikmahnya, karena ini jadi kasus yang sering terjadi.

Bulan februari 2018 lalu, saya diminta mengevaluasi sebuah startup yang bermasalah dengan programmernya. Sebenernya saya sudah sering diminta jadi konsultan, dari beberapa kasus startup, ya rata-rata semua masalahnya di resource-nya. Bahkan November 2017 ada startup yang targetnya ketat, sementara si developer-nya tunggal fullstack, ya saya bilang ke si empunya Startup, “sebaiknya si developer tunggal ini naik jabatan aja jadi Manajer TI atau Lead Developer-nya, terus rekrut 2 developer junior yang melanjutkan pekerjaanSaya rasa gak mahal, apalagi based-nya di Jogja. Daripada dipaksa seseorang buat selesaikan semua fitur ini dalam waktu singkat, hasilnya gak bagus. Proyek yang dipaksa pada timeline yg tidak wajar dan memangkas tahapan proses jelas mengorbankan kualitas. Daripada aplikasinya buggy, toh nanti repot di akhir”

Ok, lanjut ke cerita saya untuk artikel ini.

Jadi ini startup sudah berkembang, tapi ada masalah di sistemnya yang kurang termanajemen dengan baik. Saya lihat si startup ini malah dapat pendanaan dari beberapa investor. Sayangnya, dana tersebut bukan dimanfaatkan untuk meningkatkan kualitas TI-nya, yang merupakan salah satu komponen penting untuk penunjang sekaligus percepatan core bisnis si startup ini, melainkan si startup memakai dananya untuk ekspansi ke daerah-daerah lain, padahal sistemnya belum sanggup. Begitu dipakai “kok lelet…, kok sistemnya bermasalah”. Dan akhirnya, saya melakukan observasi selama seminggu, saya ajak ngobrol pemilik startup, dari ngobrol ini-itu, saya jadi tau masalahnya di mana.. akhirnya, ada beberapa pertanyaan yang saya ajukan ke pemilik startup ini.

“mas, biasanya me-manage para developer gimana? pakai tools apa atau cuma chat biasa?” | “saya biasanya chat di Whatsapp, mas. Saya tanyain developer saya: progressnya ​halaman report bisa diselesaikan kapan? dia jawab: seminggu lagi, mas. Tapi ya saya tagih seminggu kemudian malah belum jadi, masih ada bug katanya” | “owh, jadi selama ini memantau pekerjaan developer dari Whatsapp aja, mas?” | “kalau misal masnya nanya kerjaan yang dikerjakan tahun lalu, terus pengen dikembangkan lagi gimana… apa nanya lagi terakhir sampe mana?” | “ya biasa, mas..saya tanyain “terakhir fitur tsb sampe mana ya? siapa yang ngerjain?” | “naah, gak ribet tuh misal developernya lagi kerjain fitur yang sekarang, harus tiba2 cek sourcecode yang lama yang ia kerjakan tahun lalu.. karena saya tau, untuk refresh ingatan soal kerjaan tahun lalu, apalagi tidak ada catatannya, ya repot, harus cari-cari dulu” | “owh, iya ya, kayaknya harus dicatat” | “saran saya, chat ya monggo, mas. Tapi jangan lupa ditulis di tools untuk organisir pekerjaan. Banyak contohnya, yang gratis sih ada trello, atau yang berbayar macem basecamp, jira, atau bitbucket” | “owh iya, mas, dulu saya juga pernah dapet saran dari teman disuruh pake trello..saya belum paham maksudnya” | “iya, kalau masnya cuma mengandalkan chat, nanya developer progress dah sampai mana, itu bisa saja developernya ngeles/alasan aja.. sementara buktinya tidak terlihat, kalau bisa ya dicontrol.. jadi pakai source control management, macem github, bitbucket ataupun gitlab. Dari situ kita bisa lihat progress si developer per hari bagaimana, apa saja perubahannya, walaupun masnya gak gitu paham TI, tapi setidaknya bisa dilihat. Dan juga atur waktunya dari tools organisir/manajemen proyek macem trello, jira ataupun basecamp. Saran saya sih untuk startup pakai trello aja dulu, jadi masnya bikin tiket pekerjaannya, tentukan deadlinenya di situ, nanti si developer tinggal melaporkan pekerjaannya dari situ juga, beserta url pekerjaannya dan apa saja yang dikerjakan, dibikin poin-poinnya. Dengan begitu, ketika ada developer yang melanjutkan, misal masnya rekrut developer baru, karena yang lama sudah resign, ya gak panik, tinggal si developer lama lengkapi dokumentasinya di trello tersebut, kalau ada yang kurang, terus ntar developer baru, tinggal baca-baca apa yang sudah dikembangkan, dan mana saja yang masih to-do-list, baik pekerjaan baru ataupun perbaikan error/bugs/masalah” | “wah, sarannya boleh juga, mas, iya tuh, saya denger ada startup yang ditinggalkan developernya, malah bisnisnya jadi tertunda sementara” | “iya, mas, kebanyakan fatalnya di situ. Jadi, biasakan mengontrol pekerjaannya dengan baik. Kalau dirasa masnya sibuk karena mesti ngurus bisnisnya, ya masnya rekrut orang lagi buat jadi CTO ataupun jadi Manajer TI Produk masnya ini. Biar dia yang bermain, mengelola proyek pekerjaan di startup ini” | “siap, mas, requirement manajernya seperti apa ya mas?” | “simpel aja, mas, gak perlu rumit-rumit, yang penting punya pengalaman membuat perencanaan, mampu mengelola, mengatur, dan mengevaluasi pekerjaan-pekerjaan TI di produk masnya ini. Nanti dia yang kontrol kerjaan developer, lebih bagus lagi paham project management dan agile methodology

Kemudian saya meminta izin ke si pemilik startup-startup agar saya bisa berdiskusi dengan teman-teman developer yang bekerja di sana.

Dan akhirnya saya berdiskusi sekaligus bertanya, pertanyaan saya pertama adalah.. “masnya sudah berapa lama di sini?”, dijawab “sudah, setahun, mas Widy”.

kemudian saya lanjut nanya “sendirian mas? apa ada temen yang bantu?” | “kalau saya sendiri mas yang garap backend, tapi kalau aplikasi mobile, saya sama 1 temen lagi yang bantu” | “owh, masnya full stack developer ya?” | “iya, mas” | “mas, saya ini kan diminta mas X (si pemilik startup) buat evaluasi produk yang mas kembangkan.. saya boleh minta tolong gak, dibikin list apa saja pekerjaan to-do-list dari produk ini, dari yang sedang masnya kerjakan sampai yang masih bermasalah yang jadi PR masnya” | “siap, mas..saya buatkan ya” |”iya, simple aja, kasih tau nama fitur>sub fiturnya saja.. gak perlu dikasih deskripsi, biar gk ribet”

Dan didapatlah list-nya dari developer tersebut. Saya akhirnya bertemu lagi dengan si pemilik startup: “mas, ini saya sudah ngobrol dengan developer X. Saya pengen tau, mas.. masnya kasih target ke developer sampai kapan?” | “ya kalo bisa akhir februari ini, mas. Soalnya Maret saya mesti ke Dubai, mau pitching di sana” | “ok, mas.. jadi gini, saya sudah cek fitur-fitur yang di aplikasi maupun yang di backend, dan saya lihat memang banyak sekali masalah/bugs dan kurangnya, apalagi masnya pengen ada report gitu kan..biar tau berapa income per bulan dan laporan keluhan pengguna. Dan ada masalah lain juga, mas, saya lihat desainnya tidak sesuai pattern OS Android dan iOS, mas. Mas, coba buka aplikasi Facebook di Android, ini saya sambil kasih liat yang di iOS, ada bedanya gak?” | “iya, mas, ada bedanya..kok gitu ya?” | “iya, UX (User eXperience) untuk masing-masing OS, baik Android dan iOS itu berbeda..jadi kalau user Android dicobain pake desain layout yang mirip iOS mungkin agak kurang terbiasa” | “tapi ini saya sudah dapat desainer, mas. Desainnya bagus, dia anak magang di sini” | “owh, boleh kasih liat desainnya, mas?” | “ini, mas” (sambil nunjukin kertas berlembar-lembar…ternyata desainnya diprint) | “ok, mas, ini sudah mendingan, cuma harus ada beberapa hal yang dikoreksi. Tapi yang terpenting adalah, ini kalau dilihat dari to-do-list si programmer dengan deadline waktu 2 bulan yang masnya tetapkan, saya sih beranggapan ini tidak akan berjalan sebagaimana mestinya. Problem yang ini (sambil saya nunjukin halaman yang buggy) lumayan juga effort-nya, kalau dia sendirian yang garap, sepertinya akan memakan waktu lama, karena kalau saya lihat existing code dengan yang akan dibuat itu seperti buat baru. Apalagi desain yang diminta untuk perubahan lumayan berbeda, mas. Saran saya, bergegas si developer sekarang biar dia fokus ke bugs fixing, karena dia yang paham existing code. Dan masnya rekrut 2 orang lagi untuk fitur-fitur tambahan yang ditargetkan februari ini, ya jangan dibuat ketat, masnya buat sedikit kelonggaran agar mereka bisa memulai mengelola pekerjaannya masing-masing, apalagi misal nanti datang developer baru, biar mereka bisa berbaur dulu sebagai tim, ya paling masuk akal menurut saya, akhir maret bisa selesai dengan semua list ini. Dan sambil jalan, masnya coba hire manajer yang memahami manajemen proyek TI dan juga seluk-beluk produk ini. Soalnya kan saya tau masnya basic-nya ekonomi, kemarin saya tanya masnya kalau nanya progress ke developer gimana..ya kayak gitu kurang control, mas” | “siap, mas, sarannya bagus, bisa saya coba, nanti saya tanya-tanya lagi ya mas” | “monggo, mas. Santai saja. Semoga berhasil ya”

Dari cerita di atas, hikmah yang dapat dipetik adalah… Mungkin sudah pernah dengar istilah:

9 Women Can’t Make a Baby in a Month

Ya, dimaklumi memang, kebanyakan startup butuh percepatan movement mereka agar bisnisnya dapat segera “menghasilkan”, namun sayangnya memangkas budget untuk resource agar dapat dialihkan ke marketing, dan lain-lain. Kebanyakan kekeliruan startup lokal di sini adalah, mereka belum paham, bahwa 1 orang tidak bisa begitu saja memiliki kemampuan superman, yang mampu menyelesaikan semua pekerjaan TI. Si developer disuruh desain sistemnya, desain databasenya, desain antarmuka penggunanya, terus dilanjut coding mengembangkan backend dan aplikasi frontend-nya, terus dia juga harus bisa benerin bugs dan menanggapi keluhan-keluhan pengguna. Wah, yang seperti ini superman atau mungkin sudah gila. Apalagi bayarannya tidak seberapa, dan ujung-ujungnya si developer jatuh sakit dan tidak betah.

Sama juga misalkan startup Anda banyak uang, kemudian uang tersebut dipakai untuk marketing besar-besaran, melontarkan lebih banyak uang untuk mempercepat adopsi pasar, ya ujung-ujungnya mubadzir. Ya seperti ungkapan di atas, 9 wanita tidak dapat melahirkan dalam waktu 1 bulan.

Standar yang tepat itu adalah “well-organized” dan “well educated“, mesti cerdas dalam mengelola produk anda, berapa besar biaya yang dipakai untuk SDM, berapa besar biaya yang dipakai untuk support, marketing, desain, dll..semua diatur di business plan yang semestinya sudah dibuat sebelum startup dijalankan. Well educated maksudnya, punya pengetahuan terkait startup ini, bagaimana motor penggerak bisnisnya, bagaimana infrastruktur yang dipakai dan SDMnya. Jangan sampai biaya habis di infrastruktur sistemnya, eh ternyata tidak dipakai secara maksimal. Jangan sampai sudah keluar banyak biaya buat marketing, pas pengguna tertarik buat nyoba produknya, eh ternyata produknya gak siap meng-handle banyak pengguna.

Saran saya, ya buat business plan yang matang, bila budget terbatas, mulailah kembangkan dari PoC atau Prototype-nya dulu, kemudian pitching ke investor, buat dapat pendanaan, siapa tau idenya menarik bagi investor. Kalau berani ambil resiko (tentunya punya manajemen resiko yang baik), coba mulai bagi tahapan pengembangan produknya dalam beberapa tahap, jangan semua sekaligus langsung jadi dalam waktu yang ketat. Tetapi dibagi, misal: kembangkan backend+API (web service) dan aplikasi Androidnya saja dulu, jika ada dana lagi, lanjut ke iOS, terus rekrut masing-masing personil sesuai keahliannya, biar mereka fokus dengan pekerjaannya.

Sebagai contoh, idealnya untuk startup kecil, ya bisa dimulai dengan: 1 developer backend, 1 developer frontend (mobile apps: Android/iOS), ini rekrut dengan sistem gaji per bulan (ntah kontrak dalam waktu tertentu, misal satu tahun ataupun permanen), dan cari freelancer desainer UI (antarmuka pengguna) yang direkrut dalam waktu 1-3 bulan untuk menggarap desainnya. Atau kalau mau lebih bagus lagi, ya dibuat lebih spesifik: 2 orang infrastructure dan network engineer, 1 orang manager, 1 orang database designer, 1 orang system designer, 1 orang UI designer, 2 orang backend+API developer, dan 2 orang frontend developer (web admin dan mobile apps).

Tahapannya biasanya, ketika infrastruktur sudah siap (server/hosting, database, dan setup beberapa kebutuhan lainnya sudah berstatus installed untuk lingkungan development), ya backend developer mempersiapkan dan memulai pemrograman backend system dan API-nya, dalam waktu bersamaan…si desainer kerja dalam waktu 1-3 bulan itu men-desain halaman dari halaman login, sampai halaman utama, nah, ketika halaman login sudah jadi, dan dirasa sudah bagus, tinggal si developer frontend yang garap login, dan seterusnya bertahap, (dengan asumsi API Login juga sudah dikerjakan oleh developer backend), jadi pekerjaannya berjalan paralel dan tidak saling tunggu. Dan yang terpenting, kelola pekerjaan mereka dengan tools manajemen proyek yang saya sebutkan di atas (misal: trello/jira), ajarkan mereka agar terbiasa melaporkan pekerjaan di tools online manajemen proyek tersebut. Dengan begitu, masing-masing personil bisa saling cek pekerjaan anggota tim yang lain, sambil menunggu pekerjaan si backend developer selesai, ya developer frontend bisa mulai dari memrogram tampilan halamannya dulu, dan seterusnya. Dan, yang paling utama, yang sering luput dari pelaku startup adalah komunikasi antar anggota tim, biasakan melakukan daily atau weekly call/conferences jika sedang berjauhan, atau daily/weekly meeting jika sedang dalam satu ruangan, atau ya sekedar makan siang atau hangouts bareng biar gak terlalu “tegang” suasana, dan tentunya biar refresh juga. Komunikasi yang baik adalah salah satu kunci penting keberhasilan proyek/startup. Jangan sampai, pemilik startup sibuk uruan ini itu, cuma bisa chat Whatsapp doang, sementara developernya bergerak sendiri, seperti kasus di atas.

Dan sambil pengembangan berlangsung, coba observasi pasar, bagaimana reaksi pengguna dan calon pengguna ketika anda perkenalkan produk anda tersebut, minta masukkan dari mereka jika diperlukan, karena inilah yang disebut “product / market fit”, soal kecocokan pasar, sehingga anda yakin dengan target pengguna anda.

Dan pesan saya terakhir pada artikel ini sebagaimana hadis Nabi Shallallahu alaihi wassalam: “Berikan kepada seorang pekerja upahnya sebelum keringatnya kering.” (HR. Ibnu Majah, shahih).

Sekian sekelumit peristiwa yang semoga bisa bermanfaat bagi pembaca 🙂

Terima kasih.

Referensi terkait tools online manajemen proyek:

 

Advertisements

Proses Pengembangan Aplikasi Android

Banyak dari kita yang dari developer backend ataupun frontend web dan desktop beralih menjadi developer frontend mobile, sebagai pembahasan kali ini adalah menjadi developer Android.

Di sini saya mencoba menulis hal-hal yang patut diperhatikan oleh developer “peralihan” tersebut, agar nantinya lebih matang lagi mendalami dunia mobile application development. Dan juga bagi Anda yang hendak mencari dan bekerjasama dengan developer mobile Android untuk produk Anda ataupun studi kasus/penelitian Anda, agar memahami bagaimana proses pengembangan aplikasi Android dari awal hingga menerbitkannya di PlayStore, bagian mana yang membuatnya menjadi panjang prosesnya, dan tahap apa saja di dalam pengembangan aplikasi mobile Android itu sendiri.

Pembahasan kali ini mencakup tahapan dari proses pengembangan Aplikasi Android yang sedikit berbeda dengan platform lain seperti Web ataupun Desktop.

Berikut ini gambaran singkat mengenai proses pengembangan aplikasi Android dari memulai menemukan ide, perancangan sampai dengan menerbitkannya di Google Play Store.

Picture1

Gambar 1. Proses Manajemen Proyek Pengembangan Aplikasi Android.

Dari gambar di atas, saya coba jabarkan secara singkat satu per satu:

  1. Dimulai dari mendefinisikan ide dan persyaratan aplikasi

Apabila Anda hendak mengembangkan sebuah aplikasi, yang patut anda lakukan pertama kali adalah mendefinisikan ide Anda ke dalam sebuah tulisan, kemudian dari ide tersebut berkembang menjadi sebuah masalah. Dari masalah tersebut, tugas Anda selanjutnya adalah berusaha memecahkan permasalahan menjadi solusi. Di antara tahap mencari solusi di dalam sebuah masalah, tentu ada uraian-uraian proses pemecahan masalah, nah, dari situ kita dapat menentukan kebutuhan apa saja di dalam aplikasi yang hendak dibuat.

Untuk persyaratan (requirements) aplikasi, ada banyak poin di dalamnya, requirement  aplikasi ini sangat penting sebagai dasar untuk mendefinisikan dan mengelola scope  pekerjaan atau scope produk. Untuk mendefinisikan requirements ini ada banyak teknik yang dapat dilakukan, diantaranya:

  • brainstorming ataupun mindmapping
    berdiskusi dengan anggota grup tentang ide produk aplikasi yang hendak dibuat, dan mengupayakan pencarian solusi dari permasalahan yang ada sehingga menjadi ide yang matang dari berbagai anggota grup, di sini masing-masing anggota mencoba mem-breakdown masalah agar nantinya masalah tersebut dapat diselesaikan dengan pendekatan aplikasi.
  • interview
    mewawancarai orang yang ahli dalam bidangnya atau orang yang memiliki informasi yang dapat memberikan masukkan terkait requirement aplikasi yang hendak Anda buat sehingga Anda menjadi tahu detail permasalahan yang dihadapi dari ahli tersebut, dan tentunya berupaya mencapai solusi dengan pendekatan aplikasi,
  • kuesioner
    apabila Anda masih belum yakin apakah ide Anda akan laku di pasaran, langkah yang bisa Anda ambil adalah membuat kuisoner dan menyebarkannya ke target pengguna aplikasi, Anda dapat membuat sejumlah pertanyaan dan ditujukan kepada responden dalam jumlah yang banyak dan bervariasi sehingga didapat akumulasi informasi dengan cepat,
  • observasi
    teknik melihat dan mengamati secara langsung orang-orang dilingkungannya, pekerjaannya dan proses-nya. Observasi dikenal juga dengan nama “job shadowing”.
  • prototype
    Anda dapat membuat prototype aplikasi yang hanya berupa tampilan atau model kerja dari Aplikasi yang hendak dikembangkan. Prototype ini dapat Anda promosikan ke pengguna ataupun penanam modal, yang nantinya diharapkan Anda mendapatkan feedback atau bekal requirement untuk aplikasi yang hendak dibuat.
  1. Wireframing atau protoyping tampilan antarmuka (UI) aplikasi

Untuk dapat mengembangkan aplikasi, Anda harus mempunyai gambaran jelas seperti apa nantinya tampilan antarmuka aplikasi Anda. Dan dari tahap wireframing inilah Anda dapat mengetahui apakah penempatan fitur atau menu ini sudah sesuai layoutnya atau belum, apakah desainnya sudah sesuai pattern OS Android atau belum, apakah tampilannya sudah kelihatan nyaman dipandang atau belum, dan apakah desain yang diterapkan sudah sesuai User Experience atau belum.

Ada banyak tools prototyping yang akan membantu anda mendesign dengan cepat. Diantaranya Adobe Photoshop (Win/Mac), Sketch (Mac), Gravit Design (Win/Mac/Linux), Invision Studio (web), Zeplin.io (web), Figma.com (web), dan app.studio.design (web).

Ketika anda telah membuat wireframing tampilan antarmuka aplikasinya, selanjutnya adalah membuat desain antarmukanya menggunakan tools di atas, agar nantinya ketika Anda telah memasuki masa pengembangan aplikasi, Anda tinggal memindahkan desain tersebut ke layout Android.

Layout Android dikembangkan dengan menggunakan bahasa pemrograman XML, dan ditaruh di dalam folder resource (res) layout Android.

Dan perlu diingat, ponsel dan tablet Android itu memiliki beragam jenis layar dan ukuran, pentingnya menyiapkan desain yang adaptive, yang mendukung beragam jenis layar tersebut (heterokapabilitas). Pembahasan Adaptive Design pernah dibahas di artikel berikut ini.

  1. Pengembangan dan pengujian aplikasi

Pengembangan aplikasi Android secara native dapat menggunakan bahasa Pemrograman Java ataupun Kotlin. Keduanya mempunyai ciri khas masing-masing. Dan keduanya didukung penuh oleh Android SDK. Namun, apabila Anda tertarik mengembangkan aplikasi Android secara hybrid, Anda dapat menggunakan berbagai bahasa pemrograman yang sudah ada, misal dengan javascript nodejs/angularjs (react-native, ionic), menggunakan html5 (phonegap), atau .NET (xamarin/visualstudiocode).

Baik native maupun hybrid memiliki keunggulan dan kelemahan masing-masing. Untuk native sendiri karena sudah didukung penuh oleh Google Android, tentunya semua fasilitas di dalam SDK sudah pasti paling cepat mendapatkan layanan. Sedangkan hybrid, sangat mengandalkan komunitas developernya.

Dan dalam tahap pengembangan aplikasi Android, seorang developer tidak hanya fokus menulis code dalam bahasa pemrograman Java/Kotlin, namun Anda juga harus mampu menulis code untuk resource antarmuka pengguna dalam bahasa pemrograman XML dan juga mampu menguji aplikasi yang Anda buat.

Untuk pengujian Aplikasi, ada banyak tools yang dapat dipakai, salah satunya TestFairy (web), Firebase Reporting (web), ataupun Fabric.io (web). Dan yang terpenting adalah Anda dituntut untuk mampu membaca Log di Logcat Android (DDMS/Android Studio) ketika aplikasi berjalan, dan juga pentingnya skill debugging dan bugs fixing code Android.

Selain itu, pengaturan aplikasi di manifests penting untuk diperhatikan, misalnya, permission apa saja yang Anda cantumkan di manifests yang nantinya diminta kepada pengguna. Sudah sesuaikan permission yang Anda definisikan di manifests, jangan sampai Anda menambahkan permission yang tidak dibutuhkan Aplikasi apalagi yang berbahaya bagi pengguna aplikasi Anda. Dan juga bagaimana pengaturan tema masing-masing halaman aplikasi Anda, semua diatur di manifests ini. Pengaturan lainnya seperti background service dan broadcast (SMS ataupun push notification), penggunaan memory dan jenis ukuran layar yang didukung oleh Aplikasi Anda. Semua itu diatur di manifests file ini.

Dan tidak lupa juga pengaturan build configuration di gradle, apakah Anda telah menggunakan library versi terbaru atau yang stable (minim masalah bugs), dan apakah target OSnya sudah sesuai dengan OS terbaru, dan sebagainya. Itu semua harus dipersiapkan oleh Anda sebagai developer.

Berikut ini rincian bagaimana source code yang telah Anda kerjakan di-“build” menjadi sebuah APK (installer) aplikasi Android.

build-process_2x

Gambar 2. Proses sourcecode yang digodok menjadi sebuah installer (APK)

Semua proses, dari sebuah sourcecode mentah, menjadi sebuah Android Package Kit (APK) alias installer yang nanti digunakan oleh pengguna (user) Anda, dimulai dari proses compiling source code tersebut. Compiler yang digunakan di Android Studio adalah Dalvik. Compiler tersebut mengonversi source code yang Anda kerjakan menjadi file DEX (Dalvik Executable) dan resources yang compiled, yang menyertakan bytecode yang berjalan pada perangkat Android. Dan setelah DEX tersebut dibuat, proses selanjutnya adalah mengubah DEX file dan lainnya tersebut menjadi sebuah APK, dan ini ditandai dengan kunci (Keystore) ntah versi debug ataukah versi release. Dan semua proses itu, dari menentukan kunci mana yang dipakai, menentukan library module dan plugins mana yang akan dipakai, library versi berapa, OS target versi berapa dan sebagainya, semua itu diatur melalui Gradle. Detailnya dapat dibaca dari sini.

  1. Penerbitan aplikasi ke PlayStore

Aplikasi yang telah dikembangkan dan sudah teruji dengan baik, selanjutnya diterbitkan ke PlayStore. Untuk penerbitan ini Google memiliki syarat standar yang harus dipenuhi. Selain membayar biaya sebesar 25 USD untuk seumur hidup, Anda juga harus mempersiapkan APK yang telah memiliki status ditandatangani (signed) dengan kunci keamanan (KeyStore) versi release yang valid milik Anda. Seperti yang Anda lihat di gambar sebelumnya (no.3), source code yang anda kerjakan, akan di-compile dan ditandai dengan Keystore. Nah, untuk lebih detailnya bagaimana proses penandatanganan aplikasi oleh Keystore tersebut, perhatikan gambar berikut.

Picture2

Gambar 3. Proses menandatangani APK yang telah di-build di Android Studio

Saat menggunakan penandatanganan Aplikasi Google Play, jika Anda kehilangan kunci unggahan, atau ada risiko keamanan, Anda bisa menghubungi Google untuk mencabut kunci unggahan lama dan membuat kunci baru. Karena kunci penandatanganan aplikasi dilindungi oleh Google, Anda bisa terus mengunggah versi baru aplikasi sebagai pembaruan ke aplikasi asli, meskipun Anda mengubah kunci unggahan. Namun, daripada Anda repot dengan proses pengembalian kunci yang lama, sebaiknya Keystore yang sudah Anda buat dan pakai untuk penandatanganan APK tersebut jangan sampai hilang (bisa dibackup di google drive ataupun dropbox). Dan jangan lupa Keystore tersebut dilindungi oleh password Anda, jangan sampai lupa yah 😉

Untuk informasi lengkapnya dapat mengunjungi tautan berikut: https://developer.android.com/studio/publish/app-signing.html?hl=id

Selain syarat di atas, Anda juga harus mempersiapkan nama aplikasi, deskripsi yang “menjual” agar orang lain tertarik untuk mencoba aplikasi Anda, screenshots aplikasi, kata kunci, kategori produk, dan kontak yang dapat dihubungi.

Untuk pasca pengembangan ini, Anda dituntut dapat menjadi mitra konsumen/pengguna aplikasi yang telah Anda buat. Mengapa? karena nantinya Anda akan menerima review (baik berupa kritikan, saran, dan hal-hal lain terkait aplikasi Anda) dan rating. Nantinya, review dan rating ini menjadi bahan evaluasi bagi Anda apakah yang perlu diperbaiki dan ditingkatkan dari fitur atau layanan yang ada di Aplikasi Anda. Ini tentunya penting bagi anda yang hendak mengukur apakah aplikasi yang Anda terbitkan ini sukses di pasaran. Jika tidak, mulailah mengevaluasi dari kritikan-kritikan di halaman review aplikasi Anda di Playstore, kemudian coba kontak beberapa pengguna, bagaimana tingkat kepuasan pemakaian aplikasi yang Anda buat.

Dan paling penting, jaga kerahasiaan data dan privasi pengguna Anda, jangan sampai disalahgunakan oleh siapapun. Untuk itulah mengapa di kebanyakan app sekarang diminta mencantumkan menu dan halaman “terms of services” atau “terms and conditions” dan “privacy policies“. Detailnya bisa dibaca di sini.

Semoga materi singkat ini dapat bermanfaat 🙂

5 tahun berlalu

Ada pepatah bijak mengatakan “Jika ingin berubah maka lakukanlah saat ini juga
Ya, saat ini juga, tanpa keraguan dan tanpa takut akan gagal.

Dahulu lulus kuliah hanya mengenal 1 bahasa pemrograman yaitu PHP (PHP: Hypertext Preprocessor), dan tidak banyak yang saya persiapkan, hanya mengikuti arus, bekerja setelah lulus, terima gaji yang waktu itu sangatlah kecil, sekitar 3jt, dan itu tinggal di Jakarta dengan menghabiskan biaya hampir 3 jt per bulan. Tidak mengerti bagaimana mengelola uang, tidak mengerti bagaimana nego gaji, tidak mengerti memilih tempat nge-kost, karena waktu itu kebetulan lulus sendiri, sementara teman seangkatan cuma 3 orang yang lulus, termasuk saya pribadi. Dan di Jakartapun bertemu teman-teman angkatan sebelumnya yang lumayan memandu saya untuk bertahan hidup di Jakarta.

Saya bukan tipe orang yang mudah sekali berteman, mungkin introvert. Dan bahkan selama kuliah saya hanya punya sedikit teman yang akrab, malah di kampus beberapa dijahilin teman seangkatan yang menganggap saya sombong (lambat laun saya menyesalinya). Kesulitan itu makin menjadi ketika banyak masalah pribadi pada waktu itu yang mengharuskan saya dipecat dari kantor karena bolos 3 minggu. Ya, jangan ditanya masalah apa, masalah anak muda hahaha…

Saya tidak akan bahas masalah itu, tapi yang saya coba cerita adalah saya bersyukur sampai hari ini, dengan lika-liku jalan yang sudah dilalui yang jujur saja banyak jalan sulitnya, tapi alhamdulillah bisa saya lakukan.

Alhamdulillah dengan banyak dukungan orang tua, teman, dan sekitar, buat move-on itu tidak sulit. Dahulu teman-teman yang saya cuekin, ternyata ketika saya jatuh, mereka malah memberi banyak dukungan. Pada waktu itu saya benar-benar menangis. Betapa berartinya teman. Dan sampai pada satu ketika saya memutuskan kembali ke Jogja, untuk mencoba memperbaiki semua, mengakrabkan kembali dengan teman-teman angkatan, walaupun agak sulit. Tapi alhamdulillah bisa saya nikmati, mulai dari tahun baru berkesan sampai pagi dengan teman seangkatan kuliah sampai acara-acara nonbar yang bener-bener penuh canda. Dalam hati, mengapa tidak saya lakukan dari dahulu. Tapi malah sibuk dengan kuliah, fokus belajar, menghilangkan segala sesuatu yang saya anggap penghalang dan ternyata semua itu tidak benar.

Saya kira karir saya bakal tamat,  setelah pemecatan itu, sampai menganggur 3 bulan, bingung, dan akhirnya saya coba lamar sana kemari, dan dari puluhan surat lamaran, ada 4 yang memanggil saya interview ke Jakarta.

Dengan biaya masih minta orang tua pada waktu itu untuk tiket pesawat dan uang makan selama perjalanan di Jakarta, rasanya sungguh malu sekali.

Dari 4 itu, ke-empat-empatnya pun menjawab “menerima”, sampai pada akhirnya saya diharuskan memilih, alhamdulillah, saya sempat mengira bakal pupus harapan, akhirnya bisa dijalani. Dari ke-4 itu, ada 3 lowongan sebagai php developer, dan 1 adalah asp.net developer. Apa yang saya pilih? sudah bisa ditebak, saya keluar dari zona nyaman saya. Memilih asp.net developer.

Saya tidak akan bercerita banyak bagaimana saya berani menerima tawaran asp.net padahal tanpa skill dasar asp sama sekali.Akan tetapi yang jelas, saya yakin saya bisa belajar. Ya, motivasi yang kuat. Di sana saya mendapatkan banyak pengalaman mencoba hal-hal baru. Sampai pada satu masa, saya tiba-tiba diangkat manager jadi system analyst yang merangkap jadi senior maintenance developer.
Dan hal gila pun terjadi, ketika bertemu dengan klien pertama kalinya, diterjunkan langsung ke kantor-kantor perbankan (BNI, BCA, BII, BRI, Danamon, Indonesia EximBank..hampir semua perbankan pernah saya datangi dan hinggap langsung bertemu dengan para manager dari berbagai divisi yang berkepentingan), saya selalu didampingi teman yang senior, tidak mengerti apa-apa selain teori yang saya pelajari selama kuliah. Bahkan sering kali melakukan kesalahan yang akhirnya diperbaiki oleh teman senior. Berani mencoba, berani menerima kesalahan dan berusaha memperbaiki. Sampai pada satu masa saya pernah merepotkan, seorang teman senior, yang saya ingat betul namanya, mas Aang (bukan pengendali udara). Mas Aang rela menemani saya di kantor klien sampai malam ketika semua orang sudah pulang dari kantor (yang pada waktu itu bank export import a.k.a. Indonesia Exim Bank). Dari kesulitan dan rasa tidak enak tersebut, ditambah rasa malu, motivasi belajar pun meningkat. Sampai pada satu ketika saya akhirnya memahami bagaimana proses bertemu klien, bagaimana menulis proposal, bagaimana cara nego dengan klien bagaimana cara berkomunikasi dengan klien dan segala hal yang berbau manajemen proyek.

Ya, benar, dari situlah saya akhirnya sekarang berani mengelola proyek, bukan sebagai developer ataupun freelance developer, tetapi menjadi manajer dari berbagai proyek langsung. Siapa yang jadi developer? saya merekrut teman-teman yang sama-sama senang dengan proyekan.

Pada tahun 2011, saya memutuskan untuk resign dari kantor di Jakarta, yang telah memberikan saya banyak teman dan pengalaman sangat-sangat berarti. Bahkan sampai manajer saya kaget, mengapa saya resign, apakah gaji saya kurang layak? ternyata sampai seperti itu yang tidak saya sangka-sangka. Ya saya akhirnya memutuskan untuk lanjut S2 karena pada waktu itu ibu saya ingin saya S2 saja, dan pas kebetulan pada waktu itu cukup biaya. Resign dari situ bukan berarti saya langsung menganggur, tetapi pada waktu itu saya sudah mempersiapkan dengan hati-hati kira-kira di Jogja kerja apa? dan akhirnya saya menerima tawaran teman yang saya kenal dari jejaring sosial Plurk, mas Yo, beliau punya start-up bernama PT. Dipeta, di sana saya memulai kembali menjadi php developer sekaligus android developer! Ya, dari situlah saya memulai menjadi android developer new wanna be.

Studi S2 saya tidak sepenuhnya mulus, saya seperti kurang siap dengan apa yang dihadapi, saya kira studi S2 saya bisa menunjang karir saya seperti yang teman saya ceritakan, ternyata sebaliknya, apa yang dipelajari malah kembali membawa saya dengan materi sistem cerdas dan sejenisnya yang tidak begitu saya sukai. Saya kira, saya bisa memilih kosentrasi di manajemen proyek ataupun Sistem Informasi, ternyata kebijakan kampus mengharuskan voting semua mahasiswa S2 seangkatan memilih kluster dengan suara terbanyak, dan didapatlah “SISTEM CERDAS”.

Sambil kuliah saya bekerja, ngoding ngoding dan ngoding, bikin sistem SMS-gateway, bikin sistem berbasis lokasi dan sejenisnya, dan selama 3 bulan berjalan, hubungan saya dengan atasan saya tidak berjalan mulus sejak kedatangan orang baru. Bahkan saya merasakan sekali perbedaannya ketika atasan saya meminta semua serba cepat, padahal saya memiliki 2 tanggungan di web dan di android yang tidak bisa dikerjakan instant. Dan akhirnya saya putuskan untuk resign.

Apakah saya jadi pengangguran? tidak, selama saya join dengan start-up tersebut, saya sudah terikat kontrak dengan BNI. BNI tertarik merekrut saya karena saya sering datang troubleshooting dan patching modul baru di front-end perbankan mereka ke kantor pusat BNI. Dan dari situ beberapa divisi mulai kenal saya secara pribadi sampai memiliki kontak saya. Pas di Jogja, alhamdulillah direkrut dan saya bekerja sebagai administrator fan-page facebook BNIdan juga developer di beberapa micro-site milik BNI. Bekerja di sana sangat menyenangkan, dengan bayaran 2jt per minggu bukanlah sesuatu yang murah. Dan alhamdulillah sangat mencukupi kebutuhan selama di Jogja.

Dan sambil bekerja di BNI, akhirnya saya memutuskan jadi project hunter. Saya menggunakan teknik self-promotion di facebook dengan cara  “show-off” karya-karya sendiri dan akhirnya dikenal. Dan dari situ tawaran-tawaranpun datang. Dari tawaran-tawaran tersebut, saya mulai praktekan teknik yang saya pelajari selama bekerja di Jakarta. Mulai dari menyiapkan proposal, menyusun kalimat-kalimatnya menjadi sistematik, menyusun rancangan aplikasi, menyusun deliveriables, menyusun gantt-chart timeline pekerjaan, menyusun anggaran proyeksi investasi sampai dengan layanan yang saya persembahkan untuk klien.

Apakah berjalan lancar ? ya sebagian besar, alhamdulillah lancar, sebagian kecil tidak. Berhadapan langsung dengan proyek bukan sesuatu yang mudah, penuh dengan rintangan. Rintangan pertama adalah menghadapi klien. Saya menyadari betul pada akhirnya, setiap klien itu berbeda karakteristiknya, komunikasinya dan cara pandangnya. Ditambah lagi dengan tingginya persaingan.
Awal mulanya, ketika mengajukan proyek, tidak semuanya lancar, bahkan gagal, melakukan kesalahan menyusun jadwal, melakukan kesalahan mengatur anggaran sampai akhirnya merasakan kerugian di diri sendiri.

Ya, merugi, apa yang saya kerjakan ternyata terlalu murah sampai-sampai harus begadang garap proyek padahal hasilnya tidak seberapa, dan pada akhirnya saya belajar dari situ untuk mengkalkulasi dengan pas dari masalah waktu sampai biaya.

Proyek pertama yang saya berhasil adalah dengan klien PDAM, digarap berdua, saya mengelola proyeknya, dan teman sebagai developernya. Harga proyek waktu itupun wah, yaitu 40jt, dan itu kami bagi 2 masing-masing 20jt. Dan dari situlah saya punya tv, gadget dan console sendiri di kost-kostan waktu S2 itu (jangan ditiru foya-foyanya)

Sejalannya waktu, proyekpun datang lagi dari tawaran teman di Departemen Keuangan, tawaran di BNI lagi, tawaran di hotel Pullman Jakarta, PLN Bandung, Humanitarian OpenStreetMap, JTETI-UGM, PLN Medan, Kementerian Agama RI, PLN Medan lagi, dan seterusnya…dan karena itu akhirnya bisa keliling beberapa kota di Indonesia secara gratis sambil menikmati hotel-hotelnya 😀 tawaran yang saya ambil bukan yang kecil, kadang satu proyek bernilai 35jt, kadang 40jt, dan bahkan pernah lebih, apakah tanpa tantangan? besar banget, ya kudu kuat hadapi yang besar, great power, great resposibility, great income too.

Dan bukan juga tanpa hambatan dan tanpa kegagalan, taruhlah dengan pengalaman saya akhir-akhir ini di mana, developer yang saya rekrut melakukan keteledoran dengan jadwal yang ia buat dan akhirnya ia ingkari hingga telat 1 bulan. Dan juga dahulu pernah mengalami demikian sampai-sampai harus menggunakan uang pribadi untuk membayar designer dan developer padahal telatnya ya karena klien minta macem-macem dan ngeyelan padahal sudah dipandu cara buat reporting ke developer jika menemukan bugs. Ya dulu pengalaman dengan salah satu perusahaan di Sukabumi yang benar-benar jadi pelajaran buat saya pribadi sekaligus harus lebih cermat memilih tim dan mengelola proyek, terutama bagaimana menghadapi klien yang jumlah anggotanya banyak dan semuanya ikut campur. Ya kesalahan ada di saya selaku manajer kenapa kurang tegas dan kurang cermat mengelola proyek ini sampai jadi gagal.

Gagal dari 1 proyek itu bukan berarti saya lengah dan menyerah, dari situ saya mulai menerima tawaran dari PusatKajianHadis dapet proyek membuat aplikasi Alquranalhadi di Android. Dan sampai pada akhirnya, alhamdulillah, menjelang saya melamar wanita pujaan hati, saya malah direkrut jadi karyawan tetap di PKH. Pas banget! dengan begitu menghadapi calon mertua jadi agak PeDe (walau masih degdegan) karena waktu itu saya minder dengan status pekerjaan saya yang kurang jelas (apalagi kerjanya dari kost-kostan, gimana mau yakin, ntar dikira pelihara tuyul), alhamdulillah, lamaran diterima dan menikah oktober 2013 kemarin. Dan dikaruniai seorang putri cantik yang sekarang usianya 1 tahun 🙂

PKH memberikan keleluasaan kepada saya, membolehkan saya menyambi proyek asalkan semua pekerjaan di PKH dapat tuntas sesuai jadwal dan terus monitoring setiap aplikasi yang saya kembangkan di PKH agar tetap berjalan sebagaimana mestinya setiap waktu untuk semua pengguna.

Sampai detik ini, alhamdulillah, saya sudah 3 tahun bekerja di PKH dan masih aktif dengan proyek-proyek, bahkan sempat mengajar jadi mentor developer android di beberapa kampus di Jogja (UGM, UMY, UNY, AtmaJaya), dan sempat jadi dosen 1 semester di STMIK A.Yani, dan saat ini terikat kontrak kerja proyek dengan SaleStock dan Samsung (padahal dulu sempat manggil interview jadi developer android, tapi saya tolak), dan alhamdulillah, 2 tahun lebih kami menikah, dan sekarang punya rumah sendiri dan menikmati perjalanan hidup ini bersama istri dan anak tercinta.

Saat saya sudah bekeluarga, saya harus pahami hak dan kewajiban saya sebagai seorang suami dan kepala keluarga, dan diputuskan sampai saat ini saya hanya fokus di pekerjaan PKH dan max. 2 proyek saja. Maka dari itulah saya berhenti dari profesi dosen yang lumayan menyita waktu dan lokasinya cukup jauh dari tempat tinggal. Dan bekerja dari rumah sekaligus menemani istri dan anak, tiap hari conference call via skype dan telpon dengan klien dan tiap hari bertemu laporan-laporan, trello, basecamp dan tiap hari masih ngoding, dan yang terpenting adalah..rasa syukur. Rasa syukur menambah nikmat di sanubari. Makan seadanya, ya bersyukur, makan banyak juga bersyukur, punya rezeki, sedekah sbg rasa syukur, lagi sempit rezeki, tetep bersyukur sambil introspeksi diri.

Perjalanan ini masih berliku, mungkin yang diceritakan seakan hidup ini mudah, padahal banyak rintangannya. Namun, saya slalu yakin, rezeki tidak pernah tertukar, tiap orang punya jalannya masing-masing, yakin Allah akan mencukupi kebutuhan, dan terus berusaha agar orang-orang di sekitar senang dengan keberadaan saya.

Semoga Allah selalu memudahkan jalan ini dan melimpahkan rezeki, kesehatan dan kekuatan untuk kita semua agar dapat mengarungi hidup dan slalu pada jalan yang lurus. aamiin.

 

Masih seputas Manajemen Proyek – Masalah alokasi RBT (resource budget time)

Di dalam project management, ada yg namanya Critical Path Method (CPM), di mana dipakai sebagai alat untuk mengeset aktivitas-aktivitas di dalam proyek agar berjalan efektif.
Kasusnya yang terjadi adalah ketika 1 team vendor terpaksa merombak 1 module, ternyata berdampak “keterpaksaan” merombak module-module lain. 1 module fail, yang lain ikut-ikutan fail.
Masalah ini dapat dicegah, dengan sistem arsitektur yang baik. Untuk itu perlu dilakukan tahap-tahap berikut :

  1. Siapkan RBT (resource+budget+time) yang cukup.
  2. Buat list modules dan aktivitas-aktivitas di dalamnya. Dengan cara mem-breakdown permasalahan/kebutuhan client. Meneliti/menganalisa bobot setiap pekerjaan, terutama module depedency (critical item, depedencies between activities) yang dapat mempengaruhi module-module lain. Dari berbagai pengalaman biasanya mereka membuatnya dalam bentuk “sticky-notes” kecil di kertas kemudian di tempel di papan whiteboard, mereka lihat setiap aktivitas tersebut, kira-kira pas tidak dipasang di timeline dalam waktu x misalnya, jika tidak cocok, tinggal lepas perekat note tersebut, ke timeline yang lain. 🙂
    Namun ada tools yang berguna berbasis web : www.trello.com. Di Project Management Software – redmine juga ada.
  3. Tentukan cricital item dg melihat workflow module. Dan Tentukan bobot/durasi dari setiap aktivitas tsb.
    Setiap workflow module punya work unit. Sebagai contoh : 4 orang dengan 5 hari kerja (@8 jam), maka Work Unitnya = 4 * 5 * 8 = 160 work units.
    So, jika module login butuh 32 work units, utk 2 programmer. Berapa durasi waktu (hari) untuk pengerjaaan modul login tersebut? =>32/8*2 = 2 hari.

Ketika langkah tersebut sudah diambil, tinggal pelaksanaannya, sesuai dengan yang dirumuskan di atas (sudah dalam bentuk timeline dan scope yang jelas). Semua itu dapat berjalan lancar, dengan resource yang memadai, dan tentunya dengan komunikasi yang baik antar team 🙂

Siap Hadapi Dunia Kerja!

Siapa yang bisa menjamin bila kita menguasai sebuah teknologi? atau bila saya coba kecilkan lagi lingkupnya untuk para developer, siapa yang bisa menjamin dengan teknologi yang sudah dipelajari 1-2 tahun dan dikuasai sekarang, akan bisa dipakai 5-10 tahun lagi?
Tidak ada yang bisa menjamin 😀

Bila ada yang berpandangan : “ngapain belajar bahasa pemrograman xyz, belum tentu juga dipakai, mending kamu perdalam masalah manajemen TInya atau non-operasional di dalam devisi TI di sebuah perusahaan, tentu lebih enak kan? gak perlu capek-capek ngoding, gak perlu belajar banyak sampe kerjapun mesti 1-2 hari gak tidur, ngumpulin penyakit

Ada yang ngomong seperti itu? ada! 😀 bahkan terdengar di telinga saya.

Namun bukan sesuatu yang menghambat, karena hidup ini berawal dari niat dan berlangsung pada proses dan berakhir pada hasil. Jadi tergantung bagaimana pribadi ini menanggapi dan menjalankannya.

Ok, dari pertanyaan tersebut, mesti dari para pembaca memiliki pandangan yang berbeda-beda. Dari yang pernah saya alami, ternyata apa yang dipelajari 3 tahun yang lalu tidak begitu terpakai di saat sekarang, justru yang berkembang saat ini adalah “learning by doing”, sambil bekerja ya..itulah yang dipelajari. Mengapa? salahkah kita belajar? jika tau nantinya tidak akan dipakai lama?

Untuk dilema seperti ini, banyak mahasiswa yang mengalami, bahkan mereka yang masih S1 (syukurnya saya sudah melewati masa itu sejak Februari 2009 lulus S1 yang sebelumnya sempat mengalami)

Fakta yang ada sekarang adalah memang teknologi berkembang sangat cepat, bahkan hari ini belum tentu sama dengan hari esok. Kamu menerapkan suatu teknologi dalam sebuah karyamu, belum tentu 1-2 tahun ke depan akan exist.

Perlu diketahui juga, teknologi itu hanyalah alat, yang bertujuan membantu aktivitas manusia.

Teknologi Informasi (TI) banyak minat-study di dalamnya : mulai dari Multimedia, Sistem Informasi, Jaringan Komputer, sampai Kecerdasan Buatan. Minat-study itulah yang menjadi inti dari apa yang mestinya jadi target mahasiswa. “Bidang apa ya yang harus saya perdalam?” ya, sesuai kemampuan dan minat masing-masing 🙂 Jangan ikut-ikutan!

Dan tiap bidang tersebut ada fragment-fragment lagi di dalamnya. Mulai dari hal teknis sampai hal non-teknis. Namun, kan tidak masalah, karena sebelum kita diperkenalkan minat-study tersebut, kita sudah diperkenalkan dan mempelajari pokok-pokok dari teknologi informasi itu sendiri, ya sebut saja mata-kuliah : algoritma dan pemrograman, struktur data, basis data, jaringan komputer, sistem informasi, sistem operasi, rekayasa perangkat lunak dan manajemen proyek.

Jika kita memahami semua hal tersebut, untuk melangkah ke minat-study sesuai keinginan tentu akan mudah. Bahkan dengan adanya teknologi yang baru dan terus berkembang, itu bukan masalah! Teknologi yang ada sekarang itu berkembang bukan dari hal baru loh, tapi dari apa yang ada sebelumnya. Atau perbaikan dari sebelumnya. Atau bisa jadi versi lain dari teknologi yang ada. Mesti ada akarnya. Dan itulah yang kita peroleh dari perkuliahan.

Jika ada yang berpendapat : “ngapain capek-capek kuliah TI, kalo ilmu-ilmunya dapat diperoleh dari buku yang banyak diperjualbelikan di toko buku”

Wah, apa yang ada di buku, itu cuma hal praktis saja 😀 kalo bisa dibilang, sekecil upilpun belum tentu dapet. Hal-hal praktis dan teknisnya saja yang bisa didapat. Tapi secara konsep dan non-teknis sedikit sekali poin-poin yang didapat. Ya, bisa dibilang cm fragment-fragment kecil dari TI itu sendiri.

Bisa kok dipake di dunia kerja, tapi ya susah berkembang, akan stuck di kemudian harinya.

Ada beberapa hal yang bisa dilakukan dari “learning by doing“, seperti berdagang kecil-kecilan misalnya, terus kita sudah paham, baru melebarkan lapak, atau dengan coba-coba seperti kebanyakan mahasiswa S1 yang ditawarin proyek oleh temannya : “udah, mas, coba aja, ntar bisa dipelajari sambil jalan kok, ntar kita bayar 800ribu. Kan lumayan, dapet uang buat jajan dan ilmu” (alibi :P)

Namun kalo kita begitu terus, yang ada kita ketinggalan 😀

Mereka yang kurang paham konsep, hanya melakukan hal operasional dengan belajar yg bersifat praktis dari tutorial (misal : tutorial buku “10 jam menguasai bahasa pemrograman xyz” atau hal lain serupa), itu kalo terus-terusan dipelihara, akan sulit untuk “melangkah maju yang jauh”. Ya, saya sebut “melangkah maju yang jauh”, ketika seseorang yang paham konsep dan teori, kemudian pandai menerapkannya itu bisa melangkah 10 m sekali langkah, akan berbeda dengan mereka yang sedikit atau belum sama sekali paham konsep dan teori, kemudian praktek sesuai apa yang dibuku/artikel yang cuma bisa melangkah 1 m sekali langkah.

Ketika berhubungan dengan mereka yang masih S1 tingkat akhir atau yang baru lulus, mereka belum “matang”, atau maaf, termasuk “prematur”. Ya, kalau dilihat dari pengalaman kerja selama kuliah, ok, mereka punya skill dan portfolio. Sudah bisa mahir di 1 bahasa pemrograman tertentu. Namun, ability-nya tidak dibarengi dengan pemahaman yang matang. Mereka sulit memecahkan masalah, bahkan untuk scope yang lebih besar, mereka tidak siap. Kemampuan pemecahan masalah mereka masih butuh sangat diarahkan, mengingat ketika mereka terjun dalam 1 tanggung jawab di dalam team di perusahaan, masih berantakan, dan susah bergerak bila tidak diarahkan. Bahkan, ada yang sudah diarahkan, stuck tidak bisa melakukan apa-apa. Siapa yang dirugikan? perusahaan. Siapa yang dipermalukan? diri sendiri dan almamater tentunya.

Kasus yang dihadapi dalam perusahaan beragam, kadang simple kadang kompleks. Dan untuk perusahaan vendor-vendor TI, biasanya yang dihadapi untuk client-client besar (apalagi ibukota) adalah kompleks dan mobilitas tinggi (tentunya tingkatan stress juga tinggi).

Jangan pernah berharap ketika kita sudah terjun, kita tidak bisa, kita diizinkan untuk belajar sambil melakukan! 😀 Jangan pernah, karena siap-siaplah posisimu digusur oleh orang lain. “Lah, kan biasanya di perusahaan ada training?” iya, memang, itu suatu ketika kita mengisi sebuah posisi baru dari posisi sebelumnya (promosi jabatan) yang memang dikehendaki.

Perusahaan itu punya target, dan salah satu mencapai targetnya adalah menekan biaya produksi dan juga menekan biaya resource. Mereka tentu mengharapkan tenaga kerja yang profesional dengan biaya yang murah 😀

Pernah saya rasakan “jadi korban” hal itu. Ketika dalam project di salah satu perusahaan asuransi kendaraan terbesar di indonesia, menjadi koordinator anak-anak outsourcer, ternyata malah meleset dari jadwal dan ternyata developernya juga orang yang mengetahui praktis saja tanpa tau konsep yang matang. Akibatnya, ketika saya terjun jadi koordinator, sering rapat non-teknis dan teknis, menghitung ini-itu, dan sambil membimbing mereka (jadilah supermen) untuk belajar Adobe Flash (projectnya didevelop dengan Flash dan db Oracle) Yang ada, semua terhambat oleh masalah developer yang belum siap. Ya, salahnya juga, kebijakan atasan yang “berani” menerjunkan mereka yang belum terbiasa dengan pekerjaan yang butuh keahlian mendalam. Menjadikan perusahaan kurang mempertimbangan “hal terburuk” ini.

Dan kasus-kasus ini sering terjadi di beberapa vendor TI (yang kebetulan ada saya di dalamnya sebagai outsourcer :P), apakah ini dampak buruk dari rate mereka (developer) yang dibayar rendah juga atau memang mereka tidak siap? 🙂

Selama menjabat menjadi business analyst dan sesekali mengkoordinir project, non-teknis di sini begitu diperhatikan, hal-hal teknis yang semestinya tidak ada hambatan, jadi terhambat oleh mereka yang belum siap terjun di dunia kerja. (apalagi sampe ada yang kabur dari perusahaan vendor.. hahaha.. ini yang patut disalahkan ya vendornya, karena kontrak kerja kurang mengikat dan kurang bisa menjaga harmonisasi dengan si pegawai)

Makanya, di dalam sebuah perusahaan biasanya ada masa probation, yaitu masa di mana si calon pegawai atau mereka yang fresh-graduate (0 pengalaman) diuji cobakan sesuai posisi yang akan ditempati dalam sebuah perusahaan, sebelum nantinya diangkat jadi pegawai tetap. Masa percobaan ini biasanya 3-6 bulan lamanya. Ada yang gajinya dibayar full pada masa probation ada juga yang hanya dibayar 50-75% (termasuk tragis :P) Masa probation ini, sekaligus masa orientasi si calon pegawai tetap+baru ini. Dan juga menjadi sarana transfer knowledge dari karyawan yang mau pindah ke calon pegawai dalam suatu jabatan tertentu.

Ada yang bilang : “ya, wajar, namanya juga fresh graduate, belum bisa apa-apa
Wah, kasar nampaknya, saya kurang setuju pendapat tersebut 🙂 menganggap fresh graduate seperti itu. Dan itulah, yang menjadikan rate penghasilan mereka yang fresh-graduate di bawah standar.

Ditambah mahasiswanya-pun belum punya komitmen dan target di dalam dunia kerja dan juga belum berani pasang harga sesuai kemampuan mereka.

Dan untuk kasus jadi supermen, tentunya temen-temen harus perhitungan. Jangan mau gratis! 😀
Ketika sudah jadi BA, tiba-tiba harus ikutan ngoding, ya jangan mau gratis, minta bayaran. Saya lebih suka menyebutnya “side-project” dari perusahaan. Jadi sambil menganalisa permasalah yang diberi client, dapet penghasilan tambahan jadi “programmer mendadak” dalam project tersebut. Bahkan harus menginap di kantor dari pagi sampe keesokan paginya 😀 Hitungannya side-project model begini, biasanya bukan gaji bulanan di perusahaan, tapi bayaran per hari 😀

Dan ketika mencoba kembali ke Jogja, mengambil jenjang S2 dan mendalami hal-hal yang “kurang matang” selama ini dipelajari di bangku kuliah S1, saya dihadapi dengan dilema seperti itu lagi. Dan ketika bertemu mereka, orang-orang baru. Mereka seperti apa yang saya tuliskan di atas. “Belum berani” dan “belum terarah”.

Kurikulum juga sudah benar kok, kalo saya diminta pendapat, apakah kurikulum di perkuliahan kurang tepat? 😀 wah, gak setuju pertanyaan itu, udah benar adanya. Tinggal mendalaminya saja yang kurang fokus. (ntah si mahasiswa ataupun si dosen 😛)

Ada quote menarik dari game JRPG : “As long as we remember focused on our goal, each of victorious will bring us one step closer.”

Fokuslah dengan apa yang akan kamu raih dengan minat-study yang sudah di kuasai. Dari hal non-praktis (dari lingkungan perkuliahan) dan hal praktis (dari pengalaman kecil-kecilan di dunia kerja). Jangan pernah berhenti belajar, cobalah kembangkan kemampuanmu dari segi teknis dan non-teknisnya.

Untuk masalah apa yang mesti dipelajari di masa kuliah, ya pelajarilah apa yang ada di perkuliahan, tanamkan minatmu pada bidang tertentu di TI tersebut, dan coba cari permasalahan, coba kenali lebih dalam setiap fragment dari permasalah tersebut, dan analisalah dengan baik, setelah itu fokuslah pada pemecahan masalah tersebut. Dengan metode tertentu dan alat ataupun teknologi tertentu, coba kelola outputnya apakah sudah sesuai dengan apa yang diharapkan?

Selagi sempat, ayo temen-temen yang masih kuliah, jangan jadi sumber daya yang prematur, yang sudah lulus, namun belum matang dan belum siap menghadapi dunia kerja. Dan bisa berakibat “banting stir” ke profesi lain yang jauh di bawah target yang diinginkan. Dan tentunya kuliahpun jadi percuma.

Semangat! Niat, usaha, dan do’a dengan sungguh-sungguh 🙂

[Tips for Android developer] Failed to copy file to system on AVD?

As Android Developer, if you use the following command like:

adb push [your_file] /system/..

and problem shown : “failed to copy file to /system/…”,

such as:

failed to copy ‘[your_file] ’ to ‘/system/…’: No space left on device
failed to copy ‘[your_file] ’ to ‘/system/…’: Out of memory

to resolve that problem, you can use this method :

Start your Emulator…not using Eclipse IDE or AVD Manager, but use the following command :

$emulator –avd [your_avd_name] –partition-size 128

Then you can try the command “adb push [your_file] /system/…”, and the problem solved. Now you can push your file to the system of android on Emulator 😀