I know the feeling.
Below are the few lines that come to my mind when I try to answer the same question myself.
Sometimes it’s just not possible due to the inability to accept change from the leadership of your project. Specially in a company (consultancy services) that doesn’t have control over the projects direction. In many such cases the primary object of the management is to acquire billing for the project and it’s team rather than empower and impact the product and its people.
In my past experience I found this to be true again and again. It’s just a cultural thing within the project or the company itself. But this seemed to somewhat change in product based companies, where the leadership cares about the impact a individual can bring to the product.
If this parity in interests bothers you then one must may be aim to work in a place, where the leadership is in direct control over the projects direction, and look for people who care and willing to adapt. The chances of finding such projects are higher in product companies, startups, open source projects (by choice, rather than control), and your personal side project (in that order).
One other way would be, given the situation, is to go ahead make some time on a weekend or any other day and risk a proof of concept for this project. Not any other side project but for this project.
Sometimes software is too complicated and implementing methods like Unit Testing, Integration Testing and Continuous Integration may not be straight forward, and hence the risk. Things to consider would be Code Dependencies, Library Dependencies, Tooling, Test Databases, Mocking, and Building Test Fixtures and Test Data. This may involve few days to few weeks of effort. Training the team to understand these concepts and to write them well is another challenge. Trust me it’s not easy for everyone to understand and follow if your team is new to these concepts. Sometimes it’s hard to sell the value of these approaches to people unfamiliar to these concepts without proper metrics and education.
If it were me, I would definitely recommend the enlightened developer, to create a branch, integrate necessary libraries and tools like JUnit or XUnit, depending on which ever platform the project is based on, and start whipping out regression tests to whichever bugs he fixes in a Test Driven manner.
From here on measure, improve, and repeat until you have satisfactory and scientific results. When ready “Sell” them to the leadership. This might backfire, if you have not taken a go ahead from the necessary people.
At this point since you have already exposed the risks of trying something new, may be your leadership can just go ahead and adapt. Or they may not!
Well, that’s what I would.
Often, in one’s career there are may cultures that one will come across. These cultures are different based on their core values. Example: Do they believe in doing the right thing or maximising revenue? Do they believe in long term benefits or short term? Do they believe in change? Are they ready for change? Can I sell my idea/right-thing to bring in change? How does it effect me and everybody around me?
When you answer these questions you know the answers. Now it’s only matter of being fearless and acting on them. If the culture of this company doesn’t fit you it’s definitely time to move on. There are enough companies that care about the product and it’s people. One just needs to find them. They will understand. If they can’t it may not be right cultural fit for you.
Phew! That was a long comment. :-)
Poornima Vijayashanker, have written about culture?