The people that works with me know that I’m quite clear with certain things, for instance, for me technical excellence should not be optional, don’t get me wrong, technical excellence does not mean over-engineering things, it does not mean either the need to have all the needed technical and quality requirements in place before release to production, either 100% coverage.
Technical Excellence, in my opinion basically means being true to my integrity as a professional and not disrespecting our clients with products with low quality.
Let me elaborate better, in my experience, I have been always working on teams where the pressure of getting things done as soon as possible have always affected the quality of the software build which basically meant no respecting my integrity as a professional and not respecting our clients. I think, this has a lot do with the experience of software developers, at least it happened in my case, as I have been getting “older” is when I have realized of the need of good architecture, designs, automated testing, and many other things, at the end, if you think about it… were you ever taught for how to write tests? or you were taught on just how to produce new code.
What I want to basically say is that in my opinion, a key for success is balancing people who have experience (not always means years of working) on developing software with discipline, evolutionary architectures, great automated testing strategies, great team practices that foster knowledge exchange like pair programming, and many other things that you are not taught when you study, those are a MUST to succeed as a team, and then get those experienced people to help other fewer experiences software developers to grow, so one day also be able to teach and mentor others like them.