![Berkenalan Dengan Profesi Anak IT](http://images.ctfassets.net/7wjlcr9d5ii8/25vE1WzG46NpDny6CTZYEe/9d70a8a87e3f22675cfa54b79ac21806/ARTIKEL-HIMTI-OCTOBER-20.png?w=626&h=471&fl=progressive&q=75&fm=jpg)
Ini adalah pertanyaan yang paling sering ditanyakan anak-anak kuliah atau SMA yang penasaran sama profesi di dunia perkodingan. Sama seperti gw di SMA dulu yang buta sama prospek lulusan IT, gw mikirnya lulusan Teknik Informatika itu profesinya 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, printer, dan alat elektronik lainnya. Gw baru tahu profesi lulusan IT itu justru pas udah kuliah. Salah satunya profesi yang berhubungan dengan dunia perkodingan. Profesi perkodingan ini ada beberapa macam, seperti Programmer, Software Engineer, atau Software Developer. Biasanya banyak yang bingung membedakannya, apa sih perbedaan Programmer vs Software Developer vs Software Engineer? Secara umum sama aja. Fakta di lapangan pun perbedaannya ga terlalu kelihatan, karena sama-sama ngoding. Perusahaan pun ga terlalu mempedulikan penamaan ini, yang penting mereka ngoding dan digajiš. Tapi kalau dilihat dari segi definisi ada perbedaannya.
Coder
Ini sebenarnya bukan profesi sih, karena ga ada lowongan pekerjaan Coderš¤£. Tapi ini masih berhubungan dengan profesi perkodingan. Coder artinya orang yang bisa ngoding. Contohnya orang yang bisa bikin āHello Worldā, atau yang bikin algoritma mencari bilangan prima, fibonacci, bikin pola segitiga, dan lainnya itu udah bisa disebut Coder. Scopenya hanya sebatas bikin flow algoritma dalam bentuk code atau pseudo code.
Programmer
Ini baru profesi. Programmer adalah Coder yang bisa bikin program. Kalau Coder scope-nya hanya sebatas bikin algoritma menggunakan code, Programmer udah bisa membuat algoritma tersebut menjadi sebuah program atau tools yang bisa digunakan. Contohnya orang yang bisa bikin program kalkulator atau tools men-generate angka acak, itu udah bisa disebut Programmer.
Software Developer
Sesuai namanya, Software Developer adalah pengembang perangkat lunak. Jika Programmer scope-nya bisa bikin program, Software Developer scope-nya sedikit lebih luas, yaitu bisa membangun produk jadi dalam bentuk perangkat lunak. Contohnya adalah Programmer yang ikut mengembangkan fitur pada E-Commerce atau System Informasi, itu udah bisa disebut Software Developer. Selain itu ada juga namanya Web Developer. Ini sebenarnya sama aja seperti Software Developer, bedanya Web Developer lebih fokus pada Web-nya saja. Begitu juga dengan Android Developer atau iOS Developer yang hanya fokus pada teknologi mobile. Selain itu juga ada namanya Full Stack Developer, kalau ini yang membedakannya adalah mereka mengembangkannya lebih dari satu stack, seperti Back End, Web, atau Mobile.
Software Engineer
Secara bahasa Software Engineer artinya insinyur perangkat lunak. Ini sebenarnya mirip dengan Software Developer, sama-sama mengembangkan perangkat lunak. Bedanya Software Engineer ga hanya mengembangkan produknya saja sampai jadi, tapi juga bertanggung jawab mengembangkan template, library, ataupun framework terkait produk. Bisa dibilang Software Engineer ini adalah Software Developer yang juga bertanggung jawab mengembangkan core dari produk tersebut, ga hanya bikin fitur pada produk.
QA Engineer
Ini agak berbeda sih, walaupun ada title āengineerā-nya, tapi tugas utamanya bukan ngoding, tetapi memastikan produk tersebut berjalan sesuai requirement yang diberikan. Kerjaannya meliputi melaporkan bugs, melakukan testing produk di semua environment, baik menggunakan automation maupun manual.
Software Engineer in Test
Software Enineer in Test adalah Software Engineer yang tanggung jawabnya bukan mengembangkan produk, juga bukan melakukan testing. Melainkan mengembangkan software automation test yang digunakan untuk melakukan testing produk nantinya oleh QA Engineer.
Senior Engineer/Developer
Ini hanyalah perbedaan level aja sebenarnya. Secara umum sama aja kayak Software Developer atau Software Engineer. Yang membedakan adalah Senior level tentu pengalaman serta jam terbangnya udah tinggi, pendekatan yang digunakan udah canggih, ngerjain ini itu udah ga butuh waktu lama, tinggal sat set langsung jadiš¤£. Selain itu ada tugas tambahannya, yaitu membimbing role level dibawahnya, ini yang paling membedakan job desk nya dengan sesama Engineer atau Developer.
Lead Engineer/Developer
Secara role level, ini sebenarnya setara dengan Senior Engineer/Developer. Hanya saja, Leader punya satu tugas tambahan, yaitu memanage tim yang ia pimpin. Lead inilah yang nantinya paling sering ikut meeting dengan orang-orang non-technical. Dialah yang berada di garda terdepan ketika sesuatu terjadi terhadap timnya.
Principal Engineer
Ini adalah level di atas Senior Software Engineer, atau bisa dibilang Super Senior (bukan Super Junior yaš). Scope-nya tentu saja lebih luas dari Senior Software Engineer. 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 produk yang dikembangkan, dan tentu saja kapasitas pengetahuannya tentang best practice teknologi yang digunakan sudah mendalam sehingga bisa jadi tempat bertanya kalau semua engineer udah buntu.
Engineering Manager
Selain Principal Engineer, Engineering Manager juga merupakan salah satu role level lainnya di atas Senior Engineer, setara Principal Engineer. Kalau Engineering Manager scope-nya lebih ke Management, sesuai namanya. Aktivitas codingnya tentu sudah berkurang ga sebanyak Principal Engineer yang masih hands on coding tiap harinya. Mereka lebih sering menangani beberapa tim dan berinteraksi bersama Team Leader masing-masing yang ia handle.
Solution Architect
Jika poin-poin di atas fokus tugasnya hanya sampai tahap perkodingan, maka ini lebih dari itu. Software Architect atau Solution Architect bertanggung jawab terhadap End to End sytem produk yang dibangun. Mulai dari bagaimana produk berjalan, teknologi stack apa yang digunakan, bagaimana aplikasi berkomunikasi, spesifikasi-spesikasi yang dibutuhkan, dan beberapa hal teknis lainnya yang lebih luas.
Security Engineer
Sesuai namanya, ini adalah Software Engineer yang bertanggung jawab menjaga system dari serangan hacker. Ia bertugas merencanakan strategy untuk melindungi jaringan internal. Dia yang berada di garda terdepan ketika terjadi kehilangan data user, system dibobol, keamanan jaringan, dan sejenisnya.
Pentester
Mirip-mirip dengan Security Engineer yang bertugas di bidang keamanan. Pentester justru sebaliknya, ia adalah orang yang bertugas untuk mencoba melakukan hacking terhadap internal system untuk melihat apakah system yang berjalan sudah aman atau belum. Tapi biasanya perusahaan lebih sering mengadakan bounty bugs hunting untuk melakukan test keamanan systemnya karena cost-nya biasanya lebih sedikit, celah keamanan system juga belum tentu datang setiap minggu atau bulan kalau kualitas development bagus. Pentester pun juga begitu, biasanya mereka lebih suka bekerja secara freelance daripada terikat di satu perusahaan karena bayaran dari bounty bugs hunting itu gede dan mereka bisa bekerja untuk lebih dari satu perusahaan.
DevOps Engineer
DevOps Engineer bergerak di bidang operations. Mereka yang menjembatani antara tim development dengan system. Fokus utamanya adalah mengembangkan system yang digunakan untuk proses development, seperti mengembangkan CI/CD, Container System, dan lain-lain.
Site Reliability Engineer
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, termasuk memaintain system, kestabilan performa server, dan hal-hal terkait operation lainnya. Mereka yang bertanggung jawab jika server yang digunakan bermasalah.
Head of IT
Head of IT adalah atasan dari semua role di atas. Role-nya tepat dibawah executive level. Scope-nya lebih luas lagi. Ia yang memimpin keseluruhan development. Ia yang bertanggung jawab terhadap proses development baik dari segi teknis maupun non-teknis. Meliputi perencanaan, implementasi, hingga mengkoordinasikannya dengan role leve di bawahnya.
Vice President of Techonology (VP)
Ini levelnya di bawah CTO. VP bisa dibilang "wakil CTO" karena tugasnya bekerja sama membantu CTO dalam mengambil keputusan terkait teknologi. Perusahaan yang menggunakan VP biasanya perusahaan kelas atas yang scope bisnisnya cukup luas sehingga CTO butuh partner untuk urusan teknologi.
Chief Technology Officer (CTO)
CTO adalah executive level. Executive level biasanya merupakan co-founder walaupun ga semuanya begitu. Biasanya CTO juga mendapatkan bagian saham dari perusahaan, sedangkan VP dan Head of IT hanya mendapatkan benefit layaknya karyawan biasa, walaupun ada juga perusahaan yang membagikan sahamnya pada mereka. Semuanya 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.
Nah, itulah beberapa jenis profesi terkait dunia perkodingan yang gw tahu. Sebenarnya masih ada lagi sih, 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 sekarang udah dapat gambaran mengenai profesi lulusan IT. Ga hanya Microsoft Word, Excel atau Powerpoint doangš¤£.