Apa yang kamu pikirkan saat mendengang istilah “software engineer?”
Manusia super jenius yang menciptakan hal-hal dari ketiadaan, seperti Bill Gares dan Alan Turing? Atau seseorang dalam ruangan gelap yang asik mendengarkan musik techno/lo-fi dan mengeetik sengan sangat cepat seperti The Matrix? Atau mungkin kamu membanyangkasn seorang software enginner korporat yang memakain headphone pergi ke daily stand up / scrum meeting di kantor? Atau bahkan pada digital nomads yang asyik membuat barisan kode di cafe-cafe dan pantai?
Apapaun yang kamu bayangkan, seorang software engineer adalah seseorang yang mengunakan prinsip-prinsip ilmu komputer untuk mengembangkan solusi berbentuk perangkat lunak yang memuni keinginan dan kebutuhan bisnis dan pelanggan. Software enginner membuat berbagai jenis solusi software seperti aplikasi desktop dan web, aplikasi seluler, permainan, sistem operasi, sistem jaringan, dan masih banyak lagi. Mereka melakukannya dengan menggunakan bahasa pemrogramman, frameworks, database, server, dan teknologi lain untuk mengubah ide menjadi sebuah produk akhir. Karena software engineer mengerjakan banyak jenis proyek, biasanya mereka juga mengambil berbagai peranan dan tanggungjawab.
Kepo kan apa saja yang dilakkan software engineer, job desc, jenjang karier, gaji, industri dan bagaimana cara menjadi software engineer? Baca terus yuk tulisan ini.
Ok sebelum memulai pembahasannya, munkin kamu juga sering mendengar istilah software developer. Apa sih bedanya?
Di dunia industri biasanya kedua istilah ini digunkan secara bergantian dengan maksud yang sama, pun dalam artikel ini. Namun untuk jelasnya kami bisa memahami ulasan berikut.
Seorang software engineer merupakan seseorang yang menggunakan ilmu komputer dan teknik untuk membuat solusi perangkat lunak. Mereka memahami cara barisan kode bekerja, dan cara terbaik serta efisien dalam menuliskannya.
Sementara, seorang software developer membantu proses kreatif dalam dalam merealisasikan solusi tersebut. Perumpamaannya, seorang software engineer merupakan arsitek dalam membuat rencana dan mendesain sistemnya, sementara software developer membangun solusi tersebut dengan kode-kode. Memang software engineer sedikit lebih luas dan rumit, namun percayalah, tidak ada yang memisahkan keduanya secara keras.
Lantas, apa saja sih yang dilakukan oleh software engineer?
Software engineer membantu pembuatan produk dari tujuan dan kebutuhan di awal hingga hasil jadinya.
Berikut merupakan contoh jobdesc saat saat menjadi software engineer di salah satu perusahaan ternama:
- Menganalisis dan secara sistematis mendekati persyaratan, menghasilkan solusi praktis jangka pendek dan jangka panjang yang meminimalkan kompleksitas dan memaksimalkan nilai
- Merancang dan membangun komponen modular dan subsistem yang dapat digunakan kembali menggunakan berbagai alat, layanan cloud, dan aplikasi yang sesuai untuk menskalakan kompleksitas dan menskalakan transfer data besar-besaran
- Sertakan keamanan, pemeliharaan, kegunaan kembali, dan kemampuan pengujian saat mengembangkan solusi perangkat lunak dan peninjauan kode
- Menerapkan dan menyesuaikan konsep pengembangan perangkat lunak dan praktik terbaik
- Bekerja sama dengan teknisi, produk, operasi data scientist lainnya
Wow, banyak dan beragam ya pekerjaanya. Karena ini pula software enginner bisa memiliki jenjang dan pilih karier yang luas. Apa saja itu? Di Amerika diperkiraan kebutuhan software engineer dalam sepuluh tahun kedepan meningkat sebanyak 21%, sementara pekerjan lainnya rata-rata hanya 5%.
Berikut merupakan beberapa karier yang mungkin dilakukan oleh software engineer.
- Pengembang Web/ Web Developer
Membuat situs web dan aplikasi untuk menyajikan informasi dan layanan di web. Front-end web developer memastikan bahwa informasi dapat dibaca dan terlibat dengan pengalaman pengguna yang baik. Back-end web developer, memastikan fungsionalitas yang tepat, dan bahwa aplikasi cepat dimuat di seluruh perangkat, kecepatan koneksi internet, dan bahasa yang dapat digunakan.
- Mobile Developer
Membangun aplikasi untuk sistem operasi seluler iOS dan Android. Mereka memastikan bahwa aplikasi yang sama berfungsi dengan lancar di berbagai ukuran layar, versi sistem operasi, dan platform.
- Testi & Quality Assurance Engineer
Bertanggung jawab untuk menangkap bug dalam kode dan memastikan bahwa basis kode berkualitas tinggi.
- System engineer
Membuat sistem yang merupakan perpaduan antara perangkat keras dan perangkat lunak. Mereka fokus pada masalah yang lebih besar dalam desain dan pembuatan sistem, seperti persyaratan, keandalan, kinerja, pemeliharaan, dan logistik.
- Machine learning engineer/ Data scientist
Ilmuwan data menggunakan statistik dan algoritme pembelajaran mesin untuk memecahkan masalah bisnis yang kritis. Kekuatan utama mereka terletak pada menjelaskan temuan mereka dengan jelas sehingga bisnis dapat membuat keputusan yang tepat.
- Data scientist / Insinyur Data
Insinyur data mempersiapkan data untuk dikonsumsi oleh data scientist. Beberapa tugas mereka termasuk mendapatkan data dari sumbernya, membersihkannya, mengubahnya, dan menyimpannya sehingga dapat diakses dan digunakan secara efisien oleh orang lain.
- Database administrator/ Administrator Basis Data
Administrator database merancang dan memelihara database. Beberapa tugas mereka termasuk memecahkan masalah dengan database, memulihkan data, dan membuat protokol kontrol akses.
- Project manager/ Manajer proyek
Manajer proyek mengawasi proyek secara menyeluruh, mulai dari perencanaan hingga pengadaan hingga pelaksanaan proyek. Meskipun tidak semua manajer proyek adalah insinyur perangkat lunak, mereka mendapat manfaat dari memiliki pengetahuan dan keterampilan teknik untuk merencanakan dan bekerja dengan insinyur secara efektif untuk pengiriman proyek. Manajer proyek biasanya menjadi kontak pertama untuk masalah atau ketidaksesuaian dalam proyek.
- Manager/product owner (Manajer / Pemilik Produk)
Pemilik produk bertanggung jawab untuk memiliki visi produk yang perlu dibangun, dan menyampaikan visi tersebut kepada tim pengembangan. Mereka memahami pasar, pelanggan dan bisnis, dan mengapa produk harus seperti apa adanya. Sekali lagi, tidak semua manajer / pemilik produk harus menjadi insinyur, tetapi mereka benar-benar dapat memperoleh manfaat dari keterampilan ini.
- Scrum Master
Seorang master scrum memfasilitasi proses pengembangan untuk tim pengembangan Agile. Beberapa tugas mereka termasuk menghilangkan hambatan yang menghambat kemajuan tim, dan membantu tim mencapai konsensus untuk apa yang dapat dicapai selama periode tertentu.
Cara menjadi software engineer
Jelas, kemampuan koding yang cakap dibutuhkan dalam pekerjaan ini. Bahasa apa ya yang banayak digunakan, skill apa saja yang dibutuhkan, atau berapa sih gaji software developer? Tunggu ulasannya di artikel selanjutnya ya!