Ao longo de 15 anos na área do desenvolvimento de software, sobretudo no mundo das telcos, eis o cenário que pinto sobre o estado de arte nacional.
- Não se faz 100% desenvolvimento: ao longo do tempo acabam por se fazer coisas tão díspares como administração de sistemas, coaching, entrevistas, gestão de projectos, burocracia e, sobretudo, pré-venda. Varia com cada um, mas há sempre desvios. Razões para isto?
- não existe mercado em Portugal para manter uma função exclusiva de desenvolvimento;
- o desenvolvimento feito em Portugal tipicamente é básico, logo pode ser feito por juniores, logo…
- não há carreira técnica;
- não há investimento em inovação, quanto mais em pesquisa;
- a inovação existente resulta da utilização ou colocação em prática de novos softwares ou práticas vindas de fora, e.g. inovação por compra de novos produtos ou upgrade de versões.
A estratégia de TI empresarial está sujeita aos fornecedores tecnológicos.
O desenvolvimento nacional é pouco ambicioso e simples: a maior parte dos projectos desenvolvidos de raiz são uma implementação básica – ainda que por vezes massiva e/ou complicada – de um modelo source-process-dump. E.g. boa parte das aplicações web.
As necessidades de software mais exigente, do ponto de vista de complexidade, são normalmente supridas por soluções 3rd party.
- Os projectos atrasam-se ou correm mal raramente por questões técnicas – já que são simples q.b. – mas por:
- requisitos mal especificados inicialmente e alterados de forma inconsistente – continuando mal especificados – ao longo do projecto;
- problemas de integração com outros sistemas;
- indisponibilidade de ambientes e dados.
A tecnologia escolhida tem pouco impacto no projecto e é irrelevante para a organização: mesmo que outras linguagens e plataformas melhorassem 10x a produtividade no desenvolvimento e deploy, esse tempo seria diluído nas ineficiências gerais do projecto.
A falta de qualidade do código é suprida via testes, ou seja, prática de code-and-fix.
- Os programadores juniores apresentam lacunas, que são impeditivas de realizar software bem construído embora suficientes para realizar os nossos projectos básicos (ainda que sem uma boa construção), em:
- estruturação;
- abstracção;
- automatização;
- scripting e prototipagem.
As práticas de código mais comuns baseiam-se em excesso de programação imperativa mal estruturada com abuso de copy paste. Há evidência baseada em estudos que estes factores não melhoram com a experiência.
Sem comentários:
Enviar um comentário