Profesi di Bidang Teknologi Informasi
Luasnya dunia teknologi informasi, juga tak lepas dari peran
berjuta-juta orang dengan berbagai profesi yang digeluti dalam bidang IT.
Profesi dalam bidang IT sangatlah beragam, mulai dari tester, web designer,
system analyst, dan masih banyak lagi.
Berikut ini merupakan daftar beberapa profesi di bidang IT
beserta deskripsi sederhananya.
1. Programmer/Developer
Profesi programmer/developer adalah profesi yang paling
sering terdengar, karena profesi ini sudah ada sejak diciptakannya komputer itu
sendiri. Profesional dalam bidang software development dan consulting umumnya
pernah meniti karir sebagai seorang programmer. Keahlian dalam algoritma dan
penguasaan terhadap salah satu atau beberapa bahasa memprograman mutlak
diperlukan oleh seorang programmer. Programer adalah profesi inti dan tulang
punggung dalam software development karena tidak akan terwujud sebuah software
aplikasi tanpa adanya programmer, sedangkan tanpa didukung profesi lainnya,
seorang programmer dapat membuat sebuah aplikasi yang berguna walaupun dengan
cakupan terbatas.
Berdasarkan jenis programming dan output yang dihasilkan,
programmer sendiri ada beberapa macam yaitu:
1.1.Hardware Programmer
Hardware programmer sebenarnya adalah bagian dari hardware engineer. Sesuai
namanya, mereka melakukan programming secara low level terhadap hardware,
misalnya mikrokontroler, embeded sistem, PLC atau device lainnya. Pada awal
diciptakannya komputer, programmer jenis ini lebih dominan karena cara
memprogram komputer waktu itu mirip dengan cara memprogram mikrokontroller saat
ini. Bahasa yang digunakan dulunya adalah bahasa mesin tetapi saat ini
cenderung digunakan bahasa assembly dan C.
1.2. System Programmer
Dalam pekerjaannya, system programmer menggunakan low level dan medium level
language. Biasanya mereka dipekerjakan dalam pengembangan sistem operasi dan
modul-modul pendukungnya. Para pengembangan driver untuk periferal dan
programming dalam SIM/UIM card juga digolongkan ke programmer jenis ini.
Perbedaan system programmer dengan hardware programmer adalah: System
programmer bekerja pada tahap pengembangan suatu platform / sistem operasi atau
yang terkait erat dengannya untuk dijadikan sebagai landasan (platform) bagi
pengembangan selanjutnya, sedangkan hardware programmer bekerja pada tahap
implementasi suatu produk agar sesuai dengan requirement end user. Programmer
jenis ini biasa menggunakan bahasa Assembly, C/C++ dan kemungkinan C#
dikemudian hari bila sistem operasi yang menggunakan managed code (.Net)
benar-benar diluncurkan.
1.3. Application Programmer
Bagi yang sering mendengar profesi “Application Developer”, “Software
Developer”, “Web Developer”, “Enterprise Developer” atau “Developer” saja,
profesi-profesi tersebut tergolong sebagai Application programmer. Programmer
jenis inilah yang paling banyak dan populer di dunia kerja terutama di
Indonesia. Hal ini disebabkan karena aplikasi adalah jenis software yang paling
banyak di gunakan.
Perbedaan istilah “application” dengan “software”. Singkatnya, dalam dunia IT,
yang disebut application sudah pasti adalah sebuah software, sedangkan software
belum tentu sebuah application. Software yang bukan termasuk aplikasi contohnya
adalah operating system, device driver, protocol dll. Sedangkan yang dikenal
sebagai aplikasi adalah software seperti office suite, image editor, games,
sistem informasi retail/swalayan, sistem informasi pendidikan, sistem informasi
hotel/retaurant, sistem informasi manajeman gudang, sistem informasi logistik,
ERP (Enterprise Resource Planning), SCM (Suply Chain Managemant), CRM (Customer
Relationship Managemant) , sistem bank, sistem airline dan masih banyak
lainnya.
Dalam pekerjaannya, application programmer menggunakan high level language
seperti Java, C#, Visual Basic (VB), VB.Net, Delphi, PHP dll. Dengan
menggunakan high level language, proses pengembangan akan lebih mudah dan lebih
cepat. Hal ini sesuai dengan tuntutan kebutuhan customer yang terus berkembang
dengan cepat.
Dalam hal cakupan keahlian yang dibutuhkan, secara kasar jenis aplikasi dapat
dibagi menjadi:
Desktop Application (aplikasi yang berwujud Windows Form,
WPF, XWindows atau jenis GUI lainnya yang berjalan di O/S masing-masing)
Web Application (aplikasi yang user interface-nya berwujud HTML
dan diakses dengan web browser, biasa dikembangkan dengan framework PHP,
ASP.Net, Java, Spring, Ruby on Rails dll )
Database Application (aplikasi yang memerlukan akses ke
database menggunakan teknologi seperti ADO.Net, OLEDB, ODBC, JDBC, ORM, Hibernate
dll)
Distributed Application (aplikasi terdistribusi/server
service seperti Web Service, J2EE, WCF, COM+ dll)
Walaupun digolongkan dalam ke empat macam keahlian tersebut,
seringkali seorang application programmer harus memiliki keahlian di beberapa
jenis aplikasi untuk dapat menghasilkan aplikasi yang berguna. Contohnya: Web
programmer harus memiliki kemampuan dalam web application dan database
application untuk dapat mengembangkan aplikasi web yang memerlukan database
sebagai penyimpanan data. Tidak sedikit pula programmer yang memiliki keahlian
di seluruh jenis aplikasi sehingga sering disebut disebut enterprise
application developer.
Programmer/Developer:
Tugas:
Membangun/mengembangkan software terutama pada tahap
construction dengan melakukan coding dengan bahasa pemprograman yang ditentukan
Mengimplementasikan requiremant dan desain proses bisnis ke
komputer dengan menggunakan algoritma /logika dan bahasa pemprograman
Melakukan testing terhadap software bila diperlukan
Keahlian yang Diperlukan:
Menguasai Algoritma dan logika pemprograman (ini penting
sekali)
Memahami metode, best practice dan tool/pemodelan
pemprograman seperti OOP, design pattern, UML (kemampuan membaca dan
menerapkan)
Menguasai salah satu atau beberapa bahasa pemprograman
populer seperti C++, VB, PHP, C#, Java, Ruby dll (untuk web developer perlu
juga menguasai HTML, DHTML, CSS, JavaScript dan AJAX)
Memahami RDBMS dan SQL (Structured Query Language)
Menguasai bahasa Inggris (hal ini sangat penting saat ini
karena bahasa en-US merupakan bahasa ibu di dunia IT)
Latar Belakang:
Ilmu Komputer, Teknik Informatika, Manajemen Informatika, Matematika pemusatan
studi Komputasi
2. System Analyst
Seiring dengan berjalannya waktu dan perkembangan zaman,
kebutuhan aplikasi komputer semakin kompleks. Ada kalanya proses bisnis dan
permasalahan dalam suatu organisasi cukup kompleks untuk dijabarkan secara
langsung ke sebuah software aplikasi. Biasanya para manajer/direksi perusahaan
memahami secara detail mengenai proses bisnis di perusahaannya, misalnya dari
sejak procurement, purchasing, manufacturing, warehousing, marketing,
accounting dll, tetapi mereka biasanya kurang memahami mengenai bagaimana
implementasinya secara teknis dalam software aplikasi. Kemudian seorang
programmer biasanya terlalu berkutat dengan coding, algoritma dan hal-hal yang
technical sehingga kadang mengalami kesulitan dalam memahami proses bisnis
menyeluruh yang umumnya terjadi di organisasi/perusahaan tertentu.
Untuk menjembatani celah ini, maka diperlukan seorang “System Analyst”. Seorang
system analyst di satu sisi diharuskan memiliki keahlian dalam menganalisis
proses bisnis (problem domain) untuk dapat menghasilkan sebuah SRS (software
Requiremant Spesification) dan di sisi lain menguasai aspek technical dan
implementasinya dalam software aplikasi (solution domain) untuk dapat
menghasilkan DDD (Detailed Design Document). Seorang system analyst
biasanya berangkat dari seorang programmer yang sudah mahir dan berpengalaman
dalam software development. Kemampuannya dalam menangkap requirement dan proses
bisnis, ketajaman analisis mengenai celah-celah dalam sistem serta kemampuan
merekomendasikan solusi terbaik secara technical sangat diperlukan dalam
mengembangkan software yang berkualitas dan dapat bermanfaat untuk meningkatkan
kinerja proses bisnis suatu organisasi.
System analyst bekerja pada tahap requirement dan
design, walaupun kadangkala juga diperlukan untuk menyeberang dari tahap requirement
dan design ke tahap construction/implementaion (coding/programming). Tentunya
ini wajar karena biasanya seorang system analyst dahulunya juga seorang
programmer. Tetapi seorang yang benar-benar diposisikan sebagai system analyst,
tugas utamanya adalah membuat requirement dan desain software.
Catatan:
Untuk mengetahui lebih detail mengenai tahap pengembangan software (SDLC) akan
saya jelaskan di artikel lainnya.
Kita sering mendengar istilah Programmer Analyst atau Analyst
Programmer. Kedua profesi ini terdengar mirip, hanya saja dominasi pekerjaannya
yang lebih ditekankan untuk diletakkan di depan istilah tersebut. Programmer
Analyst adalah seorang programmer yang kadang kala bekerja sebagai system
analyst tetapi dengan porsi yang lebih sedikit daripada sebagai programmer.
Begitu pula sebaliknya untuk Analyst Programmer. Saya tidak bisa memastikan
apakah penggunaan istilah itu benar secara bahasa tetapi profesi/posisi semacam
itu memang ada di dunia kerja dan dicantumkan dalam iklan lowongan pekerjaan.
System Analyst:
Tugas:
Membangun/mengembangkan software terutama pada tahap
requirement, design dan sebagian dalam tahap construction/implementation
Membuat dokumen requiremant dan desain software berdasarkan
proses bisnis customer/client
Membuat proposal dan mempresentasikannya di hadapan stake
holder / customer / client
Membuat desain database bila aplikasi yang akan di bangun
memerlukan database
Membangun/mengembangkan
framework/library untuk digunakan dalam pengembangan software oleh programmer
Keahlian yang Diperlukan:
Menguasai hal-hal yang dikuasai programmer
Menguasai metode, best practice pemprograman dan
tool/pemodelan pemprograman seperti OOP, design pattern, UML (kemampuan
membangun/mendesain)
Menguasai SQL, ERD dan RDBMS secara lebih mendalam
Memahami tentang arsitektur aplikasi dan teknologi terkini
Latar Belakang:
Ilmu Komputer, Teknik Informatika, Manajemen Informatika,
Matematika pemusatan studi Komputasi
3. Software Quality Assurance Engineer
Software Quality Assurance (SQA) engineer mungkin agak
jarang terdengar di dunia kerja. Hal ini mungkin karena di Indonesia belum
banyak lowongan kerja yang mencantumkan posisi ini. Bila anda pernah mendengar
posisi “Software Tester”, maka itu termasuk dalam profesi ini. Salah satu tugas
SQA engineer memang melakukan testing terhadap software, tetapi bukan itu saja
sebenarnya pekerjaan profesi ini.
Dalam perusahaan software development yang cukup mapan dan telah menangani
banyak proyek besar, SQA engineer sangat diperlukan terutama untuk menghasilkan
software yang berkualitas. Tugas SQA engineer diantaranya adalah melakukan
“quality assurance” (QA) dan “quality check” (QC) terhadap software.
Pengembangan software harus sesuai dengan prosedur standar yang telah
ditetapkan (QA) dan harus melalui proses testing (QC) yang sesuai. Di sinilah
tugas SQA engineer untuk memonitor proses software development dan memperbaiki
standar yang ada (improve) bila masi memiliki kelemahan.
Dalam software development, terdapat beberapa resiko yang
ditanggung oleh para stake holders. Seperti terjadinya bug/defect, waktu
pengembangan yang semakin panjang, resource yang semakin bertambah ataupun
kendala-kendala lain yang tidak diperkirakan sebelumnya. Tugas SQA engineer
yang persifat preventif adalah dengan meminimalisir resiko-resiko ini.
Untuk menilai kemapanan sebuah perusahaan, terutama yang
bergerak dalam bidang software development, terdapat beberapa standar seperti
CMMI Capability Maturity Model Integration. Singkatnya, makin tinggi level CMMI
sebuah perusahaan, resiko project yang ditanganinya akan semakin kecil. Dengan
begitu perusahaan dengan level CMMI yang tinggi dianggap sudah mapan dan
dipercaya untuk mengerjakan proyek-proyek besar. Salah satu tugas SQA engineer
adalah mengusahakan agar perusahaannya lulus sertifikasi CMMI di level
tertentu.
Software Quality Assurance Engineer:
Tugas:
1. Memonitor jalannya proyek
software development apakah sudah sesuai dengan standar dan prosedur yang ada
2. Merancang dan membuat test
case / skenario software testing
3. Melakukan testing sesuai
dengan test case / scenario
4. Merumuskan dan merancang
peningkatkan efisiensi dan efektifitas standar proses yang digunakan
Keahlian yang Diperlukan:
Menguasai hal-hal yang berhubungan dengan software testing
(test plan, test case, testing automation, functionality testing, regression
testing dll)
Memahami tentang perinsip kerja software sesuai dengan
platformnya masing-masing
Memahami tentang SDLC dan metodologi software development
seperti RUP, Agile, XP, Scrum dll
Memahami standarisasi seperti CMMI
Menguasai penulisan dokumen dan komunikasi verbal dengan
baik (dalam bahasa Inggris dan Indonesia)
Latar Belakang:
Ilmu Komputer, Teknik Informatika, Manajemen Informatika
4. Software Engineer
Profesi software engineer sebenarnya ada kemiripannya dengan
profesi programmer, system analyst ataupun SQA engineer. Yang membedakannya
adalah software engineer memerlukan keahlian lebih mendalam dalam hal SDLC
(Software Development Life Cycle) yaitu seluruh proses yang harus dijalani
dalam pengembangan software. Pada level tertentu, seorang software engineer
juga harus menguasai manajeman proyek software development. Salah satu standar
SDLC yang umum digunakan dalam software engineering adalah SWEBOK
(Software Engineering Body of Knowledge).
Kompleksitas dalam software develompment dari tahun-ketahun semakin kompleks
dan jauh lebih kompleks dibandingkan pada saat awal komputer diciptakan. Untuk
itulah para ahli dalam bidang software engineering menyusun berbagai metodologi
untuk mengoptimalkan software development process agar dapat menghasilkan
produk software yang sesuai dengan tuntutan perkembangan zaman. Keahlian unik
seorang software engineer adalah kemampuannya untuk merekomendasikan dan
menerapkan metodologi software development terbaik dalam sebuah proyek.
Metode-metode software development populer seperti RUP, Agile, Scrum, XP, TDD,
BDD memiliki keunggulan dan kelemahan dan tentunya diperlukan keahlian dan pengalaman
dalam merekomendasikan dan mengimplementasikan metode yang paling cocok dalam
sebuah proyek software development.
Bila programmer dan system analyst ada yang dipekerjakan di
perusahaan-perusahaan yang core business-nya bukan software, software engineer
umumnya dipekerjakan di perusahaan-perusahaan software development. Bila sebuah
perusahaan memerlukan karyawan dengan posisi software engineer, maka
kemungkinan besar perusahaan tersebut memerlukan karyawan yang dapat
ditempatkan secara fleksibel. Misalnya di sebuah proyek, karyawan A dapat
diposisikan sebagai programmer dalam tahap construction, sedangkan dalam proyek
lainnya si A dapat diposisikan sebagai system analyst dalam tahap requirement
dan design. Dapat pula si A diposisikan sebagai software tester, SQA engineer
ataupun di posisi mana saja dalam SDLC.
Kemampuan untuk menguasai seluruh disiplin dalam SDLC tidak membuat software
engineer selalu lebih unggul daripada programmer, system analyst atau SQA
engineer. Pada tingkatan yang sama, misalnya pengalaman kerja 5 tahun, seorang
sistem analyst tentunya lebih ahli dalam menangkap requirement dan bisnis
proses serta membuat proposal. Seorang programmer tentunya lebih menguasai
secara mendalam bahasa pemprograman dan IDE (Integrated Development Environment)
tools serta trik-trik tertentu dalam bahasa pemprograman. Seorang SQA engineer
lebih menguasai software testing dan quality assurance. Diluar hal itu,
semuanya bergantung pada pribadi masing-masing dalam mengembangkan keahliannya
di profesi apapun.
Software Engineer:
Tugas:
Melakukan tugas-tugas programmer, system analyst dan
sebagian tugas SQA engineer
Merekomendasikan dan menerapkan metodologi terbaik dalam
sebuah proyek software development
Keahlian yang Diperlukan:
Menguasai hal-hal yang dikuasai programmer, system analyst
dan SQA engineer (dalam porsi yang lebih sedikit)
Menguasai SDLC berdasarkan SWEBOK (requirement, design,
implementation/construction, testing, maintenance)
Menguasai metodologi software development seperti RUP,
Agile, XP, Scrum dll
Latar Belakang:
Ilmu Komputer, Teknik Informatika, Manajemen Informatika,
Matematika pemusatan studi Komputasi
5. Database Administrator (DBA)
Profesi Database Administrator (DBA) terkait erat
dengan programmer dan system analyst. Seorang DBA biasanya pernah menjadi
seorang programmer tetapi pekerjaannya lebih sering berkaitan dengan database.
Perbedaannya dengan database application programmer adalah seorang DBA memiliki
keahlian lebih mendalam dalam hal desain, optimasi dan manajemen RDBMS
(Relational Database Managemant System) tertentu seperti Oracle, SQL
Server, MySQL dll. Tentunya penguasaan terhadap SQL (Structured Query Language)
mutlak diperlukan. DBA harus memiliki keahlian menterjemahkan requirement
proses bisnis ke obyek-obyek dalam database seperti tabel, query\view dan
stored procedure disamping keahliannya dalam optimasi database seperti tuning,
indexing, clustering, backup data, maintain high availability dan sebagainya.
Salah satu tugas sehari-hari seorang DBA adalah memaintain
database baik produksi, backup maupun development dalam perusahaan yang
membutuhkan aplikasi database berskala besar untuk operasionalnya sehari-hari.
Karena itu selain hal-hal yang berhubungan dengan software, seorang DBA juga perlu
memahami beberapa hal tentang hardware seperti teknologi server, storage
devices dll agar dapat merekomendasikan database yang optimal. Pengetahuan
tentang server clustering, storage array network (SAN), RAID, backup devices
dan optimalisasinya merupakan keahlian unik seorang DBA.
Dengan semakin berkembangnya berbagai teknologi ORM
(object relational mapping), maka di kemudian hari pekerjaan programmer dan DBA
akan semakin dapat dipisahkan. Bila di masa lalu banyak programmer yang
merangkap sebagai DBA, di masa depan bisa jadi programmer semakin jarang
menggunakan SQL karena semuanya sudah ditangani oleh komponen ORM. Di sinilah
perbedaan bidang keahlian seorang DBA menjadi lebih terlihat dibandingkan
dengan seorang programmer.
Dahulu untuk mencari orang yang memiliki keahlian dalam bidang jaringan, server
dan database, Hasilnya orang seperti itu tidak pernah ditemukan, karena itu
sama saja menggabungkan kemampuan System Administrator dengan Database
Administrator. Seorang System Administrator berlatar belakang computer system
& networking Seorang DBA sebenarnya berlatar belakang software development.
Dua hal tersebut bagaikan jalan bercabang yang harus dipilih oleh seorang
profesional IT di awal karirnya.
Database Administrator:
Tugas:
Merancang dan membangun database dalam sebuah system
Merekomendasikan solusi terbaik dalam implementasi database
baik dalam hal software maupun hardware
Memaintain database agar dapat berjalan dengan baik dan
optimal
Keahlian yang Diperlukan:
Menguasai ERD, SQL dan desain database secara mendalam
Menguasai berbagai teknik optimalisasi/tuning, backup dan
maintain database
Menguasai secara mendalam salah satu atau lebih RDBMS
beserta tools yang ada.
Memahami tentang salah satu platform/bahasa pemprograman
untuk mengakses database
Menguasai teknologi server, storage, operating system yang
berkaitan dengan implementasi database
Latar Belakang:
Manajemen Informatika, Teknik Informatika, Ilmu Komputer
6. Software Architect
Software architect atau kadang disebut juga sebagai
Technical Architect biasanya bekerja di perusahaan software development yang
memiliki produk-produk software yang cukup besar dan kompleks. software
architect bertugas untuk mendesain dan merekomendasikan secara technical mengenai
bagaimana dan apa yang diperlukan dalam mengembangkan produk software tersebut.
Profesional di bidang ini biasanya pernah meniti karir sebagai programmer,
software engineer atau system analyst.
Bila system analyst harus memiliki pengetahuan yang
berimbang antara proses bisnis (problem domain) dan software technology
(solution domain), seorang architect dituntut untuk menguasai software
technology secara lebih mendalam. Kemampuannya dalam hal technical sangat
diperlukan dalam proyek-proyek software development berskala besar dan
kompleks, dimana keputusan dalam pemilihan teknologi yang paling tepat dan
penguasaanya sangat menentukan kesuksesan proyek. Keahlian utama seorang
software architect adalah dalam bidang software design dan software development
technology.
Tugas:
Merekomendasikan teknologi yang paling cocok untuk
mengembangkan produk software
Membuat standar-standar software development yang akan
digunakan oleh tim programmer / developer
Membuat rancangan/desain software dan proses pengembangannya
secara keseluruhan
Keahlian yang Diperlukan:
Menguasai hal-hal yang dikuasai programmer, system analyst
dan software engineer
Menguasai secara mendalam tentang software development
technology
Menguasai penulisan dokumen dengan baik (dalam bahasa
Inggris dan Indonesia)
Latar Belakang:
Teknik Informatika, Ilmu Komputer, Manajemen Informatika
0 komentar:
Posting Komentar