Primeiras aulas do curso Agilidade e TDD: um dia no desenvolvimento de software

Agilidade e TDD: um dia no desenvolvimento de software

Entrando em um time ágil - Apresentação

Olá, boas-vindas. Meu nome é Rodrigo Ferreira e serei seu instrutor nesse treinamento.

A ideia desse curso é simular um dia no desenvolvimento ágil. Imagine que você já fez diversos treinamentos, já aprendeu a parte de programação, infraestrutura, e agora vai começar a trabalhar em uma empresa que utiliza metodologias ágeis como XP, Scrum, Kanban, entre outras.

Vamos simular como seria seu cotidiano dentro dessa empresa. Focaremos em desenvolver e entregar um software, entregar funcionalidades e colocá-las em produção.

Aprenderemos como funciona o ambiente da empresa, questões relacionadas ao time, à organização, e vamos desenvolver uma funcionalidade. Depois, vamos colocá-la em produção, pois entrega de software é um dos pilares do desenvolvimento ágil.

O treinamento é dividido em duas partes. A primeira tratará sobre desenvolvimento, conhecer o código, importar o projeto, conhecer padrões e práticas utilizadas pelo time, além de desenvolver uma funcionalidade com testes automatizados seguindo os padrões e as boas práticas do time.

Na segunda parte, para gerar um ciclo de entrega de software, colocaremos a funcionalidade desenvolvida em produção.

O objetivo neste curso não é estudar as tecnologias, mas simular o dia a dia dentro de uma empresa utilizando essas tecnologias.

Outro pilar importante do desenvolvimento ágil é a comunicação e colaboração entre pessoas. Como este é um treinamento gravado, não conseguiremos simular essa interação, mas frequentemente comentarei questões relacionadas a pessoas, organização, fluxo de trabalho, colaboração e comunicação. Além disso, disponibilizaremos materiais para você estudar e conhecer mais sobre interação entre pessoas.

Esperamos que você goste da nossa jornada simulando um dia no desenvolvimento ágil. Bons estudos!

Entrando em um time ágil - Onboarding

Olá, vamos começar nosso treinamento simulando um dia no desenvolvimento ágil.

Imagine que você é uma pessoa que trabalha com desenvolvimento de softwares e vai começar a trabalhar em uma empresa focada em desenvolvimento ágil e entrega de software.

Vamos considerar que hoje é seu primeiro dia de trabalho. Você terá que conhecer o funcionamento da empresa, as pessoas, o time em que você vai trabalhar, o produto, e nesse curso simularemos exatamente isso, o dia a dia do seu trabalho como pessoa desenvolvedora de softwares.

Geralmente, quando uma pessoa recém-contratada chega na empresa realiza-se o processo de Onboarding (integração). Existem três pontos importantes nesse processo. Primeiro, como funciona a empresa, como ela está organizada, como é o ambiente, a cultura da empresa. Obviamente, você não aprenderá tudo isso no primeiro dia, são coisas que se aprende com o tempo.

Segundo, uma empresa é um grupo de pessoas reunidas com um objetivo em comum, então você também conhecerá as pessoas, em especial as que estão no time em que você vai trabalhar, que já devem estar com algum projeto em andamento e você terá que conhecer e interagir com elas.

Provavelmente não há apenas um, mas vários times colaborando entre si. Você também conhecerá os outros times, outros produtos, saberá se vários times desenvolvem um mesmo produto e conhecerá outras áreas da empresa, como os setores de Marketing, Comercial, Recursos Humanos etc.

Terceiro, obviamente, você chega na empresa querendo botar a mão na massa, querendo escrever código, e no Onboarding você também conhece qual é o projeto/produto em que vai trabalhar.

O Onboarding costuma envolver esses três passos, mas como esse é um curso gravado, não conseguiremos simular os dois primeiros, que é você conversando com as pessoas e aprendendo sobre a empresa. Aqui focaremos apenas no terceiro item, o produto em que você vai trabalhar.

Vamos trabalhar em uma aplicação que já está em andamento, provavelmente é o que vai acontecer quando você começar em uma empresa, ou talvez até já tenha acontecido. Ao chegar, te alocaram para trabalhar em determinado projeto que estava em andamento, este será o nosso caso.

Desenvolveremos para uma companhia aérea fictícia chamada Caelum Airlines, semelhante a empresas como Tam, Gol e Azul. Essa empresa tem um sistema de gerenciamento de passagens aéreas que foi dividido em duas partes. Um time é responsável pela aplicação front-end, que é desenvolvida com alguma tecnologia como JavaScript, Angular, React etc. e outro time cuida do back-end, desenvolvendo uma API que é consumida pela aplicação front-end.

Nós trabalharemos especificamente na API back-end, não teremos contato com a aplicação front-end. Na empresa real você teria contato, pois como se trata do mesmo produto os dois times conversariam entre si e naturalmente existiria uma integração entre equipes.

O back-end dessa API é uma aplicação escrita em Java utilizando o framework Spring Boot, que está bem popular hoje em dia, acompanhado de muitas tecnologias padrões do mundo Java. Utilizamos Maven, Git como controle de versão, JUnit para escrita de testes automatizados, Heroku na parte de infraestrutura como provedor para fazer deploy da aplicação na nuvem, Docker para "containizar" e Travis para integração contínua. Essas são as principais tecnologias da nossa aplicação.

Lembre-se que nosso objetivo não é aprender cada uma dessas tecnologias, na Alura temos outros cursos específicos para você aprender cada uma delas. Para nosso treinamento consideramos que você já saiba pelo menos o básico sobre essas tecnologias e vamos simular o dia a dia trabalhando com elas.

Nossa missão neste dia de desenvolvimento ágil divide-se em duas partes: desenvolver uma funcionalidade e colocá-la em produção. Sabemos que são dois itens complexos, cada um deles envolve várias tarefas, para desenvolver precisamos ter acesso ao código fonte e saber como ele funciona. Já conhecemos as tecnologias, mas é preciso ver como o projeto foi estruturado, aprender e desenvolver seguindo as boas práticas e os padrões do time.

Desenvolvimento ágil, além de ser focado em pessoas, também é focado em entrega, por isso colocaremos a funcionalidade em produção para ter uma visão geral do que seria um dia no desenvolvimento ágil dessa empresa.

Nosso treinamento é dividido em duas partes. Primeiro estudaremos o desenvolvimento de uma funcionalidade e depois, em um segundo treinamento, veremos a parte de infraestrutura, integração contínua, deploy, building etc.

Já conhecemos o projeto e as tecnologias envolvidas, mas qual é a funcionalidade que vamos desenvolver? O que já está pronto? Como está organizado?

Em geral, as empresas utilizam alguma ferramenta de Kanban, ou um quadro Kanban físico mesmo, como uma lousa, por exemplo, para listar as atividades. Aqui também seguiremos esse modelo, utilizando a ferramenta Trello. Dentro do quadro podemos acompanhar nosso passo a passo, o fluxo de trabalho dentro da empresa.

Na primeira coluna à esquerda, intitulada "Backlog", temos algumas tarefas a serem feitas. Ao serem aprovadas essas tarefas são colocadas na coluna seguinte, intitulada "To do" (A Fazer), pois estão prontas para serem desenvolvidas. E vamos movendo essas tarefas pelas colunas da esquerda para a direita, a próxima coluna será o desenvolvimento, depois que ela estiver implementada vem a parte de revisão para ver se as recomendações e boas práticas foram seguidas, e, por fim, quando a tarefa está concluída ela pode ser arrastada para a coluna final e entrar para o processo de produção.

Em nosso quadro Kanban temos algumas funcionalidades que já foram implementadas e estão na coluna de tarefas concluídas, como uma API para a parte de aeroportos, para aeronaves, alguns CRUDs mais básicos que já estão implementados.

Nos concentraremos na segunda coluna, a lista "To do" (A Fazer), primeiro na tarefa de desenvolver uma API para usuários e depois na parte de infraestrutura para conseguirmos fazer o deploy , que é a entrega dessa funcionalidade.

Tudo bem? Então vamos simular um dia dentro desse time seguindo esse fluxo de desenvolver uma funcionalidade, seguir boas práticas, utilizar testes automatizados e colocar a funcionalidade desenvolvida em produção seguindo o processo de integração e deploy contínuos.

No próximo vídeo saberemos mais sobre o código fonte da nossa aplicação e as configurações do projeto!

Entrando em um time ágil - Controle de versão e Git

Após o Onboarding, chegou a hora mais esperada para quem trabalha com programação, vamos botar a mão na massa.

Agora você vai saber como acessar o código fonte da aplicação no computador em que vai trabalhar. Toda empresa utiliza algum sistema de controle de versão. No mercado existem alguns como CVS, SVN, Git, Mercurial, entre outros. Usaremos o Git, que é o principal sistema de controle de versão no mundo inteiro, bastante popular já há algum tempo e sendo a escolha padrão de todas as empresas. Raramente será escolhido outro sistema de controle de versão.

Já temos o Git instalado na máquina, mas onde está o repositório da aplicação? Em geral, as empresas utilizam algum serviço Web para hospedagem de repositórios no Git, como o GitHub, GitLab ou Bitbucket. Cada uma tem suas vantagens e desvantagens, mas todas fazem um bom trabalho. Você acabou de chegar na empresa então vai ter que se adequar às ferramentas utilizadas. Aqui usaremos Git e Github para baixar o código fonte, realizar as alterações, implementar funcionalidades, realizar commits, fazer push e enviar para o repositório central que está no GitHub.

É importante você saber quais são as ferramentas utilizadas e conhecê-las, depois falaremos sobre algumas outras.

Agora que já sabemos qual é a ferramenta de hospedagem e de controle de versão, já podemos baixar o projeto para nossa máquina. Você pode fazer isso pelo terminal ou pelo navegador da sua máquina. No terminal vou inserir o comando git clone para clonar o repositório e criar uma cópia no meu computador. Lembre-se de uma coisa importante: o objetivo do nosso curso não é estudar as ferramentas, não haverá explicações sobre o Git, vamos simplesmente utilizá-lo. Na Alura você pode encontrar cursos focados em Git e Github.

Não se preocupe, disponibilizaremos um .zip com esse mesmo projeto para você não precisar baixar manualmente, mas eu vou usar este comando para baixar no meu terminal:

git clone https://github.com/rcaneppele/clines-api.git

O próximo passo é você abrir sua IDE, uma ferramenta que também será bastante utilizada na empresa, e fazer o import do projeto. A empresa pode ter uma IDE padronizada ou pode deixar à escolha de cada pessoa, no mundo Java temos Eclipse, IntelliJ, NetBeans, Visual Studio Code, todos atendem às necessidades, e nesse curso usaremos o Eclipse.

Para importar o projeto vamos clicar em "Import Projects > Maven > Existing Maven Projects",localizar o projeto que baixamos e clicar em "Finish". Na primeira vez que você fizer isso ele vai baixar as dependências.

Abrimos o projeto e aí está nosso tão esperado código fonte, na próxima aula vamos explorá-lo e discutir um pouco sobre o Maven, que é outra ferramenta importante para o nosso projeto.

Sobre o curso Agilidade e TDD: um dia no desenvolvimento de software

O curso Agilidade e TDD: um dia no desenvolvimento de software possui 121 minutos de vídeos, em um total de 43 atividades. Gostou? Conheça nossos outros cursos de Java em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Java acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas