O Guia

Conheça como está organizado e navegar pelos temas!

O guia é organizado a partir das etapas de um processo moderno e eficiente de engenharia de software. Tais etapas estão representadas em um modelo de pilares. Os pilares do desenvolvimento de software conduzem desenvolvedores(as) à trilhar uma sequência lógica que inclui momentos de definição, construção e entrega de software.
Os pilares formam um ciclo completo de engenharia que se repete a cada nova iteração proporcionando um ritmo sustentável para evolução de soluções e também de pessoas, sendo as pessoas o centro deste modelo de pilares.

Os pilares agrupam mais de 50 temas e para cada um o guia apresenta um conjunto de conceitos, boas práticas e pontos de atenção organizados em tópicos com o objetivo de facilitar e agilizar o aprendizado e adoção. Em resumo, o guia oferece conteúdo estruturado da seguinte forma:
• O Guia ⇢ Pilares ⇢ Temas ⇢ Tópicos
O conteúdo aborda vantagens e dificuldades existentes em cada tema, de forma ponderada e sem pretensão de definir extremos entre certo e errado, considerando principalmente que em tecnologia há várias formas de “fazer a mesma coisa”.

Os pilares do desenvolvimento de software

Além de representar etapas em um processo de engenharia de software, os pilares são uma forma para navegar nos temas. A combinação de pilares + temas visa facilitar aos times de desenvolvimento a organização na busca de conhecimento, padronização e escala, propondo o foco no negócio somado as boas práticas de engenharia de software, para viabilizar um equilíbrio entre entrega de valor e qualidade no desenvolvimento de software. Abaixo é apresentado um pouco mais sobre cada pilar!

Negócio

O pilar inicial aborda uma questão essencial para desenvolver software que entregue valor. A compreensão do negócio e as definições de produto são o primeiro passo para a construção de qualquer software. Aplicar as boas práticas de engenharia só faz sentido quando o software desenvolvido atende de forma satisfatória as definições de produto. O cliente de uma solução espera que seu negócio seja impactado com o uso da solução, por este motivo tal pilar é tão importante. Sendo assim, antes de pensar em quais tecnologias serão utilizadas é necessário haver certeza de que o time de desenvolvimento possui compreensão do negócio e produto.

Confira os temas

Arquitetura de Software

O segundo pilar contempla a base para o desenvolvimento de um bom software a médio e longo prazo. A arquitetura vai muito além de diagramas e desenhos técnicos e ela está totalmente associada às definições de produto e do negócio. Defini-la bem requer estratégias que resultem em implementações mais simples e eficazes. Decisões sobre linguagens de programação, frameworks, ferramentas, dentre outros, devem ser realizadas conforme a arquitetura definida e não o contrário para que não limitem alternativas e o poder de inovação.

Confira os temas

Linguagens e Ferramentas

O terceiro pilar orienta a escolha da linguagem de programação e ferramentas que suportem a arquitetura definida. Essa escolha pode ser difícil, muitas vezes é feita considerando o que o time já conhece e embora esse seja um fator realmente importante ele não deve ser prioritário. A arquitetura deve ser o fator de maior peso, pois as escolhas neste pilar devem viabilizar a implementação da arquitetura proposta.

Confira os temas

Código Fonte

O quarto pilar é o mais relacionado ao dia a dia de desenvolvedores(as), pois todo software resulta de um conjunto de código escrito para atender uma necessidade de negócio. Normalmente o primeiro aspecto de qualidade de um código é atender ao negócio, as definições de produto e de arquitetura. Quando isso não ocorre, há uma grande tendência de que o código seja refeito em curto prazo. Além destas questões um bom código deve ser legível e extensível, qualquer desenvolvedor(a) deve ser capaz de compreendê-lo e mesmo que um código atenda o negócio e siga a arquitetura definida, quando não é compreensível e não respeita boas práticas ele se torna um detrator de performance do time, culminando muitas vezes no principal limitador de evolução do software e da solução de negócio.

Confira os temas

Integração Contínua

Integração contínua vai além de utilizar uma ferramenta que automatiza tarefas. Em um processo moderno e eficiente de desenvolvimento, uma das questões mais relevantes é o momento de mesclagem do código. Quanto maior o time, número de alterações e integrações entre sistemas, maior é a chance de haver conflitos e falhas durante essa etapa podendo afetar a cadência de times e baixar a qualidade de entregas. O quinto pilar trata os conceitos e boas práticas relacionadas a integração contínua, considerando ferramentas de CI apenas como um meio de automatizar o processo de integrar código continuamente.

Confira os temas

Entrega Contínua

Um momento muito aguardado no desenvolvimento de um software é a sua entrega e atualmente em um processo moderno e eficiente a forma de organizar tais entregas vem passando por várias mudanças. O sexto pilar aborda as estratégias e boas práticas que viabilizam a entrega contínua de software, o que inclui o processo de implantação contínua do mesmo e como os pilares de negócio, arquitetura e integração contínua influenciam na periodicidade e capacidade de entregar e implantar continuamente softwares.

Confira os temas

Pessoas

O sétimo pilar e mais relevante deles, tem o foco nas pessoas. Isso porque mesmo que todas as questões técnicas sejam devidamente definidas e tratadas nos pilares anteriores, o que fará de fato um projeto ou empresa obter sucesso no desenvolvimento de um software será a empatia e engajamento das pessoas com relação ao negócio, produto e escolhas técnicas. Times onde há lacunas nesse alinhamento tendem a se distanciar de entregas conforme definições e tempo planejado. Já times onde há compreensão de todas as etapas e motivações para o desenvolvimento do software tendem a obter sucesso.

Confira os temas