Avoid Premature Optimization, O que é?
Tags: developer, study, article, software
Published: 2022-01-10 12:24:08

Muitos de nós buscamos otimizar o desempenho de um software com alguma tecnologia, princípios, metodologias ou com funcionalidades novas, porém nem tudo que você aprende pode ser aplicado a um software, depende muito do que o software em questão está propondo. É como se você aprendesse uma nova linguagem e quisesse aplicar ela em um software em que está trabalhando, pois é mais eficaz do que a utilizada, entretanto naquele contexto, naquele software não tem essa necessidade de você aplicar tal linguagem, é o que chamamos de **Avoid Premature Optimization**, otimização prematura, querer otimizar antes da hora ou sem uma necessidade para tal ação.


## Abordando um problema.

Os indivíduos atualmente, tem uma grande necessidade de trocar de celular a cada seis meses ou a cada ano, com o intuito de ter um status elevado, melhorando a autoestima em alguns aspectos e dependendo, se endividando ainda mais.

O problema maior é o gasto desnecessário, resultando em uma bola de neve, aumentando as dívidas.

Onde quero chegar com isso? Estou aplicando o conceito que quero abordar no cotidiano de muitos indivíduos.

## Ah! Existe alguma solução?

Estão se perguntando o que educação financeira tem a ver com o objetivo deste artigo, calma, iremos chegar lá.

Quando você for comprar algo, otimizar algo que você já possui, no caso, um celular novo com mais GB de armazenamento, processador melhor, mAh(milha amperes) maior, deve se fazer 4 perguntas, são elas:

* Quero mesmo comprar isso?
* Preciso disso para alguma coisa?
* Posso comprar isso com o dinheiro que tenho?
* Precisa mesmo ser agora?

Irei adicionar uma quinta pergunta que se complementa com as anteriores, que é:

* Existe uma necessidade grande para isso?

Se você responder "sim" em todas as perguntas, a compra está liberada, pois o produto realmente é necessário. Mas, se alguma resposta for "não", é importante repensar.

O que quero dizer com isso? Se o seu celular está funcionando, suprindo suas necessidades, para que irá comprar um tão cedo? Isso é uma otimização prematura, melhorar algo sem existir a tal necessidade para aquela otimização que está pensando em fazê-lo.

Reparou como ficou melhor? Entendeu a diferença de quando a necessidade de otimizar e quando não há? Está solução se trata do **Avoid Premature Optimization**.

## O que é Avoid Premature Optimization?

Segundo [Matt Watson](https://stackify.com/premature-optimization-evil/) "Premature optimization is spending a lot of time on something that you may not actually need.  “Premature optimization is the root of all evil” is a famous saying among software developers."

**Matt Watson** descreve em seu artigo que Otimização prematura é gastar tempo em algo sem necessidade, que você não precisa realmente, ele também faz uma citação do livro do autor **Donald Knuth**, o **The Art of Computer Programming**, na citação completa diz:

> “The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all evil (or at least most of it) in programming.”

![Avoid Premature Optimization, What is it?](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cxs2pu99j4yob4k7bblg.png)

## Abordando uma solução em conjunto com o conceito.

Abordarei uma solução que aconteceu comigo. Solicitaram para documentar um software utilizando UML para fazer toda a documentação do software, até neste momento estava tudo bem, porem tive a ideia de escrever uma documentação em [C4 Model](https://www.linkedin.com/pulse/simplificando-modelagens-com-c4-modeling-ntopus-labs/?trackingId=d7OOClBrojQMYBQ0ypqsyw%3D%3D), um modelo de documentação simples e eficaz, chega ser tão simples que até uma pessoa leiga, que não é da área, entenderia completamente o que a documentação estava dizendo.

Vocês podem pensar, nossa então o [C4 Model](https://www.linkedin.com/pulse/simplificando-modelagens-com-c4-modeling-ntopus-labs/?trackingId=d7OOClBrojQMYBQ0ypqsyw%3D%3D) é muito bom, de fato, ele é, porem estaria otimizando algo muito cedo, gastando tempo sem ter a necessidade naquele momento. Logo, é uma otimização prematura, não estou dizendo que não poderia fazer, poderia fazer sim, mas não naquele momento.

## TODO

* Já aconteceu isso com você?
* O que faria na minha situação?
* Já fez alguma otimização prematura antes?
* Aplicam este principio no seu trabalho? Porquê?

Respondam as perguntas nos comentários.

Este foi o <b>diário de bordo #15</b>. Hoje eu escolhi falar sobre o **Avoid Premature Optimization** na próxima semana irei trazer sobre **Testes automatizados no Github** galera, vlw. Vamos nos despedindo por aqui. Voltaremos com mais um diário de bordo.

<p align="center">
  <a href="#">
    <img src="https://cdn.dribbble.com/users/1889486/screenshots/5081642/thankyou_.gif" width="500">
  </a>
</p>

<b>Este artigo foi útil para você?</b> 
<b>Deixe um comentário abaixo.</b>

## Referências 

* [Why Premature Optimization Is the Root of All Evil](https://stackify.com/premature-optimization-evil/)