À medida que me tornei um desenvolvedor melhor, descobri que grande parte da minha habilidade de design vem mais da intuição do que da análise mecânica. Isso é ótimo. Isso permite que eu leia o código e sinta-o mais rápido. Isso me permite traduzir projetos entre idiomas e abstrações com muito mais facilidade. E isso me permite fazer as coisas mais rapidamente.
A desvantagem é que acho mais difícil explicar aos colegas de equipe (e pior, à gerência) por que um design específico é vantajoso; especialmente colegas de equipe que estão atrasados nas melhores práticas. "Este design é mais testável!" ou "Você deve favorecer a composição sobre a herança". passam por cima de suas cabeças e me levam até a toca do coelho tentando localizar todos na última década dos avanços da engenharia de software.
É claro que vou melhorar com a prática, mas nesse meio tempo isso envolve muito tempo desperdiçado e / ou design inadequado (que levará ao desperdício de tempo corrigindo-o posteriormente). Como explicar melhor por que um determinado design é superior quando os benefícios não são completamente óbvios para o público?