Newest Post

// Posted by :Unknown // On :Selasa, 14 Oktober 2014

Apa yang membedakan seorang koki dengan seorang chef? Orang awam banyak yang mengira kalau koki dan chef itu sama. Bedanya koki dalam bahasa Indonesia, sedangkan chef dalam bahasa Inggris. Yaaa… secara bahasa memang benar sih, tetapi secara profesional, kedua istilah ini memiliki pengertian yang berbeda. Di mana letak perbedaannya? Menurut Wikipedia, perbedaannya terletak pada kreativitas. Ya, KREATIVITAS! (sengaja diulang) Seorang koki hanya sekedar membuat makanan berdasarkan resep turun temurun dari restorannya, sedangkan chef mempunyai kreativitas untuk mengimprovisasi resep masakan yang sudah ada bahkan membuat masakan baru yang sebelumnya belum pernah ada. Lalu jika anda sebagai pecinta makanan, mana yang lebih anda pilih, restoran fast food dengan jenis makanan yang itu – itu saja, atau restoran berkualitas yang makanannya selalu berkembang mengikuti selera pasar?
Mengapa kita menggunakan analogi seperti ini? Sama seperti kasus koki dan chef, banyak juga orang yang memiliki persepsi yang salah mengenai pemrograman. Programmer dan software engineer adalah berbeda. Programmer diibaratkan seperti koki, sedangkan chefnya adalah software engineer. Programmer hanya sebatas membuat kode program sesuai dengan keinginan client, sedangkan software engineer adalah orang yang merancang, membangun, dan memelihara  sebuah program. Mana yang lebih sulit?
Lalu, bagaimana cara agar bisa menjadi software engineer yang hebat? Segala sesuatu di dunia ini, bukan hanya menjadi software engineer, dapat dipahami dan dikuasai asalkan tahu konsep dasarnya. Seorang chef yang handal tahu betul fungsi dari bahan – bahan masakan. Garam untuk membuat masakan menjadi asin, gula untuk memaniskan masakan, dan merica untuk menambahkan rasa pedas. Selain bahan masakan harus dikuasai, pemilihan bahan dan alat juga harus dikuasai secara maksimal. Kapan harus menggunakan oven, kapan harus menggunakan panci, dan kapan harus menggunakan penggorengan. Bahkan, seorang chef yang benar – benar hebat, hafal semua urutan bahan dan alat yang digunakan. Jadi, sebelum memasak, ia meletakkan bahan dan alat yang akan digunakan secara berurutan. Ini akan mempersingkat waktunya membuat masakan karena chef tersebut tidak perlu membuang – buang waktu untuk mencari bahan dan alat yang digunakan selanjutnya.
Konsep apa yang harus dikuasai agar bisa menjadi software engineer yang hebat? Seorang software engineer tidak pernah jauh – jauh dari yang namanya program. Lalu, bagaimana cara pembuatan sebuah program agar dapat selesai dalam waktu yang cepat dan efisien? Jangan kira itu mudah. Bahkan menyusun puzzle pun membutuhkan strategi agar dapat selesai secepat mungkin. Potongan puzzle terbagi menjadi tiga. Yang pertama, potongan puzzle untuk keempat sudut memiliki dua sisi yang datar (tidak memiliki lubang atau tonjolan). Yang kedua, potongan puzzle untuk menghubungkan keempat sudut memiliki satu sisi datar. Dan yang ketiga, potongan puzzle untuk mengisi bagian dalam puzzle tidak memiliki sisi datar. Cara kita mengatur potongan – potongan puzzle ini menjadi tiga bagianlah yang disebut dengan data structure. Lalu, setelah mengelompokkan potongan puzzle menjadi tiga bagian,  langkah apa yang selanjutnya kita lakukan? Bagaimana menyelesaikan puzzle ini dengan cepat? Strateginya, bagi potongan puzzle kedalam tiga kelompok tadi. Mulai dari keempat sudut menggunakan potongan kelompok pertama, hubungkan keempat sudut menggunakan potongan kelompok kedua, dan terakhir isi tengahnya menggunakan potongan kelompok ketiga. Selain itu kita juga dapat mengelompokkan potongan puzzle berdasarkan gradasi warna yang sejenis, kecocokan antara lubang dan tonjolan, maupun pola potongan yang saling melengkapi. Jadi, mana yang lebih cepat, menyusun puzzle dengan atau tanpa strategi?
Dari contoh permainan puzzle di atas kita bisa simak ada 2 hal yang dilakukan yaitu mengatur kepingan-kepingan puzzle sedemikian rupa dan melakukan penyusunan puzzle dengan urutan atau aturan tertentu.  Dalam pembuatan sebuah program yang tentunya memiliki sejumlah data yang harus diproses atau diolahnya maka pengaturan data tersebut juga penting.  Inilah yang dinamakan dengan Data Structure.  Coba bayangkan apa yang terjadi kalau kepingan puzle itu dibiarkan berserakan tidak teratur maka akan memperlambat penyelesaian puzzle ini karena akan cukuk banyak waktu terbuang untuk mencari setiap keping yang diinginkan.  Sedangkan strategi itu biasa dinamakan Algorithm.
Kedua komponen inilah (data structure dan algoritma) yang mendasari berjalannya sebuah program. Program terdiri dari data – data  yang harus diorganisir sedangkan pemilihan algoritma yang tepat dapat membuat pengolahan data menjadi  lebih cepat. Jika seorang software engineer tidak memahami konsep kedua komponen ini dengan benar, maka akan dihasilkan program yang “asal jadi”. Programnya memang selesai, tetapi tidak memenuhi apa yang diinginkan. Seseorang bisa disebut sebagai software engineer yang hebat jika ia bisa menguasai konsep dasar kedua komponen ini.
Jadi, sudah siapkah Anda untuk menjadi software engineer yang hebat?

Leave a Reply

Subscribe to Posts | Subscribe to Comments

// Copyright © Adjie Shaevi Evirian //Anime-Note//Powered by Blogger // Designed by Johanes Djogan //