Naturalmente evoluindo, esse repositório é uma metamorfose ambulante
Esse aqui é mais um daqueles repositórios sobre o workflow do Desenvolvedor de Software.
Meu fluxo de trabalho no Desenvolvimento de Software.
Por que um repositório para nosso fluxo de trabalho?
Por que pode ser útil para ajudar alguém a melhorar o seu fluxo de trabalho, outras pessoas podem comentar sobre o nosso fluxo e com isso podemos melhorar e pode ser uma maneira de contribuir com quem tem dúvidas sobre como é o nosso dia a dia.
Como nosso workflow está sempre mudando, acho o GitHub o melhor lugar para deixar isso registrado, pois podemos ir atualizando sempre. Um post no Blog poderia ficar defasado em poucas semanas, por exemplo.
Experiência pessoal
Um workflow com o qual aprendi bastante foi o do @vitorbritto: https://github.com/vitorbritto/workflow-guide
Durante minha carreira percebi que vale muito a pena perguntar para outras pessoas o que elas estão usando e acompanhar o que grandes empresas estão fazendo.
Se você quiser mais dicas sobre carreira, acompanhe esse repositório.
Meu fluxo de trabalho ao iniciar um projeto/tarefa técnica:
- Entender a tarefa/o projeto
- Analisar o problema a ser resolvido
- Planejar como resolver esse problema
- Colocar a mão na massa
1. Entendendo a tarefa/o projeto
Podemos utilizar papel e caneta para levantar os requisitos de um projeto/uma tarefa ou o Wunderlist para essas notas depenendendo do que estiver nas mãos no momento de buscar esse entendimento.
Vale a pena questionar o máximo quem lhe passou a tarefa até entender bem o que deve ser feito para que não fique nenhum nó perdido, o que poderia gerar um retrabalho.
2. Analisar o problema a ser resolvido
Depois de levantar o máximo de informação sobre o que será feito vem a parte de analisar o que será feito.
Essa parte de analise pode ser para:
- Classificar os tópicos por dificuldade
- Estipular prazos para essas tarefas (normalmente já começamos a criar pequenos planos mentais sobre como vamos resolver o problema)
- Excluir tópicos que foram levantados, porém são inviáveis (pode acontecer bastante)
3. Planejar como resolver o problema
Com os tópicos devidamente analisados podemos decidir, agora, por onde começar e como fazer.
Podemos iniciar por algo que vá entregar valor a curto prazo, algo que vá resolver um grande problema ou mesmo começar pelos mais fáceis para agilizar grandes entregas ou entrega de volume, conforme foi analisado no tópico 2.
Agora vem a parte mais técnica que é planejar/modelar como codificar a solução para o problema.
Algumas perguntas que você deve fazer quando for codificar essa solução:
- Esse problema já foi resolvido por outra pessoa?
- Podemos usar determinado padrão de projeto para resolver esse problema?
4. Colocar a mão na massa
Enquanto estamos codificando a solução, é ideal que se pense o seguinte:
- Outra pessoa vai entender o nome dessa variável?
- Outra pessoa vai entender o que essa função/método faz?
- O assassino que está atrás de mim vai gostar desse código? (tópico muito importante)
Quando todas essas questões estão satisfatórias, é sinal que rolou um bom entendimento da tarefa.
Caso algo não esteja saindo como planejado, é ideal que peça ajuda de um companheiro de serviço. Uma segunda opinião sempre é boa, um code review é excelente. Não importa nosso nível, nem o tempo de experiência que possuímos, é sempre legal ouvir o que outras pessoas tem a nos dizer.
Seja curioso(a) e esteja sempre disposto(a) a aprender algo com outras pessoas, entender como as coisas funcionam.
Isso facilita seu workflow.
Ferramentas mais utilizadas durante essa fase:
- Google!
- Stackoverflow!
- Perguntar para outras pessoas!
- Editor de texto/IDE
- Terminal
- Navegadores para testes
- Ferramentas de testes
- Trello: Para criação de tarefas
- Wunderlist: Para anotações
- Tomato Timer: Para utilizar a técnica de Pomodoro
- Google Drive: Para armazenamento de arquivos e office
- VIM: Pequenas edições e tentando usar no dia a dia
- Sublimetext: Para desenvolvimento em geral
- Linux ❤️
- OSX 😩 😭 😫 💩 👎
- Gulp.js
- Grunt
- Yeoman
- Git
- dotfiles: Configuração do ambiente, Plugins dos editores de texto
- HTML
- CSS
- JavaScript
- Browser Plugins
- Palestra sobre o meu Workflow JavaScript
- Modularização do Gulpfile
- Emoticons