O desenvolvimento de software é considerado um campo regido pela lógica. Toda decisão que tomamos é guiada por regras que podemos seguir e entender. Todo problema tem uma solução de engenharia. Toda opinião pode ser verdadeira ou falsa.

Se você passou algum tempo na indústria de software, sabe que isso não é verdade. Tomamos decisões em um ambiente em constante mudança e resolvê-las requer mais do que puro conhecimento técnico. A mesma opinião pode ser verdadeira ou falsa, dependendo da situação. A resposta mais comum para uma pergunta é - “Depende”.

Mergulhamos em debates intermináveis sobre a maturidade das tecnologias, os benefícios de diferentes estilos de código, a melhor quantidade de recuo - a lista continua. Ainda questionamos se as práticas estabelecidas ainda fornecem o melhor valor no estado atual da engenharia de software.

No meu primeiro emprego, um colega me deu um conselho precioso - sempre fazer a pergunta “por quê”. Recentemente comecei um novo trabalho e o diretor de tecnologia de lá me disse algo semelhante - não ter medo de fazer o máximo de perguntas possível.

Por que?

Eu realmente prezo trabalhar em um campo em que tudo é questionado, porque essa é a única maneira de descobrirmos a verdade. Mas o que realmente significa a verdade? Algo pode ser verdade? Talvez as respostas que obtenho façam sentido para o problema que estamos resolvendo, mas são completamente falhas em um ambiente diferente.

Ao fazer perguntas e debater continuamente ideias diferentes, entramos em debates filosóficos. Nosso objetivo é descobrir a razão final das coisas - a causa raiz. É claro que, às vezes, apenas tentamos persuadir o outro lado a acreditar no mesmo que nós, mas essas conversas não são realmente debates.

Às vezes, filosofar sobre tópicos gerais de engenharia, como abas ou espaços. Para muitas dessas grandes perguntas, precisamos aceitar uma resposta para nós mesmos e formar nossa própria realidade.

No entanto, há perguntas que têm menos impacto e, portanto, podem ser respondidas mais especificamente. Pergunta cuja verdade só afeta nossa empresa ou nossa equipe. Uma das perguntas mais comuns é “Por que isso é feito dessa maneira?”.

Tudo começou...

Nosso objetivo é desafiar ideias e buscar sabedoria em vez de resolver problemas de engenharia. Uma vez que a questão se torna técnica, então resolvê-la é mais fácil. Chegar a esse ponto é difícil.

Em vez de tentarmos encontrar as respostas, devemos apenas confiar em opiniões já estabelecidas? Quando um problema é específico demais para que sua solução seja decidida pelo conhecimento comum?

Ao fazer perguntas filosóficas, pretendemos desafiar as crenças, pensamentos e sentimentos para um tópico específico. Então, quando alguém pergunta sobre a filosofia da programação funcional, esse é o tipo de coisa que eles têm em mente.

A engenharia de software é um campo relativamente novo e muitas verdades sobre ele ainda estão para ser formadas como um sistema. Mas não podemos gastar nosso tempo discutindo sobre o que é certo ou errado. No final do dia, teremos que tomar algumas decisões difíceis e fazer o nosso melhor para construir um bom produto de software.

Gostaríamos de passar o próximo sprint discutindo

Mas quanto contexto, opiniões e pensamentos queremos trocar antes de fazer isso? Esta é outra questão difícil por si só.

Este artigo faz mais perguntas do que dá respostas. Suponho que este seja o caminho em toda discussão profunda. Você recursivamente faz a pergunta “por que” até que você acerte o fundo e a função retorne.

O que vem por aí?

Estou escrevendo uma série de artigos que abordam os tópicos filosóficos da engenharia de software. Vou olhar para cada um de ângulos diferentes e tentar encontrar a causa raiz por trás deles. Aqui estão alguns exemplos que tenho no backlog:

  • O que é melhor - guias ou espaços?
  • Quando a dívida técnica pode ser boa?
  • Que código consideramos limpo?

Se isso é algo que você acha interessante, você pode se juntar à minha newsletter para ser notificado quando um novo artigo for publicado.


Artigo Original