Eu não sei se consigo responder isso, mas vou tentar. Antes quero mostrar o que me fez pensar em software, que mudou minha vida, e foi a mudança mais importante.
Eu sempre fui meio engenheiro, tanto que, criança, eu ficava vendo a montagem e desmontagem das atrações do circo em vez de ver o palhaço desviando a atenção enquanto isso. Eu ia ajudar a montar um parque perto de casa. Eu desmontava todos os brinquedos que eu ganhava para ver como funciona.
Foi assim que não me conformei em só jogar vídeo game e precisava saber como funcionava.
O Telejogo tinha 1KB, os jogos do Atari tinham entre 2KB e 8KB (chegou existir uns maiores) em ROM, tinha quase nada de RAM, literalmente alguns bytes.
Então resolvi que eu ia aprender isso. Por sorte apareceu uma loja no caminho de casa para escola. Eu namorei aquilo por muito tempo. Comecei a programar em bloco de papel durante as filas de banco que eu pegava trabalhando de office boy (na época uma agência média tinha mais de 100 caixas operando e você ficava horas na fila). E fui juntando dinheiro para comprar meu primeiro computador. Foi difícil mas consegui esta belezinha:
Sim, você está vendo certo, essa era a RAM dele.
Deu para perceber que tinha que aprender corretamente, a economizar cada byte, procurar cada eficiência, entender como tudo funciona.
Comecei com um BASIC bem básico, que só tinha desvio de fluxo com GOTO, nem função, e stack, existia. Logo vi que para algumas coisas precisaria de Assembly, especialmente jogos.
Note que não tinha tela gráfica, com texto você usava a criatividade. Dava pra fazer "3D". Não dá vontade de entender como fazer tudo funcionar?
Isso tudo me direcionou para o que sou hoje. E sinto falta das pessoas que não aprendem o básico, construindo o conhecimento. Tanto que quase todos que eu conheci e são bons programadores, se não começaram assim, voltaram para pegar o aprendizado desta forma em algum momento.
Veja bem, sei de pessoas que são bons entregadoras de resultado, até porque hoje ficou mais fácil fazer isso, tem gente que entrega sem fazer uma linha de código. Mas eu estou falando de pessoas que são verdadeiramente desenvolvedoras de software.
Eu já adorei as linguagens naquela época, qualquer uma. Eu criei com pouca memória, um compilador de BASIC feito em BASIC onde só podia rodar uma aplicação. Bem, eu chamava assim, muito tempo depois fui descobrir que era um interpretador e não um compilador.
Aprendi COBOL só no livro porque não tinha onde praticar. Foi dos poucos livros que consegui. Na época era difícil até isso, imagine outras pessoas para conversar sobre o assunto. Vocês não sabem o privilégio que é ter internet. Por isso não deveria ser desperdiçado, como vejo acontecendo muito.
Eu fui evoluindo, conseguindo empregos, e tive a sorte de encontrar pessoas que me ajudaram muito, mais do que tecnologias.
Eu tive uma tecnologia que definiu muito a minha vida, foi o Clipper, atualmente Harbour. Foi aí que me direcionei para fazer ERPs e afins. E ela me ajudou a consolidar meu entendimento sobre programação, até porque não tinha muita mágica, você tem que entender de tudo. E também com ela fui pentelho e me enturmei com as pessoas certas para obter informações e acesso privilegiado, o que me ensinou muito, não só tecnicamente.
Também comecei mexer com C, e fui vendo a beleza de saber o concreto e não ficar só com as abstrações, só com as bibliotecas e frameworks.
Claro que depois fui aprendendo várias outras linguagens, incluindo Perl e PHP porque a internet havia chegado.
Não vou fazer lista, porque aprendi muita coisa, em diferentes níveis. Isso tudo foi mudando minha percepção, não uma tecnologia, mas a soma delas, me deu visão mais ampla de tudo. De Lua à Lisp, passando por linguagens que você nunca ouviu falar, algumas proprietárias, todas me influenciaram. Por isso acho importante ver de tudo.
Claro que neste século C# me conquistou. E ela, junto com outras formas, mudando a forma como penso software. Cada hora pendendo para um lado. Mas sempre olhando como elas funcionam. Que alegria o advento do open source. Então de certa forma o Github, antes o Sourceforge, acabaram sendo importantes, não no sentido da postagem original.
Também me interessei por bancos de dados, até iniciei um projeto de um próprio, mas que nunca levei pra frente, mas o processo me ajudou a entender melhor como eles funcionam. Isso me dá uma base muito boa, e me faz pensar diferente da maioria. Eu teria que destacar o SQLite aqui porque é umas das peças de software mais interessantes que eu já vi.
Namorei muitos softwares, especialmente os simples. Nunca caí de amores por coisas complexas, quase sempre elas não são boas. Por isso sempre tive um pouco de crítica ao .NET mesmo gostando do C#.
Meus instintos costumam ser bons, então é raro eu odiar algo e depois gostar. Acho que aconteceu, mas não me lembro de algo, pelo menos não algo que depois eu aprendi muito. Eu já mudei de ideia porque algo mudou, mas raramente mudei porque eu vi que estava errado. Eu errei muito, mas não muito nesse sentido. Eu acho que teve casos que eu deveria ter mudado, mas não consegui. Deveria, por causa do mercado, então nunca achei um bom motivo suficiente.
O que me fez mudar, além de pessoas específicas, um em particular, outra tecnologia que mudou indiretamente foi o Stack Overflow. Minha carreira é definida como antes e depois dele. Eu me impressiono depois de 15 anos como as pessoas que ainda não aprenderam a usá-lo corretamente. Quem consegue fazer isso pode dar um salto. Ainda que hoje seja mais difícil. Isso vale um pouco para a Wikipedia que ajudou muito no acesso à informação, assim como a C2 Wiki que quase ninguém conhece, e dão valor para coisas com pouca importância. Claro que esses sites todos que estou citando são tecnologias que só ajudaram a mudar meu pensamento, não foram elas em si que mudaram.
E eu queria que todos tivessem a mesma oportunidade. Por isso sou até chato nisso tudo. Eu vi valor grande demais para que seja só pra mim. E vejo muita gente incentivando o contrário, e não vejo bons resultados quando se faz o contrário. Pode fazer diferente, mas o contrário não dá certo. E a pessoa não percebe.
Eu tive a sorte de cair em situação que pude mudar o rumo de alguns softwares e me fez especialista, sem querer, em performance. Curiosamente não por genialidade minha, até me acho meio fraco, mas porque a maioria não estuda o básico. Com isso consertei muito software que rastejava. E isso foi me ensinando muito.
Todos os inúmeros softwares que passaram pela minha frente forma me ensinando alguma coisa. Ach oque posso destacar os que tinah algum dicionparios de dados, que me fez criar um conceito mais amplo.
Enfim, muitas tecnologias me ensinaram ver as coisas de forma diferente, e se eu puder recomendar só uma coisa para você, é se expor para várias tecnologias, elas sempre ensinam algo, se você souber fazer. Eu sempre usei a inteligência das pessoas para fingir que eu sou inteligente. Elas criam coisas fantásticas, eu aprendo e uso, e pareço bem na foto.
Alguns citaram OOP. Isso não é uma tecnologia, é uma técnica. Eu fiquei deslumbrado com isso nos anos 80, usei todo esse tempo errado, e hoje sei que ela não é tudo isso. Mas serviu para me dar outra forma de fazer. Quem só sonhece OOP, tem limitação. Em geral a pessoa adota por não ter outro parâmetro.
Faz sentido para você?
Espero ter ajudado.
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).