Executando verificação de segurança...
6

Qual tecnologia que VOCÊ aprendeu que foi total diferencial para mudar a forma como você pensa em software?

SAIU AGORA! O vídeo "A tecnologia “odiada” que mais me ensinou sobre software" onde eu comento como que o #WordPress foi FUNDAMENTAL para meu entendimento em várias coisas de arquitetura, SDKs e coisas que quase 10 anos depois que eu comecei ainda fazem bastante diferença na minha vida, bora ver? 👨‍💻

https://youtu.be/oBM5NomVtak

PS: Tem alguma tecnologia que vocês usaram que foi total diferencial para mudar a forma como você pensa em software? Manda ai nos comentários!

3

A tecnologia que mudou a forma que eu pensava (pelo menos em Desenvolvimento Web) foi o Socket.io, tanto que eu odiava JavaScript com todas as forças e o Socket.io me forçou aprender Node.js e, por consequência, dar um salto no que eu entendia sobre o modelo de Request / Response e o protocolo HTTP.

E como citou o Wordpress, eu adorava ele 😍 Entendo perfeitamente o hate em cima dele, mas quando usado da forma certa, é uma plataforma sensacional. Não sei como está hoje, mas no passado foi um choque muito positivo no mundo Open Source e muita gente que dá hate nele, deveria na verdade é agradecer 🤝

2

Masssa demais a história!!! O socket.io foi um diferencial pra mim tbm, pq na época ele me ajudou a entender melhor o Redux sauhshua pq na minha cabeça eu não tinha claro a ideia de eventos (que no final também ta ali pau a pau com o addEventListener do navegador) cada dia aprendendo era um momento AHA diferente.

E po o WordPress não merece esse hate não, pagou muita conta minha ashuhusauh e até hoje, vários sistemas de pequeno/médio porte eu consigo imaginar como funcionaria tranquilamente só usando os Custom Post Type e talz

3

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.

Telejogo

Space InvadersPac ManEnduroRiver RaidPitfall

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:

TK 82 2KB

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.

Código de aplicação de temperatura

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.

Jogo só texto simulando gráficoSimulando 3DLabirinto

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).

1
2

Pra mim não foi uma tecnologia específica. O que me faz mudar constantemente é a experiência diária. Cada pequeno passo faz com que minha percepção sobre várias coisas mude ao longo do tempo. É um processo contínuo, que espero que não pare.


No início da carreira (há muitos anos), já fui fanboy de linguagem. Não me orgulho disso. Com o tempo comecei a pegar projetos em outras linguagens e tecnologias, e percebi que linguagens são apenas ferramentas (assim como IDE/editor, framework, browser, sistema operacional, etc). Defender cegamente uma ferramenta é ridículo e costuma levar a discussões inúteis e decisões ruins. O correto é sempre analisar os prós e contras e decidir caso a caso quando usar ou não, isso vale pra tudo (por isso também abomino o termo "boa prática", porque muitas vezes é adotado como "use isso e não questione").

Também já teve um período em que fui adepto de sempre usar a última moda (outra coisa que não tenho orgulho). Saiu a última versão de seja lá o que for? Vamos atualizar. Aí dá pau porque tinha incompatibilidades com algum código legado, ou aquela dependência importante ainda não foi atualizada, etc. Aprendi na marra que nem sempre vc precisa da versão mais recente de tudo. E que migrações devem ser feitas com calma e cuidado (e muitos testes). E que modas vêm e vão, mas os fundamentos nunca mudam.

O que me leva ao próximo item: os fundamentos (algoritmos, estruturas de dados, lógica/matemática, complexidade de algoritmos) são talvez a parte mais importante das nossas profissões, e infelizmente a mais negligenciada. Isso eu também aprendi na prática a valorizar, em várias situações penei pra resolver algo que era muito simples, bastava saber o algoritmo pronto que já existe há décadas e que não dei muita importância quando o estudei.


Só pra mencionar um caso específico, eu finalmente entendi recursão quando estudei Lisp. Já tinha visto funções recursivas antes, mas só compreendi de fato depois de várias aulas usando as operações car e cdr para manipular listas. E com o tempo percebi que na maioria dos casos comuns do dia-a-dia, vc não precisa recursão (embora seja importante saber, para os raros casos em que precisar).

1

Python é meu amor, mas Rust hoje me ensina a entender coisas que antes quando estava na faculdade eu odiava muito como sockets ou trabalhar com camada OSI na unha e etc.
Ta sendo uma redescoberta de coisas que eu podeira sempre ter gostado mas, na epoca da faculdade me fez odiar infelizmente.

1

Foi a programação orientada a objetos de verdade.

Pra mim foi a quase 20 anos atrás, programava na Linguagem C profissionalmente e passei a usar o C++.

Usava struct em C e com as classes, tudo mudou pra melhor...

1

POO abriu minha cabeça sobre como o JS funciona de verdade...
Deveria ser uma das primeiras coisas a se ensinar nos cursos de JS mas não é.

1

Pra mim foi aprender estrutura de dados em linguagens mais baixo nível, tipo C, aprender como funciona a memoria RAM, como os dados são salvos e como são identificados, o que são ponteiros, quais os tipos de estruturas de dados... Enfim, isso meio que esclareceu muita coisa na minha mente, e aprender POO em Java e dominar os canceitos mudou tudo também. Foi depois dessa "aventura" que eu tive, guiada pela curiosidade de aprender os fundamentos e explorar linguagens de mais baixo nível, eu tive uma visão bem mais ampla sobre programação. Muitos iniciantes erram nisso, a maioria só fica no superficial, pegam uma linguagem de alto nível, um framework, faz o básico do básico a acham que aquilo é tudo, mas não se aprofundam em lingugens mais "old schools" para aprender de fato os conceitos, e muitos até criam uma barreira e tem medo de linguagens como Java, C, C++, etc... Tem muita gente que já está bastante tempo codando e não sabe os fundamentos de verdade porque não se aventurou, e se limitaram a ficar só no alto nível ou no mais fácil. E nessa questão, eu acho que a faculdade ajuda de mais (dependendo da qualidade de ensino), antes dela te ensinar algum framework, ela te ensina a lógica, depois te ensina uma linguagem baixo nível, tipo C, te ensinam algoritmos, estrutura de dados e vários outros conceitos mais "raizes", só depois que você vai aprender algo de alto nível. Isso é muito bom porque você aprende o que está por traz daquilo que está fazendo, quando você cria um objeto no javascript você sabe que aquilo é uma hashmap, você sabe o que é uma list no python e uma list no Java, ao estudar os conceitos de POO em Java, você aprende conceitos que você não aprenderia se você só se fechasse no mundinho do javascript. Eu acho que todo iniciante deveria ter essa visão, e não apenas escolher a linguagem hype do mercado para conseguir emprego rápido, mas focar em aprender os fundamentos e ter uma visão mais generalista e aberta (Não estou dizendo que não deva focar uma linguagem), mas que seja mais aberto e que não foque apenas em linguagens, mas sim nos fundamentos. Porque tendo os fundamentos, você aprende qualquer linguagem com muita facilidade, na minha visão, o que te faz um bom programador não é a linguagem que você sabe, mas sim o quanto você sabe os fundamentos, o cara que tem os fundamentos na mente. Se um dia alguma linguagem hype cair em desuso, o cara que só focou em aprender a linguagem direto vai estar ferrado, ele vai ter que começar do zero de novo. Já o cara que tem uma base sólida nos fundamentos, ele já pega a documentação de outra, e em semanas já consegue ser produtivo nela. No canal do Fabio Akita, tem uns videos dele que ele fala sobre isso para quem está iniciando, que é sensacional.

1

Programação funcional.

Pode não parecer, mas a POO é muito complicada quando vc faz um software relativanmente grande e complexo. Que inferno! a coisa não pára! começa com umas poucas classe, aí vc precisa evoluir, vai pra design patterns e explode no DDD. Mil abstrações sem resolver nada do seu problema, tudo boilerplate. É assim que funciona e funciona muito bem, só fica a sensação de que não precisa daquela violência toda...

POO é um conceito muito bem definido, só não tem nada de simples. E a coisa só vai piorando à medida que vc precisa extrair mais dela. São anos até vc dominar tudo o que precisa.

E agora com outras linguagens além do Javascript, como Clojue, Julia e outras, enfim o devido modo funcional de ser.
No Clojure, e a família toda do Lisp, a coisa toma outra forma, porque vc acaba programando orientado aos dados e não à essas abstrações desnecessárias. É muito mais o encadeamento dos dados, vai encadeando uma coisa na outra.

1

Programação funcional mudou tudo pra min tbm.

Eu entrei na faculdade meio que de paraquedas, nunca tinha visto quase anda de programação na vida, e durante o primeiro semestre como um todo eu me dei bem na programação, mas achava tedioso, até aprender funcional em haskell, mudou totalmente minha forma de pensar.

Hoje sempre uso o conceito de funções puras, evitar efeitos colaterais, modularizar responsabilidade de uma função, envolui muito apos aprender varios conceitos do funcional

1

O que fez me dar um salto de entendimento sobre essas coisas, por incrível que pareça, foi o Excel.

Até então, eu só tinha feito scripts básicos de cursinho de internet e faculdade. Nunca tinha construido nada do zero, até o dia em que precisei criar uma gambiarra de excel pra emitir romaneios de entrega para motoristas do centro logistico onde trabalho até hoje.

É uma empresa grande, mas que não queria pagar um software proprietário cuja licenca tinha vencido, e também não queria pagar por umas telas do SAP pra fazer isso. (Isso serve para quem nunca esteveno mercado: essas coisas acontecem, aos montes).

Então, eu me ofereci para criar um programinha no Excel para emitir esses documentos.

Usei VBA, codigo e as telinhas, para criar a interface com o usuário. O armazenamento seria na propria planilha. Na epoca, fiquei pensando em usar o Acess, mas fiquei com medo de 1) eu nao dar conta, e 2) o Acess não dar conta kkk

Aquele foi o meu primeiro CRUD. Pela primeira vez, tinha que pensar não apenas em if/else/while, mas em todo o fluxo, desde se o usuário ia entender o nome da label do botão na tela até como dividir as tabelas no "BD".

Sem perceber, eu estava me preocupando desde UX Writing até normalização de tabelas de dados, passando por clean code (vai que alguém precida dar manutenção nisso?), segurança (precisei criar usuarios e senhas para identificar quem estava usando a planilha), depois descobri que dava pra usar o login do windows pra fazer a validação...

Enfim, aprendi em alguns dias mais do que em qualquer curso por ai.

Sem contar as softskills: negociar prazo com a minha gerente porque o projeto atrasou, ouvir feedback de usuario que não entendeu o que a tela fazia, resolver bug na hora pq alguma coisa tava dando errado na planilha...

Saí amadurecido desse projetinho no VBA que todo mundo despreza.

A gambi rodou uns dois anos. Depois comecou a dar pau, pqz diferente de um SGBD, o Excel faz uma farra na hora da concorrência entre usuarios kkkk, mas foi bem divertido!

Bônus

O resultado desse projetinho foi que o meu nome ficou falado no CD todo. Logo mudei de área. Um outro gerente tava querendo montar uma mini area de dados no CD. Mas, com poucos recursos, o Excel e suas gambiarras foram mais uma vez a salvação.

Eu e colegas montamos um planilhao que puxava dados do SAP, processava e entregava resultados na forma de dashboards, pq o acesso a powerBI era bem escasso na época.

Ali eu tive que aprender bastante sobre ETL, sobre fatoração e normalização, (quem ja tentou salvar o mundo dentro de uma planilha sabe a loucura que é), e visualização de dados, pois os gerentes queriam entender o que estava acontecendo na operação apenas com uma olhada no dashboard.

Alguns momentos me deram bastante orgulho, como na vez em que conseguir reduzir pela metade o peso da planilha apenas fatorando tabelas. E quando eu consegui fatorar todo o codigo VBA que processava os dados e que tinha sifo feito em macros (quem ja fez, sabe como esse tipo de codigo é "sujo") e consegui aplicar o bom e velho clean code. Ficou brilhando! Amei!

(E mais uma vez: as infinitas rodadas com os "clientes" do projeto e seus feedbacks de usuário, que muita das vezes não sabem o que quer, ou não sabem explicar o que quer... Experiencia valiosa.)

Enfim, esses são exemplos que eu guardo comigo.