Coisas que eu não sei em TI e no geral (2018)

Fala meu povo, como estão? Tudo em cima? Ando sumido da escrita e dos posts, sei disso.

Passei por uns problemas uma época, depois muitas coisas acontecendo ao mesmo tempo, falta de motivação, enfim, muitas coisas mas mais pra frente eu entro nesses por menores, junto com o fim da minha série de 4498734 partes.

Desenvolvedor JavaScript — do Brasil à Europa - Ato 1 — Prólogo

Navegando ontem na minha rede social preferida, me deparei com um tweet do Willian Justen:

Desde que eu comecei a estudar React e a usar o twitter pra seguir pessoas que considero referência, ouvi falar do @dan_abramov e criei uma admiração por ele justamente pelo o que o Willian falou, o cara está envolvido só com coisa grande.

O Redux é usado mundialmente, o create-react-app foi uma ferramenta revolucionária, o cara mantém uma das maiores bibliotecas JavaScript do mundo (sim, React é e sempre foi uma biblioteca 😆), ele trabalha no Facebook, o inglês dele é muito bom pra alguém que não é nativo do idioma (ele é russo), os posts técnicos e não técnicos dele são muito bons, enfim, muitos motivos para se criar uma admiração.

No mesmo instante fui conferir esse tal post do Dan falando sobre as coisas que ele não sabe na área de TI e que geralmente as pessoas assumem que ele sabe, pelos mesmos motivos citados acima.

Bem, fiquei de cara com a quantidade de coisa que ele não sabe/não domina e que eu tinha absoluta certeza que ele saberia com maestria.

Se você consegue ler em inglês, eu sugiro muito dar uma conferida pra você talvez ter a consciência de que talvez não esteja tão ruim quanto pensa.

Impactado por esse texto, eu mandei uma mensagem para o próprio Dan perguntando se estava tudo bem fazer a tradução do texto dele pro pt-BR porque acho que seria um grande conteúdo para todos nós e recebi uma provocação (no bom sentido, claro) do Willian:

“Hey @raul_fdm, eu tenho uma dica pra você. Por que você (um desenvolvedor brasileiro bem sucedido) não escreve um post sobre as coisas que você não sabe? Talvez seja bem mais eficiente e diria muito mais sobre a nossa realidade.

Depois de ler esse comentário e refletir um pouco eu cheguei a conclusão de que talvez esse endeusamento que eu faço com o Dan pode se repetir comigo e alguma pessoa que lê meus posts sobre minha história.

Talvez alguém tenha a imagem de que pelas coisas que eu fiz e onde eu estou, eu seja um cara que sabe de tudo, ou então que seja uma pessoa muuuito acima da média, mas galera, eu não sei merda nenhuma.

Teve sim uma situação onde eu percebi isso claramente e eu ainda vou escrever sobre isso, mas trago esse post pra justamente mostrar minha ignorância e talvez trazer tranquilidade pra você que quer seguir um caminho parecido com o meu.

O próprio Willian então escreveu a versão dele sobre isso, na qual eu também recomendo.

Então eu também resolvi contar pra você as coisas que eu não sei em dentro e fora de TI.

"Só sei que nada sei, e o fato de saber isso, me coloca em vantagem sobre aqueles que acham que sabem alguma coisa." — Sócrates

Coisas que eu não sei em TI

Pessoas, a lista é grande. Eu poderia escrever um texto de 20 mil palavras sobre as coisas que eu não sei, mas também vou focar nas coisas que estão por aí e que eu gostaria (e ainda vou) saber.

Programação Funcional

Esse é um tema que eu queria muito dominar, mas sou apenas um aspirante. Eu aprendi os conceitos básicos de programação funcional (escrever funções puras, criar novos dados ao alterar os recebidos, etc.) junto com React e alguns cursos de JavaScript, mas estou longe do pensar funcional.

Na empresa que estou, alguns times usam a biblioteca ramda, que é tipo um lodash mas com uma cara bem mais funcional. Eu olho os exemplos de composição de função, maneiras com que as pessoas usam e eu me sinto uma sacola plástica no oceano.

Meu cérebro simplesmente não funciona desse jeito…. ainda. Tenho muita vontade de aprender uma linguagem funcional (tipo Closure) pra mudar completamente minha forma de pensar.

CSS Grid

Se acredita? Está na moda, em alta, muita gente usando, mas ainda não sei.

Comecei a fazer o curso do Wesbos, parei, comecei de novo, parei, mas pelo fato de eu não usar no trabalho (alou internet explorer) e nem fazer front-ends fora do expediente, eu simplesmente não apliquei e não aplico, o que me faz esquecer sempre que eu pego pra estudar de novo.

Mas isso é o plano desse ano. Já comecei a construir algumas coisas usando o básico do básico. =)

yaml files

A primeira vez que eu tive contato com esse tipo de arquivo foi pra configurar o meu building com o travis.

Depois disso, só me deparei com eles de novo na empresa que trabalho e sério, é arquivo .yml para TODO lado. Depois fui ver que é uma extensão bem comum entre os devs backend.

Apesar de hoje eu até conseguir ler um arquivo e entender o que está acontecendo, eu SEMPRE fico confuso, ainda mais quando começa a usar templates, variáveis, etc.

Outro framework JS

Eu disse que React não é um framework, mas a gente considera o ecossistema dele um. E é a única coisa que eu sei.

Quando eu comecei a estudar pra valer, o que tava na moda era Angular 1. Veio a versão 2, apareceu o React, eu foquei em aprender JS. Quando foi hora de escolher um pra me preparar pro mercado, eu optei pelo o que tinha mais gente falando e mais as empresas estavam no Hype.

Depois disso, eu tentei estudar VueJS, Angular (novo), dei uma olhada no Aurélia, mas não aprendi mais nada pra valer. A minha estratégia foi me aprofundar e melhorar minhas habilidades em React pra ficar cada vez melhor, melhorar o nível do meu trabalho e poder quem sabe conseguir melhores oportunidades.

Docker

Sei do que se trata, tem onde eu trabalho, mas nunca coloquei a mão em um container ou arquivo de configuração.

Redes

Já fiz 2 cursos de rede e ainda não sei a grande diferença entre IPV4 e IPV6, o que é exatamente DNS, wildcard, TCP/IP, WAN, LAN, como configurar domínios, como testar os IPs, etc.

Sendo bem sincero, mesmo sabendo de quão importante é ter o domínio, eu acho meio… blé.

Inclusive, uma vez fiz uma entrevista em que um dos avaliadores técnicos pediu pra eu explicar detalhadamente como funciona cada etapa do momento que a gente digita “google.com” no browser e da enter até a página ser renderizada. Advinha só? Falhei miseravelmente.

Segurança

Quando eu falo em segurança eu falo no geral, mas principalmente na web. Já li alguns artigos nas interwebs sobre segurança mas na prática, não sei nada.

Existe todo um universo de cross-scripting, dados sensíveis, proteger inputs, cookies, https, cross-origin e eu não sei quase nada.

Animações

Sabe aquelas animações CSS ou em Greensock? Então, não sei.

O que eu sei mais ou menos é como funciona o @keyframe (mais ou menos em), como adicionar uma animação existente no meu CSS (ou no meu component em React), até criar uma, mas tudo beeem básico.

Eu comprei o curso do Willian sobre Greensock, que a propósito é sensacional mas até hoje eu não terminei e nem coloquei em prática por falta de oportunidades/vontade.

Desenhar com CSS

Às vezes eu ando pelo CodePen e fico boquiaberto com as coisas que as pessoas fazem com CSS.

Esses dias me deparei com isso:

Nintendo Switch - https://codepen.io/k750i/full/REpEWQ

A pessoa desenhou o Nintendo Switch com CSS… véi… olha o código. Tem bordas malucas pra dentro, pra fora, uns códigos que eu nunca vi na vida.

O mais perto que eu cheguei foi isso:

Google - https://codepen.io/raulfdm/full/VzmoRM

Mas se não tem NADA de complexo, só o basicão mesmo.

Teste A/B

Nunca vi nem comi eu só ouço falar. Sério, eu só ouvi em podcast. Toda vez que eu faço entrevista jogo muito aberto com relação a isso.

Os freelances que eu fiz ninguém pediu. Na minha empresa ninguém fala nada. Então meio que fica por isso mesmo.

Backend e scripting com Node JS

Como meu background é JavaScript, eu fiz vários cursos também de NodeJS. Eu sei construir um end-point. Eu sei escrever scripts (e gosto muito de fazer) pra rodar em Node e automatizar tarefas, mas eu não sei consumir um banco de dados mySQL por exemplo.

Eu sei, mas não tenho confiança que poderia escrever um aplicativo pra produção em Node, principalmente falando sobre em escalabilidade, múltiplos clusters, cache, headers, tokens de segurança, etc.

Além disso tem também várias coisas que eu não entendo muito bem como funciona, como lidar (e.g. spaw, child process).

Análise de performance geral e BigO notation

Isso é uma coisa que eu muitas vezes me pego num perrengue tremendo e sempre quebro a cabeça tentando mensurar a perfomance entre duas implementações.

Apesar de às vezes levantar uns números e montar uns gráficos bem básicos, eu não sei usar as ferramentas do Chrome dev tools de análise ou então como mensurar se um algoritmo é mais eficiente que o outro antes de entrar num cenário complexo.

BigO notation mesmo eu só sei do que se trata bem por cima. Tenho 1 tutorial de como usar com JS code, mas está esperando algum dia eu criar coragem.

Electron

Taí um projeto do caralho! Várias coisas maravilhosas foram criadas (Alou VSCode) com ele e u não sei nem começar.

Extensões do Browser

Taí uma coisa que eu queria saber. Eu já tentei algumas vezes mas sempre achei muito confuso a documentação, os erros que as vezes eu tenho e nunca me dediquei pra valer também.

Linguagem de baixo nível

Nenhuma. Na faculdade eu fiz algumas matérias com C/C++ e eu peguei um trauma inacreditável de tão ruim que foi a experiência.

Shell/bash script

O máximo que eu consigo fazer aqui é configurar meu .zsrch alguns aliases e umas funções customizadas pra me ajudar no dia-a-dia, mas só.

Streams, WebSocket, Serveless, Microservices, AWS, Lamda Functions

Já ouvi/li o básico mas não domino nada de nada.

Editar video

Queria gravar uns tutoriais e editar no After Effects com a loucura que rola na minha cabeça, mas não sei nem abrir o programa.

Datilografia

Eu achava que digitava bem rápido, até conhecer um cara que usa todos os malditos dedos pra digitar. Datilografia é real e na vida de um desenvolvedor é uma benção sem tamanho.

E apesar de digitar umas 50~60 palavras por minuto, infelizmente eu uso apenas 3 dedos pra digitar! :(


Enfim, ainda poderia citar mais algumas dezenas ou centenas de coisas relacionadas a nossa área que eu não faço ideia, mas já deu pra ter uma base de que meu conhecimento é bem limitado.

Coisas que eu não sei no geral

Para muito além de ser um desenvolvedor, eu sou um namorado, um filho, um companheiro de trabalho, um amigo, enfim, sou muitas outras coisas. E já que estamos nessa levada de falar sobre o que não sabe, quero compartilhar com vocês.

Gramática no Inglês

Sempre fui um péssimo estudante de línguas. Eu me considero uma pessoa que se expressa e se articula bem, mas isso sempre cai por terra quando preciso usar todo meu poder de comunicação.

Parece estranho que eu que moro fora do país há 2 anos ainda não saiba isso, mas é um fato que o inglês ainda é uma luta constante na minha vida.

Pelo fato deu não ter tantos anos de experiência com o idioma, eu sinto muita dificuldade de expressar EXATAMENTE o que eu quero por falta de vocabulário, de tato em saber a melhor frase pra se usar e isso gera muito ruído.

Assim como no português, em inglês também há maneiras e maneiras de se dizer uma frase que deixa ela menos agressiva.

Inteligência Emocional

Basicamente é a nossa capacidade de reconhecer as nossas e as emoções alheias e saber distinguir o que é sentimento, o que é rótulo, o que é expressão e com todas essas informações, tomar decisões menos impulsivas e mais conscientes.

É uma habilidade que eu venho tentando desenvolver tem uns anos e ainda não aprendi. Melhorei muito, mas todo dia eu me deparo com uma situação que me mostra que eu ainda tenho muito a trilhar.

Comunicação Não Violenta

Eu sou uma pessoa muito incisiva. Eu tenho minhas convicções e brigo por elas, até alguém me mostrar um ponto que coloca minhas crenças em cheque e então eu faço uma reavaliação.

O problema disso é que também vem com uma comunicação agressiva e que quando entra em discussões, parte de muitos pressupostos sem sentidos.

Daqui um tempo eu vou escrever pra vocês um artigo inteiro contando um episódio que aconteceu na minha empresa me envolvendo e vocês vão entender melhor, mas no geral, apesar de ter melhorado com o passar dos anos, minha comunicação ainda é agressiva.

Esse tipo de comunicação assusta e afasta as pessoas, gera muito ruído de coisas que elas entendem que eu quis dizer, mas que na verdade eu nunca quis (não de forma consciente).

Foco e disciplina

Eu sempre fui uma pessoa que gosta de fazer muitas coisas diferentes. O problema é que eu perco muito fácil o foco do que eu to fazendo e simplesmente paro.

Claro que existe vários outros motivos (internos e externos) pra isso, mas acho que isso é uma habilidade difícil de se criar.

Se eu contar pra vocês quantos cursos, livros, séries, jogos eu comecei e parei, capaz de vocês chorarem comigo ou tentarem me ajudar de alguma forma! 😆

Teve épocas que eu fui mais disciplinado, outras menos, mas um dia eu desejo muito ser constante e aprender essa habilidade de uma vez.

Uma amostra disso é a minha série (desenvolvedor JavaScript) que começou ano passado e eu não tive ânimo pra terminar, mesmo sabendo que ajuda muito as pessoas.

Controlar minha ansiedade

Ansiedade é um assunto muito discutido nos dias de hoje (ainda bem) e é uma coisa que afeta todos os seres.

“Diário de bordo: controlando a ansiedade, revisando atitudes e melhorando o auto conhecimento” - Willian Oliveira

Ela sempre vai existir e muitas vezes ajuda a gente a se mover, mas, quando em excesso e sem controle, só atrapalha.


Conclusão

Bom, se eu em algum momento passei a impressão de ser melhor que você, acho que agora já deu pra perceber que provavelmente você sabe muitas coisas que eu não sei.

Tem um cara do mundo da musculação que eu sou muito fã, Leandro Twin. Além de educador físico é um amante da filosofia (assim como eu) e certa vez ele disse uma coisa que ficou gravada na minha cabeça:

Não se julgue melhor que ninguém. Sempre vai ter pelo menos 5 coisas que essa pessoa sabe que você não sabe. Moradores de ruas que são subestimados pela maioria das pessoas, sabe o que todas elas não fazem ideia como por exemplo, como morar/sobreviver na rua. Ninguém é mais do que ninguém.

E apesar deu ter esquecido disso em algumas vezes por pura arrogância, é algo que eu sempre tento carregar comigo.

Como a frase de Sócrates que eu mencionei no começo do artigo diz sabiamente, ter consciência da sua ignorância te coloca em vantagem sobre aqueles que acham que sabem de tudo, pois, estas, estarão fechadas para novos conceitos, novas formas de pensar, ou seja, estarão sempre limitados.

Que 2019 seja um ano de aprender coisas novas e descobrir mais e mais coisas que somos ignorantes.