7 praktik pengkodean kunci untuk pengembang tangkas

Pengembangan perangkat lunak tangkas bukan hanya tentang prinsip dan praktik tangkas. Agar berhasil dalam merilis perangkat lunak yang berdampak positif pada pengguna akhir, mengatasi hutang teknis, dan menerapkan dengan andal, tim pengembangan juga harus mempertimbangkan praktik pengkodean dan standar arsitektur yang mendorong ketangkasan.

Pertimbangan yang lebih penting dipertaruhkan untuk organisasi teknologi. Meskipun sulit untuk mengembangkan perangkat lunak, bahkan lebih sulit untuk menerapkan peningkatan dan peningkatan secara teratur dalam waktu yang lama. Praktik Devops CI / CD dan IAC (infrastruktur sebagai kode) sebagian mengatasi satu faktor penting karena otomatisasi memungkinkan cara yang andal dan dapat diulang untuk menerapkan aplikasi. Tambahkan pengujian berkelanjutan, dan tim pengembangan memiliki cara untuk memvalidasi bahwa perubahan kode tidak memengaruhi fungsionalitas yang ada.

Namun, seiring bertambahnya usia aplikasi, pengembang asli beralih ke proyek lain dan terkadang perusahaan lain. Ketika pengembang baru bergabung dengan tim, mereka harus mempelajari arsitektur perangkat lunak dan memahami kodenya sebelum mereka dapat mengubahnya dengan andal dan efisien.

Selain itu, pengembang yang membangun aplikasi sering kali ingin mengembangkan aplikasi baru. Mungkin terasa nyaman dan aman untuk tetap melekat pada aplikasi yang Anda kembangkan, tetapi terikat pada kode Anda tidak sehat untuk karier atau organisasi Anda.

Cara terbaik untuk beralih ke inisiatif pengembangan perangkat lunak yang baru dan menarik adalah dengan membuat arsitektur, aplikasi, dan kode Anda mudah didukung oleh pengembang lain. Tim dan pengembang yang tangkas harus membangun dan menerapkan praktik pengkodean yang mendukung pengembangan perangkat lunak yang sedang berlangsung.

1. Jangan menemukan kembali roda

Aturan pertama pengkodean: Jangan membuat kode sesuatu yang tidak perlu diberi kode! Bagaimana?

  • Pertimbangkan untuk mengajukan pertanyaan tentang persyaratan. Mengapa fitur penting? Siapa yang diuntungkan? Lebih khusus lagi, jelajahi opsi noncoding untuk menyelesaikan masalah. Terkadang solusi terbaik bukanlah solusi sama sekali.
  • Apakah seseorang di organisasi Anda sudah memberi kode untuk solusi serupa? Mungkin ada layanan mikro yang hanya membutuhkan peningkatan atau pustaka perangkat lunak yang perlu sedikit peningkatan? Pastikan untuk melihat basis kode organisasi Anda sebelum membuat kode sesuatu yang baru.
  • Apakah ada solusi pihak ketiga, termasuk alat SaaS yang terjangkau atau opsi open source, yang memenuhi persyaratan minimal?
  • Pernahkah Anda melihat repositori pengkodean terbuka seperti GitHub untuk contoh kode dan cuplikan yang memenuhi persyaratan kepatuhan organisasi Anda?

2. Pertimbangkan opsi pengembangan kode rendah

Jika Anda memang perlu membuat kode solusi, mungkin platform kode rendah alternatif dapat memungkinkan pengembangan kemampuan lebih efisien dibandingkan dengan pengkodean dalam bahasa pengembangan seperti Java, .Net, PHP, dan JavaScript.

Platform kode rendah seperti Caspio, Quick Base, Appian, OutSystems, dan Vantiq semuanya menyediakan alat untuk mengembangkan aplikasi dengan sedikit kode dan terkadang bahkan tanpa coding sama sekali. Setiap platform berspesialisasi dalam kapabilitas yang berbeda dan karenanya cocok untuk kelas aplikasi tertentu. Caspio, misalnya, memudahkan untuk menyematkan formulir dan alur kerja ke situs web. Quick Base memiliki alur kerja yang kuat dan kemampuan otomatisasi, dan arsitektur berbasis peristiwa Vantiq cocok untuk IoT dan aplikasi data waktu nyata lainnya.

Ada kalanya pengkodean diperlukan, tetapi pengembang juga harus mahir dalam satu atau lebih opsi pengembangan kode rendah dan mempertimbangkannya untuk kasus penggunaan yang sesuai.  

3. Mengotomatiskan pengujian

Selain menulis kode yang memenuhi persyaratan, salah satu hal terpenting yang perlu dilakukan pengembang adalah mengujinya. Praktik pengembangan yang digerakkan oleh pengujian dan alat pengujian otomatis telah matang, dan tim pengembangan harus menyertakan pengujian unit, regresi, kinerja, dan keamanan sebagai bagian dari perkiraan tangkas mereka.

Selain memiliki pengujian untuk memvalidasi build dan rilis, pengujian ini juga membantu membuat kode lebih dapat didukung. Tes adalah dokumentasi dan membuat kontrak tentang bagaimana kode seharusnya berperilaku. Saat developer baru bergabung dengan tim dan secara tidak sengaja menerapkan perubahan yang buruk, pengujian berkelanjutan akan menghentikan build dan memberikan masukan yang berarti kepada developer untuk mengatasi masalah tersebut dengan cepat.

4. Eksternalisasikan semua parameter konfigurasi

Seharusnya tidak ada alasan bagi pengembang untuk pernah melakukan pengaturan tingkat sistem kode keras, nama pengguna dan sandi, atau informasi konfigurasi lainnya di dalam kode. Saya telah melihat pengembang mengambil jalan pintas saat mengembangkan prototipe yang menemukan jalan mereka ke lingkungan produksi. Dalam arsitektur masa kini, hal ini tidak boleh dilakukan. Pengkodean keras bukanlah hutang teknis tetapi praktik pengodean yang malas dan tidak bertanggung jawab yang dapat memiliki konsekuensi yang signifikan. Jika kode dapat diakses secara tidak sengaja, hal itu menciptakan kerentanan keamanan jika titik akhir atau kredensial akses terungkap.

Selangkah lebih maju, ketika kode warisan sedang dikerjakan, menangani semua konfigurasi dan parameter hard-code harus menjadi prioritas utang teknis yang tidak dapat dinegosiasikan.

5. Ikuti konvensi penamaan dan sertakan komentar agar kode dapat dibaca

Saya pernah bekerja dengan pengembang yang sangat berbakat yang tidak tahu bahasa Inggris dengan baik dan bukan juru ketik terbaik. Dia akan membuat instance objek dengan nama seperti a , b, dan c dan kemudian membuat variabel lokal bernama zz , yy , xx . Dia akan berkomitmen untuk membersihkan ini sebelum rilis tetapi jarang ditindaklanjuti.

Anda tidak perlu memiliki program berpasangan atau massa untuk mengetahui bahwa ini adalah praktik yang buruk.

Tim harus mengadopsi konvensi penamaan seperti Panduan Gaya JavaScript Google dan Panduan Gaya Java dan berkomitmen untuk memberi komentar kode setidaknya pada tingkat modular dan idealnya di tingkat kelas. Selain itu, organisasi harus mempertimbangkan untuk menggunakan alat analisis kode statis yang memberikan umpan balik kepada pengembang saat kode memerlukan pemfaktoran ulang untuk faktor struktur dan keterbacaan.

6. Periksa kode ke kontrol versi sesering mungkin

Jika Anda tidak memeriksa kode ke kontrol versi setiap hari atau lebih sering, hal itu dapat membuat konflik dan pemblokiran lain yang memengaruhi tim. Satu kesalahan kecil dapat menyebabkan tim yang gesit kehilangan komitmen sprint mereka atau membuat pekerjaan tambahan untuk menyelesaikan dependensi.

Tim harus menyetujui konvensi untuk memeriksa kode yang belum siap untuk produksi. Pendekatan konvensional mencakup tanda fitur dan percabangan Git.

7. Hindari mengkode kepahlawanan dan kerumitan

Sebagian besar pengembang yang saya kenal menjadi insinyur perangkat lunak profesional karena mereka suka memecahkan tantangan pengkodean. Pengkodean adalah seni, sains, dan kerajinan, dan pengembang yang lebih baik mencari tugas pengkodean yang merangsang pemikiran dan penerapan yang elegan.

Kecuali ada garis abu-abu antara menyelesaikan tugas bisnis dan teknis yang menantang versus pengkodean heroik yang meninggalkan pengembang berikutnya dengan kode yang sulit dipahami dan rumit untuk dipelihara.

Bagi kita yang telah melakukan pengkodean beberapa waktu, kita ingat kemudahan Perl one-liners atau menggunakan templat bersarang di C ++. Terkadang ada alasan bagus untuk menggunakan pendekatan ini, tetapi jika sekelompok pengembang baru tidak memahami teknik ini, lebih sulit untuk mengubah kodenya. Terkadang praktik pengkodean yang sederhana namun kurang elegan lebih baik.

Mendorong ketangkasan dalam pengembangan perangkat lunak yang gesit

Ritual yang tertanam dalam scrum dan pengembangan tangkas, termasuk komitmen, standup, tinjauan sprint, dan retrospektif sekarang menjadi praktik yang terbukti untuk memungkinkan kolaborasi tim dan mendorong implementasi yang sukses. Tetapi untuk mendemonstrasikan ketangkasan dalam waktu lama, pengembang harus mengambil tanggung jawab dan praktik pengkodean yang memungkinkan dukungan jangka panjang dan perluasan kode yang mereka kembangkan.

Tim pengembang harus mengambil pandangan kritis terhadap praktik pengkodean mereka. Tidak hanya cukup baik untuk demo dan rilis hari ini; juga penting untuk memungkinkan orang lain mengelola aplikasi dan kode dengan mudah.