Eng. de Software no Séc. XXI: Conquistas e Desafios
Resumo da Palestra Engenharia de Software no Séc. XXI: Conquistas e Desafios. Palestrante: Marco Túlio Valente, servidor da UFMG desde 2009, tendo trabalhado anteriormente na TeleMiG. Autor de um livro: “Engenharia de Software Moderna: princípio e práticas para desenvolvimento de software com produtividade”.
Marco defende que o software mudou o mundo, devido ao seu impacto em bancos, comércio, mídia, educação, moeda, conferências, entre outros. Sendo software uma atividade intensiva em capital humano, Marco conclui que os Engenheiros de Software ajudaram a mudar o mundo. Resta saber o que mudou no desenvolvimento de software nas últimas duas décadas.
Recapitulando a história dos modelos de desenvolvimento de software, Marco conta que os resultados do modelo cascata, muito comum nas décadas de 1990 e 2000 não foram nada bons: projetos atrasavam muito, eram cancelados, estouravam os orçamentos. A razão para isso, alega, é que software é muito diferente de qualquer produto físico, e, por isso, copiar princípios, técnicas, métodos e modelos de outras engenharias para aplicar na Engenharia de Software não tem como dar certo mesmo.
Reconhecido isto, foi um passo natural a mudança do modelo em cascata para o modelo ágil, no começo do século. A agilidade não foi inventada, e sim descoberta: uma cultura emergiu e foi se consolidando, sem que se possa atribuir ao nome de alguém específico. Afinal, quando um projeto em cascata estava naufragando e era preciso livrar a cara de não conseguir entregar o produto, formava-se um grupo de emergência para tentar entregar uma primeira versão incompleta. Este já era o embrião dos métodos ágeis, por ser uma forma de versões incrementais.
Hoje em dia, entre as empresas de desenvolvimento de software brasileiras, 87% usam métodos ágeis, enquanto apenas 6,5% usam cascata (pesquisa de 2020).
Agilidade define-se como a capacidade de aprender e gerar valor de modo contínuo: aprender sobre o cliente e gerar valor na forma de resolução de problemas usando software. Isso pressupõe releases frequentes, que pressupõe integração contínua, que pressupõe testes automatizados, que pressupõe arquiteturas desacopladas, que pressupõe squads (times desacoplados), e assim por diante – a arquitetura emula a organização dos times. Com uma coisa levando à outra, agilidade é mais do que os processos (XP, Scrum, Kanban) e as práticas (testes, refactoring, integração contínua) envolvidas.
Se o software mudou o mundo, e a agilidade mudou a forma de fazer o software, então a agilidade mudou o mundo. Marco Túlio acredita que agilidade é o fim da história: não haverá pós-agilidade, pois, sendo o modelo mais adequado para o mundo digital, pessoalmente acredita que não haverá uma total mudança em relação a este modelo, apenas melhorias incrementais.
Outra transformação significativa, embora menos reconhecida, na área de desenvolvimento de software foi a mudança do foco, de “projeto” para “produto”. Os projetos (feitos no MSProject mesmo) tinham duração finita, e destinavam-se a uma atividade-meio da empresa, enquanto hoje em dia software é principalmente atividade-fim, com duração infinita. O software tornou-se a alma da empresa, se confundindo com ela, é a razão de existir dela. Zoom é um software e uma empresa. Seu desenvolvimento nunca vai terminar, ao menos não enquanto a empresa existir. Assim como Zoom, são também produtos: Inter, Finbits, Hotmart, iFood, Uber, Spotify, Discord, etc.
Isso muda, do ponto de vista técnico, algumas coisas relevantes: qualidade se torna mais importante, pois só um louco não cuidaria da qualidade do produto, que é a atividade-fim; executivos de tecnologia têm assumido cargos de CEO, devido à digitalização da economia, fato que aumentou a importância do TI nas empresas; “requisitos” não faz muito sentido quando o centro da evolução do produto é o cliente, pois “99% do aprendizado acontece após o lançamento”, fazendo com que requisitos não passem de hipóteses que podem ir se validando ou não – através de técnicas/métodos extremamente importantes, como Design Thinking, Jobs to be Done, Discovery, MVPs, Testes A/B.
Marco Túlio acredita que o maior desafio existente hoje é o descasamento entre oferta e demanda de Engenheiros de Software, com demanda muito maior do que a oferta e as empresas desesperadas para contratá-los – o que contrasta totalmente com a realidade de desemprego na economia do mundo todo. Alega ser um problema global, brasileiro e complexo – não fosse complexo, já teria sido resolvido, é claro. A complexidade advém do fato de que não é simples formar Engenheiros de Software, não só pelas dificuldades inerentes ao tema, mas pela necessidade de um conjunto amplo de habilidades. Adicionalmente, não é possível agilizar a formação “pulando etapas”, pois há bases de fundamentos de programação e de computação superimportantes, há parte teórica e parte prática, há soft skills e habilidades de negócios – as empresas contratam por causa das hard skills e demitem por causa das soft skills. Como toda empresa está se tornando uma empresa de software, a Engenharia de Software cada vez mais exige conhecimentos de negócios também.
Embora não seja possível ‘formar milhares de engenheiros de software em 6 meses’ (“não há bala de prata”), o palestrante acredita que é possível ter muitas melhorias incrementais na área de educação de Engenharia de Software, pois algumas poucas coisas ainda conseguem ter um grande impacto (“o oceano mais azul que já vi na minha vida”).