Num mundo onde as inteligências artificiais ameaçam substituir todos os programadores, temos que tentar ser diferentes e destacarmo-nos dos nossos colegas. Em primeiro lugar, sou um pouco cético em relação a esta tendência de dizerem que vamos ficar todos sem trabalho, mas deixo essa discussão para outro dia. Todavia, se temos ambições de nos destacarmos dos nossos colegas e progredir na nossa carreira, existem alguns pontos que, pela minha experiência, podemos nos focar que irão fazer toda a diferença. Vou tentar dividir em alguns pontos e não vou estar a abordar os conhecimentos técnicos necessários, apesar destes serem também fundamentais. Assumindo que os conhecimentos tecnicos já estão bem apurados, é assim que podes destarcar-te:
- Criar boa documentação tecnica e documentação para o utilizador
- Evitar ser o centro de dependencia de todos os erros e problemas
- Automatizar tudo o que é possível
- Criar mecamismos de recuperação
- Responsabilidar e dar automia aos utilizadores para resolverem problemas
Criar boa documentação tecnica e documentação para o utilizador
A documentação é fundamental, seja para comunicarmos com os nossos colegas ou com o próprio utilizador. A documentação sendo boa, ajuda-nos até a relembrar o que foi feito, como foi feito e por que foi feito. A documentação técnica permite um fácil onboarding de novos programadores, porque facilmente ficam familiarizados com o código. Um bom manual de utilizador mostra como utilizar a plataforma a novos utilizadores, assim como permite que tarefas e ações feitas menos vezes possam ser relembradas. Criar boa documentação também é muito difícil, eu próprio tenho dificuldade em fazer boa documentação, nem é uma coisa que goste de fazer, mas reconheço que é fundamental e tento escrever sempre alguma coisa todas as semanas. Por vezes pode ser apenas um ou dois parágrafos, o importante é escrever alguma coisa. Não tem que ficar perfeita à primeira. Podes ir melhorando ao longo do tempo.
Evitar ser o centro de dependencia de todos os erros e problemas
Sejam programadores ou de outra área qualquer, como finanças ou comunicação, é comum as pessoas gostarem da previsibilidade do seu trabalho e muitas vezes têm o prazer de serem as únicas pessoas a fazer determinada função. Acredito que a longo prazo é prejudicial para a progressão na carreira, porque ficamos agarrados sempre às mesmas funções. Principalmente na resolução de problemas, gosto que toda a minha equipa seja capaz de resolver os mesmos problemas que eu. Detesto quando sou o único que pode resolver os problemas. Na prática, o que acontece é que posso delegar ou ter a ajuda dos colegas nessas situações e ganho tempo para me focar em novos e diferentes projetos. É com novos desafios e projetos que vamos evoluindo e ganhando conhecimento. Além de que posso ir de férias descansado porque os colegas que ficam também sabem resolver os problemas.
Automatizar tudo o que é possível
Automatização é a nossa melhor amiga para nos desprendermos de tarefas repetitivas. Tudo o que seja repetitivo e nos tire algum tempo a executar, devemos tentar automatizar. Apenas não podemos cair no erro de levar 3 dias para automatizar uma tarefa que se faz uma vez por mês e leva 10 minutos. Há que medir sempre se vale realmente o investimento de tempo na automatização, mas nos casos em que faz sentido, ao longo do tempo podemos ganhar horas que podemos aplicar no nosso desenvolvimento pessoal e profissional. Mais uma vez, estamos a tirar a nossa dependência para efetuar tarefas rotineiras e libertar o nosso tempo para os verdadeiros desafios.
Criar mecamismos de recuperação
Uma coisa é certa, seja um website, uma rotina ou uma API ou até um jogo que estejas a desenvolver, este vai falhar. Vai crashar, vai estar indisponível ou vai faltar a luz. Nestes casos é sempre importante ter mecanismos de recuperação dos erros. Por vezes até pode ser uma chamada a uma API externa e por algum motivo fica indisponível. Os nossos projectos têm que ser resilientes a estas coisas. Logs para registar eventos e analisar posteriormente são fundamentais. Opções de retry ou até mesmo backups regulares são importantes para conseguirmos repor o sistema da forma mais rápida possível, idealmente sem impactar os utilizadores. Aqui é fundamental entender quais são as situações que levam a uma falha a acontecer e corrigi-la. Se não for possível porque não temos controlo sobre o código ou implementação (APIs externas por exemplo), temos que garantir que, havendo indisponibilidade, conseguimos ir buscar a informação a outro lado ou tentamos novamente até obter a informação.
Dar autonomia aos utilizadores para resolverem problemas
Mais uma vez aqui o objetivo é tirar as dependências de nós. Ao combinarmos os outros pontos atrás, podemos ser capazes de criar ferramentas ou funcionalidades específicas para alguns utilizadores de forma a que possam resolver algumas situações sozinhos. Aqui, dependendo do tamanho do produto, podemos até estar a falar em facilitar o trabalho das equipas de suporte. Juntando automatização, capacidade de resiliência e recuperação e a autonomia de um grupo de power users da plataforma ou API, estes últimos podem, numa primeira instância, resolver os problemas e arranjar soluções sem que haja a nossa intervenção.
Conclusão
Se tivesse de resumir tudo isto em meia dúzia de palavras, diria que, se tivermos uma postura de efetuar o nosso trabalho e desenvolvimento com o objectivo de nós não sermos mais necessários para manter o sistema, estamos a libertar o nosso tempo para abraçar novos desafios, novos problemas e, acima de tudo, para criar novas funcionalidades. A minha experiencia diz-me que há sempre outras coisas e coisas novas para fazer.