[Tulisan ini dibuat untuk Calon Mahasiswa Informatika, para mahasiswa program studi informatika dan khalayak umum yang ingin mengetahui kompetensi dasar seorang software engineers]
Salah satu kompetensi yang HARUS (atau SEBAIKNYA) dimiliki oleh seorang software engineers adalah kemampuan untuk menyelesaikan masalah. Karakteristik seorang engineers pada hakikatnya adalah seorang PROBLEM SOLVER, dan dalam konteks software engineers, maka kompetensi ini terkait dengan menyelesaikan masalah-masalah yang ada dalam software engineering.
(gambar diambil dari http://usf-web2.wikispaces.com/ )
Untuk menjadi seorang "problem solver" maka, software engineers harus memahami sedikitnya 3 hal:
1. Menguasai TEORI yang RELEVAN; terkait dengan kompetensi ini maka seorang software engineers harus menguasai teori matematika dasar, teori ilmu komputasi dasar dan berbagai teori software engineering lainnya (seperti misalnya teori pengembangan perangkat lunak).
2. Membangun KERANGKA BERPIKIR; terkait dengan kompetensi ini maka seorang software engineers harus dapat membangun kerangka berpikir berdasarkan metodologi penelitian yang presisi. Proses logis yang berurutan, saling-terkait, saling-kausal dengan didukung oleh paradigma keilmuan engineering harus menjadi prinsip kerangka berpikir seorang software engineers.
3. Menguasai DOMAIN MASALAH; terkait dengan kompetensi ini adalah pemahaman komprehensif (atau menyeluruh) dari keilmuan software engineering.
Penjelasan diatas saya kutip (dengan perubahan seperlunya dari seorang dosen saya: DR. Riri Satria yang memberikan "ilmu" pada saya terkait Metodologi Penelitian. Tulisan beliau tentang kompetensi problem solver seorang software engineers, dapat dibaca selengkapnya disini.
Argumentasi yang dikemukakan oleh DR Riri Satria tersebut adalah ketiga kompetensi diatas, diperlukan untuk melakukan PROSES ANALISIS DAN DISAIN, dimana hasil "proses berpikir: analisis dan disain" itu tersebut digunakan untuk MENYELESAIKAN permasalahan yang dihadapi.
Lihat Gambar dibawah ini:
Terkait dengan "core competency" sebagai seorang problem solver maka, dalam keilmuan software engineering, IEEE SWBOK memberikan "saran acuan" kurikulum sebagai berikut:
(a) Definisi Penyelesaian Masalah;
(b) Formulasi Permasalahan;
(c) Analisis Permasalahan;
(d) Mendisain Solusi Penyelesaian Masalah
Menurut pendapat saya, untuk dapat melakukan proses thinking analisis, sintesis dan disain, maka seorang software engineers HARUS memiliki kebiasaan membaca buku. Pengalaman saya dalam mendidik para calon-calon sarjana teknik Informatika adalah mereka tidak bisa melakukan proses analisis, sintesis dan disain, bukan karena tidak mampu, TETAPI lebih dikarenakan mereka tidak cukup memiliki "data/informasi" terkait TEORI dan DOMAIN MASALAH. Menurut hemat saya, membiasakan diri (baca: MENDISIPLINKAN) untuk membaca adalah suatu kegiatan belajar yang MANDATORY untuk dilakukan para software engineers.
Argumentasi yang dikemukakan oleh DR Riri Satria tersebut adalah ketiga kompetensi diatas, diperlukan untuk melakukan PROSES ANALISIS DAN DISAIN, dimana hasil "proses berpikir: analisis dan disain" itu tersebut digunakan untuk MENYELESAIKAN permasalahan yang dihadapi.
Lihat Gambar dibawah ini:
(gambar diatas diambil di http://ririsatria40.wordpress.com/2010/05/01/kuliah-membahas-kasus/ )
(a) Definisi Penyelesaian Masalah;
(b) Formulasi Permasalahan;
(c) Analisis Permasalahan;
(d) Mendisain Solusi Penyelesaian Masalah
Menurut pendapat saya, untuk dapat melakukan proses thinking analisis, sintesis dan disain, maka seorang software engineers HARUS memiliki kebiasaan membaca buku. Pengalaman saya dalam mendidik para calon-calon sarjana teknik Informatika adalah mereka tidak bisa melakukan proses analisis, sintesis dan disain, bukan karena tidak mampu, TETAPI lebih dikarenakan mereka tidak cukup memiliki "data/informasi" terkait TEORI dan DOMAIN MASALAH. Menurut hemat saya, membiasakan diri (baca: MENDISIPLINKAN) untuk membaca adalah suatu kegiatan belajar yang MANDATORY untuk dilakukan para software engineers.