Skip to content
This repository has been archived by the owner on Mar 10, 2022. It is now read-only.

Latest commit

 

History

History
76 lines (51 loc) · 9.14 KB

06-Practicing.md

File metadata and controls

76 lines (51 loc) · 9.14 KB

The Clean Coder

Chapter 6

Practicing

Content:

Chapter ini menginformasikan cara - cara bagaimana programmer dapat melatih kemampuan mereka. Dalam urusan meningkatkan kinerja, latihan sangat penting bagi pekerja profesional. Pemain sepak bola melatih kekuatan fisiknya, pengacara melatih argumennya, dan dokter melatih kemampuan bedahnya. Dalam bidang pengembangan perangkat lunak pun latihan juga menjadi bagian penting. Semua pekerja profesional melatih keahlian mereka dengan latihan - latihan yang mempertajam kemampuan mereka. Ketika dibutuhkan performa, para profesional berlatih.

SOME BACKGROUND ON PRACTICING

    Hal yang sama juga dilakukan oleh Programmer, dimana Programmer mengasah kemampuan mereka dengan berlatih banyak bahasa Pemrograman. Meskipun begitu, banyak programmer pada umumnya tidak benar - benar berlatih. Programmer terlalu sibuk membuat program dan tidak melatih kemampuan mereka. Memang pada zaman dahulu, programmer tidak memerlukan respon yang cepat dan jari yang lincah. Pada masa tersebut juga belum ditemukan siklus pendek dari TDD sehingga kita tidak memerlukan latihan yang tepat.

Twenty-Two Zeros

    Contoh paling sederhana dari latihan dalam pengembangan perangkat lunak adalah kode “Hello, World!”. Hampir semua programmer menggunakan “Hello, World!” sebagai latihan pertamanya ketika mencoba bahasa baru. Meskipun program tersebut dapat dikategorikan sebagai program latihan, programmer tidak benar-benar membuat latihan sebagai rutinitasnya. Mungkin itu dikarenakan waktu programmer-programmer terdahulu telah habis digunakan untuk menunggu hasil compile dan melakukan debugging.

    Tetapi banyak sekali hal yang sudah berubah di saat ini. Sebelumnya, spesifikasi komputer sangat rendah jika dibandingkan dengan spesifikasi komputer saat ini. Perbandingannya bisa mencapat 1022 kali. Angka tersebut merupakan angka yang sangat besar.

    Dengan spesifikasi demikian, semakin banyak bahasa pemrograman yang lebih baik beserta alat - alat bantu yang ada. Tetapi dasar dari pengkodean tidak berubah banyak. Kode yang ada pada tahun 2010 masih dapat di mengerti oleh programmer dari 1960an. Cetakan yang kita manipulasi tidak berubah banyak dalam empat dekade ini.

Turnaround Time

    Dalam perkembangannya, komputer sekarang sudah 1022 kali lebih baik dari komputer generasi pertama. Pada tahun 60an, programmer harus menunggu satu atau dua hari untuk menunggu hasil kompilasi. Di tahun 70an kecepatan kompilasi meningkat, program dengan 50.000 baris membutuhkan waktu build sebesar 45 menit. Kecepatan kompilasi terus meningkat hingga sekarang program java beserta unit testnya dengan baris sebanyak 64.000 membutuhkan waktu kurang dari 4 menit. Cepatnya waktu kompilasi membuat programmer juga harus dapat memecahkan masalah dan mengambil keputusan dengan cepat.

    Melakukan apapun dengan cepat membutuhkan banyak latihan. Ambil pertandingan Taekwondo sebagai contoh. Masing-masing petarung harus mampu menebak apa yang akan dilakukan lawannya dalam waktu milisekon. Akan sulit untuk melakukan analisa mendalam untuk memilih respon yang terbaik terhadap serangan lawan. Dalam waktu secepat itu, tubuh bereaksi secara otomatis.     Supaya tubuh dapat menghasilkan reaksi yang tepat dibutuhkan latihan. Dalam kasus pengembangan perangkat lunak, programmer berlatih dengan cara mengulang-ulang suatu masalah dan penyelesaiannya sehingga dapat mengetahuinya secara di luar kepala.

THE CODING DOJO

    Pada tahun 2005, penulis menghadiri konfrensi XP2005 di Sheffield, Inggris. Ia mengikuti sesi yang bernama Coding Dojo. Dalam sesi itu, instruktur mengajak semua peserta live code bersama-sama untuk membuat Game of Life dari Conway. Itulah yang disebut dengan ‘Kata’.

    Sejak itu, banyak programmer yang mengadopsi mataphor dari seni bela diri untuk sesi latihannya. Sesekali beberapa programmer akan berkumpul di Dojo dan berlatih bersama, mirip seperti yang dilakukan seniman bela diri. Di saat lain, programmer juga berlatih sendirian, juga mirip seperti yang dilakukan seniman bela diri.

Terdapat berbagai kegiatan yang dilakukan di Dojo, diantaranya :

Kata

    Dalam seni bela diri, sebuah Kata adalah set yang tepat dari gerakan koreografi yang mensimulasikan sebuah sisi pertarungan. Tujuan dari gerakan ini adalah kesempurnaan. Gerakan baik dari Kata sangat indah untuk dilihat.

    Pada Pemrograman, Kata merupakan set yang tepat dari gerakan koreografi penekanan tombol dan pergerakan mouse yang mensimulasikan penyelesaian dari persoalan pemrograman. Dalam konteks ini, programmer di tuntut untuk mempelajari gerakan dan keputusan dalam penyelesaian permasalahan.

    Tujuan dari pembelajaran sama seperti tujuan awal Kata yaitu kesempurnaan. Programmer diminta untuk berlatih secara berulang - ulang pemikiran dan jari - jari dalam pergerakan dan reaksi. Setelah banyak berlatih, programmer akan menemukan peningkatan efisiensi dalam pergerakan atau penyelesaian masalah.

    Mempelajari beberapa set Kata merupakan cara yang bagus untuk melatih disiplin seperti TDD dan CI. Dan yang paling penting, Kata merupakan pembelajaran yang baik untuk melatih alam bawah sadar dengan persoalan/solusi yang umum ditemukan sehingga programmer dapat dengan mudah menyelesaikan persoalan yang sebenarnya dalam dunia nyata.

Wasa

    Wasa dapat dianalogikan dengan Kata yang terdiri dari dua orang. Rutin yang dilakukan adalah penghafalan dan pengulangan. Satu orang bertindak sebagai penyerang dan satu orang lainnya bertindak sebagai penjaga dan peran ini akan dirotasi terus menerus.

    Programmers dapat melatih Wasa dengan mengikuti gaya permainan ping-pong. Kedua pihak memilih sebuah Kata atau persoalan yang sederhana. Salah satu pihak membuat Unit Test dan pihak yang lain harus membuat Unit Test tersebut dapat lewat.

Randori

    Randori merupakan gaya bebas dalam pertarungan. Dalam pemrograman, kelompok membuat beberapa jenis skenario dan menetapkan skenario tersebut. Kemudian salah satu orang diminta sebagai penjaga, sedangkan yang lainnya menyerang secara berurutan. Beberapa skenario juga dapat digunakan seperti dua orang penjaga dan dua orang penyerang, dan lain sebagainya.

    Dalam pemrograman, salah satu cara untuk melatih Randori adalah dengan memproyeksikan layar ke dinding, kemudian satu orang mengkodingkan Test. Orang berikutnya harus membuat Test tersebut lewat dan kemudian membuat Test berikutnya.

    Dengan latihan ini, programmer akan mendapatkan wawasan baru bagaimana orang lain memecahkan permasalahan tersebut. Dengan wawasan ini, programmer dapat meningkatkan kemampuan dalam penyelesaian masalah.

BROADENING YOUR EXPERIENCE

    Programmer professional sering kali mendapati ketidakcukupan dari jenis - jenis permasalahan yang dihadapi. Pekerja sering kali hanya menggunakan satu bahasa, platform, dan domain dimana pekerjaan mereka gunakan. Hal ini tentu saja membuat programmer menjadi tidak siap untuk menghadapi perubahan - perubahan yang terjadi dalam industri pemrograman.

Open Source

    Salah satu cara untuk mempersiapkan hal tersebut adalah dengan berkontribusi pada proyek open-source. Sangat banyak proyek - proyek open-source yang ada, dan dari proyek tersebut, programmer dapat melatih kemampuan pemrograman mereka.

Practice Ethics

    Bukanlah pekerjaan yang membuat resume tetap baik. Pasien tidak membayar dokter untuk belajar ilmu kedokteran, penggemar sepakbola tidak membayar pemain untuk berlatih di lapangan dan perusahaan tidak membayar programmer untuk berlatih.

    Programmer sendiri yang harus meluangkan waktu untuk mempelajari hal - hal baru. Jangan hanya menggunakan satu bahasa maupun platforms, pelajari bahasa - bahasa lain untuk meningkatkan terus kemampuan.

CONCLUSION

    Bagaimanapun juga, semua professional tetap berlatih. Mereka melakukan ini karena mereka peduli akan pekerjaan terbaik yang dapat mereka lakukan. Mereka mengatur waktu sendiri untuk berlatih karena mereka sadar itu merupakan tanggung jawab mereka, bukan perusahaan ataupun instansi lainnya. Melatih diri bukan untuk agar diri sendiri mendapatkan bayaran, tetapi untuk kedepannya bayaran yang lebih tinggi lagi.