Belajar Menjadi Engineer

Sepuluh

Hari ini, topik khusus, yaitu terkait dunia kerja. Ah, jadi ingat setahun yang lalu (sampai sekarang mungkin) belum jadi siapa-siapa. Dari skill teknis dan non-teknis, masih acak-acakan, sekarang mungkin sudah lebih baik. Ditinjau dari jenis pekerjaan, saya sebenarnya tergolong ke seorang front-end web engineer, yaitu seseorang yang berkecimuk di bidang tampilan web, baik itu dari segi desain maupun interaksinya. Mengapa engineer, bukan programmer? Ini juga adalah salah satu yang sering digalakkan oleh rekan kerja saya di kantor, bahwasanya tugas saya adalah untuk menjadi engineer, bukan programmer semata yang hanya untuk “ngoding”.

the-life-of-a-software-engineer
Cerita dari Seorang Software Engineer

Menjadi engineer di bidang ini adalah hal baru bagi saya. Sebelumnya, ketika diberikan sebuah task dengan sebuah spesifikasi, saya langsung mengerjakannya tanpa bertanya-tanya dan melakukan improvisasi sendiri. Fokus saya hanyalah di mengerjakan task sesuai dengan spesifikasi tersebut. Saya sebenarnya sudah sering melakukan proses engineering dalam bidang-bidang lainnya secara tak sadar, seperti ketika saya masih sering mengikuti turnamen, tim saya sering memberikan PR (backlog) ke saya untuk mempelajari beberapa metode/karakter yang perlu saya pelajari untuk memperkaya strategi tim. PR itu pun tidak saya terima begitu saja. Saya bertanya mengenai alasan kenapa saya perlu melakukan hal tersebut (story). Ketika saya sudah memiliki waktu, saya mulai merencanakan (development design) bagaimana caranya untuk melakukan hal tersebut. Setelah itu, saya mulai melakukan hal tersebut (implementation), hingga akhirnya ketika berhasil saya pelajari/kuasai, maka task tersebut selesai (done). Akan tetapi, ketika berhadapan dengan engineering yang asli, tatkala dulu, saya tidak memikirkan hal-hal tersebut. Setelah memasuki dunia kerja, saya baru sadar akan pentingnya hal-hal tersebut. Saya sadar bahwa ketika diberikan sebuah spesifikasi, kita harus proaktif merespon, agar kita dapat menambah wawasan kita sendiri. Contohnya, spesifikasi yang diberikan kepada saya adalah A, lalu saya bertanya kenapa A, padahal ada alternatif lain seperti B, C, dan D. Dari jawaban atas pertanyaan tersebut, saya menambah wawasan saya sendiri, terutama mengenai kelebihan dan kekurangan dari masing-masing opsi. Adapun apabila alternatif yang saya berikan ternyata memang terbukti lebih banyak memberikan dampak yang positif, saya dapat membantu mengembangkan “benda” yang biasa kita sebut software atau perangkat lunak tersebut menjadi sesuatu yang lebih baik.

treecomicbig1
Identifikasi Kebutuhan User adalah Kunci dari Seorang Engineer

Pasti semua software engineer yang dulu pernah mendapatkan pelajaran mengenai perancangan perangkat lunak sudah sangat familiar dengan gambar diatas. Gambar diatas adalah ilustrasi bagaimana perbedaan pandangan antara tim proyek dan user dapat menyebabkan kompleksitas solusi yang luar biasa. Hal ini disebabkan karena user melihat dari sisi product, sedangkan tim proyek melihat dari sisi engineering. Perbedaan sudut pandang ini yang biasanya menjadikan salah identifikasi dari kebutuhan user, yang berujung pada salah implementasi product.

Saya cukup senang dengan bidang saya sekarang. Selain mendapat pelajaran mengenai how to be a/an good/effective engineer, saya juga banyak belajar dari kodingan yang saya buat. Saya teringat latar belakang dari tugas akhir saya yang berisi tentang perbedaan antara bahasa mesin dan bahasa manusia. Bahasa manusia dapat memiliki ambiguitas karena serangkaian kata dapat memiliki lebih dari satu makna dan satu makna dapat memiliki beberapa alternatif rangkaian kata. Berbeda dengan bahasa mesin, apabila X maka Y, maka akan tetap demikian hingga kita mengubahnya. Pada bagian ini, kodingan mengajari saya untuk selalu konsisten. Selain itu, walaupun pada umumnya kita membaca kodingan dari atas ke bawah, tidak semuanya dieksekusi secara berurutan (sinkron), tetapi bisa juga secara tidak berurutan (asinkron). Bisa jadi baris-baris yang lebih bawah dieksekusi terlebih dahulu dibandingkan baris sebelumnya karena sifat asinkron tersebut. Di bagian ini, kodingan mengajari saya untuk selalu fleksibel. Selain itu, ditinjau dari masing-masing kemampuan tersebut, kemampuan sinkron mengajari saya untuk mengerjakan sesuatu secara terstruktur dan sistematis, sedangkan asinkron mengajari saya untuk bersifat independen. Ada saatnya kita mengerjakan sesuatu secara terstruktur dan sistematis, tetapi ada juga saatnya kita bekerja secara independen tanpa perlu menunggu orang lain.

Advertisements

Leave a Reply - No foul language and spam please :)

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s