80/20 também afeta a programação

Todos nós já ouvimos falar da regra 80/20, aquela que diz que 80% do nosso sucesso (efeitos) vem de apenas 20% das nossas ações (causas). Bem, essa verdade universal também afeta o desenvolvimento de software e, neste artigo, vamos revelar um pouco dos fundamentos desta declaração.

Processos

Business Process Management, por sua sigla em inglês, é uma disciplina de gestão (entre outras coisas) que permite compreender visualmente os processos que devem ser realizados em uma empresa (ou em muitos outros locais). Entre suas principais qualidades está o fato de poder analisar processos complexos e torná-los "simples".

Existem muitas ferramentas de software livre que permitem desenvolver diagramas de BPM, aquela que usei para este artigo é BonitaSoft. Se você quiser aprender um pouco mais sobre gerenciamento de processos existem diversos tutoriais na internet e livros sobre o assunto. Agora vamos voltar ao tópico central.

Projetos de software

Hoje existem muitas metodologias para desenvolver projetos, são ágeis, tradicionais, mistas, etc, etc. Um ponto que todos eles têm em comum é preparação. O que quero dizer com isto? Que 80% do seu sucesso neste projeto de software será baseado nos primeiros 20% de todo o processo, preparação. 

Preparando um projeto

Isso é algo lógico que, na realidade, é muito pouco aplicado (como muitas outras coisas lógicas que são ilógicas na prática). Quando falamos em preparação, devemos entender a capacidade de entender o problema, entender a solução e, acima de tudo, o processo que a solução se aplica. Uma das coisas menos encontradas em projetos de software não profissionais é a falta de documentação sobre o assunto. Isso costuma aparecer nas empresas privadas, pois a vontade de vender supera o processo de criação.

Como muitos dos que lêem estes artigos trabalham ou se relacionam com tecnologia, vale ressaltar que se em algum momento de sua vida profissional encontrarem uma empresa / fornecedor que não atenda a um bom preparo, é quase 80% seguro 😛 que o projeto não vai funcionar.

Abstração é a chave

Isso é algo que aprendi na época em que utilizo o GNU / Linux e que, vez após vez, é a chave no processo de criação de software. A capacidade de abstrato problemas para transformá-los em coisas mais "simples" é vital para ser capaz de gerar código elegante e, acima de tudo duradero. E talvez esta seja uma das principais diferenças de grandes projetos profissionais e projetos que crescem fora de controle. Os primeiros pensam, entendem e estruturam o processo enquanto os segundos manter trabalhando sem ter que entender.

Stager

Este é o nome do projeto que o instalador do Gentoo desenvolve, como você pode imaginar, é um processo bastante complexo, pois suporta um grande número de arquiteturas. Outro fator a levar em consideração é o número de configurações que ele suporta, no nível do kernel, sistema de inicialização, etc. E conto tudo isso porque é também o meu projeto de tese, que devo terminar antes de terminar de estudar. Obviamente não posso fazer um programa que contemple absolutamente todas as opções possíveis em tão pouco tempo (até julho do ano que vem), mas pelo menos posso gerar um que permita que um sistema funcional seja instalado de uma forma bem básica.

Compreender o processo de instalação

Graças às ferramentas BPM, um diagrama de processo pode ser gerado que nos permite entender os passos necessários para a instalação bem sucedida do Gentoo em um computador.

Processo de instalação do Gentoo

Próprio. Christopher Diaz Riveros

Apesar de conter vários processos e subprocessos, obviamente está bastante resumido e pode-se verificar que temos 18 etapas lineares. Isso é importante porque um aplicativo que possui uma estrutura linear é fácil de implementar e, ao mesmo tempo, o paralelismo pode ser gerado em um ou mais dos threads, se necessário.

Outro fator importante é que nos permite abstrato conjuntos de processos por tipo, por exemplo, definir um thread do kernel nos permite saber que existem tarefas específicas dentro dele que estão diretamente relacionadas ao processo de instalação bem-sucedida de um kernel.

Subprocesso "kernel"

Próprio. Christopher Diaz Riveros

Desta forma, cada passo "complexo" torna-se um passo "simples" de forma global, sem perder os detalhes necessários. Isso facilita a visibilidade da montagem sem diminuir o nível de especificação necessário para concluir o processo com sucesso. E não podemos negar que é mais fácil ver a imagem do que ler todo o Manual de uma vez 🙂

Economizar tempo

Outra vantagem óbvia é que, por não ter uma linguagem de programação diretamente conectada, é possível realizar análises lógicas sem necessariamente perder tempo com a implementação da linguagem. Isso é uma vantagem em comparação com a quantidade de tempo que pode ser gasto na implementação de um recurso apenas para descobrir que ele será descartado porque existe uma solução mais eficiente. Como quais seriam as soluções em pseudo-código (algo que também é ignorado por muitos "desenvolvedores", mas não deveria ser).

Direcionar projetos de forma fácil

Levando em conta esses conceitos, o gerenciamento de projetos (de qualquer natureza) fica mais fácil, pois focamos nossos esforços onde eles são realmente necessários e, se essa parte for feita corretamente, o resto fica por conta dele. Espero que ajude sua curiosidade e motive você a pesquisar sobre BPM, algorítmica e quem sabe, talvez te incentive a me ajudar com minha tese 😛 Muito obrigado por vir aqui e nos veremos em breve. Felicidades


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   alexander mayorga muñoz dito

    Oi. Obrigado por compartilhar o seu conhecimento. Parece-me um assunto estimulante, mas que requer muito trabalho de pesquisa e aplicação prática dos conceitos para poder internalizá-los. A princípio a questão é confusa porque tende-se a associá-la mais pelo lado da identificação dos requisitos de um sistema e não necessariamente com os processos de negócio da empresa, ou seja, como a empresa funciona. No final, acho que é mais sobre o papel que os desenvolvedores de software desempenham na modelagem do negócio da empresa, a fim de tornar a operação do negócio mais eficiente e eficaz.

    1.    Chris ADR dito

      Olá Alexandre, muito obrigado por compartilhar. Para falar a verdade, é um tópico um tanto complexo tentar resumir tudo em um espaço tão pequeno, mas se eu puder contribuir um pouco para sair da confusão com o seu comentário 🙂 é verdade que os sistemas devem tentar resolver os requisitos, isso é o máximo possível funcionalidade básica e, nesse ponto, é verdade que um desenvolvedor deve se concentrar em um nível superior.
      O conhecimento dos processos permite que os desenvolvedores apresentem sistemas mais do que suficientes, entendendo o suficiente como algo que atende aos requisitos mínimos possíveis.
      A elegância do código está em poder entender todo o processo, e gerá-lo de forma mais profunda, onde a melhor solução possível é aplicada, e isso só é possível entendendo realmente o processo e não o requisito, como você bem mencionou 🙂
      Se modelarmos um pouco em torno do FOSS, isso implica não apenas conhecer os requisitos do software, mas a filosofia por trás dele, saber como será mantido, por quem e todo aquele conhecimento do processo que não só gera uma solução eficiente. , mas será possível manter ao longo do tempo 🙂
      Muito obrigado novamente e saudações.