A natureza problemática do desenvolvimento de software

Feb 27 2023
Quando comecei a desenvolver software, a frase que mais ouvia era “Desenvolvimento de software é resolver problemas”. Mas ninguém disse que o próprio desenvolvimento de software é de natureza problemática.

Quando comecei a desenvolver software, a frase que mais ouvia era “Desenvolvimento de software é resolver problemas”. Mas ninguém disse que o próprio desenvolvimento de software é de natureza problemática.

A ciência e a engenharia também são uma ferramenta de solução de problemas, como o desenvolvimento de software. E o objetivo é a resolução de problemas. Mas o desenvolvimento de software é uma ferramenta problemática, como um peixe que escapa do controle.

E com base nesse pensamento; Antes de resolver os problemas, acho que precisamos consertar o machado quebrado ou pelo menos aprender a cortar lenha com um machado quebrado.

Aqui estão alguns dos problemas que vejo no desenvolvimento de software;

  • Está mudando tão rápido, e há pouco que eu possa chamar de conhecimento permanente.
  • Os materiais de aprendizagem são demais, muito confusos e mal documentados.
  • Não é possível proceder intuitivamente, é preciso proceder com conhecimento preciso.
  • Não avança de forma descentralizada, descontrolada e padronizada.
  • Existem muitas soluções complexas para problemas simples.
  • Existem tantas tecnologias diferentes fazendo a mesma tarefa e, assim como diferentes religiões servindo a um Deus, cada uma tem suas próprias regras.
  • A informação é tanta e dinâmica que é impossível guardá-la na memória.
  • Não para com o aprendizado e nunca permite que você se sinta um especialista.
  • O maior problema é que tudo isso não é visto como um problema e é passado como “desenvolvimento de software é assim”.
  • Tem uma natureza mutável
  • As fontes estão embaçadas
  • Não intuitivo
  • Não padronizado o suficiente
  • Desnecessariamente complicado
  • Muita informação
  • Muita informação inútil.

Uma pessoa que deseja se especializar em um determinado campo e assunto em qualquer ramo da ciência pode alcançar especialização suficiente obtendo artigos científicos e livros escritos sobre o assunto, ficando em casa por alguns meses, examinando e fazendo as anotações necessárias.

No desenvolvimento de software, as coisas não funcionam assim. A documentação oficial nunca é suficiente. É necessário proceder coletando informações incompletas ou incorretas de guias e vídeos escritos por terceiros. E isso causa um processo de aprendizado irregular e de qualidade muito ruim. Por tais razões, não é possível para um desenvolvedor de software se especializar em seu próprio campo tanto quanto uma pessoa que se especializa em um campo da ciência.

E mesmo que ele se especialize, não é permanente. Porque a cada poucos meses, um novo Einstein surge e propõe uma nova teoria. Por alguma razão, existem tantos Einsteins neste campo…

Eu sei que é infantil dizer como o desenvolvimento de software deveria ser. Como os antigos filósofos fizeram. Eles conversaram muito sobre como o estado deveria ser.

  • Que os filósofos governem os Estados.
  • Que as crianças sejam propriedade comum da sociedade.
  • Nenhuma guerra.
  • Não arranque as flores.
  • Todas as linguagens de programação devem ser combinadas em uma única sintaxe sem perder suas propriedades.
  • Bibliotecas e estruturas equivalentes se fundem em uma única biblioteca e estrutura sem perder suas propriedades.
  • Deixe que essas linguagens e bibliotecas individuais sejam gerenciadas e padronizadas por uma instituição oficial.
  • Deixe que os linguistas tornem a linguagem o mais intuitiva possível.
  • Deixe que autores reais escrevam os documentos.
  • Todos os desenvolvimentos no mundo do software são anunciados a partir de uma única fonte.

Mas isso é uma utopia e não será verdade no mundo de hoje. Então, o que o programador deve fazer? Deve mudar a si mesmo ou à indústria. Como você pode entender pela utopia que mencionei, vai demorar muito para a indústria mudar, talvez não seja possível. Tendo uma vida útil limitada, o desenvolvedor deve evoluir para essas condições.

Como eu disse no início, o desenvolvimento de software é um peixe escorregadio. Primeiro de tudo, você precisa aprender a segurar esta ferramenta. E se quisermos ou precisarmos fazer esse trabalho em nossa vida limitada. A primeira coisa a aprender é ter a filosofia, sistema e métodos necessários para manter esta ferramenta.

O melhor conselho que posso dar seria especializar-se em permanentes. Estes são os que me vêm à mente;

  • língua Inglesa
  • Capacidade de aprender
  • Algoritmos e capacidade de resolução de problemas