source: http://www.artima.com/forums/flat.jsp?forum=106&thread=243273
Eric Evans
The quality of a software team is set to the second worst programmer on the team (everyone is carefully watching the worst programmer).
Bad programmers can be far more productive in producing bad code than good programmers can be in cleaning up after them.
Programming "heroes" are people who provide business value by working in the core domain. Unfortunately, such "heroes" are often bad programmers who are smart enough to put themselves in the right place. Good programmers often have to clean up after them.
Instead of trying to rearchitect the whole system to begin providing business value in the third year (which never happens because you spend two years costing the company money while not providing any visible business value), you should situate yourself in the core domain. Create a facade to the underlying (bad) architecture and begin adding business value. Over time, you can change aspects of the underlying architecture when the benefits are clear.