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 to develop projects, there are agile, traditional, mixed, etc, etc. One point they all have in common is preparation. What I mean by this? That 80% of your success in this software project will be based on the first 20% of the entire process, the preparation. 

Preparing a project

This is something logical that in reality is applied very little (like many other logical things that are illogical in practice). When we talk about preparation we must understand the ability to understand the problem, understand the solution and above all, the process that the solution applies. One of the things that are least found in unprofessional software projects is the lack of documentation on the subject. This usually appears in private companies since the desire to sell exceeds the creation process.

As many of those who read these articles work or are related to technology, it is worth mentioning that if at some point in their working lives they find a company / supplier that does not meet a good preparation, it is almost 80% sure 😛 that the project it won't work out.

Abstraction is the key

This is something that I have learned from my time using GNU / Linux, and it proves time and time again to be key in the software creation process. The capacity of abstract problems to turn them into more "simple" things is vital to be able to generate elegant code, and above all Duradero. And perhaps this is one of the main differences of large professional projects and projects that grow out of control. The former think, understand and structure the process while the seconds mantienen working without having 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 abstract sets of processes by type, for example, defining a kernel thread 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 the visibility of the assembly without lowering the level of specification necessary to complete the process successfully. 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 under its own weight. I hope it helps your curiosity and motivates you to research about BPM, algorithmics and who knows, maybe it will encourage you to help me with my thesis 😛 Thank you very much for getting here and we will see each other soon. Cheers


Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.

  1.   alexander mayorga munoz said

    Hi. Thanks for sharing your knowledge. It seems to me that it is an exciting subject but that it requires a lot of research and putting into practice the concepts to be able to internalize them. At first the issue is confusing because one tends to associate it more on the side of identifying the requirements for a system and not necessarily with the business processes of the company, that is, how the company works. In the end, I think it is more about the role that software developers play in modeling the business of the company, in order to make the operation of the business more efficient and effective.

    1.    ChrisADR said

      Hello Alexander, thank you very much for sharing. To tell the truth, it is a somewhat complex topic to try to summarize everything in such a small space, but if I can contribute a little to get out of confusion with your comment 🙂 it is true that systems must try to solve requirements, that is the most possible basic functionality, and at that point it is true that a developer should focus on a higher level.
      Knowledge of the processes allows developers to present more than enough systems, understanding enough as something that meets the minimum possible requirements.
      The elegance of the code lies in being able to understand the complete process, and generate it in a deeper way, where the best possible solution is applied, and this is only possible by really understanding the process rather than the requirement, as you well mentioned 🙂
      If we model it a little around the FOSS, it implies not only knowing the software requirement, but the philosophy behind it, and knowing how it will be maintained, by whom, and all that knowledge of the process that not only generates an efficient solution. , but it will be possible to maintain over time 🙂
      Thank you very much again and greetings.