The problem is getting even more pushing as I'm now working with a team of experienced developers, and sometimes my attempts at writing smart code seem foolish even to myself after time dispels the illusion of elegance.
Sua solução está aqui. Estou supondo que "experiente" neste contexto significa "mais experiente do que você". No mínimo, você claramente os respeita. Essa é uma valiosa oportunidade de aprendizado - supondo que seu ego possa suportar o sucesso. (Coisas irritantes, egos. Uma pena que nós precisamos disso.)
Você tem revisões de código com essas pessoas? Se assim for, se eles já não estiverem fazendo isso, peça-lhes explicitamente que chamem você em sua besteira. Mencione que você notou uma tendência em si mesmo de projetar demais, usar uma britadeira pneumática top de linha meticulosamente projetada (de preferência empunhada por algum tipo de andróide automatizado de trabalhador de estrada) quando um simples martelo seria mais do que suficiente .
Você pode encontrar-se freqüentemente se contorcendo em seu lugar enquanto seu rosto fica vermelho durante as revisões de código. Suportar isso. Você está aprendendo.
Então, uma vez que você tenha algumas dessas informações, preste atenção nos momentos em que suspeita que talvez esteja super projetando. Quando esses momentos chegarem, pergunte a si mesmo: "Se alguém me denunciar durante a revisão do código, posso defender minha solução como a melhor disponível? Ou há uma solução mais simples que estou abandonando?"
Às vezes, a revisão por pares é a melhor maneira de ver bem o seu próprio trabalho.