A natureza problemática do desenvolvimento de software
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





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)