Conheça seu ambiente de trabalho

Posted on May 3, 2017

Newsletter about software engineering, team management, team building, books and lots of notes I take after reading/studying (mine or yours)… :D

Aprender novas tecnologias (nesse caso linguagens de programação) não é um trabalho fácil, vai muito além de conhecer syntax da linguagem. Exige alguns desafios como entender porque a linguagem foi criada (existe), entender o eco sistema, como fazer deploy, como gerenciar ambiente de produção e etc.

Mantenha seu ambiente de trabalho organizado e com tudo a seu alcance

Pensando nessa introdução vou falar um pouco sobre conhecer o seu ambiente de trabalho antes de conhecer novas tecnologias (linguagens), é muito comum ver desenvolvedores querer usar sempre o que existe de mais novo no mercado (linguagem, framework, plugin, editor e etc) sem pensar no time de desenvolvimento envolvido, mas sera que isso realmente é a melhor coisa a se fazer para empresa que você trabalha? O nível de complexidade são diferente para pessoas, é extremamente comum ver um desenvolvedor (geralmente auto de data) aprender novas tecnologias muito rápido, mas nem todos são assim. Um dos trabalhos de ser CTO é saber dosar a dose do remédio para que todos os desenvolvedores esteja sempre na mesma página, isso envolve dizer alguns não momentâneos (não é fácil esse papel, mas é extremamente necessário).

Conhecer seu editor

É primordial você conhecer o editor que você trabalha, não adianta você querer usar o editor que esta em hype para a tecnologia X, use o que você realmente sabe usar. Principalmente na área de desenvolvimento de software muitos desenvolvedores fala de Emacs e Vim, você realmente precisa usar esses editores? Minha opinião é que você conheça, pois é importante conhece como outros desenvolvedores trabalha, mas leve isso como um novo caso de estudo não leve em paralelo com o estudo sobre a tecnologia que esta aprendendo, tenha foco no que você quer aprender, tempos tempo para aprender muita coisa na vida, basta ter paciência, perseverança e foco nos objetivos.

Pontos importantes para você conhecer do seu editor:

  • Teclas de atalhos: com o passar do tempo você percebe que seu dia começa ficar mais produtivo quando começa largar a dependência do mouse;
  • Uso de busca em código (não se prenda dentro do editor, conheça como fazer usando bash também);
  • Trabalhar com mais de um projeto na mesma janela do Editor (Hoje é extremamente comum dividir o que é frontend e backend, trabalhar com micros serviço e etc, com esse cenário sera necessário você se adaptar em trabalhar com mais de um projeto aberto pois você precisa implementar e/ou corrigir código em mais de um projeto), as maioria dos editores de hoje em dia lhe da suporte a isso, fique tranquilo;
  • Conhecer configuração do seu editor, como colocar um plugin novo, como configurar uma linguagem nova e etc.

Usei durante muitos anos TextMate até me dedicar a aprender VIM (sim, parei de estudar durante 6 mês outras tecnologias e me voltei para o estudo do VIM), isso me fez aprender muito mas é uma escolha, o que você quer aprender? X ou Y? Depois de anos usando VIM resolvi aprender usar Emacs e já estou a 2 anos usando ele como editor principal, ou seja, mudamos de opniões e temos disponibilidade de conhecer coisas novas.

Formas de debugar seu software

Saber uma linguagem de programação nova não basta saber a syntax e sim quais ferramentas ela lhe traz para debugar o software que esta desenvolvendo, seja print, breakpoint, gdb, pdb ou qual quer outra forma. Como desenvolvedor é extremamente importante software ser capaz de achar bugs dentro do software que você esta desenvolvendo ou dando manutenção (desenvolvido por outro desenvolvedor), se você não estudar a fundo como debugar software na sua linguagem você tera alguns problemas para achar o bug que seu software pode ter.

Logs, ambiente de produção precisa ser rastreável

Antes de falar de logs você precisa ter em mente as principais diferença de log e print.

Conhecer uma linguagem de programação nova é necessário saber como ela se comporta em produção (falando mais uma vez, não é só saber syntax), logar eventos do seu software é extremamente importante, colocar cor para identificar evento é muito importante para você não perder horas tendo que analisar um log, ou até mesmo jogar os logs coletados fora pois esta impossível de se fazer analise (infelizmente já vi mais de uma vez isso acontecendo).

Pratique (treine)

Todos atleta de alta performance precisa praticar (exaustivamente) para ficar bom o suficiente para assim competir. Em desenvolvimento de software não é diferente, você precisa praticar para conseguir desenvolver software sem ficar pensando “qual a teclada de atalho no meu editor mesmo?”, “qual o nome daquele pacote que faz XYZ mesmo?” e etc. Se você tiver que ficar pensando nessas coisas como seu cérebro tem espaço pra saber qual o problema que você tem que resolver, pensar na melhor maneira da sua arquitetura? Não tem como pensar nessas coisas pois seu cérebro está concentrado em entender seu eco sistema e não resolver o problema, por isso devemos ter o eco sistema em nossa mente para ai sim depois pensar na solução do problema. Quanto melhor você conhecer suas ferramentas melhor você será como desenvolvedor. Uma forma que eu faço para praticar é contribuir com projetos open source, desenvolver não é apenas escrever código e contribuição open source envolve mais relacionamento humana (remoto que é mais difícil ainda) do que código.

Se você não é bom em falar com pessoal é importante aprender by JavaMan

Considerações finais

Entenda seu ambiente de trabalho, você precisa dominar seu eco sistema para performar mais no seu dia a dia, deixe ele tão simples para o seu cérebro para você não precisar pensar mais nele. Trabalhe com uma tecnologia que lhe deixe feliz e faça com ela o que você realmente precisa fazer, não se engane buscando desculpas dentro de si mesmo para lhe justificar o que esta fazendo (aprendendo X ou Y). Mantenha seu foco em estudos que lhe traz evolução profissional e/ou pessoal.

comments powered by Disqus