[quote=utluiz]
Complexidade vs Complicado
Concordo plenamente com o Vini. Esse conceito é sentido na prática e provado na teoria. Leia o Mythical Man Month do Brooks, de 1975, ele já falava sobre a complexidade inerente do software. Há regras de negócio que são inerentemente complexas e vão resultar em código complexo.
Claro que, se pensarmos em nível de loops e condicionais, nada é realmente complicada, mas se considerarmos o nível de algoritmo, basta ver como existem algoritmos complicados. Você pode ter 50 anos de experiência em programação e conhecer todas as linguagens, mas se alguém lhe pedir para resolver o problema do Caixeiro Viajante, por exemplo, de anda adianta tudo isso. Para um problema complexo, é necessário um algoritmo complexo que, mesmo sendo implementado com um código simples, não é inteligível para a maioria dos programadores.
Porém, mesmo um código extremamente complexo pode ser quebrado em blocos mais simples. Você pode dividir uma implementação muito grande e complexa em diversas módulos, classes e métodos. Cada método por ser ser tão simples quanto um código que alguém no primeiro ano de faculdade pode escrever, porém a complexidade está na forma como os objetos se relacionam, nos padrões arquiteturais adotados e assim por diante. [/quote]
Da mesma forma, você pode ter experiência de 50 anos sobre algoritmos ensinados na faculdade, em diferentes linguagens, mas se alguém lhe pedir pra implementar uma regra de negócio (complexidade inerente) e não saber, de que lhe adianta tudo isso?
ps: Brooks diz que as regras de negócio é o essencial no software e acho que ele diria que uma regra de negócio complexa é formado por vários algoritmos simples, e não por um algoritmo que é do tamanho do problema que ele resolve. O software todo é complexo, mas o desafio é reunir algoritmos simples de maneira que fique coerente com o resultado esperado.