Como quintuplicar a produtividade no desenvolvimento de software?
Como quintuplicar a produtividade no desenvolvimento de software? Desenvolvimento de software é algo complexo, mesmo para quem está desenvolvendo. É algo que, durante o processo de encontrar sua melhor maneira de ser produtivo, você acaba se debatendo com suas próprias escolhas.
Existem muitas maneiras de se definir o que é um software, mas particularmente eu gosto dessa: um software é uma sequência de instruções escritas por um programador, para executar uma ou mais funções, otimizando assim algo que previamente era manual ou não existia.
Veja, se grande parte do meu trabalho como desenvolvedor é otimizar processos, a minha rotina de trabalho também costuma ser como um protótipo de software.
Isso se transforma em uma rotina estruturada, ou, ao menos, uma maneira estruturada de como resolver um problema. Vou contar um pouco do meu processo de construção de software/trabalho e como desenvolvi hacks para ser mais produtivo ao longo do tempo.
Vou contar um pouco da minha experiência para tentar ajudá-lo(a) a otimizar a sua. Vamos lá!
Comece de maneira gradual
Dificilmente consigo acordar e codar alguma coisa. Normalmente eu preciso que meu cérebro ligue os motores de maneira processual, um passo de cada vez.
No entanto, penso que isso não pode ser um processo que leva várias horas, então eu tomo um caminho gradual, mas rápido, para que esse processo ocorra.
Ao abrir minha máquina para programar eu começo geralmente pela leitura dos meus cards do Trello, nosso reservatório de tasks infinito onde sempre pode se tirar algo da cartola. Eu uso Trello, mas essa dinâmica aplica-se a qualquer ferramenta de gestão de projetos.
A leitura me ajuda a pensar nas tasks que vão ser executadas no dia. É um processo rápido. Ao ler rapidamente os títulos dos cards eu já sei o que devo fazer, quando fazer e como fazer, em sua grande maioria.
Após isso eu começo pelas tasks mais simples, coisas que são rápidas, mas me farão emergir no processo de pensar em software.
Um exemplo disso é executar alguns scripts para transferir dados de usuários, dar update em alguma informação no banco, ou refatorar algum trecho simples de código.
Coding Hard
É hora de codar. Mas como saber no que eu começo primeiro?
Para executar as tasks mais complexas, eu as separo em 2 tipos:
- As que são relativamente rápidas e as que são de longo prazo. As tasks complexas são aquelas que envolvem mais de uma parte do sistema, que têm alto impacto, em que é preciso prever muitas coisas antes de se começar a executar;
- Normalmente minha prioridade começa com as tasks que posso fazer em 1-2 horas. Elas permitem imprimir ritmo no desenvolvimento e fazem com que minha cabeça entre no modo foco.
Durante esse período normalmente não respondo e-mails, não olho o Slack, não faço nada que me faça perder a linha de pensamento. O porquê disso é simples, vamos imaginar a seguinte situação:
2.1 Usuário vai entrar na tela de login e nesse momento informo ao banco que ele está ativo 2.2 O banco guarda essa informação e ativa uma trigger para que daqui a 30 minutos um alerta seja enviado a esse usuário 2.3 Se o usuário entrou na tela 1 o alerta será x. Se entrou na tela 2 o alerta será Y, mas apenas depois de 30 minutos 2.4 Caso o usuário entre na tela 3 o tempo de alerta deve ser reduzido para 15 minutos
Pronto.
Imagine que pensei nas linhas gerais de como a task vai ser feita e, quando estou no meio da segunda instrução, paro para responder e-mails ou fazer outras coisas. O que ocorre?
Posso simplesmente esquecer que já fiz algo ou deixei de fazer algo. Por isso manter uma linha única de pensamento é importante quando estamos codando.
É preciso se ter em mente o tempo todo os passos que foram ou não executados. Caso você esqueça onde estava, todo o ciclo recomeça. “Será que setei o tempo certo na tela 1? Fiz o tempo de maneira diferente para a tela 3?” E então começa um processo de revisão da sua linha de pensamento.
Para se produzir as tasks de longo prazo é necessário quebrá-las em pequenas etapas, dificilmente é possível ficar 8 horas ininterruptas desenvolvendo. Bugs surgem, pessoas falam com você, outras tasks são priorizadas e por aí vai.
Por isso é um processo que exige a quebra. Exige que você determine quando cada etapa será executada para que diariamente você progrida dentro da task.
As pausa são importantes para a produtividade
Algo que já vi ser bem comum entre programadores — talvez seja para outras áreas também — é o tempo necessário para “resetar” o cérebro.
Ao finalizar tasks complexas, onde você levou sua mente a pensar na otimização de um processo específico, normalmente você precisa “não pensar” durante algum tempo.
O que quero dizer com isso? Se pensei na otimização de um processo de candidatos dificilmente é possível, no instante seguinte, pensar em um código para empresas.
Isso porque a mente está “contaminada”, pensando ainda em otimizações e melhorias do processo que você acabou de criar.
É preciso esvaziar a mente antes de colocar outra idéia no forno para iniciar um novo processo de desenvolvimento, por isto as pausas entre uma task e outra são importantes.
Afinal, como ser produtivo(a) no Desenvolvimento de Software?
E quando acaba essa sequência “colocar” coisas na caixa, “tirar” da caixa, “descansar”, “colocar” outro no lugar? Para a maioria dos Desenvolvedores que conheço a resposta é nunca.
Ao se deparar com problemas, normalmente eles são jogados em processos de background na sua mente e ficam produzindo idéias de maneira passiva.
Acredito que muitos Desenvolvedores — senão todos — já se depararam com uma idéia no meio da noite, acordaram e escreveram um trecho de código.
Ou já teve uma elucubração no meio da mesa do jantar, ou enquanto estava vendo sua série da Netflix.
Acredito que esse processo de nunca parar de pensar sobre os problemas técnicos ou sobre software em longo prazo é danos.
Talvez fique aqui a minha hipótese do porquê tantos Desenvolvedores curtem tanto fazer algo fora do serviço que atraia 100% do foco.
Como jogar algo ou estar imerso dentro de uma série.
Esse tipo de atividade simplesmente força sua mente a se desligar do mundo do software e é essencial para resetar sua mente e dar tempo para você ter novas idéias de maneira fresca e descansada.
Esse era um pouco do meu ciclo enquanto era 100% Desenvolvedor dentro da GeekHunter.
Hoje, assumindo a área de gestão, esse fluxo mudou um pouco, porém a essência ainda é a mesma.
Cada Desenvolvedor tem sua particularidade na hora de programar, mas acredito que existam muitas similaridades entre todos quando se trata do nível de foco necessário para desenvolver.
Espero ter ajudado. Até a próxima!