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.

Real programmers set the universal constants at the start such that the universe evolves to contain the disk with the data they want.

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:

  1. 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.
  2. Untuk perancangan antarmuka, sejak mengerjakan skripsi sampai sekarang pilihan saya adalah Balsamiq 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 merekomendasikan emacs 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:

NOTFinal.doc

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 juga hg, 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# terdapat Resharper 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:

MEASURE ONCE, CUT TWICE!

Akhir Kata

Masih terdapat sangat banyak tools lain yang dapat berguna untuk meningkatkan produktifitas programmer. Tulisan ini hanya memberikan daftar tools yang paling penting dan berguna. Jika memiliki masukan tools tambahan lainnya, silahkan tinggalkan komentar anda, untuk saya bahas pada tulisan-tulisan berikutnya!

comments powered by Disqus

Daftar Isi