Oke akhir pekan yang mendung ini saya mau sedikit ‘curhat’ tentang software development. Mungkin curhatan ini lebih kepada apa yang sekarang saya rasain sih, dari sudut pandang seorang software developer dan mungkin juga kita akan menemui banyak perbedaan persepsi tentang hal ini. Jadi sebelum mulai membaca ini saya mau buat disclaimer dulu, bahwa tulisan ini di dasarkan atas apa yang sekarang ini saya rasakan dan bertujuan agar mudah – mudahan dari pembaca ada yang mau mengambil pelajaran bagaimana pentingnya mengembangkan software dengan kualitas yang baik dari berbagai segi.
Tahapan Analisis & Perancangan Sistem
Kita bersama sudah mengetahui bahwa sebelum proses development software ini dibuat, terlebih dahulu ada tahapan analisis dan perancangan sistem. Pada fase ini pada umumnya seorang Sistem Analis ataupun Bisnis Analis akan menganalisa mengenai kebutuhan – kebutuhan apa saja yang diperlukan user tentang sistem yang akan dibuat nantinya. Saya gak perlu panjang lebar menjelaskan tahapan ini semua, mengenai metodologi yang digunakan, dan sebagainya. Semua teori dan penjelasan itu bisa anda dapatkan di buku – buku yang membahas perancangan sistem informasi.
Yang saya ingin tekankan disini adalah hendaknya perusahaan menyadari bahwa tahapan ini akan menentukan tahapan selanjutnya, jadi kalau analisa dan perancangan sistem nya sudah berantakan akan sulit bagi software developer untuk menghasilkan software dengan kualitas yang baik. Berantakan bagaimana maksudnya ??? Oke kita coba breakdown permasalah ini. Terkadang pada fase pengumpulan requirement, seorang sistem analis atau bisnis analis akan berhadapan dengan klien yang mungkin latar belakang mereka cukup mengenal IT (dan sistem ) atau terkadang juga tidak begitu mengenal IT. Oleh karena itu disinilah fungsi seorang Sistem / Bisnis Analis, dia harus mampu menutupi keterbatasan pengetahuan yang dimiliki oleh klien yang barang kali tidak begitu mengetahui ihwal tentang IT. Terkadang klien hanya menyampaikan “Mas saya mau nya ketika di klik ini akan terjadi seperti ini .. dst … “. Nah disini lah pengetahuan Sistem / Bisnis Analis mutlak diperlukan, untuk menentukan mana saja hal yang mungkin dibuat dan mana saja hal yang tidak mungkin untuk dibuat.
Sulit rasanya menerima kenyataan kalau Sistem Analis dalam sebuah perusahaan software adalah orang yang tidak memiliki pengalaman sebagai software developer. Bagaimana mungkin seorang Sistem Analis melakukan analisa terhadap sebuah proyek bernilai milyaran rupiah, tanpa mereka memiliki pengalaman sebagai pengembang perangkat lunak. Sehingga sering kali requirement yang terdapat dalam SFS (Software Functional Spesification) sering berubah – ubah dan tidak konsisten. Ya .. jawaban nya menurut saya perlu bagi perusahaan di dalam melakukan rekrutmen sebagai Sistem Analis adalah orang – orang yang memiliki pengalaman sebagai Software Developer. Bukan hanya sekedar pintar berbahasa Inggris saja.
Tahapan Pengembangan (Coding)
Setelah tahapan analisis dan perancangan sistem, kemudian adalah tahapan pengembangan sistem. Melakukan Coding adalah tugas utama seorang software developer seperti saya ini. Kita bersama sudah mengetahui bahwa kode program yang simple (tidak semrawut ) akan sangat membantu programmer lain di dalam mengembangkan software ini di kemudian hari. Nah sebenarnya mengenai kode program yang baik ini bisa diasah seiring dengan pengalaman programmer tersebut. Sebaiknya seorang Project Manager bisa melakukan analisa terhadap sebuah proyek, apakah proyek ini bisa dikerjakan oleh programmer yang notabene adalah fresgrad atau hanya yang sudah experience saja yang akan involve di proyek ini.
Programmer freshgrad akan sangat kita perlukan dalam rangka kaderisasi dalam sebuah perusahaan. Sesungguhnya dunia programming itu seperti berenang. Sebanyak apapun buku / teori yang anda baca mengenai renang, kalau anda tidak pernah menyelam ke dalam kolam (mencoba berenang secara langsung), saya rasa sulit rasanya anda dapat berenang dengan baik. Dengan kata lain, sebanyak apapun anda membaca teori pemrograman kalau tidak pernah anda coba sendiri rasanya sulit untuk menjadikan anda sebagai programmer yang handal.
Dan disinilah saya rasa perlu peran dari team leader dalam sebuah pengembangan software, team leader dapat melakukan penilaian terhadap setiap developer nya mana saja developer yang memag berkeinginan untuk maju (selalu ngoprek hal – hal yang mereka belum ketahui). Atau mana saja developer – developer yang seperti gerobak (dia gak mau jalan kalau gak ada yang nyuruh, alias gak punya inisiatif).
Tahapan Testing
Tahapan testing ini dilakukan untuk menguji kualitas sebuah software yang telah dikembangkan oleh developer. Perlu rasanya bagi seorang software tester untuk mengetahui dan memahami bagaimana sebenarnya business flow yang berjalan pada sistem tersebut. Sulit rasanya menerima kenyataan bahwa terkadang kita diberikan tester yang tidak mengetahui business flow dari sistem yang dibuat tersebut. Sehingga mereka tidak mengetahui bagaimana cara mengetes sebuah modul dalam sistem. Ketika mereka melihat tidak ada record, mereka nyatakan ini sebagai bug. Wal hasil terjadilah perang antara developer dengan tester. Yang pada akhirnya developer kembali harus menerangkan bagaimana seharusnya mengetes modul ini.
Sesungguhnya ketika seorang tester merilis sebuah bug untuk developer, itu merupakan sebuah pukulan yang cukup berarti bagi seorang developer. Karena ini sedikit banyak menyangkut kredibilitas developer tersebut. Dan ketika seorang developer menemukan bahwa itu bukan kesalahan dia, melainkan kesalahan prosedur pengujian maka dengan sangat manusiawi developer tersebut akan melakukan protest habis – habisan.
Tetapi juga perlu di ketahui bahwa memang terkadang ada software developer yang bersifat ‘ngeles’. Ketika seorang tester merilis bug untuknya, dan memang nyata – nyata itu adalah kesalahan dia, dia masih mencoba membela diri. Untuk hal yang seperti ini sudah menjadi domain team leader dari developer tersebut. Untuk tester cukup adukan saja developer seperti ini kepada team leader yang bersangkutan.
Penunjang Lain Seperti System Engineer
Terkadang dalam sebuah proyek memerlukan ketersediaan infrastruktur yang memadai misalnya server untuk keperluan testing dan lain lain. Hendaknya ketersediaan infrastruktur ini menjadi tanggung jawab seorang System Engineer, dengan tersedianya server yang lengkap seorang developer hanya tinggal melakukan deploy saja pada server tersebut.
Entah disengaja atau tidak beberapa kali saya bersinggungan dengan hal ini. Tidak nyaman rasanya melihat kondisi ketika anda membutuhkan sebuah server dengan segera, anda hanya disediakan sebuah server kosong. Dimana disitu banyak sekali setup yang anda harus lakukan agar server tersebut ready untuk digunakan. Sebut saja anda harus menginstall Oracle misalnya kalau menggunakan database ini, JDK, dan bahkan pengalaman yang pernah saya alami SVN pun saya harus install sendiri di server itu.
Saya nggak ngerti sebenarnya siapa yang bertanggung jawab atas semua pekerjaan seperti ini, apakah install – menginstall menjadi tanggung jawab developer ? atau sebenarnya ini memang tanggung jawab System Engineer. Disinilah perlu penegasan dari seorang proyek manager tentang hal ini,
Sebagai penutup saya hanya ingin berpesan kepada segenap orang yang terlibat dalam sebuah proyek pengembangan perangkat lunak, bekerjalah dengan penuh tanggung jawab, laksanakan apa yang memang menjadi tanggung jawab anda. Jangan berhenti untuk terus belajar karena sesungguhnya bidang IT sangat cepat sekali berkembang. Berhentilah saling melempar kesalahan, That’s all, have a nice weekend !