80/20 also affects scheduling

We have all heard about the 80/20 rule, the one that says that 80% of our success (effects) comes from only 20% of our actions (causes). Well, this universal truth also affects software development, and in this article we are going to reel off a little of the fundamentals of this statement.

BPM

Business Process Management, for its acronym in English, is a management discipline (among other things) that allows you to visually understand the processes that must be carried out in a business (or in many other places). Among its main qualities is the fact that it can analyze complex processes and make them "simple."

There are many open source tools that allow you to develop BPM diagrams, the one I have used for this article is BonitaSoft. If you want to learn a little more about process management there are many tutorials on the internet and books on the subject. Now let's get back to the central topic.

Software projects

Today, there are many methodologies for developing projects: agile, traditional, hybrid, and so on. One thing they all have in common is preparation . What do I mean by this? That 80% of your success in this software project will depend on the first 20% of the entire process: preparation.

Preparing a project

This is a logical point that is rarely applied in reality (like many other logical things that are illogical in practice). When we talk about preparation, we must understand the ability to comprehend the problem, understand the solution, and above all, the process that the solution employs. One of the least common things found in unprofessional software projects is a lack of documentation on this topic. This usually occurs in private companies, since the desire to sell often overshadows the development process.

Since many of those who read these articles work in or are related to technology, it is worth mentioning that if at any point in their working lives they encounter a company/supplier that does not meet a good preparation standard, it is almost 80% certain that the project will not go well.

Abstraction is the key

This is something I've learned from my time using GNU/Linux, and it proves time and again to be key in the software development process. The ability to abstract problems and turn them into simpler things is vital for generating elegant, and above all, durable code . And perhaps this is one of the main differences between large professional projects and projects that grow unchecked. The former think through, understand, and structure the process, while the latter simply keep it running without needing to understand it.

Stager

This is the name of the project that the Gentoo installer develops, as you can imagine, this is quite a complex process, since it supports a large number of architectures. Another factor to take into account is the number of configurations it supports, at the kernel level, init system, etc. And I tell you all this because it is also my thesis project, which I must finish before finishing studying. Obviously I cannot make a program that includes absolutely all the possible options in such a short time (until July next year), but at least I can generate one that allows a functional system to be installed in a very basic way.

Understanding the installation process

Thanks to the BPM tools, a process diagram can be generated that allows us to understand the steps necessary for the successful installation of Gentoo on a computer.

Gentoo installation process

Own. Christopher Diaz Riveros

Despite containing several processes and sub-processes, it has obviously been quite summarized and it can be seen that we have 18 linear steps. This is important because an application that has a linear structure is simple to implement, and at the same time parallelism can be generated in one or more of the threads if necessary.

Another important factor is that it allows us to abstract sets of processes by type; for example, defining a kernel subprocess allows us to know that there are specific tasks within it that are directly related to the process of successfully installing a kernel.

Sub-process "kernel"

Own. Christopher Diaz Riveros

In this way, each “complex” step becomes a “simple” one in a global way, without losing the necessary details. This facilitates visibility of the whole without reducing the level of specification necessary to successfully complete the process. And we cannot deny that it is easier to see the image than to read the entire Handbook at once 

Save time

Another obvious advantage is that by not having a directly connected programming language, it is possible to perform logic analysis without necessarily wasting time implementing the language. This is an advantage compared to the amount of time that can be spent implementing a feature only to find that it will be discarded because there is a more efficient solution. Like what would be the solutions in pseudo-code (something that is also ignored by many "developers" but should not be).

Directing projects made easy

Taking these concepts into account, project management (of any kind) becomes easier, because we focus our efforts where they are really needed, and if this part is done correctly, the rest falls into place. I hope it helps your curiosity and motivates you to investigate BPM, algorithms and who knows, maybe it will encourage you to help me with my thesis  Thank you very much for getting here and we'll see each other soon. Regards


Add as preferred source in Google