Komunitas pengembangan perangkat lunak sedang terlibat dalam diskusi sengit tentang apa yang membedakan engineer yang terampil secara teknis dengan mereka yang memiliki selera baik. Perdebatan ini melampaui kemampuan coding, menyentuh bagaimana engineer membuat keputusan, beradaptasi dengan proyek yang berbeda, dan menyeimbangkan prioritas yang saling bertentangan dalam skenario dunia nyata.
Perbedaan Antara Keterampilan dan Selera
Percakapan berpusat pada ide fundamental: kompetensi teknis dan selera engineering adalah kualitas yang terpisah. Seorang engineer mungkin menulis kode yang sempurna tetapi secara konsisten membuat keputusan arsitektur yang buruk. Sebaliknya, seseorang dengan keterampilan teknis terbatas mungkin memiliki pemahaman yang sangat baik tentang pendekatan mana yang paling cocok untuk situasi yang berbeda. Perbedaan ini telah memicu perdebatan intens tentang bagaimana industri mengevaluasi dan mengembangkan talenta.
Anggota komunitas telah berbagi pengalaman pribadi yang menggambarkan poin ini. Banyak yang menggambarkan pertemuan dengan engineer yang sangat terampil namun secara kaku menerapkan solusi yang sama tanpa mempertimbangkan konteks, yang mengarah pada sistem yang terlalu rumit dan menyelesaikan masalah yang salah. Yang lain menunjuk pada rekan kerja yang mungkin bukan programmer terkuat tetapi secara konsisten memandu proyek menuju hasil yang sukses melalui pengambilan keputusan yang lebih baik.
Faktor Fleksibilitas
Tema kunci yang muncul dari diskusi adalah pentingnya kemampuan beradaptasi. Engineer dengan selera baik dilaporkan menyesuaikan pendekatan mereka berdasarkan kebutuhan proyek, ukuran tim, kendala waktu, dan persyaratan bisnis. Mereka memahami bahwa solusi terbaik dalam satu konteks mungkin sepenuhnya salah dalam konteks lain.
Engineer yang belum matang terlalu tidak fleksibel tentang selera mereka. Mereka tahu apa yang mereka sukai, tetapi mereka salah mengartikan kesukaan itu sebagai posisi engineering yang berprinsip.
Fleksibilitas ini meluas ke pilihan teknologi, pola coding, dan keputusan arsitektur. Komunitas menekankan bahwa engineer yang matang mempertimbangkan berbagai faktor sebelum membuat pilihan, daripada secara default menggunakan alat atau metode yang mereka sukai.
Masalah Konteks Bisnis
Salah satu area diskusi yang paling bergairah melibatkan engineer yang hanya fokus pada keanggunan teknis sambil mengabaikan kebutuhan bisnis. Anggota komunitas berbagi frustrasi dengan proyek yang menjadi showcase teknis daripada solusi praktis. Beberapa menggambarkan menyaksikan tim membangun sistem kompleks ketika alternatif sederhana seperti spreadsheet atau database dasar sudah cukup.
Ketidaksesuaian antara kecanggihan teknis dan nilai bisnis ini tampaknya menjadi indikator utama selera yang buruk. Engineer dengan penilaian yang baik dilaporkan bertanya apakah perangkat lunak perlu ada sama sekali sebelum memutuskan bagaimana membangunnya. Mereka mempertimbangkan pengalaman pengguna akhir dan dampak bisnis, bukan hanya implementasi teknis.
Tanda-tanda Selera Engineering yang Buruk:
- Kepatuhan kaku terhadap teknologi yang disukai tanpa mempertimbangkan kebutuhan proyek
- Membenarkan keputusan dengan "ini adalah praktik terbaik" tanpa mempertimbangkan konteks
- Membuat solusi yang terlalu rumit untuk masalah bisnis yang sederhana
- Ketidakmampuan untuk menyesuaikan pendekatan ketika berpindah antar jenis proyek yang berbeda
- Fokus pada keanggunan teknis daripada nilai bisnis dan kebutuhan pengguna
Kontroversi Keterbacaan
Diskusi mengungkapkan ketidaksepakatan tajam tentang standar keterbacaan kode. Sementara beberapa mengadvokasi fungsi pendek dan konvensi penamaan yang jelas, yang lain berpendapat bahwa mengikuti aturan tersebut secara membabi buta sebenarnya dapat merugikan maintainability. Perdebatan menyoroti bagaimana tim dan proyek yang berbeda mungkin memerlukan pendekatan yang berbeda untuk organisasi kode.
Beberapa anggota komunitas menunjukkan bahwa keterbacaan sangat bergantung pada pengalaman pembaca dan domain spesifik. Kode yang tampak jelas bagi satu engineer mungkin tidak dapat dipahami oleh engineer lain, membuat standar keterbacaan universal menjadi bermasalah.
Nilai-nilai Teknik Utama yang Dibahas:
- Ketahanan: Kemampuan sistem untuk menangani kegagalan dan pulih secara otomatis
- Kecepatan: Optimalisasi performa dan pertimbangan efisiensi
- Keterbacaan: Kejelasan kode dan kemudahan dalam memperkenalkan anggota tim baru
- Kebenaran: Pengujian, keamanan tipe, dan pendekatan verifikasi formal
- Fleksibilitas: Kemudahan dalam memperluas dan memodifikasi sistem
- Portabilitas: Independensi dari lingkungan operasional tertentu
- Skalabilitas: Kemampuan untuk menangani peningkatan lalu lintas dan beban
- Kecepatan Pengembangan: Seberapa cepat fitur dapat diimplementasikan dan dideploy
Mengidentifikasi dan Mengembangkan Selera yang Baik
Komunitas berjuang dengan cara mengenali dan mengembangkan selera engineering yang baik. Tidak seperti keterampilan teknis, yang dapat diuji melalui tantangan coding, selera hanya menjadi jelas melalui hasil proyek dunia nyata dari waktu ke waktu. Ini membuat keputusan perekrutan dan promosi menjadi sangat menantang.
Sebagian besar setuju bahwa selera yang baik berkembang melalui paparan terhadap proyek yang beragam dan perhatian yang cermat terhadap apa yang berhasil dan apa yang tidak. Engineer perlu mengalami konteks yang berbeda, ukuran tim, dan persyaratan bisnis untuk mengembangkan penilaian yang diperlukan untuk membuat trade-off yang tepat.
Perdebatan yang sedang berlangsung mencerminkan kedewasaan industri perangkat lunak saat bergulat dengan pertanyaan yang melampaui kemampuan teknis murni. Ketika proyek menjadi lebih kompleks dan taruhannya lebih tinggi, kemampuan untuk membuat keputusan yang baik mungkin terbukti lebih berharga daripada keterampilan coding mentah.
Referensi: What is good taste in software engineering?