A 60portunities decidiu focar em aposentados que têm interesse em tecnologia e em aprender novas habilidades. Realizamos uma pesquisa online e presencial em comunidades de aposentados para entender as necessidades e interesses em tecnologia.
Elaboramos um conjunto de treinamentos introdutórios e de forma diária com instrutores experientes que irão fazer de forma propositiva e evolutiva o aprendizado a estas tecnologias permitindo uma maior inclusão no meio tecnológico com boas práticas comerciais.
É uma jornada fascinante de inovações, desafios e transformações que moldaram o mundo moderno. Ao longo dos séculos, a necessidade humana de processar, armazenar e comunicar informações levou ao desenvolvimento de tecnologias cada vez mais avançadas, que passaram de simples ferramentas mecânicas para sistemas complexos e onipresentes, como os que usamos hoje.
O gerenciamento de projetos visa garantir que o desenvolvimento do software ocorra dentro dos prazos, orçamentos e escopos definidos. O gerente de projeto deve aplicar práticas de gerenciamento ágil ou tradicional conforme as necessidades do projeto, com o foco na entrega incremental e contínua.
- Metodologias recomendadas: Scrum, Kanban, Waterfall,#NOProjecvt ou Híbrido, dependendo da natureza do projeto;
- Ferramentas recomendadas: GitHub, Azure-Devops;
- Responsabilidades:
- Definir e gerenciar escopo, cronograma e recursos;
- Monitorar progresso e adaptar planos conforme necessário;
- Manter comunicação constante entre as partes interessadas;
Capacitar os 60pportunities a desenvolver um plano de treinamento para garantir que todos os membros compreendam as ferramentas, processos e práticas adotadas em projetos.
- Áreas de foco
- Metodologias ágeis e frameworks de desenvolvimento;
- Ferramentas de controle de versão (Git, Jujutsu ou Sapling)
- Práticas de segurança (OWASP, criptografia, proteção de dados);
- Testes automatizados e práticas de QA;
- Cypress, Selenium;
- Follow the Code
O gerenciamento eficaz de requisitos garante que as expectativas do cliente sejam atendidas e que todos os requisitos necessários sejam atendidos durante o ciclo de vida do projeto.
- BDD (Behavior Driven Development):
- Enfatiza a colaboração entre desenvolvedores, testers e stakeholders para definir comportamentos desejados do sistema.
- Frameworks recomendados: Cucumber, SpecFlow, JBehave.
- Práticas do BDD:
- Escrever requisitos como histórias de usuários (user stories) com critérios de aceitação.
- Realizar reuniões de colaboração para refinar requisitos com exemplos específicos e testáveis.
- Testes automatizados baseados nas especificações.
O planejamento é uma etapa crítica para garantir que os recursos sejam alocados corretamente e que os marcos sejam atingidos no tempo estipulado. O planejamento deve considerar:
- Plano de execução: detalhamento das tarefas, estimativas de tempo e alocação de recursos.
- Alocação de risco: identificação de riscos e sua mitigação.
- Divisão de fases: planejamento de releases e entregas incrementais.
- Cronograma: definição de datas de entregas e milestones.
Identificar, avaliar e mitigar riscos ao longo do ciclo de vida do software. A gestão de riscos pode ser realizada por meio de uma matriz de risco.
- Tipos de riscos a monitorar:
- Riscos técnicos (falta de conhecimento de tecnologias, falhas de integração).
- Riscos de segurança.
- Riscos operacionais (recursos humanos, tempo).
- Riscos financeiros e orçamentários.
A fase de design é fundamental para garantir que o software atenda aos requisitos e seja fácil de manter e evoluir. A arquitetura do sistema e o design de componentes devem ser planejados de forma modular e escalável.
- Design de arquitetura: escolha entre arquiteturas monolíticas ou baseadas em microserviços, considerando escalabilidade, manutenibilidade e desempenho.
- Design de banco de dados: modelo de dados e estratégias de acesso.
- Prototipação: uso de wireframes e mockups para validar com stakeholders antes de iniciar o desenvolvimento.
A qualidade é uma prioridade em todas as fases do ciclo de vida do software. Isso envolve práticas de desenvolvimento, automação de testes, integração contínua e feedback constante.
- Testes automatizados: integração de ferramentas como Selenium, JUnit, ou TestNG para garantir que funcionalidades críticas estejam sempre verificadas.
- Code Review: revisão contínua de código entre desenvolvedores para garantir boas práticas de programação e evitar erros.
A colaboração entre equipes técnicas e não técnicas, como gerentes de produto, designers e clientes, deve ser contínua.
- Ferramentas de comunicação: Microsoft Teams, Zoom;
- Documentação: manter documentação atualizada e acessível via MkDocs, GitHub Wiki;
- Reuniões regulares: reuniões de sincronização diárias, revisões semanais e retrospectivas para análise e melhorias.
A fase de desenvolvimento envolve a codificação propriamente dita, respeitando as melhores práticas de engenharia de software e utilizando boas práticas de codificação, como:
- Controle de versão: Git (GitHub e Azure-Devops);
- Desenvolvimento orientado a testes (TDD): escrever testes antes de escrever o código;
- Integração contínua (CI) e Entrega contínua (CD): uso de pipelines automatizados para build, testes e deployment.
A implementação envolve a preparação do software para ser colocado em produção. Isso pode incluir a configuração de ambientes, automação de deploy e migração de dados.
- Deploy contínuo: Automatização do processo de deploy para evitar falhas humanas e facilitar rollbacks rápidos;
- Testes pós-deploy: Realizar testes em ambiente de staging ou produção para garantir que não haja regressões;
A verificação é um conjunto de atividades realizadas para garantir que o software atenda aos requisitos, seja seguro e tenha qualidade.
- Análise de código estático: ferramentas como SonarQube, CodeQL, ou ESLint para analisar o código em busca de falhas de segurança, código redundante e violações de boas práticas;
- Análise binária: verificação de binários compilados para vulnerabilidades ou falhas de segurança;
- Scanner de credenciais e segredos: ferramentas como TruffleHog ou GitLeaks para detectar segredos como chaves de API ou senhas no código;
- Análise de encriptação: garantir que dados sensíveis sejam tratados adequadamente com criptografia forte;
- Teste Fuzzing: uso de ferramentas de fuzzing (como AFL, Burp Suite) para encontrar falhas de segurança em entradas de dados não esperadas;
- Validação da configuração: garantir que as configurações do sistema e infraestrutura (como containers e servidores) estejam corretas e seguras;
- Governança de componentes: garantir que bibliotecas e componentes de terceiros estejam atualizados e sem vulnerabilidades conhecidas. (DependaBot).
Acompanhar e relatar o desempenho do desenvolvimento, qualidade do código e progresso do projeto é essencial para garantir a transparência e identificar pontos de melhoria.
- Relatórios de progresso: criação de dashboards que mostrem métricas como tempo de ciclo, número de bugs encontrados, cobertura de testes, etc.
- Análise de desempenho: monitoramento do desempenho do sistema após a implementação.
O lançamento é o momento em que o software é disponibilizado para os usuários finais.
- Plano de lançamento: definir etapas e processos para disponibilizar o software de forma segura;
- Acompanhamento pós-lançamento: monitoramento de desempenho, análise de erros e feedback dos usuários.
Após o lançamento, a fase de resposta envolve a coleta de feedback, resolução de problemas e melhorias contínuas.
- Suporte e manutenção: garantir que há uma equipe de suporte para resolver problemas rapidamente;
- Ciclos de retroalimentação: melhorias contínuas com base no feedback dos usuários e na análise de dados de uso.
- Planejamento de novas versões: implementação de atualizações e patches conforme necessário.