Makhluk? Iya, bukan cuma manusia. Sayangnya kita ga boleh minta bantuan jin :p
Bukan gitu maksudnya. Di dalam impian gw, mungkin saja sebagian pekerjaan dikerjakan oleh sistem yang sangat pintar. Sekarang sudah ada Case Tools, mungkin someday, cukup satu orang buat bikin software yang sangat advance :) Hmm, bukan cuma mimpi sebenernya.
Beberapa waktu ini, lagi ada kerjaan di Berlian Sistem Informasi. Di sini, project yang dikerjain canggih-canggih, dan buat perusahaan-perusahaan besar. Seru banget ngeliat fitur-fitur, teknologi, dan orang-orang yang ngerjain. Di sini, dokumentasi software development di sisi analisisnya bagus. Selama ngerjain kerjaan di sini gw berfikir tentang pembagian pekerjaan dalam software development (duh sam.. ga bosen sam?).
Menurut kesimpulan gw, ada dua makhluk yang sangat penting. Bahkan, nasib suatu project software ada di tangan mereka. Bukan artinya yang lain tidak penting, tapi dua makhluk ini yang terpenting.
Makhluk pertama bernama
sistem analyst.
Apa yang seharusnya dikerjakan system analyst?System analyst adalah penentu pertama dari gagal atau berhasilnya project software. IMHO, seorang system analyst adalah orang yang melakukan
requirment gathering. Terjemahan sembaranganya, mengumpulkan kebutuhan. Yang sangat penting dipahami adalah kata "kebutuhan". Kebutuhan yang dikumpulkan sebetulnya bukan kebutuhan user akan software. Seorang sistem analyst harus bisa mengumpulkan kebutuhan calon user akan solusi.
Apa bedanya kebutuhan software dengan solusi? Kan solusi yang kita berikan ke calon user adalah solusi kan?
Betul. Begini rincinanya. Seorang analyst, harus mempelajari bagaimana suatu proses bisnis bekerja. Dan kenapa proses bisnis itu bekerja seperti itu. Setelah paham, barulah mereka berfikir, bagaimana caranya proses bisnis itu bisa dioptimasi. Sebetulnya, teknik optimasi ini dipelajari di Teknik Industri, bukan di Computer Science. Lalu sistem analyst berfikir, informasi apa yang dibutuhkan oleh setiap layer manajemen. Permasalahan informasi dari suatu bisnis adalah kebutuhan akan informasi yang cepat, akurat, dan pada waktunya.
Dengan begitu, kebutuhan calon user akan solusi dapat terpenuhi. Karena harus sangat dipahami, mereka implementasi IT itu karena mereka berfikir bahwa IT bisa menjadi solusi dari masalah mereka. Jika tidak, untuk apa? Akhirnya hanya menambah pekerjaan yang merepotkan.
Lebih baik implementasi sistem sederhana yang dapat digunakan untuk mencatat penjualan, lalu menampilkan report-report yang sangat variatif untuk kebutuhan pengambilan keputusan, daripada implementasi ERP dari A sampai Z tapi tidak memenuhi kebutuhan. Lebih baik lagi kalo implementasi ERP dari A sampai Z dan memnuhi kebutuhan :)
Yang perlu dipahami juga, kebutuhan <> keinginan. Seringkali calon user meminta bentuk report yang begini dan begitu. Sebenarnya yang perlu kita pahami adalah, kenapa calon user butuh report itu? Jika kita bisa memahaminya, mungkin kita dapat memberikan solusi yang lebih tepat untuk memenuhi kebutuhan dia. Wajar kan? System analyst ini adalah orang-orang yang berpengalaman dalam mengembangkan sistem informasi :)
Jadi, solusi = software dengan modul-modul yang tepat sasaran.
Inilah tugas system analyst. IMHO, karena tugas seberat ini, lebih baik tanggung jawab technical tidak diberikan kepada system analyst. Biarkan tugas technical diberikan pada makhluk lain.
Makhluk kedua bernama
system designer atau di beberapa tempat disebut dengan senior programmer atau senior engineer. Bahkan di beberapa tempat ada yang namanya system architect yang merancang arsitektur teknologi (bukan cuma softwarenya). Namun di beberapa tempat, system designer ini tidak ada, akhirnya programmer merangkap system designer jg.
Apa yang seharusnya dilakukan system designer?Software yang memenuhi kebutuhan user saja tidak cukup. Statement yang aneh, tapi itu bener. IMHO, software yang dibuat, selain harus memenuhi kebutuhan user, juga harus memenuhi kebutuhan tim development. Lebih aneh lagi statementnya :(
Maksudnya begini, jika suatu produk software dikerjakan, software itu pasti harus dimaintain. Memperbaiki erorr jika ada, menambah fitur jika dibutuhkan, integrasi dengan sistem lain dsb dsb dsb. Software dengan design yang baik, dan source code yang mengikuti standar akan memudahkan tim developer untuk memahami source code software tersebut. Dengan begitu, tahapan maintenance dan pengembangan berikutnya akan lebih baik. Penjelasan ini, berkaitan dengan atribut understandability dan modifiability di posting sebelumnya tentang kualitas software.
Pada saat mendisain software, system designer harus selalu berfikir tentang understandability dan modifiability ini. Hal ini bukan hal mudah. Namun sangat terbantu dengan adanya design pattern yang bisa kita temukan di banyak buku.
Kesimpulan dari tulisan ini, ada dua makhluk penting dalam software development, yang satu mikirin apa yang harus dibuat (system analyst), yang satu mikirin gimana dibuatnya (system designer).
Apakah selain dari mereka berdua penting? Ya sangat penting. Intinya, jika di dalam tim software ada dua makhluk di atas yang berkemampuan tinggi, maka pekerjaan software development kita akan lebih banyak dihiasi senyuman :)
NB:
Duh, bikin sistem informasi mulu, jadinya kalo ngomong software itu maksudnya sistem informasi. Semoga pembaca bisa mengerti. Hehe.