Dalam mengembangkan perangkat lunak atau sistem modern, tools atau
perangkat pembantu merupakan sebuah hal yang tidak dapat ditinggalkan lagi.
Jika pada masa lalu terdapat kebanggaan untuk programmer yang dapat bekerja
tanpa menggunakan tools, pandangan tersebut telah berubah sekarang. Pengunaan
tools untuk meningkatkan produktifitas telah menjadi hal yang diterima dan
lumrah dalam kalangan pengembang perangkat lunak.
Kalau begitu apa saja tools yang harus kita miliki untuk dapat
menjadi lebih produktif? Tulisan ini akan mendaftarkan beberapa tools pemrograman
yang saya gunakan untuk meningkatkan produktifitas. Perlu diingat bahwa saya
hanya akan menuliskan tools yang berhubungan dengan
pemrograman atau konstruksi perangkat lunak. Berbagai tools pada
bidang lain seperti rekayasa kebutuhan atau manajemen proyek tidak akan dibahas
pada tulisan ini.
Langsung saja, mari kita lihat berbagai tools yang
akan dapat meningkatan produktifitas kita dalam membangun perangkat lunak!
Tools untuk Desain
Desain yang dibahas pada tulisan ini merupakan desain dalam arti
perancangan perangkat lunak: UML, ERD, antarmuka, dll. Secara umum, ada dua
jenis desain yang sering dilakukan dalam mengembangkan perangkat lunak, yaitu
desain sistem (UML, ERD), dan desain antarmuka. Pentingnya perancangan sebelum
mulai menuliskan kode sendiri saya rasa tidak perlu lagi dijelaskan.
Anyway, tools rekomendasi saya yaitu:
- Untuk
desain sistem: Enterprise Architect atau Rational Rose. Khusus untuk ERD, cek MySQL
Workbench, meskipun ketika database yang digunakan bukan MySQL.
ERD yang dihasilkan oleh MySQL Workbench merupakan ERD terindah yang
pernah saya lihat.
- Untuk
perancangan antarmuka, sejak mengerjakan skripsi sampai sekarang pilihan
saya adalahBalsamiq
Mockups. Antarmuka cantik, sederhana, dan mudah digunakan. Apa
lagi yang kurang?
Tools untuk Source Code
Karena memang pekerjaan utamanya adalah menuliskan kode,
tentunya tools pada bagian ini tidak boleh dikompromikan. Apa
saja tools yang dapat membantu kita dalam meningkatkan
produktifitas penulisan kode?
Editor / IDE
Pertama pastinya editor atau IDE yang digunakan untuk menuliskan
kode. Untuk IDE sendiri sifatnya sangat spesifik bahasa, karena setiap bahasa
pastinya memiliki fitur-fitur khusus yang perlu juga dikembangkan implementasi
khususnya. Jadi saya hanya akan membahas beberapa editor yang direkomendasikan
di sini.
Rekomendasi utama saya untuk editor: vim dan Sublime Text.
Beberapa orang lain merekomendasikanemacs juga.
Pencarian File
Selama karir pemrograman anda, pernakah anda bingung dalam
mencari sebuah file lama yang entah disimpan di mana? Lupa nama file pastinya? grep,
sebuah tools yang sudah sangat tua, namun belum tergantikan dapat membantu
anda. Jika belum tau kegunaannya, pelajari
sekarang juga!
Jika berada di Windows, coba Power Grep.
Version Control
Programmer mana yang tidak menggunakan version control?
Sebelumnya saya telah menulis sedikit tentang version control, dan biasanya saya tidak perlu
lagi menjelaskan kenapa perangkat lunak jenis ini sangat penting bagi
programmer.
Jika belum ingat seberapa pentingnya, lihat kembali komik
berikut:
Untuk rekomendasi utama, karena pernah menulis ebook
tentang git, maka jelas rekomendasi utama saya adalah git :p
Tapi secara umum, kontrol versi modern memiliki fitur yang tidak jauh berbeda,
jadi cek jugahg,
atau bzr misalnya,
dan sesuaikan dengan keinginan tim anda.
Diff and Merge
Semua programmer pasti pernah melakukan penggabungan file yang
99% sama, dengan hanya beberapa baris yang berbeda. Atau mungkin anda perlu
mencari perbedaan nilai dari sebuah file teks berukuran 100MB. Untuk
masalah-masalah seperti ini, anda dapat menggunakan diff tools, yang biasanya
juga dipaketkan dengan version control.
KDiff3 adalah salah satu tool yang sering dipaketkan
dengan version kontrol, jadi tentunya sangat direkomendasikan. Diff and Merge
milik Perforce juga sangat bagus, jika butuh
fitur tambahan seperti perbandingan gambar.
Lint
Apa itu lint)?
Mengutip Wikipedia,
In
computer programming, lint was the name originally given to a
particular program that flagged some suspicious and non-portable constructs
(likely to be bugs) in C language source code. The term is now applied
generically to tools that flag suspicious usage in software written in any
computer language.
Jadi kira-kira software lint itu berperan untuk membaca kode
program kita, dan kemudian mencari pola-pola umum kode yang dapat berbahaya,
misalnya berpotensi menghasilkan lobang keamanan atau bug.
Tapi karena semua bahasa pemrograman berbeda-beda, tentunya
tools yang dimiliki untuk lint juga berbeda-beda. Misalnya, untuk Javascript
ada JSLint.
Yang penting adalah, setelah mengetahui keberadaan software ini, kedepannya
kita dapat mencari software sejenis untuk bahasa yang sedang digunakan, dan
mudah-mudahan jumlah bug dapat berkurang karena diingatkan oleh lint :)
Refactoring
Jika sudah bekerja pada suatu kode atau program sangat lama,
cepat atau lambat kita akan menemukan bahwa kode yang dituliskan selama ini
telah menjadi besar, kacau, dan tidak terawat. Istilah kerusakan kode karena
terlalu banyak perubahan dan perbaikan sejak masa awal pengembangan dikenal
dengan nama “Technical Debt”.
Technical Debt merupakan sesuatu yang tidak dapat dihindari,
karena banyak permasalahan dalam pengembangan perangkat lunak yang hanya
ditemukan ketika menuliskan kode. Pengalaman dan perencanaan sebanyak
apapun tidak dapat menggantikan penulisan kode langsung. Hal ini jugalah yang
menyebabkan saya tidak mempercayai orang-orang yang
berkata kemampuan menulis kode tidak begitu penting dalam pengembangan
perangkat lunak.
Anyway (jadi ngelantur :p).
Tools refactoring berguna untuk membantu kita dalam mengurangi
technical debt dengan memberikan fitur-fitur untuk memperbaiki kode yang sudah
tua, seperti membuat fungsi / method dari baris kode yang berulang kali
dituliskan atau mengganti nama kelas menjadi lebih deskriptif.
Seperti lint, tentu saja tools ini terikat dengan bahasa
pemrogramannya. Contohnya, untuk C# terdapatResharper yang
legendaris. Tools untuk masing-masing bahasa biasanya selalu bisa didapatkan
dengan mudah dan gratis. Jadi, tunggu apa lagi? Segera cari tools refactoring
untuk bahasa favorit anda!
Profiler
Jika menemukan masalah performa dalam program anda, apakah yang
pertama kali anda lakukan? Mencoba menebak di bagian mana program berjalan
paling lambat? Mencoba mengubah beberapa bagian sesuai dengan intuisi?
Jangan lagi menebak-nebak.
Profiler merupakan sebuah perangkat lunak yang dirancang khusus
untuk mengukur dan menampilkan waktu eksekusi kode kita, baris per barisnya.
Jika memiliki masalah dengan performa, yang harus anda lakukan pertama kali
adalah menjalankan profiler dan mencari di mana titik terlambat pada kode anda.
Setelah mendapatkan titik terlambat, barulah kita mulai melakukan optimasi
terhadap kode tersebut.
Seperti kata orang bijak, “measure once, cut twice”,
terutama jika anda tidak ingin berakhir seperti ini:
Sumber : http://bertzzie.com/post/39/tools-wajib-untuk-programmer