Tuesday, April 29, 2008

Dua Makhluk Penting Dalam Software Project

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.

12 comments:

Akhmad Fathonih said...

Project manager dirangkap SA ya Sam? :D

Isaam Khalid said...

Hehehe, enggak. Masih teringat masa lalu ya, hehe.

Cuma , jika SA-nya memang kompeten, PM akan menjadi lebih mudah pekerjaanya.

Akhmad Fathonih said...

Heheh, relatif sih Sam. Tergantung jobdesc-nya. Klo di tempatku senior PM is a very great SA. Tapi dalam project team, the devel team, we have our own SAs

Anonymous said...

dan mereka tentunya harus bisa berkomunikasi dengan baik!

hehe dari hati ini sepertinya

Anonymous said...

ko langsung ke System Analyst (SA) sih? Bukannya tahap awal itu Business Analyst (BA) dulu? Menurut yang saya tahu, justru yang berat di awal adalah BA, karena tugas BA lah yang harus memikirkan proses secara keseluruhan, kemudian dipilih-pilih yang akan dijadikan software, baru masuk ke SA.
Setauku, kalo di Amerika sana ada perbedaan tugas antara BA dan SA. Dan BA memegang peranan penting di tahap awal.
Tapi, selain itu semua, bukannya PM yang sangat2 penting? Kalo PM nya ga bener, bisa2 tuh software ga jadi2 :D

Itu hasil baca2 beberapa waktu yang lalu ;)

Isaam Khalid said...

@akhmad fathonih

"Klo di tempatku senior PM is a very great SA. Tapi dalam project team, the devel team, we have our own SAs"

Ini suatu nilai tambah mas. Tapi yang penting, yang jadi SA harus jadi very good SA :)

BTW, si PM di sana tidak 100% mengerjakan analisis kan? Dia hanya bantu para SA buat mengerjakan pekerjaanya. Kalo 100% ikutan analisis ngapain ada SA di setiap project maston?

Isaam Khalid said...

@sade

Bisa jelasin perbedaan jobdesc antara Business Analyst dengan System Analyst? Soalnya belum pernah liat tim yang secanggih ini. Ini lebih ideal lagi sebetulnya, jadi orang teknik industri jadi business analyst yang pikirin optimasi bisnis, lalu orang IT yang jadi SA untuk simpulin software yang dibutuhkan seperti apa. Penjelasan di atas BA dan SA masih jadi satu :)

quote:
Setauku, kalo di Amerika sana ada perbedaan tugas antara BA dan SA. Dan BA memegang peranan penting di tahap awal.

Bisa minta artikel tentang ini? Gw akan sangat berterimakasih sekali. Sangat amat sangat pengen baca.

quote:
Tapi, selain itu semua, bukannya PM yang sangat2 penting? Kalo PM nya ga bener, bisa2 tuh software ga jadi2 :D

Betul sekali. Memang berencana mau nulis tentang itu. PM melakukan planning (bikin schedule, strategy, etc), lalu dia organize, lalu pimpin, dan kendalikan keadaan (memereiksa progres dan ambil tindakan penting).

Plan yang bagus, akan berjalan lebih baik ketika tim ini memang orang-orang kompeten. Manajer tidak perlu terlalu pusing mengendalikan jika anggota tim terdiri dari orang-orang yang kompeten.

Sederhananya begini. PM akan cape jika anggota2 timnya harus terus-terusan dikendalikan. PM akan sangat enak, jika anggota2 timnya sudah tau tanggung jawab masing-masing dan paham dampaknya terhadap project.

Ini point of view pribadi sih :) Tidak berdasar teori.

R. Topan Berliana said...

Di tempatku rolenya sebagian besar (dalam konteks business application development):

1. Project Manager, biasanya mantan Technical Leader atau System Analyst. Ngurusin project management, sekali-kali bantu analysis juga, bahkan bugfixing!

2. Technical Leader, semacam leadernya para programmer. Tugasnya ngawasin dan benerin code-code para programmer.

3. Business Analyst, paling 1-2 orang per project. Sesuai namanya, role ini dipegang orang yang tau bisnisnya. Bikin aplikasi finance, ya orang finance, dst. Tugas paling technical ya bikin use case atau detailed requirements. Biasanya kalau projectnya model JAD atau XP, BA ini dipegang orang2 dari client.

4. System Analyst (Software Designer)
Udah jelas tugasnya, biasanya good programmer juga good DB engineer.

5. Developer
Udah jelas. Termasuk DBE, programmer.

6. Software Tester
Ini biasanya nggak fully dedicated ke project (beda divisi). Tugasnya udah jelas, melakukan segala jenis testing.

7. Technical Writer
Bikin dokumentasi, diagramming, bantu-bantu siapapun.

Banyak ya? Hehehe, dalam konteks project gede, semua role ini bisa ada (wong team member bisa sampai >30 orang). Tapi dalam project kecil:

- PM bisa memerankan TL.
- PM juga bisa memerankan sekaligus SA
- BA tetep sendiri (ini gak bisa dicampur2 krn biasanya beda background).
- SA bisa merangkap programmer.
- ST juga tetep harus dedicated.
- TW bisa ditiadakan.

Isaam Khalid said...

@Topan

Terima kasih banyak masukanya mas Topan. Buat temen2 yang laen, Mas Topan ini kerja di Bali Camp.

Ms.saNTi said...

Klo Software Tester jadi BA juga, jadi SA juga, apa namanya??
:D

Isaam Khalid said...

superman san (kasusnya santi, superwoman :D)

Unknown said...

Bet365 casino games - Air Jordan Gaming
Bet365 casino games air jordan 18 retro men outlet – sports betting, live casino, and more. All how to buy air jordan 18 retro yellow suede you how to get air jordan 18 stockx have to do is register air jordan 18 retro men blue online store a new account using jordan 18 white royal blue order your chosen account.