![Berkenalan dengan Profesi Anak IT](https://images.ctfassets.net/7wjlcr9d5ii8/25vE1WzG46NpDny6CTZYEe/e43dc617672d246c2b311f4e473270a7/6948090750_26674d0eea_o.jpg?w=750&h=563&fl=progressive&q=100&fm=jpg&fit=thumb&f=faces)
Biasanya banyak yang bingung membedakannya, apa sih perbedaan Programmer vs Software Developer vs Software Engineer? Secara umum sebenarnya sama aja. Fakta di lapangan pun perbedaannya ga terlalu kelihatan, karena sama-sama ngoding. Sama seperti Business Analyst vs Product Manager, banyak juga yang bingung perbedaannya. Perusahaan pun ga terlalu mempedulikan penamaan ini, yang penting mereka kerja, menghasilkan cuan, dan digajiš. Tapi kalau dilihat dari segi definisi ada perbedaannya. Ini adalah hal yang paling sering ditanyakan anak-anak kuliah atau SMA yang penasaran sama profesi di dunia IT. Sama seperti gw di SMA dulu yang buta sama prospek lulusan IT. Gw mikirnya lulusan Teknik Informatika itu kerjaannya hanya seputar Microsoft Word, Microsoft Excel, dan Microsoft Powerpoint karena dulu di sekolah kita diajarinnya begitu pada pelajaran TIKš¤£. Atau paling mentok jadi tukang service komputer, laptop, hp, printer, AC, dan alat elektronik lainnya. Gw baru tahu profesi-profesi lulusan IT itu justru pas udah kuliah. Prospek pekerjaan untuk anak IT ini ada bermacam-macam. Berikut adalah profesi-profesi di bidang IT:
Programmer adalah orang yang membuat algoritma menjadi sebuah program yang bisa digunakan untuk memudahkan aktivitas atau pekerjaan. Contohnya orang yang bisa bikin program kalkulator, web scraping, scheduling, atau program men-generate angka acak, itu udah bisa disebut Programmer. Scope kerjanya hanya sebatas menulis code & bikin program.
Sesuai namanya, Software Developer adalah pengembang perangkat lunak. Jika Programmer scope kerjanya sebatas ngoding, Software Developer scope kerjanya sedikit lebih luas, yaitu mengembangkan perangkat lunak berupa produk, mulai dari ngoding, unit testing, debugging, hingga deploying. Contohnya adalah Programmer yang ikut mengembangkan fitur pada e-commerce atau System Informasi, itu udah bisa disebut Software Developer. Kadang perusahaan menggunakan istilah Back End Developer untuk pekerjaan yang spesifik terkait aplikasi di sisi server. Untuk yang berfokus pada aplikasi Desktop juga ada namanya Desktop Developer, tapi saat ini demand untuk Desktop Developer udah berkurang karena jaman sekarang udah pada beralih ke aplikasi Web Based & Mobile Based.
Selain Software Developer ada juga istilahnya Front End Developer, yaitu Software Developer yang spesifik mengembangkan aplikasi yang digunakan langsung oleh user. Front End Developer itu juga terbagi lagi menjadi Web Developer & Mobile Developer. Web Developer ini sesuai namanya berfokus pada Web-nya saja. Begitu juga dengan Android Developer atau iOS Developer yang hanya fokus pada teknologi Mobile.
Lalu juga ada namanya Full Stack Developer yang fokusnya lebih dari satu stack, seperti Back End & Web atau Mobile. Simplenya Full Stack Developer adalah Back End Developer + Web Developer atau Back End Developer + Mobile Developer, atau bahkan ketiga stack tersebut sekaligus. Mereka mengembangkan software dari sisi user hingga server.
Secara bahasa Software Engineer artinya insinyur perangkat lunak. Ini sebenarnya mirip dengan Software Developer, sama-sama menghasilkan produk dalam bentuk perangkat lunak. Bedanya, Software Engineer ga hanya mengembangkan produknya saja, tapi juga merancang template, library, ataupun framework terkait produk. Bisa dibilang Software Engineer adalah Software Developer yang scope kerjanya lebih luas yang juga bertanggung jawab merancang core system dari produk tersebut yang maintainable & scalable, ga hanya bikin fitur aja. Makanya best practices seperti struktur data, engineering principle, hingga design pattern wajib dikuasai oleh Software Engineer.
IoT (Internet of Things) Engineer adalah Engineer yang fokusnya lebih spesifik pada menghubungkan perangkat elektronik dengan internet. Sebenarnya ini mirip dengan Software Engineer. Hanya saja, yang ia develop bukan hanya software, melainkan juga koneksi ke perangkat terkait IoT seperti sensor, actuator, dan lain-lain.
Customer Support Engineer atau Application Support Engineer kadang disingkat sebagai Support Engineer atau Engineering Support. Support Engineer adalah Software Engineer yang menjadi orang pertama yang menangani keluhan atau permasalahan client atau customer secara teknis. Kerjaannya seperti Customer Service yang mengerti teknis aplikasi. Misalkan ada laporan error dari customer, Support Engineer inilah yang menjadi orang pertama melakukan pengecekan, tracking, hingga analisa. Jika dimungkinkan untuk langsung diperbaiki, maka bisa langsung diperbaiki. Kalau bugs tersebut cukup gede, barulah temuan itu dilaporkan ke tim terkait yang melakukan development. Selain itu mereka juga bertugas membantu perbaikan data apabila customer melakukan kesalahan penginputan & melakukan request untuk perbaikan.
IT Staff tugasnya lebih ke arah teknisi infrastruktur secara general. Seperti melakukan troubleshoot terhadap jaringan kantor, instalasi system, memperbaiki laptop/PC, wifi, hingga menjadi konsultan terhadap keluhan-keluhan karyawan lain terkait IT. Ini cocok untuk anak IT yang lebih tertarik ngoprek-ngoprek hal-hal yang berhubungan dengan hardware & jaringan. Biasanya profesi ini terdapat di perusahaan non-teknologi untuk menanggulangi permasalahan IT secara umum di kantor hingga support kebutuhan karyawan lain terkait IT.
Kalau IT Staff kerjaannya lebih general, maka Network Engineer ini lebih spesifik menangani infrastruktur jaringan saja. Fokus kerjanya diantaranya melakukan desain jaringan, instalasi jaringan, troubleshoot permasalahan jaringan, melakukan konfigurasi firewall, router, switch, protocol, dan semua hal terkait jaringan.
Database Administrator tugasnya lebih spesifik terhadap maintain query cost, melakukan tuning, troubleshoot permasalahan Database, dan menawarkan best practice terkait Database yang digunakan. Mereka juga yang bertanggung jawab memaintain System Database yang dimiliki perusahaan. Biasanya perusahaan besar yang memiliki system Database yang kompleks yang memiliki job title ini. Untuk perusahaan pada umumnya, maintain Database cukup dilakukan oleh Engineer atau Manager.
Data Engineer berbeda dengan Data Administrator walaupun kerjaannya sama-sama seputar Data. Data Engineer ini ranahnya spesifik ke arah Analytics, Data Warehouse, Data Lake, ETL (Extract, Transform, and Load), dan OLAP (Online Analytical Processing). Fokusnya mendesain, mengembangkan, dan memaintain hal-hal terkait Big Data. Tugasnya memastikan data tersebut bisa diakses dan siap digunakan untuk kebutuhan analisa oleh pihak terkait. Seperti pada e-commerce misalnya, Data Engineer inilah yang bertugas membuat tools untuk menghasilkan data berapa banyak penjualan di periode tertentu, yang dikategorikan berdasarkan usia pembeli, daerah, dan beberapa metric lainnya. Ini cocok untuk anak IT yang suka ngoding dan mengolah Big Data.
Jika Data Engineer tugasnya menyediakan data, maka Data Analyst tugasnya sebagai penerjemah atas data yang ada. Jadi berdasarkan data tersebut Data Analyst akan melakukan analisa, kemudian menarik kesimpulan dan memberikan saran terhadap bisnis. Mereka yang mengkomunikasikannya kepada pihak terkait berdasarkan temuan-temuan datanya. Ini cocok untuk anak IT yang lebih suka menganalisa data dibandingkan ngoding.
Software Tester adalah orang yang tugasnya spesifik membuat test plan dan melakukan testing pada aplikasi yang sudah dikembangkan sebelum produk dirilis ke production. Profesi ini kerjaannya seperti user yang nyobain seluruh fitur aplikasi satu-satu dan melaporkan bugs jika ditemukan.
Tugas utamanya memastikan aplikasi berjalan sesuai requirement yang diberikan. Kerjaannya mirip dengan Software Tester meliputi bikin test plan, melaporkan bugs, melakukan testing produk di semua environment baik menggunakan automation maupun manual, dan memastikan aplikasi tersebut berjalan sesuai requirement sebelum rilis. Perbedaannya dengan Software Tester adalah mereka ga hanya melakukan testing terhadap produk, tapi juga menganalisa kualitas aplikasi & memberikan masukan terhadap aplikasi yang dites, menetapkan standar pada aplikasi, hingga melakukan audit & evaluasi aplikasi setelah rilis.
Software Development Engineer in Test adalah Software Engineer yang tanggung jawabnya bukan mengembangkan produk, juga bukan melakukan testing. Melainkan mengembangkan software yang digunakan untuk melakukan testing produk agar proses testing dapat dilakukan lebih cepat lewat aplikasi dibanding testing fitur secara manual satu-satu yang dapat memakan waktu yang lama. Terutama untuk mendeteksi apakah perubahan tersebut backward-compatible dengan versi sebelumnya. Kalau ini dicek satu-satu secara manual tentu bakal melelahkan.
Profesi ini non-teknis di luar coding & testing. Business Analyst bertugas menerjemahkan requirement bisnis yang diinginkan client menjadi alur program yang akan dibuat. Misalkan client butuh aplikasi pencatatan keuangan, maka Business Analyst inilah yang merancang seperti apa aplikasi yang akan dibuat mulai dari tampilan fitur, fungsional aplikasi, dan hal-hal sejenisnya untuk dieksekusi oleh tim development. Business Analyst itu seperti penjual Nasi Goreng, saat pelanggan datang dia akan merancang resep Nasi Goreng sesuai permintaan pelanggan. Business Analyst ini biasanya ditemukan di perusahaan yang menjual jasa seperti konsultan IT.
Mirip seperti Business Analyst, profesi ini tugasnya juga non-teknis. Bedanya, Product Manager fokusnya memberikan ide fitur terhadap produk yang dibuat oleh perusahaan dan menulis rancangan aplikasi berdasarkan ide tersebut seperti Business Analyst. Ide-ide ini yang nantinya dieksekusi oleh tim development menjadi sebuah aplikasi. Product Manager ini seperti penjual Nasi Padang, dia akan sediakan makanannya sesuai resep yang dimiliki lalu dijual ke pelanggan. Product Manager ini biasanya ditemukan di perusahaan yang menjual produk, seperti e-commerce, SaaS, dan sejenisnya.
Product Engineer adalah Product Manager + Software Engineer. Tugasnya memberikan ide fitur terhadap produk dan mengeksekusinya menjadi sebuah aplikasi. Ibarat pemilik resto Nasi Padang yang punya resep sendiri dan masak sendiri. Biasanya perusahaan yang memiliki title ini adalah perusahaan yang produknya berupa software yang bersifat teknis, seperti framework, plugin, library, produk IoT, API, atau produk yang requirementnya ga terlalu kompleks sehingga bisa di-handle oleh orang yang sama.
Project Manager adalah Manager yang memimpin sebuah projek dan menjadi jembatan penghubung antara tim development perusahaan dengan client. Dia yang bertanggung jawab mengatur jadwal & deadline, meeting dengan client, mengorganisir tim development, dan memastikan solusi yang ditawarkan diterima oleh client. Project Manager ini biasanya ditemukan di perusahaan konsultan IT atau perusahaan yang kerjanya per-project.
User Interface adalah desain tampilan sebuah aplikasi, misalnya bentuk tombol, ukuran font, dan desain visual pada aplikasi lainnya. Sedangkan User Experience adalah desain interaksi aplikasi dengan user, misalnya ketika sebuah tombol dipencet maka akan muncul pop-up, ketika sebuah link di-hover warnanya akan berubah, dan interaksi-interaksi lainnya. UI/UX Designer tugasnya merancang desain serta memberikan ide & masukan terhadap desain visual & desain interaksi aplikasi. UI/UX Designer biasanya akan bermain dengan tools desain seperti Figma, Adobe XD, atau tools sejenisnya. Ini profesi yang cocok buat anak IT yang punya passion di bidang desain.
Jika Sales umumnya mempromosikan produk dari sisi bisnisnya saja, maka Sales Engineer melengkapinya dengan mempromosikan produk dari sisi teknis. Sales Engineer itu Sales yang mengerti teknis pada teknologi dari produk yang dijual. Tugasnya mempromosikan keunggulan teknis seperti jenis teknologi yang digunakan oleh produk, seberapa cepat aplikasi tersebut, kecanggihan produk, dan hal-hal teknis lainnya kepada client. Perusahaan yang memiliki title Sales Engineer ini biasanya perusahaan yang produknya terkait software yang bersifat teknis, seperti framework, plugin, library, produk IoT, API, dan lain-lain. Ini cocok untuk orang yang memiliki passion di bidang Sales tapi mengerti teknologi.
Berkaitan juga dengan Sales, tapi Solution Engineer ini fokusnya lebih ke pre-sales. Tugasnya mencari potential client, riset permasalahan teknis terkait teknologi yang dihadapi calon client, serta menganalisa kebutuhan teknis yang dibutuhkan oleh calon potential client. Lalu menawarkan solusinya hingga mendemonstrasikannya. Ini juga cocok untuk orang yang mengerti teknologi dan memiliki passion di bidang Sales. Sama seperti Sales Engineer, perusahaan yang memiliki title Solution Engineer ini biasanya perusahaan yang produknya terkait software yang bersifat teknis, seperti framework, plugin, library, produk IoT, API, dan lainnya.
Sesuai namanya, ini adalah Software Engineer yang bertanggung jawab menjaga system dari serangan hacker. Ia bertugas merencanakan strategy untuk melindungi system internal. Mereka yang berada di garda terdepan untuk mengatasi terjadinya kehilangan data user, system dibobol, gangguan keamanan jaringan, dan sejenisnya. Ini cocok untuk anak IT yang punya passion pada sistem keamanan IT.
Sama seperti Security Engineer yang bertugas di bidang keamanan, tapi Pentester justru sebaliknya, ia adalah orang yang bertugas untuk mencoba melakukan hacking terhadap system perusahaan untuk melihat apakah system yang berjalan sudah aman atau belum. Biasanya perusahaan lebih sering mengadakan bounty hunting untuk melakukan test keamanan systemnya untuk menghemat cost. Celah keamanan system juga belum tentu terjadi setiap minggu atau bulan kalau kualitas development bagus. Pentester pun juga begitu, biasanya mereka lebih suka kerja kontrak atau freelance dengan mengikuti program bounty hunting dari perusahaan daripada terikat di satu perusahaan karena bayaran dari bounty hunting itu gede dan mereka bisa bekerja untuk lebih dari satu perusahaan. Ini cocok untuk anak IT yang tertarik pada dunia hacking.
DevOps Engineer bergerak di bidang operations. Mereka yang menjembatani antara tim development dengan system yang digunakan perusahaan. Fokus utamanya adalah mengembangkan system yang digunakan untuk proses development, seperti mengembangkan CI/CD, Container System, tools operation internal, dan lain-lain. Ini cocok untuk anak IT yang tertarik dengan tools seperti Docker, Kubernetes, Virtual Machine, dan sejenisnya.
Sama seperti DevOps Engineer, Site Reliability Engineer juga bergerak di bidang operations, sama-sama bertugas menjembatani antara tim development dengan system. Bedanya, scope tugasnya lebih luas daripada DevOps, seperti memaintain system, kestabilan performa server, membantu memaintain database, dan hal-hal terkait operation lainnya. Mereka yang bertanggung jawab jika server yang digunakan bermasalah.
Ini juga bagian tim operasional seperti DevOps & SRE. Tapi ini lebih spesifik ke bagian infrastruktur Cloud yang digunakan dan memahami fitur dari service suatu Cloud. Tugasnya seperti melakukan optimasi Cloud Service, maintain infrastruktur, hingga migrasi jika diperlukan. Infrastruktur Cloud Service yang paling sering ditemui di Indonesia adalah AWS, GCP, Alibaba, dan Azure.
Ini adalah level di atas Senior Software Engineer, atau bisa dibilang Super Seniorš. Bikin apa aja tinggal sat set langsung jadi. Scope kerjanya tentu saja lebih luas. Bisa diartikan Principal Engineer adalah Senior Software Engineer yang juga bertanggung jawab melakukan review system yang sedang berjalan, optimasi pada proses development, melakukan riset terhadap teknologi yang digunakan, dan tentu saja kapasitas pengetahuannya tentang best practice teknologi yang digunakan sudah mendalam sehingga bisa jadi tempat bertanya kalau semua engineer udah buntu. Ini jadi pilihan karir selanjutnya bagi Senior Software Engineer yang kurang suka bidang manajemen dan lebih suka bidang perkodingan yang lebih expertš§āš».
Selain Principal Engineer, Engineering Manager juga merupakan salah satu role level lainnya di atas Senior Engineer, setara Principal Engineer. Kalau Engineering Manager scope kerjanya lebih ke arah manajerial, sesuai namanya. Ini jadi pilihan karir selanjutnya bagi Senior Software Engineer yang ingin terjun ke bidang manajemen. Aktivitas codingnya tentu sudah berkurang ga seperti Principal Engineer yang masih hands on coding. Mereka lebih sering menangani & berinteraksi bersama beberapa tim yang ia handle. Masing-masing Team Leader akan berkoordinasi dengan Engineering Manager dalam proses development.
Jika role-role Engineer di atas fokus scope kerjanya hanya sampai tahap perkodingan, maka ini lebih dari itu. Software Architect atau Solution Architect bertanggung jawab terhadap End to End System pada produk yang dibangun. Mulai dari bagaimana produk berjalan, teknologi stack apa yang digunakan, bagaimana aplikasi berkomunikasi, spesifikasi-spesifikasi yang dibutuhkan, dan beberapa hal teknis lainnya yang lebih luas.
Head of IT adalah atasan dari semua role di atas. Role-nya tepat dibawah executive level. Scope kerjanya lebih luas lagi. Ia yang bertanggung jawab terhadap proses development baik dari segi teknis maupun non-teknis. Meliputi perencanaan, implementasi, hingga mengkoordinasikannya dengan role level di bawahnya.
Ada yang menggunakan title VP of Technology, ada juga yang menggunakan title VP of Engineering, keduanya merujuk ke profesi yang sama. Ini levelnya di bawah CTO. VP bisa dibilang "wakil CTO" karena tugasnya bekerja sama membantu CTO dalam mengambil keputusan penting terkait teknologi. Perusahaan yang menggunakan VP biasanya perusahaan kelas atas yang scope bisnisnya cukup luas dan kompleks sehingga CTO butuh partner untuk berbagi tugas urusan penting terkait teknologi.
CTO adalah executive level. Ini adalah pemimpin tertinggi untuk urusan IT. Executive level seringkali merupakan co-founder walaupun ga semuanya begitu. CTO, VP, dan Head of IT sama-sama bertanggung jawab terhadap proses development baik dari segi teknis maupun non-teknis. Yang paling membedakan adalah CTO juga menangani hal-hal ke arah strategis yang berdampak pada bisnis perusahaan bersama executive level lainnya.
Itulah beberapa jenis profesi terkait dunia perkodingan yang gw tahu. Btw, definisi-definisi job title di atas ga baku, tergantung masing-masing perusahaan juga. Promosi role dan level pada masing-masing perusahaan juga beda-beda requirementnya. Misalnya, requirement untuk title senior di suatu perusahaan ada yang pengalamannya 3 tahun, ada juga yang 5 tahun. Bisa juga dinilai dari pemahamannya terhadap teknologi tertentu. Soal gaji juga belum tentu senior title di sebuah perusahaan gajinya selalu lebih tinggi dari jabatan yang bukan senior di perusahaan lain. Beda perusahaan beda juga skala gajinya, dan banyak faktor di dalamnya. Sebenarnya masih ada lagi sih job title di dunia IT, tapi yang populer di Indonesia hanya poin-poin di atas. Walaupun secara fakta di lapangan kadang profesi di atas belum tentu sesuai definisinya, semuanya kembali lagi ke masing-masing perusahaan. At least buat anak-anak sekolah, kuliah, atau fresh graduates jadi punya gambaran mengenai profesi lulusan IT. Ga hanya Microsoft Word, Excel atau Powerpoint doangš¤£.