I work for a fairly small consulting company, roughly 100 employees, and I've been with them for about a year currently. This is my first job out of college. As a company we do not specialize in any specific technology, but my day-to-day usually consists of some sort of .NET programming, whether it be ASP.NET, custom SharePoint development, etc. Our projects generally consist of adding features to, or expanding, a client's existing code-base. Rarely we will build web applications from the ground up.
Something that has been bothering me is the distinct lack of any sort of methodology or framework that helps us deliver quality solutions to clients. We do not conduct code reviews, the testing we do seems weak, technical direction seems lackluster. It seems that little effort is made to ensure the code the team commits to a project meets any sort of standard of extensibility and maintainability or adheres to any best practices for the given environment. From my experience thus far, leaving that responsibility solely up to the individual programmer yields some lackluster results especially when inexperienced members of the team are involved.
I would like to know if this is business as usual in the consulting world. If you work at a consulting firm, I would like to hear about any techniques, processes, or approaches that are used to make sure the solution your team is developing avoids becoming a mess, all the while under the restriction that you are working on a client's existing code-base that you may not have complete control of. What can I do as a junior member of the team to promote a culture of producing better software?