Carreira Dev

2 fev, 2018

Confiança na engenharia: Um guia do iniciante para superar a Síndrome do Impostor

Publicidade

Não pretendia me tornar uma engenheira de software. No meio do meu primeiro ano de faculdade, um dos meus amigos mais próximos da escola me pediu para ajudar com uma tarefa de programação. Desmoronando sob o peso de minha própria carga de trabalho do tamanho da faculdade e em necessidade desesperada de algo para procrastinar, eu caí logo para dentro.

Deitando-me na minha cama, encontrei-me debruçando em cima da documentação para o Apple Basic II (uma linguagem que eu nunca programaria novamente), refinando meu código e me divertindo muito explicando como melhor abordar o problema para o meu amigo. Perdi a noção do tempo; cinco horas se passaram antes de passar para a minha própria lição de casa, mas nada disso era importante. Essa foi a noite em que eu decidi especializar-me em ciência da computação e me tornar uma engenheira.

Logo descobri, a programação é uma experiência desafiadora, demorada, gratificante e emocionante que obriga você a adotar uma maneira muito particular e não linear de resolução de problemas. Ao longo dos anos seguintes, minhas definições de “trabalho” e “sucesso” assumiram um novo significado.

Na verdade, meu caminho de estudante universitária para desenvolvedora em tempo integral não era nem tão fácil nem tão simples como minha decisão inicial de especializar-me em ciência da computação. Ao longo do caminho, encontrei vários cenários que me levaram a um território inexplorado que vão de abordar tarefas que me deixaram duvidar das minhas habilidades como programadora, até a navegar em colaboração em grandes grupos e ganhar buy-in por minhas ideias. Felizmente, uma série de ótimas pessoas e muitas experiências excelentes fizeram com que minha jornada valesse a pena, levando-me para onde eu estou hoje.

Minha primeira experiência no mundo real como engenheira foi o meu internato em 2015 na Uber for Business, onde depois de apenas uma semana no time, participamos de um hackathon de fim de semana para construir o UberEVENTS, um serviço personalizado de transporte de eventos lançado no topo do Uber para plataforma de negócios.

Depois que meu internato terminou em agosto de 2015, entrei na equipe da Uber for Business em tempo integral como engenheira de back-end, trabalhando no envio de novos recursos e melhorando a qualidade da experiência geral do cliente da Uber for Business.

Membros da equipe da Uber for Business posam para a câmera durante nosso Hackathon de final de semana da Uber Events em junho de 2015

Foi na equipe da Uber for Business, onde eu realmente encontrei minha voz e minha confiança como engenheira, e é neste time onde continuo desenvolvendo minhas habilidades técnicas e praticando algumas outras suaves.

Agora, mais de dois anos desde o meu internato, gostaria de compartilhar três conclusões essenciais do meu tempo na Uber que me permitiram desenvolver essas habilidades à velocidade da luz e desenvolver uma mentalidade de sucesso, a saber: criar confiança, confiar em seu primeiro instinto, e sempre estar aprendendo e ensinando.

1. Criar confiança

“Tenha confiança!” é muitas vezes uma resposta a perguntas ao longo das linhas de “como posso ser bem sucedido na minha carreira?” Isso é ok e bom como uma resposta se você é uma pessoa naturalmente confiante, mas se você é algo como eu era quando comecei na Uber (uma perfeccionista inexperiente), você provavelmente se viu perguntando: “onde na Terra posso encontrar essa” confiança “mítica?”

Na minha experiência, a confiança não é encontrada, mas construída tanto no nosso próprio destemor quanto nas pessoas que nos apoiam quando cometemos erros.

Apesar de não ter experiência de front-end, consegui assumir minha primeira tarefa de front-end porque eu tinha o apoio total da minha equipe e gerente. Eu parti para recuperar um dos formulários existentes na Uber for Business Admin Dashboard usando redux-form. Enquanto consegui construir a funcionalidade básica, eu aprendia em tempo real, o que retardou as coisas e não consegui completar a tarefa tão rápido quanto eu queria.

Com a orientação da minha equipe, usei o que poderia ter sido, por um lado, uma experiência decepcionante como forma para criar confiança. Em vez de destacar onde eu “falhei”, meu gerente e colegas de equipe permaneceram positivos, destacando onde eu consegui sucesso e identificaram áreas para melhoria com feedback acionável. A partir daí, canalizei meu fracasso relativo em uma nova iniciativa, empoderada para tentar novamente.

Graças a essa confiança, eu poderia levar minha experiência e transformá-la em um trampolim para sucesso futuro. Pouco depois da minha primeira experiência de front-end, identifiquei uma necessidade e embarquei em um projeto de ferramentas de pilha completa necessário para melhorar a experiência de cobrança da Uber for Business e liberar recursos para re-arquitetar o sistema para a sustentabilidade a longo prazo. Eu mesma apliquei as novas e brilhantes habilidades de front-end que adquiri através da minha tarefa de reskinning para este novo projeto de ferramentas. Antes de ingressar na Uber for Business, não teria tido o conhecimento necessário para conduzir uma ideia técnica de forma tão clara e tática.

Se você não tiver certeza de como construir sua confiança, comece por encontrar uma equipe que seja adequada para sua experiência e estilo de trabalho. Se tiver a oportunidade durante a sua entrevista, certifique-se de perguntar ao seu gerente de contratação sobre cultura de trabalho em equipe. Os objetivos e projetos da equipe se alinham com seus objetivos e interesses de carreira? A equipe promove um ambiente de aprendizagem colaborativo e aberto, onde é seguro cometer erros? Não há nenhum substituto do estar cercado por pessoas que  encorajam a tentar projetos mais ambiciosos, ao mesmo tempo em que são indulgentes quando os esforços se voltam para o inesperado.

2. Confie no seu primeiro instinto

Um bloqueio de estradas que costumava evitar que eu me movesse rapidamente no meu primeiro ano como engenheira foi não ter coragem de agir de acordo com meu instinto. As perguntas iriam revirar minha cabeça enquanto eu codificava: “Este é o padrão de design certo? Eu extrai esse código suficientemente? Este método é extensível?” e assim por diante. Na maioria das vezes, as respostas a essas perguntas eram um ressonante “sim”, mas continuaria a criticar meu código antes de enviá-lo para revisão porque minhas soluções, embora boas (ótimas até), nem sempre eram perfeitas. Foi essa mentalidade perfeccionista que me impediu de confiar em meus primeiros instintos e de se arriscar com eles.

Um exemplo extremo pode ser extraído de uma experiência em que eu enviei um hotfix (que levou apenas alguns minutos para escrever e enviar) depois que um erro móvel causou uma pequena interrupção impedindo os passageiros de negócios de fazer viagens.

Embora seja estilisticamente assustador, posso orgulhosamente dizer que uma vez enviei o código que parecia assim:

Desmentido: Embora seja necessário enviar quando o tempo é essencial (ou seja, no caso de interrupções), o código de mitigação deve ser revisitado e revisado em tempo hábil.

Este código levou nossos clientes a andar novamente mais de 100 vezes mais rápido (e duas semanas mais cedo) do que se tivéssemos esperado para liberar a correção com a versão mais recente do aplicativo, mas se eu tivesse sido perfeccionista neste cenário, essa solução nunca teria visto a luz do dia.

Há uma hora e um local para código de hotfix rapidamente escrito, mas logicamente sonoro, e este é um exemplo de uma dessas instâncias. Eu não sou mais tão tímida para compartilhar código imperfeito com meus colegas de trabalho; em vez disso, eu me sinto empoderada para tirar o máximo proveito do processo de revisão do código para responder a questões de codificação persistentes sobre estilo, abstração, extensibilidade e assim por diante.

Descobri que o perfeccionismo é antitético para causar impacto. Isso dificulta a capacidade de agir com seus instintos e aprimorar a intuição; é a vontade de se mover rapidamente, mas não ao acaso, que permite um verdadeiro impacto.

3. Esteja sempre ensinando. Sempre aprendendo

Eu gosto de seguir o modelo “ensinar a pessoa a pescar” quando se trata de treinar e aprender no trabalho. Por exemplo, quando eu comecei a criar produtos na equipe Uber for Business, eu não entendi completamente o que era um gerador Python, nem como ele poderia ser usado pelo Tornado (um framework web de Python) para criar o código Python assíncrono. Embora alguém pudesse me dar uma resposta rápida e de um minuto, meu gerente, que por acaso era um especialista em Python, gastou cerca de quinze minutos demonstrando como essa tecnologia funcionava. É seguro dizer que nunca precisei fazer uma pergunta sobre os geradores Python novamente.

Na próxima vez que alguém lhe pedir ajuda, considere seguir a abordagem do gerente: sempre esteja aprendendo e ensinando.

A parcela “estar sempre aprendendo” dessa mentalidade é um pouco mais fácil de alcançar do que o lado do ensino, porque envolve principalmente fazer perguntas sobre a variedade “há uma maneira melhor de fazer isso?”. Como eu aprendi durante o meu tempo na Uber, é importante sentir-se empoderada para fazer perguntas sobre tudo, desde algoritmos complexos e projeto de sistemas até aliviar pontos de dor em relação à logística de elevador do seu escritório. Não há nada muito insignificante para melhorar.

Alguns exemplos dos tipos de perguntas que faço para mim mesma quase que diariamente incluem:

  • Existe uma maneira melhor de acompanhar tudo que aprendi no trabalho?
  • Existe uma maneira sem estado para implementar um endpoint de soma?
  • Existe uma extensão de navegador para converter timestamps em datas legíveis por humanos?
  • Existe uma maneira de reduzir o número de etapas envolvidas no bootstrapping deste repo?
  • Existe uma maneira limpa de registrar um conjunto padrão de campos com todos os logs da minha aplicação?

Uma vez que estas perguntas aparecem regularmente na sua cabeça, é fácil conectá-las ao seu mecanismo de pesquisa favorito, registrar o resultado (se você pretende se referir a eles mais tarde) e passar algum tempo de vez em quando aplicando os resultados ao seu fluxo de trabalho. Se você não consegue encontrar uma resposta aceitável, seus colegas são muitas vezes um recurso ainda melhor. Na verdade, o único motivo para usar um mecanismo de busca primeiro é por respeitar o tempo deles.

Eu prometo que adotar essa prática (se você ainda não adotou) o configurará para o sucesso.

A equipe da Plataforma de Organização da Uber for Business vai ao karting.

Com estas três conclusões em mãos, envio mais e melhor código do que nunca, ao mesmo tempo em que produz-se um impacto cada vez mais tangível para nossos usuários em uma base diária. E nenhuma dessas experiências teria sido possível sem a orientação de meus mentores da Uber.

Eu adoro isso aqui e se você acha que também pode adorar, estamos contratando estagiários e engenheiros de tempo integral.

***

Este artigo é do Uber Engineering. Ele foi escrito por Emilee Urbanek. A tradução foi feita pela Redação iMasters com autorização. Você pode conferir o original em: https://eng.uber.com/emilee-urbanek/