A importância de ser um engenheiro de software (ou pensar como um)
Você com certeza já se deparou com um problema em codigo que, ao dar uma "Googlada" não achou nada próximo ou parecido no Stack Overflow e não teve tanto sucesso vendo issues resolvidas e nem o chatgpt nem o bard conseguiram ter um breve esboço do codigo que você esperava. Pois bem, quem não passou por isso, mais cedo ou mais tarde cairá neste empecilho que chamo carinhosamente de "Problema criacional", sim, um problema a partir da falta criativa e do olhar critico do dev, mas calma! Não estou querendo insultar ninguém por não serem criativos e não conseguirem pensar em uma solução pros seus problemas a partir de uma pesquisa, na verdade este é o caminho mais correto a se fazer quando se esta impedido de prosseguir com o codigo por causa de um bug a principio misterioso.
Quando estamos aprendendo a programar, temos aquela sensação pura de estar criando algo, veja por exemplo um programa que calcula a raiz quadrada de dois numeros e faz o somatorio de ambos dado por input em Golang por exemplo:
package main
import (
"fmt"
"math"
)
func main() {
var n1 float64
var n2 float64
fmt.Scan(&n1)
fmt.Scan(&n2)
res := math.Sqrt(n1) + math.Sqrt(n2)
fmt.Println(res)
}
Simples né!? Capturamos o input, armazenamos em uma variavel, chamamos uma função que calcula a raiz quadrada, armazenamos numa variavel resultante e imprimimos na tela. Os passos ficam bem claros na nossa mente, conseguimos entender claramente o fluxo do programa passo a passo e guarde bem esta palavra... passo a passo... não falando de código exatamente mas da funcionalidade do programa e se esta de acordo com nossas expectativas, entretanto conforme vamos avançando na programação, vamos entendendo que muitas coisas já foram criadas, não precisamos ficar reescrevendo o mesmo código, pois pessoas e até organizações disponibilizam bibliotecas, frameworks e até SDKs para acelerar nossa produtividade e entregarmos um software ou produto ou até um jogo com uma codebase de qualidade.
Então você deve estar achando que estou sugerindo que você reinvente a roda não é? Pois bem. Não exatamente reinventar a roda, mas entender como a roda foi criada, Ao invés de apenas utilizar o que já esta pronto, tente entender qual foi a necessidade e/ou motivação para criação de tal ferramenta que auxilia no seu desenvolvimento e evita que você perca muito tempo tentando achar um bug misterioso, ou melhor ainda, caso você se depare com algo que é muito especifico a ponto de ter poucas soluções e elas estarem desatualizadas, desafio você a adotar uma postura de engenheiro. Lembra que tinha dito para guardar as palavras "passo a passo"!? Então, este é o melhor momento para falarmos da importancia de seguir um passo a passo, apesar de parecer meio obvio para programas e softwares pequenos, isso se aplica da mesma forma para os softwares grandes. React, Docker, K8s, Nest, etc. Todas essas ferramentas surgiram a partir de uma necessidade, e de uma necessidade surgiu um passo a passo para a criação e conclusão dessas ferramentas. Devs que são destaques e possuem habilidade com código, em sua maioria, carregam este pensamento crítico e bem destrinchado, pois no final das contas uma ferramenta é um software e/ou um programa, e ambos podem ser classificados como um algoritmo, e segundo o wikipédia, o conceito puro de algoritmo é: "Uma sequência finita de ações executáveis que visam obter uma solução para um determinado tipo de problema".
Dito isso, fica aqui meu incentivo para os devs adotarem mais postura de criadores de ferramentas além de utilizadores.