Kita semua telah mendengar tentang aturan 80/20, yang mengatakan bahwa 80% dari keberhasilan (akibat) kita hanya berasal dari 20% tindakan (penyebab) kita. Nah, kebenaran universal ini juga memengaruhi pengembangan perangkat lunak, dan dalam artikel ini kita akan membahas sedikit dasar-dasar pernyataan ini.
BPM
Business Process Management, singkatannya dalam bahasa Inggris, adalah disiplin manajemen (antara lain) yang memungkinkan Anda untuk memahami secara visual proses yang harus dilakukan dalam bisnis (atau di banyak tempat lain). Di antara kualitas utamanya adalah kenyataan bahwa ia dapat menganalisis proses yang kompleks dan membuatnya "sederhana".
Ada banyak tool open source yang memungkinkan Anda mengembangkan diagram BPM, salah satu yang saya gunakan untuk artikel ini adalah BonitaSoft. Jika Anda ingin belajar lebih banyak tentang manajemen proses, ada banyak tutorial di internet dan buku-buku tentang subjek tersebut. Sekarang mari kembali ke topik utama.
Proyek perangkat lunak
Saat ini, terdapat banyak metodologi untuk mengembangkan proyek: agile, tradisional, hybrid, dan sebagainya. Satu hal yang semuanya memiliki kesamaan adalah persiapan . Apa maksud saya? Bahwa 80% keberhasilan Anda dalam proyek perangkat lunak ini akan bergantung pada 20% pertama dari keseluruhan proses: persiapan.
Mempersiapkan proyek
Ini adalah poin logis yang jarang diterapkan dalam kenyataan (seperti banyak hal logis lainnya yang tidak logis dalam praktiknya). Ketika kita berbicara tentang persiapan, kita harus memahami kemampuan untuk memahami masalah, memahami solusi, dan yang terpenting, proses yang digunakan oleh solusi tersebut. Salah satu hal yang paling jarang ditemukan dalam proyek perangkat lunak yang tidak profesional adalah kurangnya dokumentasi tentang topik ini. Hal ini biasanya terjadi di perusahaan swasta, karena keinginan untuk menjual seringkali menutupi proses pengembangan.
Karena banyak dari mereka yang membaca artikel ini bekerja di bidang teknologi atau terkait dengan teknologi, perlu disebutkan bahwa jika suatu saat dalam karier mereka bertemu dengan perusahaan/pemasok yang tidak memenuhi standar persiapan yang baik, hampir 80% kemungkinan proyek tersebut tidak akan berjalan dengan baik.
Abstraksi adalah kuncinya
Ini adalah sesuatu yang saya pelajari dari pengalaman saya menggunakan GNU/Linux, dan terbukti berulang kali menjadi kunci dalam proses pengembangan perangkat lunak. Kemampuan untuk mengabstraksi masalah dan mengubahnya menjadi hal-hal yang lebih sederhana sangat penting untuk menghasilkan kode yang elegan, dan yang terpenting, tahan lama . Dan mungkin ini adalah salah satu perbedaan utama antara proyek profesional besar dan proyek yang berkembang tanpa terkendali. Yang pertama memikirkan, memahami, dan menyusun prosesnya, sementara yang terakhir hanya menjalankannya tanpa perlu memahaminya.
Aktor
Ini adalah nama proyek yang dikembangkan oleh pemasang Gentoo, seperti yang dapat Anda bayangkan, ini adalah proses yang cukup rumit, karena mendukung banyak arsitektur. Faktor lain yang perlu dipertimbangkan adalah jumlah konfigurasi yang didukungnya, pada level kernel, sistem init, dll. Dan saya ceritakan semua ini karena ini juga proyek skripsi saya, yang harus saya selesaikan sebelum selesai kuliah. Jelas saya tidak dapat membuat program yang benar-benar mempertimbangkan semua opsi yang mungkin dalam waktu sesingkat itu (hingga Juli tahun depan), tetapi setidaknya saya dapat membuat program yang memungkinkan sistem fungsional dipasang dengan cara yang sangat mendasar.
Memahami proses instalasi
Berkat alat BPM, diagram proses dapat dibuat yang memungkinkan kita untuk memahami langkah-langkah yang diperlukan agar instalasi Gentoo berhasil di komputer.
Sendiri. Christopher Diaz Riveros
Meskipun mengandung beberapa proses dan subproses, namun jelas telah cukup terangkum dan dapat dilihat bahwa kita mempunyai 18 langkah linier. Ini penting karena aplikasi yang memiliki struktur linier mudah diimplementasikan, dan pada saat yang sama, paralelisme dapat dibuat di satu atau beberapa utas jika perlu.
Faktor penting lainnya adalah hal ini memungkinkan kita untuk mengabstraksikan serangkaian proses berdasarkan jenisnya; misalnya, mendefinisikan subproses kernel memungkinkan kita untuk mengetahui bahwa ada tugas-tugas spesifik di dalamnya yang secara langsung terkait dengan proses keberhasilan instalasi kernel.
Sendiri. Christopher Diaz Riveros
Dengan cara ini setiap langkah "kompleks" menjadi langkah "sederhana" secara global, tanpa kehilangan detail yang diperlukan. Hal ini memfasilitasi visibilitas perakitan tanpa mengurangi tingkat spesifikasi yang diperlukan untuk menyelesaikan proses dengan sukses. Dan kita tidak dapat memungkiri bahwa melihat gambarnya lebih mudah daripada membaca seluruh Buku Panduan sekaligus 
Menghemat waktu
Keuntungan lain yang jelas adalah bahwa dengan tidak memiliki bahasa pemrograman yang terhubung langsung, dimungkinkan untuk melakukan analisis logika tanpa harus membuang waktu untuk mengimplementasikan bahasa tersebut. Ini merupakan keunggulan dibandingkan dengan jumlah waktu yang dapat dihabiskan untuk mengimplementasikan fitur hanya untuk mengetahui bahwa fitur tersebut akan dibuang karena ada solusi yang lebih efisien. Seperti apa solusi dalam pseudo-code (sesuatu yang juga diabaikan oleh banyak "pengembang" tetapi seharusnya tidak demikian).
Mengarahkan proyek menjadi mudah
Dengan mempertimbangkan konsep-konsep ini, manajemen proyek (apa pun jenisnya) menjadi lebih sederhana, karena kami memfokuskan upaya pada tempat yang benar-benar diperlukan, dan jika bagian ini dilakukan dengan benar, sisanya akan menjadi tanggung jawabnya sendiri. Saya harap ini membantu rasa ingin tahu Anda dan memotivasi Anda untuk meneliti BPM, algoritma dan siapa tahu, mungkin itu akan mendorong Anda untuk membantu saya dengan tesis saya  Terima kasih banyak telah datang sejauh ini dan sampai jumpa. Salam