Definindo (boa) engenharia de software e o papel do engenheiro (e do CTO)

I’m not a great programmer; I’m just a good programmer with great habits.
Kent Beck
Escrever código que se converte em software funcionando não é uma tarefa trivial. É necessário gente com conhecimentos muito específicos em linguagens de programação, bibliotecas, frameworks, nuvem, banco de dados e muito mais. Entretanto, é importante que se entenda que escrever código é apenas parte – bem pequena, aliás – do esforço para manter software funcionando, gerando valor, por mais tempo.
0
Considerações?x

Manter software funcionando, por mais tempo, demanda esforços de engenharia – seja para criação, modificação ou operação do software.

As leis de Lehman

As “Leis de Lehman ajudam a entender o desafio de atender a necessidade de fazer adaptações em um software ao longo do tempo, preservando a complexidade – e os custos – sob controle.

Conheça as leis de Lehman nesse episódio disponível em áudio e vídeo.

Acessar episódio

Hoje em dia, sistemas de software suportam toda e qualquer atividade relevante em qualquer organização. Quanto maior a “vida útil” de um software, maior seu valor potencial. Para que software seja útil por mais tempo, precisa ser “adaptável”, permitindo a implantação de mudanças que forem necessárias, seja por motivações técnicas ou do “negócio”.
0
Considerações?x

Toda vez que faltar capacidade para realizar uma adaptação em um software, decorrente de uma mudança de negócios ou tecnológica, corre-se o risco de destruição de valor.

O que é engenharia de software

Engenharia compreende todas as políticas, práticas e ferramentas necessárias para manter um software funcionando, em produção, pelo tempo que for necessário, em dia com eventuais modificações tecnológicas e negócios, permitindo engajamento e colaboração entre times.

Para ser efetiva, a engenharia de software deve suportar mudanças de escala, ao longo do tempo, tanto de uso quanto da organização, preservando ou melhorando a eficiência.

Software Engineering at Google

Como a Google, uma das maiores empresas de tecnologia do mundo, trata engenharia de software? Quais foram as lições aprendidas pela companhia ao longo de sua jornada? Essa é a temática desse livro fantástico.

Acessar livro

A eficiência da engenharia de software é demonstrada pela sustentação razoável dos custos em diversas dimensões (financeira, técnica, por transação ou oportunidades).

Definição: Custo de Oportunidade

O custo de oportunidade está relacionado as vantagens que deixam de ser obtidas em função de atividades que não são executadas em função daquelas que se está executando.

A pergunta-chave para identificação de custos de oportunidade é: “O que estou deixando de fazer para fazer o que estou fazendo?”

Engenharia de software e o CTO

O CTO (acrônimo para Chief Technology Officer) é o responsável, dentro de uma organização, pela eficiência da engenharia de software. Aliás, um bom título alternativo para a posição, em Português, seria “Diretor de Engenharia”.

Aliás, é atribuição desse executivo, elevar aspectos de engenharia a relevância estratégica. Não há mais espaço, frente as demandas modernas de tecnologia, para que TI seja percebida como custo, asset ou mesmo partner. Tecnologia é enabler em qualquer organização moderna – dissociável de uma atividade fim.

Como TI é percebida em sua empresa?

Interessado em entender melhor as diferenças das percepções de TI como custo, asset, partner e enabler? Acompanhe esse episódio do Tech&Biz, sobre o tema, disponível em áudio e vídeo.

Acessar episódio

A Seat at the Table: IT Leadership in the Age of Agility

Nesse livro, Mark Schwartz compartilha insights importantes para elevar tecnologia e processos de engenharia a relevância estratégica.

Acessar livro

Uma empresa que não consegue ter “tecnologia” se ajustando rapidamente tem, na tecnologia, uma importante restrição para o crescimento.
0
Considerações?x

O que faz um CTO? O que faz um CIO?

Em muitas organizações, os títulos de CIO e CTO são utilizados de maneira “desleixada” e, com frequência, são considerados intercambiáveis. Isso acontece por causa da falta de entendimento das responsabilidades, do que e quem estes executivos gerenciam.  Vamos resolver essa confusão?

Acessar episódio

Relação entre engenharia e arquitetura de software

A disciplina de engenharia de software contempla a disciplina de arquitetura. Ou seja, os esforços de arquitetura são parte do escopo de atuação da engenharia.
0
Considerações?x

Manual do Arquiteto de Software

Neste livro, disponível na íntegra on-line, formalizamos e demonstramos a disciplina de arquitetura de software, orientando sua execução.

Acessar livro

Software com boa arquitetura permite a implementação de adequações com adição mínima de complexidades. Enquanto disciplina, se conduzida de maneira apropriada, a arquitetura de software garante que decisões relevantes sejam tomadas, justificadas, comunicadas e obedecidas, garantindo que os objetivos de negócio sejam atingidos, restrições respeitadas e atributos de qualidade alcançados.

Como arquitetos de software tomam decisões

Tomar decisões sempre é um desafio quando falamos de arquitetura de software, já que problemas arquiteturais, podem surgir a qualquer momento. E você, está preparado para enfrentá-los? Listamos 4 questionamentos de extrema importância que irão te ajudar neste processo.

Acessar episódio

Métricas importantes para a engenharia de software

Não se gerencia o que não se mede, não se mede o que não se define, não se define o que não se entende, e não há sucesso no que não se gerencia.

William Deming

A engenharia de software será tão eficiente quanto for capaz de permitir que software seja adaptado para atender mudanças tecnológicas e de negócios, durante o ciclo de vida de uma solução.

Accelerate: The Science of Lean Software and DevOps

Neste livro são apresentadas e formalizadas as quatro métricas indicadas aqui apontando o relacionamento delas com o sucesso da área de engenharia e, por consequência, para a organização.

Acessar livro

As métricas geralmente associadas a eficiência da engenharia de software são:

  1. Delivery lead-time, ou seja, o tempo entre a implementação de uma adaptação ser realizada por um desenvolvedor e o deploy. Isso inclui tempos, por exemplo, relacionados com processos de build, integração, testes e, obviamente, deploy. Quanto menor for o delivery lead-time apurado, melhor.
  2. Frequência de deploys, que impacta diretamente no tamanho do batch, ou seja, na quantidade de adaptações presentes em cada deploy. Idealmente, quanto menor o tamanho do batch, logo, maior a frequência de deploys melhor.
  3. MTTR, ou tempo médio que para que sistemas em condição defeituosa sejam restaurados. Quanto menos tempo, melhor.
  4. Taxa de defeitos, indicando o percentual de modificações em ambiente produtivo – seja para atualização de sistema ou alteração de configurações de infraestrutura – que falham.

As duas primeiras métricas tem relação direta com a performance da engenharia, as duas últimas indicam a estabilidade dos sistemas de software produzidos.

Conseguir obter os dados necessários para determinação das “quatro métricas” é fundamental para melhoria dos processos de engenharia.

De muitas formas, a excelência nos resultados relacionados com as quatro métricas aqui recomendadas indicam times com prontidão para atender as demandas do negócio e responder adequadamente as mudanças tecnológicas.

A eterna discussão sobre “prazos”, nas organizações, que gera tantos conflitos entre times de negócios e de engenharia, deveria ser substituída por “prioridades” (determinada pelo “negócio”) e “throughput” (garantido pelos times de engenharia).

Topologia dos times de engenharia

Desenvolver software é atividade humana e coletiva. Logo, a topologia dos times é fundamento para a aplicação da boa engenharia.

Team Topologies: Organizing Business and Technology Teams for Fast Flow

Neste livro ficam estabelecidas as relações entre as organizações dos times em uma organização e a performance alcançada.

Acessar livro

As implicações da lei de Conway são determinantes para o estabelecimento de uma organização de engenharia de alta-performance.

As lei de Conway

A “lei de Conway” indica que as estruturas dos sistemas de software são “espelhos” das estruturas das organizações que os desenvolvem.

Conheça a lei de Conway nesse episódio disponível em áudio e vídeo.

Acessar episódio

Times mais eficientes e sistemas de software mais adaptáveis tendem a ser aqueles com particionamento baseado nas demandas no negócio e não por especialidade técnica.
0
Considerações?x

O papel do engenheiro de software

O engenheiro de software é todo profissional que aplica as políticas, práticas e adota as ferramentas determinadas pela engenharia para o desenvolvimento de software. O papel inclui analisar e modificar software existente, bem como projetar, implementar e testar sistemas de forma a atender as necessidades do negócio.

Assumindo que especialistas são pessoas que sabem cada vez mais sobre cada vez menos, é natural que profissionais de engenharia se especializem em áreas específicas, incluindo codificação, banco de dados, nuvem, sistemas e plataformas operacionais.
0
Considerações?x

Para pensar…

Sendo as práticas de engenharia cada vez mais relevantes para o sucesso das organizações, é natural que elas sejam conduzidas de forma cada vez mais estruturada e suportada por métodos e metodologias.

O grande desafio da moderno é trazer capabilities de engenharia para empresas que não tem desenvolvimento de software como atividade fim. É fato que tais capabilities demandam das empresas procedimentos e competências que podem se afastar e muito do que é demandado pelo restante da organização.

A busca da excelência em engenharia de software é, antes de tudo, um desafio de transformação cultural.

Compartilhe este capítulo:

Compartilhe:

Comentários

Participe da construção deste capítulo deixando seu comentário:

Inscrever-se
Notify of
guest
0 Comentários
Feedbacks interativos
Ver todos os comentários

Fundador e CEO da EximiaCo, atua como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Consultoria e Assessoria em

Engenharia de Software

Adoção de práticas, políticas e ferramentas para o desenvolvimento de software.

ElemarJúnior

Fundador e CEO da EximiaCo, atua como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Podcast

Arquitetura de Software Online

55 51 9 9942 0609  |  me@elemarjr.com

+55 51 99942-0609 |  contato@eximia.co

+55 51 99942-0609  contato@eximia.co

0
Quero saber a sua opinião, deixe seu comentáriox
()
x