Carreira Dev

8 jan, 2016

23 lições aprendidas entrevistando os principais desenvolvedores do mundo

4015 visualizações
Publicidade

Há alguns meses, – na quinta-feira, 16 de abril – lançamos o bugtrackers.io como uma nova plataforma que mostra a vida das pessoas no mundo do desenvolvimento web.

Eu esperava que isso fosse super divertido. E é claro que eu esperava que fosse bem sucedido. Afinal, apresentamos a vida de pessoas famosas, bem sucedidas ou simplesmente extraordinárias na tecnologia, como CTOs, programadores, web designers ou pessoas de produto.

Mas eu não esperava que ele tivesse um impacto tão grande sobre mim, pessoalmente.

Hoje, estou compartilhando os principais tópicos para mim e para nós como empresa. O seu pode ser diferente, é por isso que eu os encorajo a ler todas as entrevistas em sua totalidade.

Espero que elas sejam tão valiosas para você como têm sido para nós.

Morten Primdahl, CTO e co-fundador da Zendesk

Morten Primdahl

1. Escalar sua tecnologia é um desafio. Apenas faça.

Saímos de uma desconexa startup composta por 3 caras com tudo em suas cabeças para uma grande organização que pode assumir escalabilidade, operações, bases de dados e desenvolvimento de produtos. Se você é realmente apaixonado por negócios em sua vida, é pra onde você precisa ir.

Quando crescemos de cerca de uma dezena de rapazes em 2009 para o tamanho que temos hoje, vemos que a empresa muda muito o tempo todo, e é preciso se adaptar a isso. Os desafios são tanto técnicos como organizacionais. Escalar seu negócio significa rápido crescimento e contratação de engenheiros. E isso é um grande desafio global. Para colocar desta maneira: é muito difícil.

2. Siga sua paixão.

Faça o que você gosta. Faça aquilo pelo que você está realmente apaixonado. Não faça o que ninguém pensa. Descubra como ser você mesmo, e trilhe o seu próprio caminho. Vai dar tudo certo.

3. Um tempo pessoalmente é essencial para equipes remotas.

Nós fazemos um monte de viagens para unir as pessoas porque o tempo face-a-face é realmente valioso. Mesmo que tenhamos Skype, Google Hangouts e Flowdock, tentamos unir as pessoas algumas vezes por ano. Quando você se junta à empresa, passa duas semanas em San Francisco, conhece a equipe e começa a entender esta experiência.

Leia nossa entrevista com o Morten.

Sunil Sadasivan, CTO da Buffer

sunil-sadasivan-buffer

4. Os papéis são mais importantes do que os cargos.

Em uma hierarquia artificial, meu papel foi considerado para ser o CTO. Mas, em uma hierarquia natural, alguém pode assumir algumas das funções que eu tenho, caso se sintam satisfeitos dessa maneira.

Portanto, no Buffer, títulos de trabalho começaram a ser bastante estranhos – uma vez que a maioria de nós assume poucos papéis diferentes.

5. Invista em você mesmo.

Mark Cuban diz que “o melhor investimento que você pode fazer é em si mesmo”, e ele está correto.

Mesmo que não tenha dado certo com a minha startup anterior, foi provavelmente a melhor coisa que eu já tinha feito, porque era um investimento.

Eu investi esse tempo para me concentrar em mim mesmo.

6. 100% de cobertura de teste não é algo tão importante.

Nós não estamos muito preocupados com a cobertura de teste de 100%.

É mais sobre como usar o seu melhor julgamento sobre o que é realmente crítico e o que vai quebrar, e depois adicionar o teste a ele por esse caminho.

Leia a nossa entrevista com Sunil.

PJ Hagerty, líder de equipe na Engine Yard

pj-hagerty-bugtrackers

7. Desafie-se no campo de treinamento e cursos online gratuitos.

Há uma enorme mudança em curso sobre educação tecnológica. A tecnologia está se movendo muito rápido, e mais e mais pessoas estão percebendo que precisam obter maior controle sobre ela.

Eu sempre fui defensor de ir fazer um curso num fim de semana só para desafiar a si mesmo e ver se é algo em que você está interessado. É muito melhor do que passar quarenta mil horas numa graduação e descobrir que você realmente não gosta dela.

8. Teste primeiro, lance frequentemente.

Uma das coisas que estamos defendendo é a ideia de testar primeiro. Há muito pouco do que entra em nossos produtos que vão para o público, sem um alto padrão de testes.

Eu não acho que exista alguma maneira de fazer tudo 100% a prova de bugs.

Leia a nossa entrevista com PJ.

Rani Angel, chefe de desenvolvimento web do Infragistics

9. Gerenciar os funcionários remotos é um desafio.

O maior desafio é definitivamente trabalhar com uma equipe globalmente dispersa. É um desafio enorme. Uma das maiores lutas é quando a sobreposição entre os tempos das duas equipes de trabalho é de apenas algumas horas.

O desafio é como ter certeza de que, como um gerente, você está indo para o caminho certo e se mantendo no topo de tudo. Além disso, você quer ter certeza de que sua equipe está protegida da dor de não estar no mesmo local que outros colaboradores.

10. Explore várias indústrias.

Eu gostaria de ter diferentes oportunidades enquanto estava crescendo, como ser capaz de fazer um estágio, fazer um pouco de marketing, fazer um pouco de vendas para ser capaz de compreender as áreas um pouco melhor, em vez de ter que esperar tanto tempo.

Ter experiência em uma idade mais jovem teria mudado minha perspectiva muito mais e teria me tornado mais confortável sobre como usar minha força de trabalho.

Leia a nossa entrevista com Rani.

Thomas Schranz, CEO da Blossom

thomas-schranz-blossom

11. Saiba programar, não importa quantos anos você tenha.

Eu pensei: “Sim, eu não posso programar e aprender a programar é realmente complicado”. Eu já sabia naquela época que existiam pessoas mais novas do que eu que já tinha começado com a programação, e eu pensei: “Sim, eu já estou atrasado”. E então, apenas por acidente, eu aprendi.

Eu recomendaria a qualquer um, literalmente todo mundo, em qualquer faixa etária a pelo menos iniciar na programação.

12. Aprenda a dizer “não”.

Às vezes, dizer “não” é realmente difícil.

Eu acho que um desafio recorrente está sendo o de dizer “não” a exigências. Seja de um cliente, seja de sua própria equipe, seja para si mesmo.

Dizer “não” a uma ideia não significa que a ideia seja ruim. Dizer “não” é a coisa mais desgastante. Nós teríamos que explicar isso para todos os envolvidos, convencê-los e, em seguida, basicamente sair da reunião com uma baixa motivação para todos. E apenas construir a coisa, mesmo sabendo que não é a coisa certa, é a coisa mais fácil de fazer.

Leia a nossa entrevista com Thomas.

Leif Cantor, Chefe de Produto da iDoneThis

leif-singer-idonethis

13. Siga as boas práticas de outro desenvolvedor.

Acho que a coisa principal é usar as coisas boas – para a prática e para ficar melhor para nós mesmos, e não só acompanhar as tecnologias, mas as boas práticas que as pessoas estão explorando. Permanecer próximo das boas práticas atuais neste momento é realmente mais importante para nós do que a tecnologia.

14. Não tenha medo de remover recursos de seu produto.

Também removemos recursos de vez em quando porque percebemos que ninguém os usa ou eles não são bons o suficiente para que as pessoas queiram usá-los.

Remover o resíduo técnico que não é mais usado é uma espécie de problema, porque não não é realmente como um refinamento do produto, mas é uma tarefa. E essa tarefa entra em Asana.

Leia a nossa entrevista com Leif.

Eric Elliott, fundador da Fight Poverty with Code

eric-elliott-fight-poverty

15. Escolha sua linguagem de programação sabiamente.

JavaScript tem o potencial para ajudar muitas pessoas, porque é a linguagem mais popular do mundo. Se você escrever uma biblioteca JavaScript, vai ajudar a muitas pessoas.

16. Características em tempo real vão ser uma coisa enorme (e complicada) para desenvolvedores.

Nós temos muito mais tempo real e recursos de colaboração. Várias pessoas manipulando o estado do aplicativo ao mesmo tempo é uma coisa extremamente complexa.

Eu trabalhei na equipe Creative Cloud da Adobe. Creative Cloud é tudo sobre a colaboração com pessoas em projetos criativos. Eu tenho que ver em primeira mão o quão complexo o gerenciamento de colaboração pode ser e quão difícil é fazer com que um fluxo de trabalho do usuário realmente seja bom para interagir com outros usuários sem pisar uns dos outros.

Leia a nossa entrevista com Eric.

Johannes Nagl, CTO da Swat.io

johannes-nagl-swat-diesocialisten

17. Padronize estilos de codificação.

Ao migrar os desenvolvedores de criar campanhas de marketing de vida curta para longa duração, sempre ativas em soluções SaaS, é um grande desafio implementar uma nova mentalidade completa sobre arquitetura, código e sustentabilidade.

Os projetos das agências, muitas vezes compostas por apenas um homem no controle, mostram onde foram aplicados diferentes estilos de codificação. A padronização desses estilos foi um dos primeiros esforços que valeram a pena muito rapidamente. Usar ferramentas como Vagrant ou integração contínua nos ajudou a focar no produto ainda mais.

18. Os desenvolvedores precisam internalizar testes.

Como desenvolvimento não é algo tão complexo e delicado como a gestão de uma usina nuclear, eu acredito realmente em testes “como uma disciplina que todo desenvolvedor tem que saber e integrar em seu workflow”.

Assim, os recursos dedicados são uma boa maneira de manter um ambiente de testes já bem estabelecido. Mas é mais importante que todos os desenvolvedores internalizem testes em seu/sua mentalidade primeiro.

Leia a nossa entrevista com Johannes.

Florian Motlik, CTO da Codeship

flo-motlik-bugtrackers-codeship

19. Não há entendimento comum sobre o papel de um CTO.

O problema com o papel de um CTO é que não há um milhão de livros sobre CEOs. Não há um monte de livros sobre ser um CTO, porque esse é um cargo diferente em empresas diferentes. Eu sou um CTO externo. Eu não gerencio uma equipe.

Eu realmente nunca gerenciei uma equipe internamente. Quando crescemos de verdade, e precisamos de mais gestão, contratamos um VP de Engenharia.

20. Infraestrutura como serviço se tornará uma coisa enorme.

A nuvem ainda é uma coleção de serviços, e um conjunto de serviços ainda é algo que você tem que gerenciar, o que eu não gostaria de fazer. O que devemos ter é um serviço para isso.

21. Há um grande trade off entre a complexidade dos testes e a velocidade de teste.

Um dos maiores trade-offs que vemos é o trade-off entre a complexidade do teste e a velocidade que você quer ter.

No melhor caso, você quer testar tudo em cada navegador para ter certeza de que funciona em todos os lugares, e executar toda a suíte em todos os dispositivos. Mas isso leva uma eternidade.

Isso é um grande trade-off para fazer e você tem que encontrar o equilíbrio certo.

Leia a nossa entrevista com Florian.

Christian Braun, vice-presidente de Engenharia da PAYMILL

christian-braun-paymill

22. A contratação de grandes desenvolvedores é um desafio.

Claro, você tem diferentes desafios como um departamento de engenharia. Um dos maiores desafios é a questão de como contratar bons desenvolvedores, porque todo mundo os quer. Você também tem um desafio de que você tem desenvolvedores suficientes para trabalharem em uma série de melhorias de produtos.

23. Torne a comunicação simples e clara.

Fazemos estimativas de requisições de mudança como se fossem camisetas, com padrões. Assim, a gerência pode ter uma visão clara sobre custos e prioridades.

Leia a nossa entrevista com Christian.

Mais caminhos, mais aprendizados

Bem, além destas 23 lições valiosas, existem literalmente centenas de outras que temos recolhido a partir delas.

Além das entrevistas mencionadas, há muito mais no bugtrackers.io, e eu recomendo que você faça uma leitura. Nós temos tido alguns grandes feedbacks sobre essa série de entrevistas, e estou entusiasmado com outros parceiros de entrevista que estamos adicionando ao site. Pessoalmente, eu comecei a coletar um enorme retorno a partir desses insights. E se você estiver seguindo bugtrackers.io, eu espero que você também aprenda muito.

***

Thomas Peham faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://usersnap.com/blog/developers-lessons-learned/