Minggu, 14 Agustus 2011

Software Engineering


Kajian Tentang Profesi Software Engineer


Apa yang dimaksud dengan Profesi?
Profesi adalah suatu bentuk pekerjaan yang mengharuskan pelakunya memiliki pengetahuan tertentu yang diperoleh melalui pendidikan formal dan dan ketrampilan tertentu yang didapat melalui pengalaman kerja pada orang yang terlebih dahulu menguasai ketrampilan tersebut, dan terus memperbaharui ketrampilannya sesuai dengan perkembangan teknologi.
Tidak semua pekerjaan adalah profesi, contohnya pekerjaan staf administrasi tidak masuk dalam golongan profesi karena untuk bekerja sebagai staf administrasi seseorang bisa dari berbagai latar belakang pendidikan, pengetahuan dan pengalaman, sedangkan akuntan merupakan profesi karena seseorang yang bekerja sebagai akuntan haruslah berpendidikan akuntansi dan memiliki pengalaman kerja beberapa tahun di kantor akuntan.
Pada profesi yang melibatkan hajat hidup orang banyak, gelar keprofesionalan tersebut harus didapatkan melalui pengujian oleh organisasi profesional yang diakui secara nasional atau internasional, dan hanya kandidat yang lulus yang berhak menyandang gelar profesi ini dan melakukan pekerjaan untuk profesi ini.  Contoh yang paling jelas adalah profesi dokter (kesehatan manusia) di Indonesia, hanya sarjana kedokteran yang menjadi anggota dari IDI boleh melakukan praktek kedokterannya.

Organisasi keprofesian ini mengatur keanggotaan, membuat kebijakan etika profesi yang harus diikuti oleh semua anggota, memberi sanksi bagi anggota yang melanggar etika profesi, dan membantu anggota untuk dapat terus memperbaharui pengetahuannya sesuai dengan perkembangan teknologi.
Apakah Software Engineer sebuah profesi?
Bila dimasukkan dalam definisi profesi di atas, Software Engineer bisa digolongkan sebagai sebuah profesi.  Deskripsi kerja dari seorang Software Engineer adalah melakukan aktivitas engineering (analisa, rekayasa, spesifikasi, implementasi, dan validasi) untuk menghasilkan produk berupa perangkat lunak yang digunakan untuk memecahkan masalah pada berbagai bidang.
Untuk bisa melaksanakan tugas sebagai Software Engineer seseorang harus memiliki latar belakang pendidikan tertentu yang memberikan bekal untuk melakukan kerja dengan baik dan benar.  Selain itu setelah lulus dari pendidikan, seorang Software Engineer juga dituntut untuk memiliki pengalaman cukup dalam pekerjaan ini melalui keikutsertaannya sebagai pekerja magang dalam proyek.  Software Engineer juga harus terus memperbaharui pengetahuan dan ketrampilannya sesuai dengan perkembangan teknologi komputer yang cepat.
Profesi Software Engineer sejauh ini belum memiliki organisasi profesi.  Organisasi profesi Software Engineer yang mungkin diperlukan adalah tidak diperlukan untuk menyeleksi keanggotaannya, namun yang penting adalah bisa memberikan kualifikasi yang jelas tentang apa Software Engineering itu, siapa Software Engineer itu, dan membantu anggotanya untuk memperbaharui pengetahuan dan ketrampilannya.  Namun belakangan ini pengesahan profesi Software Engineer oleh organisasi profesi mulai dirasakan perlu karena banyak bidang kerja profesi ini yang bersinggungan dengan hajat hidup orang banyak.
Apa karakteristik yang dimiliki Software Engineer sebagai profesi?
  • Kompetensi, yaitu suatu sifat yang selalu menuntut profesional Software Engineer untuk memperdalam dan memperbaharui pengetahuan dan ketrampilannya sesuai dengan tuntutan profesinya.  Seorang Software Engineer tidak boleh berhenti belajar karena dunia software engineering terus berkembang dan berubah dengan cepat.  Profesi Software Engineer tidak melekat seumur hidup, hanya sepanjang seseorang terus mengikuti tuntutan profesinya.  Dan ini sesuai dengan etika profesi yang berlaku umum bahwa hanya profesional yang berkompeten yang berhak melakukan pekerjaan di bidangnya.
  • Tanggung jawab pribadi: yaitu kesadaran untuk membebankan hasil pekerjaannya sebagai tanggung jawab pribadi.  Seorang Software Engineer untuk itu harus mengenal kemampuan dirinya, sehingga bisa mempertanggungjawabkan semua pekerjaan yang dilakukannya secara moral: selalu merekomendasikan apa adanya,  melakukan pekerjaan yang menjadi bidang kompetensinya, dan mendahulukan kepentingan umum.
Mengutip Tanri Abeng, untuk menjadi profesional harus memenuhi 3 syarat yaitu:
  1. Menguasai ilmu secara mendalam dalam bidangnya,
  2. Mampu mengkonversikan ilmu menjadi ketrampilan, dan
  3. Selalu berpikir positif dengan menjunjung tinggi etika dan integritas profesi.
Pendidikan formal apa yang diperlukan seorang Software Engineer?
Kemampuan yang perlu dimiliki seorang Software Engineer supaya dapat melaksanakan tugas dan tanggung jawabnya secara baik dan benar adalah:
  • Metodologi pengembangan perangkat lunak: analisa masalah, perancangan sistem yang ada dan yang akan dibangun, meng-kode-kan disain menjadi perangkat lunak.
  • Mengelola kelompok kerja
  • Mengelola sumber daya: merencanakan, mengadakan, mengawasi, dan mengoptimalkan pemanfaatannya
  • Komunikasi
Untuk itu berarti seorang Software Engineer harus memiliki pendidikan formal tingkat sarjana yang merupakan gabungan dari bidang:
  • Computer science: terutama dalam perangkat keras
  • Engineering: terutama dalam pendekatan/metode analisa pemecahan masalah
  • Industrial engineering: terutama dalam optimasi proses dan sumber daya
  • Management: terutama dalam mengelola manusia dan kelompok kerja, manajemen proyek
  • Social science: terutama dalam pendekatan manusia dan komunikasi
Dari uraian di atas jelas bahwa profesi Software Engineer tidak semata mengandalkan pengetahuan dalam ilmu komputer.
Rekomendasi untuk pengembangan profesi Software Engineer di Indonesia.
Di Indonesia profesi Software Engineer belum terdefinisikan, masih dicampur adukkan dengan profesi lainnya.  Di dalam pengembangan perangkat lunak dikenal 2 aktor yang terlibat yaitu System Analyst dan Programmer.  System Analyst melakukan analisa terhadap masalah dan kebutuhan organisasi dalam mengelola orang, metode, dan teknologi untuk mengatasi masalah tersebut.  Programmer merencanakan keperluan penggunaan perangkat keras dan lunak yang sesuai dengan solusi yang direkomendasikan oleh System Analyst, dan memastikan kebenarannya sesuai dengan spesifikasi.
Tabel perbandingan System Analyst dan Programmer
KriteriaSystem AnalystProgrammer
Dominasi tugasAnalisa dan perancangan sistemPerencanaan dan pengkodean program
Partner KerjaUser, programmerSystem analyst

Bidang kerja Software Engineer meliputi bidang kerja System Analyst dan Programmer  yaitu mencakup semua fase dalam software development life cycle: analisa sistem, analisa kebutuhan perangkat lunak, perancangan sistem, pembuatan dan   perawatan perangkat lunak, ditambah dengan tugas dari manager proyek yaitu perencanaan dan pengelolaan proyek.  Dari definisi ini jelas perbedaan antara ketiga pekerjaan di atas.

Infrastruktur yang perlu dipersiapkan untuk pengembangan profesi Software Engineer di Indonesia adalah:
  • Lembaga   pendidikan tinggi yang mengelola program studi Software Engineering: berarti   perlu dibentuk badan khusus untuk merancang kurikulum program studi ini sesuai   dengan definisi pekerjaan dan kebutuhan industri pemakai profesi ini.    Oleh karena itu perlu dilibatkan para praktisi yang ada untuk memberi   masukan yang pas.
  • Industri   yang mendukung pemakaian profesional Software Engineer: berarti pihak industri   sudah harus bis membedakan antara berbagai profesi yang ada di area   pengembangan perangkat lunak, sehingga bisa diketahui profesi mana yang   sebetulnya dibutuhkan oleh pihak industri sendiri.    Dengan demikian juga berarti bahwa profesi Software Engineer memang   ‘exist’ sebagai profesi, bukan sebagai ciptaan pihak akademisi saja.
  • Organisasi   Profesi Software Engineer yang dikelola oleh para profesional: yang berperan   untuk membantu para Software Engineer membuat definisi profesi, kebijakan   etika profesi, dan sebagai komunitas yang mengkomunikasikan berbagai topik   antar anggota.
  • Tersedianya   materi bacaan atau alat komunikasi yang membantu profesional Software Engineer   memperbaharui pengetahuan dan ketrampilannya.
Keempat   infrastruktur ini pembentukannya harus berjalan secara paralel, karena   pengalaman di satu bagian akan bisa menjadi masukan perbaikan untuk bagian   lainnya

0 komentar:

Poskan Komentar