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

65 coisas que aprendi sendo um bom desenvolvedor.

Antes de mais nada, queria dizer que este post é grandemente inspirado neste post do r/experiencedDevs, porém traduzido para o português, adaptado a minha realidade de arquitetura, atividades open source e amplamente discutido com todos os programadores que já conheci em minha curta vida.

Li este post interessante no r/experiencedDevs quando foi escrito (~2y) e desde então venho conversado muito sobre ele e tenho feito algumas reflexões sobre essa vida de garoto de programa. Sempre anotava coisas relacionadas a este texto e adicionava minhas próprias modificações. Hoje, finalmente, decidi escrever meu próprio post.

Do mesmo modo que flipstables escreveu suas ideias em tópicos, eu também farei o mesmo. Pois este artigo será meu ponto de referência por muitos tempos.

A vida não está escrita em um livro de regras, e muito menos este post tenta padronizar todos os comportamentos existentes. Portanto, aproveite o que quiser, mas não espere aproveitar tudo e nem leve os exemplos ao pé da letra.

Nota do editor: Recebi vários feedbacks e vou anexar deixar um 🗨️ em todos os pontos que recomendo ler os comentários para entender melhor meu ponto.

Vamos lá?

  1. 🗨️ Se por algum motivo qualquer eu cogitar ser o mais inteligente de uma sala qualquer, está na hora de sair.
  2. 🗨️Não conheça quem está no seu pedestal. Paguei, uma vez, 5K USD para ter um curso com um dos meus heróis, para, no final das contas, descobrir que ele está seguindo sua vida assim como todos nós.
  3. 🗨️ Existe uma razão do porque pessoas recomendam sempre ficar no linkedin a procura de oportunidades. No momento que se sentir insatisfeito, está na hora de ir para a próxima.
  4. 🗨️ Para iniciantes, a """"linguagem de programação"""" mais lucrativa é aprender SQL. Dane-se todas as outras """"linguagens"""", se você sabe SQL e nada além, você FAZ dinheiro. Trabalha com suporte? Talvez 2K/mês, trabalha com suporte e sabe SQL? 5k/mês. Quer trabalhar como PO? 5k/mês. Quer trabalhar como dono de produto e sabe SQL? Se auto-entitule gerente de projeto e faça 10k.
  5. 🗨️O melhor modo de avançar de carreira é trocando de empresa. Esta imagem descreve melhor Why you should job hop
  6. Stacks de programação raramente importam na sua carreira. Deve ter por volta de uns 20 patterns de arquitetura que se aplicam à tudo. Todas as bibliotecas só tentam fazê-las mais simples, não se desespere com os 9 trilhões de frameworks lançados todos os dias no npm.
  7. Eu já fiz várias duradouras amizades em empresas que trabalhei. Não preciso fazer disso um requisito para todos os meus empregos. Já fui feliz em empresas que não tive nenhuma amizade e já fui muito insatisfeito em empresas que fiz grandes amizades.
  8. Não tenha medo de códigos/bibliotecas no NPM/Maven/Github/Etc, não são buracos negros escritos por Albert Einsteins. Foram escritos por alguém exatamente igual a você. Acreditar nisso é o maior passo que você pode ter para escrever códigos em geral.
  9. Várias empresas inovadoras, principalmente as auto-intituladas startups, falam sobre seu "verdadeiro eu". Mas e se seu verdadeiro eu for de apenas assistir pornô? Sim, é completamente saudável manter uma barreira entre sua vida profissional e pessoal.
  10. O número de projetos que um desenvolvedor pode ficar ao mesmo tempo são 2. Quando ele enjoa de um, pega uma task do outro e vice-versa. 1 é super aceitável, 3 projetos simultâneos e você já perdeu 50% de sua performance.
  11. Se eu não aprendi nada de um júnior ou estagiário este mês, eu não estava prestando atenção o suficiente.
  12. Seja grato e educado com todo mundo, você não sabe o que essa pessoa passou por essa semana/mês/ano. Não faça isso por que vai ajudar sua carreira (Com certeza vai), mas por que você também estará se agradecendo mais.
  13. Crescimentos de título são boas, Júnior para Pleno, Pleno para Senior, Lead... Mais tarde em sua carreira, demoções de título são desejáveis, você acaba ganhando mais por ser uma promoção, porém consegue focar em um tópico. Em outras palavras, antes de chegar em Lead, alavancos de carreira te trazem dinheiro e responsabilidades, depois, apenas crescem seu salário.
  14. Gerentes têm muito menos poder do que você pensa. Já se pegou pensando no porquê seu gerente não demite alguém? Simples, ele não pode.
  15. Meu valor próprio não é uma correlação ou função com minha remuneração total. O capitalismo é uma maneira horrível de determinar meus valores.
  16. Nunca trabalhei em uma FAANG, e por isso não posso dizer o que estou perdendo. Já trabalhei com muitos desenvolvedores ex-FAANG e eles também não sabem o que estão fazendo.
  17. Trabalhar de casa é perfeito, porém a carência de brainstorms, whiteboarding e comunicações que temos em trabalhos presenciais fazem falta.
  18. Eu sei o suficiente de websecurity para saber que não sei nada de websecurity.
  19. Ser um bom desenvolvedor é conhecer as melhores práticas, ser um bom arquiteto é saber quando quebrar essas boas práticas.
  20. Boa arquitetura de software não significa usar milhares de padrões, e sim usar a menor quantidade possível destes padrões sem engessar seu código.
  21. Se você está em uma war room, e estão todos estão querendo colocar culpa uns aos outros do porque a algo está quebrado em prod, a culpa é unicamente e exclusivamente de TODO MUNDO.
  22. Todo mundo ama um happy hour ou ir em um barzinho com o pessoal do trampo às sextas. Todo mundo, também, prefere muito mais passar esse tempo com amigos e família.
  23. Nenhuma arquitetura pode ser horrível e continuar sendo horrível com a desculpa de ser mais performática, sem que métricas concretas comprovem a melhoria. Já com pedaços de código, qualquer mudança por velocidade é preferível.
  24. 🗨️ A melhor demonstração de liderança que você pode encontrar, é do líder que pega o esporro para ele, até de coisas que são 100% minha falta. Pode ter certeza que eu entraria debaixo em um caminhão por ele.
  25. 🗨️ Usar o terminal é melhor e mais eficiente que qualquer GUI já feito. Se você passa mais de 1 minuto tentando executar um comando no terminal, é melhor você voltar a usar um GUI.
  26. Não é importante fazer o que eu amo, é importante eu não fazer o que eu odeio.
  27. Nem todos os melhores empregos estão em grandes vales industriais, porém vários estão.
  28. Ainda sobre líderes, os melhores que consegui trabalhar, faziam de tudo para advocar minhas opiniões e também faziam de tudo para me explicar opiniões conflitantes com a minha. Trabalhe duro para ser igual a eles.
  29. 🗨️ Algorítimos e estrutura de dados são importantes até um certo ponto. Não vejo entrevistas de emprego em farmácias terem provas sobre química orgânica. Temos várias premissas erradas em nossa indústria.
  30. Problemas de visão e coluna são coisas seríssimas. Invista seu salário em bom equipamento. Temos problemas negativos em ser ratos de academia e programadores ao mesmo tempo.
  31. Setups com múltiplos monitores são ótimos. 1 monitor e várias keybinds, te leva à uma maior produtividade. (Essa eu dedico ao ThePrimagen)
  32. Disso tudo, saber escrever boas changes proposals é uma das maiores habilidades subestimadas.
  33. Nunca é tarde para ajudar um projeto open source, você está pecando ao usar um OSS e não abrir issues para seus problemas.
  34. Não importa qual é seu cargo, saber ter uma conversa altamente técnica, técnica, rasa, amigável, arquitetural e de produto, sendo todas sobre o mesmo assunto específico, te torna em alguém que os outros queiram ouvir e que facilmente terá suas ideias aceitas. Tudo corre com fundamentos em como você propõe uma ideia, e não sobre o que essa ideia se baseia.
  35. TDD ou qualquer outro tipo de teste escrito demora e é custoso. Passar mais de 10 minutos no insomnia ou postman é mais custoso ainda.
  36. Recrutadores externos são sanguessugas, mas se você achar algum bom, tenha uma boa relação com essa pessoa, ela claramente tem o poder de alavancar sua carreira.
  37. Sabe como descobrir se um recrutador externo é bom? Se ele(a) passou mais de 3 anos como recrutador externo, provavelmente ele é ruim. Bons recrutadores sempre viram recrutadores de alguma grande empresa.
  38. Eu nunca julguei uma linguagem de programação à fundo antes de virar altamente íntimo com ela. Hoje odeio java, porém trabalhei com java por um tempo. (Todo ódio ao GWT).
  39. Uma tecnologia é boa e sobreviverá ao teste do tempo quando ela for ruim, mas mesmo assim você a recomendaria para um cliente.
  40. Quanto mais perto estou do produto, mais perto estou da geração de receita e mais me sinto valorizado, independentemente de quão técnico seja o meu trabalho. Isso tem sido verdade até mesmo para as empresas mais progressistas.
  41. Linux é importante até quando eu trabalhava apenas com Windows (WSL <3), pois eventualmente eu trabalhei com linux.
  42. Todo desenvolvedor, independente do campo, deveria perder um final de semana tentando instalar arch linux no seu computador.
  43. Bom código pode ser entendido por um júnior, ótimo código é entendível até por alguém na faculdade. O melhor código é não ter código nenhum.
  44. Se você se encontra online em um war room às duas da manhã mais de uma vêz por trimestre, algo seriamente está errado. Procure consertar ou troque de empresa.
  45. As qualidades de um bom gerente compartilham muitas qualidades de um bom desenvolvedor.
  46. Aprendi a ser honesto com meu gerente. Não muito honesto, mas honesto o suficiente para que eu possa ser autêntico no trabalho. O que de pior pode acontecer? Se ele te demitir, terá mais trabalho com entregas e capacitação do que poupar um erro meu.
  47. Quando você vai contratar alguém para montar bicicletas (Eu, aos 14 anos 🙂) em um bike shop, você não quer saber unicamente se essa pessoa sabe pegar em uma chave de fenda e montar uma bicicleta. Porque em desenvolvimento teria que ser apenas sobre escrever códigos?
  48. Não importa o quão famosa ou superior uma linguagem seja, isso não importa se ninguém a usa. (Menos rust, aprenda o básico de rust.)
  49. Se uma empresa for metade remota e metade presencial, é importante determinar se as pessoas remotas não são tratadas como cidadãos de segunda classe. Se as decisões importantes são tomadas em uma sala de reuniões, é melhor tentar mudar a cultura da empresa (difícil) ou mudar para uma empresa diferente que trate seus funcionários remotos como cidadãos de primeira classe.
  50. Burnouts não acontecem quando você trabalha muito, eles aparecem quando o investimento emocional que você colocou em algo não gerou um retorno na mesma intensidade.
  51. É totalmente OK você estar desconfortável com alguma tecnologia. No momento que você se tornar confortável com ela, outras 100 melhores apareceram e você provavelmente já deveria ter trocado de desafio (Mesmo conceito do tópico 1).
  52. Se em algum momento acontece um "only works on my machine" no seu time, está na hora de atualizar o ambiente de desenvolvimento de TODO o time.
  53. Não tenha medo de discutir, tenha vergonha de não conseguir admitir.
  54. Entrei no mundo tech por ser meu hobby. Agora meu hobby é o mesmo que meu trabalho e agora meu trabalho arruinou meu hobby. Se eu quiser voltar a curtir tecnologia tenho que entender que ela não é mais meu hobby e achar um outro hobby.
  55. 🗨️ Se você entra em uma reunião com a solução para o problema à ser discutido já em mente, ou você é um péssimo comunicador ou seu cérebro te enganou em fazer você achar que é a melhor solução.
  56. Eu disse o contrário antes, porém Tech Stack faz diferença. Se você escuta desenvolvedor python ou desenvolvedor C++, você imagina esteriótipos diferentes. Certas habilidades são melhores para certos trabalhos.
  57. O mundo precisa de mais linguagens java. Java é uma péssima linguagem de programação que é quase boa em tudo.
  58. Se o cliente soubesse exatamente do que ele precisa, ele não seria um cliente e sim um vendedor. Desça do seu pedestal de desenvolvedor e se imagine em uma quarta feira 3h50 da tarde tentando usar o sistema que você desenvolve. Entender o problema trará mais soluções do que ouvir vários usuários.
  59. Deixe seus melhores desenvolvedores trabalharem em developer experience. Um artigo que sempre carrego comigo.
  60. Dois sistemas iguais que resolvem os mesmos problemas não são razões para justificar uma arquitetura igual para ambos. Cada caso tem seu caso e NUNCA vai ter um livro de regras para seguir. Nossa vida é na engenharia de software e não somos pilotos de avião para seguir um manual de conduta.
  61. Várias vezes encontro com pessoas querendo entrar no campo e me perguntam de onde tirei motivações. Simples, de nenhum lugar. Acredito em meritocracia até certo ponto, porém todos nós temos que entender que a maturidade de uma pessoa influencia muito na sua vida.
  62. Os melhores programadores que conheci até hoje, se encontraram dentro da área depois que acabaram usando algum código besta para resolver algum problema ou fazer alguma modificação em algum joguinho. (Alguém aí conhece Spigot 1.8.8?) Primeiro se ganha a motivação e depois se executa a ação, raramente é ao contrário.
  63. 🗨️ Não existe sênior de CRUD. Se todas as empresas que você já trabalhou são CRUD com maquiagem, está na hora de buscar algo com desafios maiores.
  64. O melhor lugar de aprender problemas reais são em blogs de grandes empresas relatando os motivos da queda de serviço ou de mudança de arquitetura. LuanRoger colocou uma boa lista aqui no tabnews.
  65. Depois de certo nível de carreira, o melhor modo de aprendizado é lendo artigos/RFCs/blogs, há uma grande falta de conteúdo audiovisual avançado e provavelmente não mudará. Acostume-se com isso.

Escrevi a maioria que acho digna de aparecer neste blog. Fique feliz se você achou algum tópico como óbvio, pois isso marca que você está no caminho certo.

Provavelmente você discorda de algum conceito apresentado ou precise de explicação. Os comentários estão aqui e adoraria dissertar sobre este tema.

Obrigado :)

Se puder me seguir no github, adoraria muito :) Também publico alguns artigos interessantes no meu site, caso tenha interesse.

Carregando publicação patrocinada...
5

Se por algum motivo qualquer eu cogitar ser o mais inteligente de uma sala qualquer, está na hora de sair.

Essa frase é muito clássica, clichê, e foi (é) bastante popular no LinkedIn.
O interesante é que ela tem uma grande contradição, que parece que as pessoas não enxergam: Alguém sempre vai ser o "mais inteligente" de um determinado grupo. Se esse alguém sair, outro passará a ser, e se este novo sair e seguirmos assim, todas "as salas" estarão vazias.

Você entrou no ambiente por ter pessoas "mais inteligentes" que você, e você queria aprender. Se agora você é o mais inteligente, podes até procurar um novo grupo, mas não simplesmente "abandone" o grupo antigo. É agora sua hora de retribuir e ensinar o que você, durante tanto tempo, apenas aprendeu.

2

Na verdade, essa analogia se refere ao fato de que todo mundo tem algo pra ensinar, mesmo que você seja o mais inteligente na programação deve ter outro que sabe mais sobre arquitetura, já outro que sabe mais sobre projetos e até o estagiário vai ter algo novo pra te ensinar. Isso vale para você, precisa estar disposto a ensinar e aberto a aprender mesmo que não seja algo técnico da sua área. Assim todos nós estamos aprendendo coisas novas o tempo todo.

O momento que você deve sair é quando você percebe que não tem mais nada pra aprender naquele grupo, e isso pode ser por várias razões não somente porque você é o mais inteligente, pode existir alguém super inteligente mas que simplesmente não se dá o trabalho de passar esse conhecimento seja por egoísmo ou falta de entrosamento do grupo.

1
1
1
1

Caramba, vou voltar sempre aqui para ler, e pegar alguns pra tentar por em pática até completar a lista. Muito obrigado, amigo. Com certeza vou pegar o que me for útil e de valor desses tópicos.

1
1

Elas fizeram muito sentido para mim. Seja chatGPT ou não, são as experiências do autor. Em vez de uma crítica superficial, sugiro que você leia tudo atentamente e faça uma análise construtiva. Não seja apenas um usuário que grite que o sistema tem problemas, mas aquele que identifica e descreve qual é o problema.

1

Certo, eu revi as respostas da galera aqui e não encontrei a sua crítica construtiva na lista.

Me parece que você tentou me explicar um problema que você mesmo praticou nessa tentativa, mas ok. Sigo aqui esperando ansiosamente pela sua análise construtiva de 65 coisas que aprendi sendo um bom desenvolvedor., ao invés de dizer que meu comentário tem problemas (parafraseando o seu próprio comentário) vai lá e faz o que você acha que eu deveria ter feito.

:)

1

Não tenha medo de discutir, tenha vergonha de não conseguir admitir

um ponto que tocou-me e venho relfetindo. Chega um momento onde sinto lá no fundo que estou errado e simplesmente me custa admitir.

1

Já de cara, achei incrível a dica sobre sql, pq é onde mora os recursos, então se você toma conta dessa parte no software de alguma empresa, fica óbvio pq se é pago. E é infinitamente mais fácil que outras complexidades aí a fora.

Entendi sobre o avanço, financeiro, de carreira pela minha experiÇencia com trabalhar como um todo: pois quanto mais na posição se está, mais cansado nela você fica e mais exploração se é esperada sob você, é simplesmente como o ser humano é com os outros.

Sobre as stacks, eu concordo plenamente, e fico fulo o tamanho e diverso requerimento em vagas para elas, uma vez que você não experiência com ela fica difícil vencer isso, então a maior capacidade de um desenvolvedor pode facilmente ser jogada fora: a de navegar em tecnologias por meio do seu entendimento.

O item sobre web-segunrança me deu goosebumps, eu mal posso imaginar essa matrix que nos rodeia XD

As startups "unicórios" e "blá blá blá" gostam dessa cultura "woke" de hoje em dia mas é pura merda. Eles mal conhecem o conceito de seu verdadeiro eu e cobram por isso pode modismo.
Mas dou crédito ao reconhecimento do valor do conceito, é perfeito: é o que te pode verdadeiramente te dar uma posição. Mas tem momento certo, afinal, vivemos em sociedade, carreira é um jogo e bla bla bla. O lado pessoal da vida ainda é o que mais importa mas fingimos que não.

Os abismos gerados pelas suposições erradas na nossa indústria me mantem sem emprego nela desde minha ultima crise.

A dica 40 me faz perceber que aprendi isso na marra tbm. Uma vez que todo nosso sistema trabalhista interno é voltado a produção, isso passou a orientar minha forma de trabalhar, mesmo contra alguns momentos contra minhas metodologias.

Sofri burnout nas minhas primeiras experiências com serviços de desenvolvimento em uma empresa. Eu nunca aprendi nada de negócios nem de trabalho antes de disso, e até hoje estou me curando e ainda não consegui trabalho na área por causa de o quanto queimado fiquei.

Me arrepiei com seu ponto sobre como entrar na área. Eu passei literalmente por isso! Usei um código meio besta (não tão besta pq foi uma solução criativa com saas e mobile) e eu tomei entusiasmo ainda jovem modificando warcraf3 (alguém ali do teamkings?)

Comecei a tomar consciência do seu ponto sobre conteúdo audiovisual sobre tecnologias a um tempo, e só vem reforçando, afinal, quem trabalha criando conteúdo sobre tecnologias provavelmente só sobre o meio termo sobre elas ;)

Abraço, muito obrigado pelo post, vc é 10, 10.000!
abraço abraço

1

Acho que valeria segmentar as dicas por categoria. Nem todo mundo precisa ou está interessando em todas as dicas mas muito provavelmente todos podemos tirar proveito de ao menos uma dica ou outra.

1

Entrei no mundo tech por ser meu hobby. Agora meu hobby é o mesmo que meu trabalho e agora meu trabalho arruinou meu hobby. Se eu quiser voltar a curtir tecnologia tenho que entender que ela não é mais meu hobby e achar um outro hobby.

Eu tava passando por isso, eu amava estudar programação muito mesmo, ainda gosto mas não como antes, agora depois de um dia cansativo de trabalho eu não consigo parar pra consumir vários conteúdos sobre programação, "como fazer tal coisa?", "maratona de programação..", eu sinto que eu fico cansado demais pra fazer isso e nos tempos livres eu quero mais é descansar, relaxar a mente, curtir a familia, sair e tal... Não consigo ter projetos paralelos por conta disso mas aprendi a ter um hobby em tecnologia que foi desenvolvendo games, não quero usar isso de forma profissional mas eu achei bem divertido fazer joguinhos sem pressão, sem cobranças, só meu joguinho do jeito q eu quero... foi uma forma de ter um hobby ainda ainda na área que não me deixasse com esse sentimento de "estou cansado pra estudar isso agora...".

1
1

Que topp! Parabéns! Eu ainda tenho um hobby em programar e em projetos paralelos, mas agora está se degradando em colecionar whiskeys, vinis e airsoft. Deveras diferenciado, mas realmente consegue fazer a quebra de clima para eu conseguir voltar entrar no clima de programar todos os dias.