Olá, estudante! Tudo bem com você? Agora que já aprendeu sobre o dimensionamento de dados na última lição, darei seguimento ao conceito dentro da disciplina de Análise e Projeto de Sistemas chamamos de Gerenciamento da Programação, tendo em vista que até o momento falamos muito sobre requisitos, dados etc.
Portanto, o objetivo desta lição é fazer você compreender sobre os processos de programação, sobre o uso de ferramentas de gerenciamento de projetos, identificação e mitigação de riscos, como trabalhar e se comunicar em equipe, monitorar e controlar tudo o que foi planejado e, por fim, entender que é necessária a capacidade de adaptação a mudanças por mais que já tenhamos programado o que deve ser feito.
Ao final dessa lição, você deverá ser capaz de compreender e aplicar os princípios do Gerenciamento da Programação em projetos de desenvolvimento de software, utilizando técnicas e ferramentas adequadas para planejar, monitorar e controlar o progresso das atividades programadas.
Um dos problemas da falta de gerenciamento da programação é quando uma equipe de desenvolvimento, empolgada com a ideia de criar uma aplicação inovadora, mergulha de cabeça no processo de codificação sem um plano de programação claro. Cada membro trabalha em sua parte sem considerar as dependências entre tarefas, os prazos ou a alocação de recursos. Porém, à medida que o projeto avança, torna-se evidente que a falta de gerenciamento eficaz na programação gera uma série de desafios. Entre eles: desvio de prazos, conflito de recursos, qualidade comprometida, desperdício de esforço e dificuldade de adaptação.
Portanto, para solucionar essas questões se faz necessário um gerenciamento eficaz da programação, pois ela oferece uma estrutura organizada para o planejamento, execução e controle de todas as atividades do projeto, garantindo que os prazos sejam cumpridos, os recursos sejam utilizados eficientemente e a qualidade seja mantida. Vale acrescentar que o gerenciamento da programação não apenas mantém a equipe no caminho certo, mas também contribui significativamente para o sucesso e a sustentabilidade de projetos de software.
No case fictício de hoje, você conhecerá a empresa Inova Tech, conhecida por sua abordagem inovadora no desenvolvimento de soluções tecnológicas, a empresa decidiu embarcar em um projeto ambicioso chamado ‘SmartConnect’. Um aplicativo revolucionário que conectaria dispositivos inteligentes em uma única plataforma, oferecendo uma experiência de usuário inigualável. Mas, a equipe da empresa logo de cara já enfrentou um grande desafio: a falta de clareza sobre a programação do projeto. Com uma visão ousada, mas sem um plano estruturado, a equipe percebeu a necessidade urgente de implementar práticas de gerenciamento da programação.
Diante do problema, a empresa optou por adotar uma abordagem ágil de gerenciamento de projetos, utilizando metodologias como Scrum. Isso permitiu que a equipe dividisse o projeto em sprints (que são cronogramas de até duas semanas com um único objetivo), definisse objetivos claros para cada iteração e mantivesse uma comunicação constante para ajustar o curso conforme necessário.
Os resultados foram os mais positivos e variados possíveis como: cumprimento de prazos, colaboração eficiente, adaptação a mudanças, controle de recursos e qualidade garantida. Com isso a empresa transformou o projeto ‘SmartConnect’ de uma visão ambiciosa para uma realidade de sucesso. E tudo isso aconteceu graças à implementação das práticas eficazes de gerenciamento da programação!
O gerenciamento da programação refere-se à disciplina e conjunto de práticas utilizadas para planejar, organizar, coordenar, controlar e monitorar as atividades relacionadas à criação, desenvolvimento e implementação de software em um projeto. Esse processo visa garantir que as metas do projeto sejam atingidas de maneira eficaz e eficiente, abrangendo diversos aspectos, desde a alocação adequada de recursos até a gestão do tempo, qualidade e custos. Pressman e Maxim (2021) destacam que todo projeto de software é motivado por alguma necessidade de negócios, seja a necessidade de corrigir um defeito em uma aplicação existente, adaptar um que já existe ou a necessidade de criar um produto, serviço ou sistema. O que torna o foco nesse processo de programação algo fundamental!
Hoje, pode-se seguir a metodologia tradicional de projetos assim como as metodologias ágeis que possuem também sua forma de gerenciamento (Scrum). Se você pensar somente no gerenciamento tradicional teremos os seguintes componentes:
Planejamento: Definição dos objetivos do projeto, alocação de recursos, estimativas de tempo e custo, e elaboração de um cronograma detalhado.
Organização: Estruturação da equipe de desenvolvimento, atribuição de papéis e responsabilidades, e estabelecimento de uma hierarquia de tarefas.
Coordenação: Assegurar que todas as partes do projeto estejam alinhadas e trabalhando de forma sinérgica para alcançar os objetivos definidos.
Controle: Monitoramento constante do progresso do projeto em relação ao plano original, identificação de desvios e implementação de ajustes quando necessário.
Comunicação: Estabelecimento de canais de comunicação eficientes entre membros da equipe, partes interessadas e demais envolvidos no projeto.
Gestão de riscos: Identificação, avaliação e mitigação de riscos potenciais que podem afetar o sucesso do projeto.
Qualidade: Implementação de práticas e padrões que garantam a entrega de um software de alta qualidade, incluindo testes rigorosos e revisões constantes.
Documentação: Criação e manutenção de documentação clara e abrangente, abordando aspectos técnicos, de design, e processos do projeto.
A identificação e mitigação de riscos são elementos críticos em qualquer empreendimento, especialmente em projetos de software. Segundo Calôba (2018), no caminho de criação de um software existem diversas incertezas, sendo assim, identificá-las e se preparar para lidar com elas é extremamente necessário para evitar problemas e aproveitar as oportunidades que cada situação apresenta. Essa identificação de riscos envolve a análise proativa de eventos potenciais que podem impactar negativamente o sucesso do projeto, abrangendo aspectos como requisitos ambíguos, mudanças de escopo, recursos insuficientes e falhas na comunicação. A mitigação de riscos, por sua vez, refere-se à implementação de estratégias para minimizar ou eliminar as potenciais consequências adversas desses eventos. Isso pode incluir a definição de planos de contingência, a realocação de recursos, a revisão contínua dos requisitos e a comunicação eficaz com as partes interessadas. A abordagem proativa para a identificação e mitigação de riscos não apenas ajuda a evitar possíveis obstáculos, mas também contribui para o fortalecimento da resiliência do projeto, promovendo uma execução mais suave e bem-sucedida.
A habilidade de adaptação à mudança é fundamental em ambientes dinâmicos e competitivos. E se tratando de software, Perkin (2022) indica que as tecnologias digitais têm impactado de incontáveis maneiras a criação de um clima veloz de mudanças dinâmicas competitivas e de consumo. O que reflete na capacidade de indivíduos, equipes ou organizações ajustarem suas estratégias, processos e mentalidade diante de novas circunstâncias. A adaptação envolve a flexibilidade para abraçar inovações, aprender com experiências passadas e responder de forma proativa a desafios emergentes. Aqueles que possuem essa habilidade estão mais propensos a superar obstáculos, identificar oportunidades ocultas e manter-se resilientes em face da incerteza. A mentalidade adaptativa é especialmente valorizada em contextos empresariais e de desenvolvimento, onde a velocidade das mudanças tecnológicas e as demandas do mercado exigem uma abordagem ágil para garantir o sucesso a longo prazo.
Como já mencionado, as metodologias ágeis, como Scrum e Kanban, são abordagens flexíveis e iterativas para o desenvolvimento de software, projetadas para se adaptar a mudanças rápidas e fornecer valor incremental ao longo do tempo. Sutherland (2020) indica que o Scrum já mudou, não apenas o modo como empresas de software e tecnologia funcionam, mas cada vez mais a forma como as grandes companhias de quase todos os setores trabalham. Sendo assim, é necessário que tenhamos uma visão geral do funcionamento delas:
Papéis Principais:
Scrum Master: Facilitador do processo, responsável por garantir que a equipe siga as práticas do Scrum.
Product Owner: Representante do cliente, responsável por definir e priorizar as funcionalidades do produto.
Development Team: Equipe que realiza o trabalho de desenvolvimento.
Cerimônias (Eventos):
Sprint planning: Reunião para planejar as atividades da próxima iteração (sprint).
Daily standup: Reunião diária curta para atualização da equipe sobre o progresso.
Sprint review: Revisão do que foi concluído durante a sprint.
Sprint retrospective: Reflexão sobre o processo da sprint e identificação de melhorias.
Artefatos:
Product Backlog: Lista priorizada de funcionalidades desejadas.
Sprint Backlog: Lista de tarefas a serem realizadas durante a sprint.
Incremento: O produto funcional resultante de uma sprint.
Princípios-chave:
Iterativo e Incremental: Desenvolvimento é feito em iterações curtas (sprints), entregando incrementos de software funcional.
Colaboração: Envolvimento contínuo do cliente e comunicação eficaz na equipe.
Adaptativo: A capacidade de se adaptar a mudanças de requisitos e prioridades durante o desenvolvimento.
Princípios-chave:
Visualização do fluxo de trabalho: Uso de um quadro visual para representar as tarefas em diferentes etapas do processo.
Limite de trabalho em andamento (WIP): Restrição no número de tarefas que podem estar em progresso ao mesmo tempo, para evitar sobrecarga.
Gestão do fluxo: Foco na entrega contínua e suave, minimizando gargalos e otimizando o fluxo de trabalho.
Quadro Kanban:
Colunas: Representam diferentes etapas do processo, como "A fazer", "Em andamento" e "Concluído".
Cartões: Representam tarefas individuais movendo-se entre as colunas à medida que progridem.
Melhoria Contínua:
Revisões regulares: Análises frequentes do processo para identificar áreas de melhoria.
Adaptação: Capacidade de ajustar o processo conforme necessário para otimizar o desempenho.
Ambas as metodologias ágeis compartilham o compromisso com a flexibilidade, colaboração e entrega de valor contínuo, mas diferem em termos de estrutura e abordagem. O Scrum é mais prescritivo, com papéis e cerimônias específicas, enquanto o Kanban é mais adaptável e focado na gestão do fluxo de trabalho. As equipes muitas vezes escolhem entre essas metodologias com base nas necessidades específicas de seus projetos e nas preferências de trabalho da equipe.
Para priorização e planejamento, durante a sprint planning, tanto no scrum quando no kanban, o quadro seria a melhor opção, mas não da forma de quadro físico mesmo (o que não é impeditivo se for o caso) mas, na forma digital como o Jira ou Trello. Ambos fornecerão uma visão do planejado e do progresso do trabalho em cada fase.
Além disso, na Sprint review e Sprint retrospective essa visão oferece oportunidades para inspecionar o incremento e o processo da sprint, identificando melhorias para as próximas iterações. Mas, agora que você já sabe para o que precisaríamos de ferramentas para esse trabalho de gerenciamento, vamos falar um pouco sobre elas:
Poderosa e amplamente utilizada ferramenta de gerenciamento de projetos e rastreamento de problemas, projetada para apoiar equipes ágeis no desenvolvimento de software. Desenvolvido pela Atlassian, uma empresa de tecnologia fundada em Sydney na Austrália, o Jira Software foi lançado em 2002 como uma ferramenta de acompanhamento de itens e gestão de projetos para equipes. Desde então mais de 65.000 empresas em todo o mundo o adotaram. O Jira oferece uma plataforma integrada que permite a criação e organização de histórias de usuários, tarefas e bugs, além de fornecer recursos robustos para o planejamento e acompanhamento de sprints no contexto da metodologia Scrum. Com uma interface intuitiva, o Jira permite que equipes colaborem de forma eficiente, atribuam tarefas, monitorem o progresso, identifiquem impedimentos e realizem revisões regulares do processo. Sua flexibilidade permite a personalização de fluxos de trabalho para se adaptar às necessidades específicas de cada equipe, tornando-se uma escolha popular para empresas que adotam abordagens ágeis no desenvolvimento de software (ATLASSIAN JIRA GUIDE, 2023).
Uma ferramenta de gerenciamento de projetos baseada em quadros visuais, projetada para simplificar o processo de colaboração e acompanhamento de tarefas. O Trello é a ferramenta de gestão de trabalho visual que capacita os times para idealizar, planejar, administrar e celebrar o trabalho em conjunto de uma forma colaborativa, produtiva e organizada. Com uma abordagem intuitiva e flexível, o Trello organiza o trabalho em quadros, listas e cartões, permitindo que equipes visualizem e gerenciem suas tarefas de maneira eficaz. Cada cartão pode conter detalhes, checklists, datas de vencimento e anexos, facilitando a estruturação e a execução das atividades. Ideal para equipes que adotam a metodologia Kanban, o Trello oferece uma interface fácil de usar, promovendo a transparência, a colaboração e a agilidade no desenvolvimento de projetos. Com versões web e aplicativos para dispositivos móveis, o Trello se destaca por sua versatilidade e é amplamente utilizado em ambientes de trabalho colaborativos (TRELLO GUIDE, 2023).
É uma plataforma de gerenciamento de trabalho que se destaca por sua abordagem centrada em tarefas e colaboração eficiente. Ela é uma ferramenta abrangente de gestão do trabalho projetada para ajudar indivíduos e equipes a acompanhar tarefas, delegar responsabilidades, monitorar o progresso e se comunicar em tempo real. Projetado para equipes colaborativas, o Asana oferece uma variedade de recursos que simplificam o planejamento, execução e acompanhamento de projetos. Sua interface intuitiva permite a organização de tarefas em projetos, seções e subtarefas, proporcionando uma visão clara e estruturada do trabalho em andamento. Com funcionalidades como atribuições, prazos, comentários e integrações com outras ferramentas populares, o Asana ajuda as equipes a coordenarem-se de maneira eficaz, independentemente da complexidade do projeto. Seja para a gestão de projetos ágeis, desenvolvimento de software ou colaboração em iniciativas de equipe, o Asana é uma escolha popular devido à sua versatilidade e ênfase na simplicidade para promover a produtividade (ASANA HELPER CENTER, 2023).
Uma característica comum entre essas três ferramentas é que elas possuem um tipo de acesso grátis com algumas restrições e para seu funcionamento completo requer planos de assinaturas (pagos).
O conteúdo sobre Gerenciamento da Programação é de extrema importância para você, futuro técnico em desenvolvimento de sistemas, pois capacita-o a lidar com os desafios inerentes ao processo de programação e o uso de ferramentas de gerenciamento de projetos. Ao estudar sobre esse assunto, você adquire habilidades essenciais para identificar e mitigar riscos, trabalhar de forma colaborativa em equipe, comunicar-se eficazmente e monitorar o progresso do projeto.
No Saiba Aplicar de hoje, você praticará a gestão da programação criando histórias do usuário e planejando uma sprint Scrum. O software em questão será um sistema web para gerenciamento de estoque de uma distribuidora de doces. Para isso deverá seguir os seguintes passos:
Definição do Product Backlog: Você identificará e compilará todas as funcionalidades desejadas para o produto. Cada funcionalidade é representada por uma história de usuário.
Priorização do Product Backlog: Priorize as histórias de usuário de acordo com as necessidades e prioridades do cliente. Utilize critérios como valor de negócio, dependências e complexidade.
Seleção para Sprint Planning: Selecione as histórias de usuário que a equipe se compromete a implementar durante a sprint atual (próximas duas semanas).
Estimativas de esforço: Estime o esforço necessário para implementar cada história de usuário. Use técnicas como Planning Poker (assista esse vídeo para aprender a técnica) para obter estimativas colaborativas.
Criação da Sprint Backlog: Crie uma lista de itens específicos que a equipe se compromete a concluir durante a sprint.
Atribuição de tarefas e planejamento diário: Atribua tarefas aos membros da equipe e realize reuniões diárias durante todo o tempo do projeto para discutir progresso, impedimentos e ajustes necessários.
Revisão da Sprint: Ao final da sprint, conduza uma revisão para demonstrar o trabalho concluído. Obtenha o feedback do cliente e ajuste o Product Backlog conforme necessário.
Ciclo contínuo: Repita o processo para cada sprint subsequente, aprendendo e adaptando-se continuamente para melhorar a eficiência e a entrega de valor ao cliente.
Com isso você terá uma pequena experiência em sala de aula de como se gerencia a programação dentro de um projeto de software, ou seja, iniciando as funcionalidades, verificando o que deve ser feito primeiro, selecionando as que devem ser implementadas no sprint (2 semanas) e controle diário do andamento destas tarefas.
Discuta com seus colegas e seu professor sobre histórias de usuário e Planning Poker e comece a deixar os proprietários da distribuidora animados com o novo software!
ASANA HELPER CENTER. O que é Asana, 2023. Disponível em: https://help.asana.com/hc/pt/articles/14250783001627-Como-come%C3%A7ar-a-usar-a-Asana. Acesso em: 29 nov. 2023
ATLASSIAN JIRA GUIDE. Jira Software para equipes, 2023. Disponível em: https://www.atlassian.com/br/software/jira/guides/getting-started/who-uses-jira. Acesso em: 29 nov. 2023
CALÔBA, G. Gerenciamento de riscos em projetos. Rio de Janeiro: Alta Books, 2018.
PERKIN, N. Transformação Digital com metodologias ágeis: como usar o Agile para tornar a sua empresa mais ágil e competitiva na era digital. 1 ed. São Paulo: Autêntica, 2022.
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software: uma abordagem profissional. 9 ed. Porto Alegre: AMGH, 2021.
SUTHERLAND, J.J. Scrum: Guia prático. Rio de Janeiro: Sextante, 2020.
TRELLO GUIDE. Aprenda noções básicas do quadro do Trello, 2023. Disponível em: https://trello.com/guide/trello-101. Acesso em: 29 nov. 2023