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.
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?