Keterampilan Meta Pengembang Perangkat Lunak

Belajar dari buku tentang ketepatan dan pengenalan pola



Beberapa pemikiran tentang cara membangun perangkat lunak dengan baik.

Baru-baru ini, seorang teman bertanya tentang keterampilan khusus yang dimiliki pengembang perangkat lunak.

Apa keterampilan unik yang dipraktikkan praktisi pengembangan?

Berdasarkan pengalaman saya, saya membentuk pendapat berikut. Gagasan yang saya sadari dari waktu ke waktu adalah bahwa saya suka pemrograman meta. Mempelajari keterampilan meta, atau bagaimana melakukan apa yang kita lakukan dengan lebih baik, melibatkan membaca banyak buku terkenal, dengan mempertimbangkan konteksnya.
Saya mengambil contoh nyata dari apa yang saya baca selama bertahun-tahun, menerapkannya pada pengamatan saya sendiri di bidang ini, dan menjawab dengan cara yang paling pragmatis.

Menurut pendapat saya, jika Anda berpikir secara universal, saya akan mengatakan bahwa ini adalah praktik pembenaran dan pengenalan pola * . Berikut adalah beberapa keterampilan yang unik untuk pengembang perangkat lunak.

Kebenaran


Kebenaran sangat terkait dengan bagaimana dan mengapa kita melakukan hal-hal seperti ini, dan bukan sebaliknya. Dalam perusahaan, ini terkait erat dengan kebenaran tugas apa yang harus diselesaikan oleh bisnis bagi pelanggannya. Perangkat lunak yang ditulis dengan baik menganut pemikiran yang sama.

Ketepatan dianggap dalam pengembangan sebagai seberapa benar itu "bagaimana" sehingga solusi bisnis dapat terus menyelesaikan tugas dengan tingkat keandalan dan efisiensi yang tinggi. Proses ini adalah keseimbangan antara strategi (desain) dan taktik (eksekusi).

Sebuah studi tentang apa "bagaimana" ini dalam ruang hampa yang terbaik diwakili di bagian keempat bab pertama Pemrograman Mutiara - Menulis Program yang Benar .

... menjaga kode sederhana biasanya merupakan kunci untuk memperbaiki.
- John Bentley

Pengenalan pola


Pengenalan pola sangat terkait dengan pengorganisasian kebenaran ini dengan menciptakan abstraksi yang diperlukan dan batas-batas komponen.

Pengenalan pola mengarah pada konsep penggunaan kembali untuk memodulasi dan mengisolasi kode. Kami melacak duplikasi, menemukan area yang dapat digunakan kembali, dan mendesain ulang bagian kompleks kode. Inilah yang dilakukan pengembang perangkat lunak dengan baik. Kami mengikuti detail dengan sangat hati-hati. Kami mengakui pengetahuan yang diciptakan berulang-ulang. Dan kemudian kita sederhanakan.

Pengenalan pola dibahas dalam komunitas dan ada banyak sumber di mana Anda dapat membaca tentang metode pengenalan. Saya belajar tentang ini di bab kedua Programmer Pragmatis - Kejahatan Duplikasi ( Programmer Pragmatis - Kejahatan Duplikasi).

Buatlah mudah untuk digunakan kembali. Jangan diulang.
- Andrew Hunt dan Dave Thomas

Pengamatan menarik


Segera setelah saya memberikan jawaban ini, teman saya mengajukan pertanyaan balasan.

Jika ketepatan dan pengenalan pola adalah keterampilan ini, bagaimana Anda mempelajarinya?

Tentu saja jawaban saya cukup sederhana:

Temukan buku-buku ini, atur lingkungan Anda, dan kerjakan melalui contoh. Tetapkan harapan belajar Anda dan terapkan meta-skill ini sambil memberikan nilai pada bisnis Anda. Mengapa Kompleksitas Ini adalah investasi terbaik dalam pelatihan penguasaan yang saya tahu. Ini juga membuat pengembang lebih percaya diri dari waktu ke waktu.

Pertumbuhan saya telah terpusat di sekitar buku-buku ini dan di sekitar keterampilan khusus ini. Tetapi itu membuat saya sadar bahwa ada beberapa keterampilan yang memberikan kontribusi signifikan terhadap keterampilan-meta, selain melakukan pekerjaan secara langsung. Saya menjadi tertarik pada terminologi meta. Pekerjaan saya pada dekomposisi tugas (kebenaran) dan organisasi (pengenalan pola) tidak menemukan aplikasi pada saat publikasi mereka. Dan pada saat yang hampir bersamaan, saya berpikir untuk menulis artikel meta-skill ini.

Seorang profesor di Universitas Stanford mengajarkan kursus keterampilan meta dan ini menyebabkan penulisan sebuah buku di mana ia memasukkan beberapa hasil dari kursusnya. Saya terkejut ketika saya tahu bahwa dia memiliki sikap yang sama dengan pertanyaan saya. Karena itu, saya membeli buku dan membacanya dengan penuh semangat. Bab Tiga Belas, Filosofi Desain Sistem .

Pengembang biasanya sangat fokus pada detail. Kami menyukai detail dan kami ingin mengelola banyak hal; ini penting untuk menjadi insinyur spesialis yang baik. Namun, pengembang perangkat lunak yang baik juga dapat mundur sedikit dari detail dan memikirkan sistem di tingkat yang lebih tinggi.
- John Ousterhout **

Kesimpulan


Menurut pendapat saya, kebenaran dan pengenalan pola adalah keterampilan yang harus dipelajari dan dikembangkan oleh para pengembang perangkat lunak untuk diri mereka sendiri. Akibatnya, kualitas perangkat lunak meningkat. Semua keterampilan unik lainnya mungkin sangat bergantung pada yang di atas. Saya mengundang orang lain untuk berbagi contoh keterampilan meta yang telah mereka kembangkan dari waktu ke waktu.

Secara umum, ketepatan dan pengenalan pola terkait dengan hasil kompleksitas (juga dikenal sebagai beban kognitif). Harus ada cara untuk menyeimbangkan kedua faktor secara kompeten untuk mengurangi kompleksitas. Itulah mengapa saya menganggap keterampilan ini sebagai esensi utama dari semua yang kami lakukan.



* Yang menarik adalah kebenaran dan pengenalan pola yang sangat terkait dengan praktik di sekitar pembelajaran mesin.
** Jika Anda ingin tahu lebih banyak tentang apa yang sedang dilakukan John, lihat videonya .
*** Insinyur juga harus mempraktikkan pelatihan dan komunikasi tingkat tinggi . Konsep-konsep ini tidak unik untuk perangkat lunak, tetapi sangat terkait dengan ilmu.

Artikel asli

Source: https://habr.com/ru/post/id420923/


All Articles