Bidang Computer Hardware, Network dan System Engineering
Pendahuluan
Profesi-profesi dalam dunia IT baru muncul pada beberapa dekade belakangan ini
sejalan dengan berkembangnya komputer. Sampai sekarangpun di negeri kita masih
banyak orang yang belum mengetahui profesi programmer atau ahli jaringan.
Bidang IT adalah bidang pekerjaan yang penuh dengan abstraksi. Apa
yang dihasilkan tidak berbentuk barang tetapi berbentuk suatu jasa yang bisa
meningkatkan produktifitas bidang pekerjaan lain.
Ilmu-ilmu bidang IT muncul dari perpaduan antara matematika dan
teknik elektro, karena banyak hal-hal yang bersifat matematis dan ada juga yang
bersifat elektronika didalamnya. Bagi yang pernah kuliah di jurusan yang
berhubungan dengan IT tentunya banyak berhadapan dengan matakuliah yang
berhubungan dengan matematika, algoritma dan sedikit elektronika. Tetapi
setelah bekerja, hal-hal bersifat logika dan algoritma akan lebih banyak
digunakan. Karena itu dalam semua jurusan komputer, teknik elektro /
telekomunikasi dan matematika, selalu ada matakuliah “Algoritma dan
Pemprograman”
Ada orang yang mengatakan: “Adalah sebuat mitos, seorang yang ahli
dalam pemprograman harus ahli dalam matematika.” Mungkin ini ada benarnya
secara umum, tetapi ada kalanya keahlian dalam matematika terutama Aljabar
Linear memang diperlukan untuk membangun aplikasi tertentu seperti 3D CAD atau
aplikasi grafis lainnya.
untuk menyederhanakannya, menurut saya bidang profesi IT dibagi
menjadi tiga bagian besar yaitu:
1. Computer
Engineering (rekayasa komputer)
2. Computer
System & Networking (sistem dan jaringan computer)
3. Software
Development & Consulting (pengembangan & konsultansi piranti lunak)
Ketiga bidang IT tersebut sengaja saya urutkan dari yang bersifat
“hard” ke yang lebih “soft”.
Setiap profesi di dunia IT memiliki jenjang karir mulai dari fresh
graduate, junior, experienced, senior hingga expert. Saya akan membahas lebih
detail mengenai hal ini dalam tulisan yang berjudul: “Jenjang karir dalam dunia
IT”. Dalam tulisan ini hanya akan dibahas macam-macam jenis profesi di dunia IT
dan ciri-cirinya.
1. Bidang
Computer Engineering
Bidang ini adalah yang paling bersifat konkrit karena tujuan akhirnya adalah
menghasilkan produk yaitu sebuah Komputer atau sebuah peripheral. Computer
engineering berkaitan dengan desain, pengembangan dan testing hardware komputer
/ peripheral dari mulai teknologi semikonduktor, mikroprosesor, circuit,
interfacing hingga pengembangan embedded software dalam sebuah mikrokontroler.
Saya tidak akan banyak bercerita mengenai bidang ini karena banyak
profesi-profesi di luar dunia IT yang terkait ke bidang ini seperti fisika,
fabrikasi semikonduktor, mikroelektronika, elektronika dll.
1.1.
Hardware Engineer
Sebagian besar profesi yang berkaitan dengan computer engineering
tidak banyak terdapat di Indonesia karena tenaga ahli di bidang ini banyak
dipekerjakan di industri mikroprosesor
dan integrated circuit yang
melibatkan proses pabrikasi mikroelektronika
dan desain arsitektur mikroprosesor yang saat ini belum ada di Indonesia.
Kalaupun ada hanya pada proses assembling / perakitan dan bukan desain serta
pengembangannya.
Profesi yang ada di negeri kita umumnya berkaitan dengan rancang
bangun interfacing dan mikrokontroler. Mereka yang mengambil
jurusan teknik komputer selama kuliah dapat menekuni bidang ini. Profesi ini
biasa disebut “hardware engineer”.
Profesi hardware engineer sering kali “overlapping” dengan teknik elektro terutama dengan profesi electronics
engineer dan control automation engineer. Di dunia kerja akan lebih banyak
ditemukan tenaga-tenaga ahli yang berlatar belakang teknik elektro dibandingkan
dengan teknik komputer.
Sebenarnya lingkup kerja masing-masing bidang sudah ditentukan.
hardware engineer yang berlatar belakang teknik komputer tugasnya cenderung
berhubungan dengan desain dan optimasi arsitektur komputer atau mikroprosesor
atau mikrokontroler pada khususnya. Contohnya adalah bagaimana membuat
instruction set yang optimal, berapa jumlah pipeline yang dibutuhkan,
registers, optimasi bus dalam mikroprosesor dll. Bidang teknik elektronika
bertugas merancang divais mikroelektronika (transistor), VLSI, optimasi dalam pabrikasi
semikonduktor, optimasi konektifitas antar komponen dan kehandalan komponen
mikroprosesor atau mikrokontroler yang diproduksi.
Hardware Engineer Tugas:
1. Mendesain
dan membangun interface antara komputer dengan peralatan-peralatan lain
2. Membangun
software yang mengontrol interface (biasanya menggunakan bahasa C)
3. Mendesain
dan membangun solusi menggunakan embedded sistem / mikrokontroler
4. Membangun
software untuk menjalankan mikrokontroler (biasanya menggunakan bahasa
assembly)
5. Testing
hardware.
Keahlian yang diperlukan:
1. Memahami
rangkaian elektronika dan rancang bangun rangkaian digital serta komponennya
2. Meguasai
arsitektur komputer dan cara kerja mikroprosesor / mikrokontroler
3. Meguasai
rancang bangun computer interfacing
4. Memahami
algoritma dan pemprograman
5. Menguasai
bahasa pemprograman Assembly dan atau C/C++
6. Menguasai prinsip
kerja komunikasi data baik secara parallel, serial (COM/USB), Wireles serta
teknik pemprogramannya.
Latar Belakang:
Teknik komputer, Teknik elektro (pemusatan studi komputer)
2. Bidang
Computer System & Networking
Bidang ini berkaitan dengan desain, implementasi dan pemeliharaan infrastruktur
jaringan computer baik LAN maupun WAN, teknologi server hingga optimasi serta
administrasi sistem komputer. Berikut ini adalah profesi-profesi yang
berkaitan:
2.1.
System Support / Technical Support
Dari namanya:
“system support atau technical support”, dapat kita pahami bahwa pekerjaan sehari-harinya
adalah men-support/ maintain/ memelihara sistem komputer berupa hardware atau
software yang sudah berjalan. Para profesional di bidang ini diperlukan untuk
memberikan dukungan teknis terhadap produk berupa software atau hardware yang
telah atau akan diimplementasikan. Selain itu, seorang sistem support/
technical support harus dapat melakukan troubleshooting
bila terjadi gangguan terhadap sistem. Kalau pembaca pernah mendengar profesi “helpdesk engineer”, Profesi tersebut
dapat digolongkan sebagai system support / technical support.
Salah satu hal yang perlu di perhatikan adalah, kadang kala
seorang system support harus bekerja secara shift pagi dan malam untuk me-maintain
sistem yang harus berjalan 24 jam sehari dan 7 hari seminggu.
System Support Memonitor Sistem
Tugas System Support / Technical Support:
1. Memelihara
dan memastikan sistem yang ada berjalan dengan baik
2. Instalasi
sistem baik hardware maupun software
3. Troubleshooting
dan perbaikan system
4. Memberikan
pelatihan ke para pengguna sistem
Keahlian yang Diperlukan:
1. Menguasai
instalasi & setting komputer
2. Memahami
konsep dasar networking dan troubleshooting-nya
3. Memahami
insalasi & troubleshooting hardware / software tertentu (tergantung apa
yang di-support)
Latar Belakang:
Teknik komputer, Teknik elektro (pemusatan studi komputer)
2.2.
Network Engineer
Profesi network engineer adalah salah satu profesi yang cukup diminati karena
salah satu profesi IT dengan panghasilan yang lumayan. Jenjang karir profesi
ini cukup jelas dan umumnya IT management dijabat oleh orang-orang yang
berlatar belakang profesi ini. Profesional di bidang ini umumnya memegang
sertifikat CCNA, CCNP ataupun CCIE. Dengan memegang sertifikat ini, skill mereka dapat diakui secara
internasional dan lebih memudahkan dalam memperoleh pekerjaan di berbagai negera.
Network engineer biasanya dipekerjakan di provider-provider
jaringan atau perusahaan multinasional dan atau yang berskala enterprise. Perusahaan-perusahaan
tersebut membutuhkan interkoneksi data antar cabang di kota-kota yang jauh atau
negara lain. Untuk itu diperlukan interkoneksi jaringan melalui WAN (Wide Area
Network) dan konfigurasi LAN yang sesuai di kantor pusat dan kantor cabang.
Tugas Network Engineer:
1. Mendesain
dan membangun infrastruktur jaringan baik LAN maupun WAN
2. Memberikan
solusi terbaik dalam hal infrastruktur jaringan baik dalam hal peralatan yang
digunakan, efisiensi, reliability, security dan aspek-aspek lain yang terkait
3. Memastikan
suatu infrastruktur jaringan computer dapat berfungsi dengan baik.
Keahlian yang Diperlukan:
1. Menguasai
konsep dasar mengenai jaringan seperti topologi, protokol-protokol komunikasi,
standar-standar networking, media komunikasi data dan keamanan jaringan baik
LAN maupun WAN
2. Menguasai
konsep dan desain infrastruktur jaringan dan troubleshooting-nya
3. Menguasai
desain, instalasi dan terminasi media jaringan seperti kabel tembaga/UTP, fiber
optic, Wireless communication dll
4. Menguasai
setting, pemanfaatan dan troubleshooting perangkat jaringan seperti router,
switch, firewall, proxy, modem dll
5. Memahami
instalasi dan setting PC dan server yang bisa digunakan dalam infrastruktur
jaringan seperti domain controller, proxy, filrewall, mailserver dll
6. Menguasai
secara teknis dan praktis mengenai keamanan jaringan / sistem
Latar Belakang:
Teknik komputer, Teknik elektro (pemusatan studi komputer atau
telekomunikasi)
2.3.
System Engineer / Administrator
Profesi System Engineer / System Administrator adalah profesi yang
mirip dengan network engineer tetapi dituntut memiliki pengetahuan lebih detail
dalam hal desain dan administrasi server-server yang ada di suatu jaringan
internal.
Seseorang dengan posisi ini akan diserahi tanggung jawab untuk
memastikan system (hardware, software dan jaringan komputer) di suatu
perusahaan berjalan desuai harapan dan memegang kunci pasword utama jaringan
internal perusahaan (Administrator). Serifikasi untuk profesi ini contohnya adalah
MCSE untuk
platform Microsoft Windows.
System Engineer di Ruang Server
Tugas System Engineer / Administrator:
1. Mendesain
dan membangun sistem dan jaringan komputer terutama dalam hal teknologi server
dan konektifitasnya baik LAN maupun WAN
2. Memberikan
solusi terbaik dalam hal pemilihan dan teknologi server dan software yang
digunakan dalam hal efisiensi, reliability, security dan aspek-aspek lain yang
terkait
3. Memastikan/memaintain
suatu jaringan internal (baik LAN maupun WAN) dapat berfungsi dengan baik.
Keahlian yang Diperlukan:
1. Memahami
konsep dan desain infrastruktur jaringan dan troubleshooting-nya
2. Mamahami
setting dan instalasi tentang perangkat aktif jaringan seperti router, switch,
hub, firewall dll.
3. Menguasai
secara mendalam salah satu atau beberapa platform / network operating system
untuk membangun suatu domain yang aman dan terintegrasi, contohnya seperti
“Active Directory” untuk platform windows.
4. Menguasai
secara mendalam tentang instalasi, setting dan troubleshooting PC dan server
yang bisa digunakan dalam infrastruktur jaringan seperti domain controller,
proxy, filrewall, mailserver, DNS dll
5. Menguasai
secara teknis dan praktis mengenai keamanan jaringan / system
Latar Belakang:
Teknik komputer, Teknik elektro (pemusatan studi komputer atau
telekomunikasi).
2.4.
IT Specialist
IT Specialist umumnya dipekerjakan di perusahaan-perusahaan yang core bisnisnya
bukan IT. Tugas utamanya adalah merekomendasikan solusi IT terbaik untuk
meningkatkan efisiensi dan performa bisnis perusahaan baik dalam hal hardware,
jaringan maupun software. Kalau anda merasa pekerjaan ini mirip konsultan IT,
memang benar, IT specialist bekerja sebagai konsultan IT tetapi lebih cenderung
kearah hardware dan jaringan, walaupun pengetahuan tentang software aplikasi
server seperti operating system, mail server, proxy, anti virus server,
firewall, enterprise portal dll sangat diperlukan dalam mendukung
tugas-tugasnya.
Seorang IT specialist harus menguasi bidang IT secara luas baik
networking maupun software hingga implementasinya yang “masuk akal”, karena
perusahaan yang belum pernah menerapkan IT secara terintegrasi kadangkala perlu
mengadakan beberapa perubahan dalam manajemennya.
Untuk mengurangi perubahan dan sistem dapat bermanfaat secara
optimal, seorang IT specialist harus memberikan solusi yang benar-benar dapat
diterapkan dan ada gunanya serta dapat dikembangkan lebih lanjut untuk
mengikuti perkembangan zaman.
Tugas IT Specialist:
1. Mendesain
dan membangun sistem komputerisasi terutama dalam hal implementasi software, hardware
dan jaringan.
2. Memberikan
solusi terbaik dalam hal pemilihan dan implementasi teknologi baik hardware
maupun software.
Keahlian yang Diperlukan:
1. Memahami
konsep dan desain infrastruktur jaringan dan troubleshooting-nya
2. Menguasai
network operating system dan aplikasi-aplikasi yang dapat diimplementasikan
dalam organisasi.
3. Memiliki
pengetahuan yang luas mengenai software, hardware dan jaringan komputer.
4. Menguasai
secara teknis dan praktis mengenai keamanan jaringan / system
Latar Belakang:
Teknik komputer, Teknik elektro (pemusatan studi komputer atau
telekomunikasi), Manajemen Informatika
Jika diperhatikan benar-benar, ada suatu ciri yang umum dalam
profesi bidang “Computer System & Networking”, yaitu mengenai skill dalam
pemprograman. Memang keahlian memprogram ini tidak diperlukan secara langsung
dalam tugas-tugas rutin seorang network engineer atau sysadmin, tetapi ada
beberapa hal yang sifatnya mirip dengan pemprograman seperti setting router,
server / client script, batch file dan konfigurasi lainnya. Tetapi bila seorang
Sysadmin memiliki kemampuan programming, tentunya ini akan menjadi nilai tambah
dalam pekerjaannya. Banyak orang-orang yang dahulunya bekerja di bidang
networking memiliki kemampuan programming yang cukup mumpuni hingga mampu mengarang
buku tentang software development dengan bahasa pemprograman tertentu.
Bidang Software Development dan Consulting
Software development adalah bidang yang paling abstrak di dunia
IT. Output yang dihasilkan hanya dapat dirasakan oleh user berupa informasi
yang dapat mengoptimalkan berbagai macam pekerjaan.
Apapun jenis software yang dibangun, para pekerja di bidang ini
dituntut memiliki logika dan ingatan yang kuat. Kemampuan untuk melihat suatu
hal secara garis besar, menyeluruh dan juga secara detail hingga sekecil-kecilnya.
Selain itu yang paling penting untuk sukses di bidang ini adalah ketekunan
untuk belajar dan terus mengembangkan kemampuannya, karena bidang ini secara
tetap akan terus berubah (constantly
changing) dan berkembang seiring dengan perubahan zaman.
Dalam waktu 5 tahun, keahlian di salah satu teknologi tertentu
dapat dianggap ketinggalan zaman (obsolete). Contohnya VB6 yang sangat populer
di tahun 1998 support-nya sudah dihentikan di tahun 2008. Berarti aplikasi yang
ditulis menggunakan teknologi ini tidak dijamin kompatibilitasnya dengan sistem
operasi yang di-release setelah tahun 2008. Mau tidak mau sebagian besar
programmer VB6 harus migrasi ke VB.Net dan “patuh” dengan aturan-aturan .Net
Framework
Berikut ini akan dibahas satu-persatu profesi-profesi di bidang
software development / consulting.
1. Programmer/Developer
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
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
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.
Mungkin anda pernah berpikir, apa 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. 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)
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 menggunakan database sebagai penyimpanan data.
Tugas Programmer/Developer:
1. Membangun/mengembangkan
software terutama pada tahap construction dengan melakukan coding dengan bahasa
pemprograman yang ditentukan
2. Mengimplementasikan
requiremant dan desain proses bisnis ke komputer dengan menggunakan algoritma
/logika dan bahasa pemprograman
3. Melakukan
testing terhadap software bila diperlukan
Keahlian yang Diperlukan:
1. Menguasai
Algoritma dan logika pemprograman (ini penting sekali)
2. Memahami
metode, best practice dan tool/pemodelan pemprograman seperti OOP, design pattern,
UML (kemampuan membaca dan menerapkan)
3. 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)
4. Memahami
RDBMS dan SQL (Structured Query Language)
5. 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
Terkadang 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 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). System analyst bekerja pada tahap
requirement dan design, walaupun 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:
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:
1. Membangun/mengembangkan
software terutama pada tahap requirement, design dan sebagian dalam tahap
construction/implementation
2. Membuat
dokumen requiremant dan desain software berdasarkan proses bisnis
customer/client
3. Membuat
proposal dan mempresentasikannya di hadapan stake holder / customer / client
4. Membuat
desain database bila aplikasi yang akan di bangun memerlukan database
5. Membangun/mengembangkan
framework/library untuk digunakan dalam pengembangan software oleh programmer
Keahlian yang Diperlukan:
1. Menguasai
hal-hal yang dikuasai programmer
2. Menguasai
metode, best practice pemprograman dan tool/pemodelan pemprograman seperti OOP,
design pattern, UML (kemampuan membangun/mendesain)
3. Menguasai
SQL,ERD dan RDBMS secara lebih mendalam
4. 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. 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 masih memiliki kelemahan.
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 / skenario
4. Merumuskan
dan merancang peningkatkan efisiensi dan efektifitas standar proses yang
digunakan
Keahlian yang Diperlukan:
1. Menguasai
hal-hal yang berhubungan dengan software testing (test plan, test case, testing
automation, functionality testing, regression testing dll)
2. Memahami
tentang perinsip kerja software sesuai dengan platformnya masing-masing
3. Memahami
tentang SDLC dan metodologi software development seperti RUP, Agile, XP, Scrum
dll
4. Memahami
standarisasi seperti CMMI
5. Menguasai
penulisan dokumen dan komunikasi verbal dengan baik (dalam bahasa Inggris dan
Indonesia)
Latar Belakang:
Ilmu Komputer, Teknik Informatika, Manajemen Informatika
5. 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).
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:
1. Melakukan
tugas-tugas programmer, system analyst dan sebagian tugas SQA engineer
2. Merekomendasikan
dan menerapkan metodologi terbaik dalam sebuah proyek software development
Keahlian yang Diperlukan:
1. Menguasai
hal-hal yang dikuasai programmer, system analyst dan SQA engineer (dalam porsi
yang lebih sedikit)
2. Menguasai
SDLC berdasarkan SWEBOK (requirement, design, implementation/construction,
testing, maintenance)
3. Menguasai
metodologi software development seperti RUP, Agile, XP, Scrum dll
Latar Belakang:
Ilmu Komputer, Teknik Informatika, Manajemen Informatika,
Matematika pemusatan studi Komputasi
4. 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.
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.
Database Administrator Tugas:
1. Merancang
dan membangun database dalam sebuah sistem
2. Merekomendasikan
solusi terbaik dalam implementasi database baik dalam hal software maupun
hardware
3. Memaintain
database agar dapat berjalan dengan baik dan optimal
Keahlian yang Diperlukan:
1. Menguasai
ERD, SQL dan desain database secara mendalam
2. Menguasai
berbagai teknik optimalisasi/tuning, backup dan maintain database
3. Menguasai
secara mendalam salah satu atau lebih RDBMS beserta tools yang ada.
4. Memahami
tentang salah satu platform/bahasa pemprograman untuk mengakses database
5. 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.
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.
Software Architect Tugas:
1. Merekomendasikan
teknologi yang paling cocok untuk mengembangkan produk software
2. Membuat
standar-standar software development yang akan digunakan oleh tim programmer /
developer seperti coding standard, arsitektur, design pattern dll.
3. Membuat
rancangan/desain software dan proses pengembangannya secara keseluruhan,
terutama dalam hal framework dan library yang digunakan
Keahlian yang Diperlukan:
1. Menguasai
hal-hal teknis yang dikuasai programmer, system analyst dan software engineer
2. Menguasai
secara mendalam tentang software development technology dan software design
3. Menguasai
penulisan dokumen dengan baik (dalam bahasa Inggris dan Indonesia)
Latar Belakang:
Teknik Informatika, Ilmu Komputer, Manajemen Informatika
7. Software
Implementer
Software implementer kadang desebut sebagai “Implementer” atau “Software
Support”. Profesi ini kedengarannya mirip dengan “System Support” di dunia Computer
System & Networking (lihat di “Profesi di dunia IT Bagian 1″). Memang
secara pekerjaan ada kemiripan, tetapi sesuai penamaannya, dalam hal sesuatu
yang disupport tentu sudah terlihat perbedaannya. Profesi software implementer
tidak tergolong dalam bidang software development melainkan lebih dekat ke
bidang software consulting.
Seorang software implementer/support bertugas men-support produk
software yang akan diimplementasikan di sisi client/customer baik instalasi
setting konfigurasi, modifikasi dan pelatihan untuk user-usernya. Umumnya
software support tidak berurusan dengan masalah hardware/jaringan melainkan
lebih ke produk software yang di support. seorang software implementer/support
dibutuhkan dalam implementasi software yang cukup besar dan kompleks seperti
software perbankan, asuransi, airline.
Software Implementer / Support Tugas:
1. Melakukan
instalasi/implementasi serta setting produk software di sisi client/customer
2. Memelihara
dan memastikan software yang sudah diimplementasikan berjalan dengan baik
3. Melakuakan
troubleshooting terhadap produk software
4. Memberikan
pelatihan (training) kepada para pengguna software
Keahlian yang Diperlukan:
1. Menguasai
secara mendalam produk software yang akan diimplementasikan
2. Menguasai
teknologi platform / sistem poperasi/ middleware (bila ada) yang dibutuhkan
oleh produk software yang disupport
3. Memahami
insalasi, setting & troubleshooting produk software yang diimplementasikan
Latar Belakang:
Manajemen Informatika, Teknik Informatika, Ilmu Komputer, Teknik Komputer,
Teknik Elektro (Pemusatan Studi Komputer).
8. Technical
Consultant
Technical
Consultan atau kadang disebut sebagai “Consultant” saja sesuai namanya bekerja
sebagai konsultan IT. Tugas utama seorang konsultan adalah merekomendasika
solusi teknologi IT terbaik untuk memecahkan masalah yang ada. Bila seorang
software architect lebih menguasai solution domain, seorang technical
consultant lebih menguasai problem domain. Seorang technical consultant mirip
seorang system analyst yang lebih sering membuat konsep proses bisnis dan
requirment daripada melakukan design atau coding. Technical consultant tentunya
juga menguasai teknologi software development tetapi pada level yang lebih umum
dan luas (high level) dan lebih condong termasuk dalam bidang software
consulting.
Berbeda dengan software architect yang lebih banyak bekerja secara
internal dalam perusahaan, technical consultant lebih banyak bekerja untuk
memberikan konsultasi kepada client/customer dan lebih banyak berhadapan dengan
banyak orang. Untuk itu dibutuhkan interpersonal dan writing skill yang
memadai.
Apabila anda sering mendengar istilah ERP (Enterprise Resource Planning) consultant, profesi tersebut termasuk
dalam technical consultant. seorang ERP consultant tentunya harus menguasai proses
bisnis enterprise dan bagaimana mengimplementasikannya dalam produk software
yang dikuasai / direkomendasikannya.
Technical Consultant Tugas:
1. Memberikan
konsultansi/rekomendasi mengenai solusi IT terbaik untuk memecahkan masalah
2. Membuat
dokumen seperti proposal, requirement dan desain software secara umum
3. Melakukan
pelatihan (training) kepada para pengguna software.
Keahlian yang Diperlukan:
1. Berpengalaman
dan menguasai berbagai macam proses bisnis enterprise atau jenis bisnis terentu
2. Menguasai teknologi
IT secara luas
3. Menguasai
secara mendalam tentang solusi software yang direkomendasikan
4. Menguasai
penulisan dokumen dan komunikasi verbal dengan baik (dalam bahasa Inggris dan
Indonesia)
Latar Belakang:
Manajemen Informatika, Teknik Informatika, Ilmu Komputer, Teknik
Komputer, Teknik Elektro (Pemusatan Studi Komputer)
9. User Interface Designer
Mungkin anda agak jarang mendengar nama profesi seperti ini karena memang
istilah ini jarang digunakan. Ada iklan lowongan pekerjaan yang menggunakan istilah
“User Interface Designer”, tetapi lebih sering digunakan istilah “Web Designer”
untuk posisi tersebut.
Profesi yang terakhir ini memang agak sedikit berbeda dengan
profesi-profesi sebelumnya karena orang-orang sukses di bidang ini umumnya
memiliki bakat seni sekaligus kemampuan technical. Seorang user interface
designer harus dapat membuat desain web yang manis, serasi, user friendly
tetapi tetap efisien karena Internet memiliki bandwidth yang terbatas. Karena
profesional di bidang ini lebih sering dipekerjakan dalam web development, maka
profesi ini lebih sering disebut sebagai web designer.
Kadang kala user interface designer juga disertakan dalam
proyek-proyek non web, misalnya untuk membuat design icon, splash screen, logo
dll. Contohnya, dewasa ini di platform .NET dikenal adanya teknologi WPF
(Windows Presentation Foundation). Dengan menggunakan teknologi ini, desain
tampilan aplikasi desktop dapat dipisahkan dengan coding-nya. Seorang user
interface designer dapat bekerja pada desain tampilan menggunakan XAML,
sedangkan programmer/developer mengerjakan coding-nya di code-behind
menggunakan C# atau VB.Net. Karena itulah profesi ini menurut saya lebih tepat
dinamakan user interface designer.
User Interface Designer Tugas:
1. Mendesain
user interface agar menarik dan serasi secara visual dan user friendly
2. Mendesain
image/gambar/animasi yang akan digunakan di tampilan user interface (UI)
software aplikasi
Keahlian yang Diperlukan:
1. Memiliki
bakat/minat di seni rupa / desain visual
2. Memahami
dasar-dasar pemprograman baik web maupun secara umum
3. Menguasai
scripting untuk user interface seperti seperti HTML, DHTML, CSS, JavaScript,
action script, XAML dll.
4. Menguasai
tools manipulasi image dan animasi.
Latar Belakang:
Seni Rupa (desain visual), Teknik Informatika, Ilmu Komputer,
Manajemen Informatika
Jenjang Karir di Dunia IT
Kita akan membahas tentang tingkatan-tingkatan yang
lazim dalam setiap profesi di dunia IT. Seperti bidang-bidang pekerjaan
lainnya, profesi di dunia IT memiliki jenjang / tingkatan / level yang telah
berlaku secara umum di dunia kerja yaitu:
1. Fresh Graduate
Mereka yang baru saja lulus dari universitas,
institut, akademi ataupun sekolah menengah kejuruan dapat digolongkan sebagai
fresh graduate. Sebagian dari mereka ada yang telah memiliki pengalaman kerja
sehingga dapat digolongkan sebagai Junior
atau malah Experienced. Untuk
kasus ini sebutannya berubah dari fresh graduate menjadi experienced graduate.
Dengan bekal ilmu yang diperoleh selama
kuliah, fresh graduate umumnya telah memiliki dasar-dasar pengetahuan dibidang
IT seperti programming atau networking, akan tetapi tetap perlu adanya
penyesuaian dengan lapangan kerja yang ada.
Sebagian besar fresh graduate belum dapat
memastikan bidang profesi IT mana yang akan mereka jalani. Biasanya fresh
graduate akan memilih bidang profesi yang sesuai dengan perusahaan tempat
pertamakali mereka diterima kerja walaupun beberapa dari mereka ada juga yang
telah memutuskan untuk bekerja di bidang profesi IT tertentu sesuai minat atau
hobby-nya.
3.
Junior
Setelah diterima kerja pertama kali sebagai
karyawan, biasanya seorang fresh graduate akan di-training oleh perusahaan
untuk dapat dipekerjakan sesuai dengan kebutuhan perusahaan. Mereka yang lulus
training ini biasanya diberi titel “Junior“,
misalnya Junior Programmer, Junior Network Engineer ataupun Junior Consultant.
Tingkatan ini dapat dianalogikan dengan level “Genin” di salah satu manga
terkenal.
Seorang yang telah berada pada level junior
dapat langsung mengisi lowongan kerja dengan kriteria misalnya: Programmer / IT
staff dengan pengalaman 1 – 2 tahun. Ciri-ciri dari level junior adalah:
- Dapat bekerja dalam proyek /
layanan IT tertentu pada tingkat dasar (basic). Misalnya sebagai
programmer melakukan coding sederhana atau melakukan testing dan defect
reporting. Sebagai network engineer dapat melakukan instalasi PC, setting
network, IP address, instalasi switch/hub
- Bekerja dibawah pengawasan /
supervisi dari yang lebih berpengalaman.
- Pengalaman kerja dibawah 2
tahun
3. Experienced
Setelah bekerja selama lebih dari 2 tahun,
seorang junior dapat naik ke
level “Experienced“.
Orang-orang di level inilah yang paling banyak dibutuhkan di dunia kerja dan
dapat dianggap “siap kerja”.
Nama profesi di level ini biasanya tidak
diawali oleh embel-embel tertentu. Kalau kita mendengar istilah “Programmer”,
“Developer”, “Software Engineer”, “Network Engineer”, maka itu sama saja dengan
“Experienced Programmer” atau “Experienced Software Engineer”. Tingkatan ini
dapat dianalogikan dengan level “Chunnin” di salah satu manga terkenal
Ciri-ciri dari level ini adalah:
- Dapat bekerja dalam proyek /
layanan IT pada tingkat menengah atau lanjut dengan menerapkan teknologi
atau metodologi terkini. Misalnya sebagai programmer/developer melakukan
software design, menerapkan design pattern, OOP, coding sesuai standar
(coding standard) dan best practice sehingga dapat menghasilkan aplikasi
yang berkualitas. Sebagai network engineer dapat melakukan LAN design,
instalasi dan setting server, instalasi dan setting router, core switch,
LAN design, VLAN, interkoneksi WAN dll.
- Dapat bekerja secara mandiri
dibawah pengawasan / supervisi yang minimum. Kadang kala tidak membutuhkan
supervisi selama bekerja dan akan di review oleh team lead atau atasannya
setelah pekerjaannya diselesaikan.
- Pengalaman kerja diatas 2
tahun
4.
Senior
Level senior dapat dikatakan sebagai level
technical tertinggi yang umumnya dapat dicapai seorang pekerja IT. Kita sering
mendengar istilah “Senior Programmer”, “Senior Developer”, “Senior Software
Engineer”, “Senior Network Engineer” dll. Untuk mencapai level ini, diperlukan
pengetahuan dan pengalaman yang luas dalam bidangnya. Biasanya orang yang
berada di level ini ditempatkan sebagai team lead dalam proyek. Tingkatan ini
dapat dianalogikan dengan level “Jounin” di salah satu manga terkenal yang artinya “Elite”.
Ciri-ciri dari level senior adalah:
- Menguasai secara mendalam
dan umumnya berpengalaman lebih dari 5 tahun dalam bidangnya, walaupun ada
pula yang mencapai level ini dalam 3 tahun dan ada yang 10 tahun, semuanya
bergantung pada kemampuan dan kesempatan masing-masing
- Dapat bekerja tanpa
supervisi karena dialah yang
seharusnya paling tahu solusi IT
terbaik
- Mengawasi (supervise) dan
mereview hasil kerja anggota team yang berada di bawah levelnya seperti Junior dan Experienced
- Sebagai tempat bertanya /
mentor dalam hal teknologi (technology expert) di lingkungan kerjanya
- Berperan sebagai designer /
analyst / architect atau team lead dalam sebuah proyek
Seorang yang pantas dianggap memiliki
tingkatan senior adalah “Expert” dalam bidang profesinya dan dapat diserahi
tanggung jawab penuh mengenai teknologi dalam sebuah proyek atau layanan IT.
5. Principal
Istilah principal
dalam jenjang karir IT mungkin agak jarang terdengar. Istilah seperti
“Principal Software Engineer” atau “Principal Network Engineer” telah umum
digunakan di dunia IT, hanya saja tidak banyak penyandang sebutan ini.
Principal di sini maksudnya adalah “utama” / paling top. Selain tidak semua
profesional IT dapat mencapai level ini, sebagian besar perusahaan merasa cukup
untuk mempekerjakan seorang dengan level senior sebagai expert dalam aspek
teknis. Akibatnya profesional IT yang telah mencapai level senior akan beralih
ke manajemen seperti project manager bila
ingin mencapai karir yang lebih tinggi.
Kalau kita meminjam istilah salah satu manga
terkenal, bisa dikatakan ini adalah level “S-Class” atau “Super”. Mereka yang
dianggap mencapai level ini biasanya diakui sebagai yang paling cemerlang
diantara para senior. Mereka tidak
hanya dianggap sebagai “Expert” tetapi juga sebagai “Leader” dalam bidangnya.
Ciri-ciri dari level ini adalah:
- Memiliki seluruh kemampuan
dari level senior
- Sebagai tempat bertanya
dalam hal teknologi dalam bidang profesinya (technology expert and leader)
dalam lingkungan yang lebih luas baik nasional maupun internasional
- Sering membuat artikel /
tulisan-tulisan mengenai bidang profesinya yang bermanfaat bagi orang lain
- Dapat dipercaya untuk
membangun / mengembangkan sebuah standard (set the standards) yang digunakan dalam bidang
profesinya, misalnya menciptakan design pattern tertentu atau metodologi
pengembangan software yang efektif.
Salah satu contoh dari level ini adalah
mereka yang mendapatkan MVP Award (Most Valuable Professional) dari sebuah
raksasa software yang tidak asing lagi bagi kita, atau yang memegang sertifikat
CCIE dari sebuah vendor jaringan terbesar.
6. Manager
Seorang dengan level senior dan memiliki
track record yang bagus biasanya dapat dipromosikan sebagai managar, dalam hal
ini adalah Project Manager. Posisi manager dalam dunia IT banyak macamnya.
Beberapa istilah yang sering kita dengar diantaranya adalah:
- Project Manager
- Development Manager
- Application Manager /
Network Manager
- IT Manager / General Manager
IT
- Technical Manager
- Product Manager
- Senior Manager
Project manager adalah salah satu posisi
manager yang sering kita dengar di dunia IT. Tugas utama seorang project
manager adalah memastikan sebuat proyek berjalan lancar sesuai harapan.
Tugas-tugas umum seorang project manager adalah membuat perencanaan yang
mencakup biaya, waktu pengerjaan, jumlah pekerja yang dibutuhkan, kemudian
mengontrol jalannya proyek dan menyingkirkan segala hambatan/rintangan dalam
proyek baik dalam hal teknis (teknologi) atau non teknis (politik, birokrasi).
Bagi yang memerlukan penjelasan lebih lanjut dapat membacanya di dokumen PMBOK
(Project Management Body of Knowledge) oleh PMI (Project Management Institute).
PMI juga mengeluarkan sertifikasi project manager yang diakui secara
internasional yaitu Project Manager Professional (PMP).
Mengenai jenis manajer lainnya akan saya
jelaskan di tulisan selanjutnya yang berjudul “Profesi Manajer di Dunia IT”
7. Director
Seorang profesional IT yang dapat mencapai
level direktur IT mungkin agak jarang sejarang kita mendengar istilah “IT
Director”. Inilah jenjang karir tertinggi yang masih berhubungan erat dengan
IT. Posisi ini juga dikenal sebagai CTO (Chief Technology Officer). Seorang
yang berada di level direktur idealnya bekerja di tingkatan kebijakan dan
strategi. Kebijakan dan strategi dalam pengembangan dan implementasi IT
tentunya bagi seorang IT director.
IT director diperlukan di perusahaan yang
menempatkan IT sebagai hal yang critical dan sangat penting, sedangkan CTO
biasanya ada di perusahaan IT / software development yang sudah cukup besar