I'm wondering if anyone has had a situation where it's clear that you know more than everyone else on your team, including the lead and/or manager, and how you handled a situation like this?
For example, let's say you spend your free time learning ASP.NET MVC, NHibernate (or LINQ to SQL/Entity Framework/ORM of choice), Subversion (or Git) and an IoC container. You also study up on using the Repository pattern, Pipes and Filters, DDD, and have begun to dabble in WPF. Then, you interview for an developer job at "Acme Corporation". During the interview, the team lead relates the following information:
- The programmers use SourceSafe for their version control system.
- All apps are ASP.NET 2.0 WebForms, with all logic put in the code-behind, and for data access they use Typed Datasets filled via SqlDataAdapters.
- All classes are programmed to concrete implementations (as opposed to interfaces).
- No unit testing is done at all, and testing is performed by running the app and playing around with it.
- The impression you get is that neither the lead nor the team are aware of any other way to do things.
How do you handle a situation like this? Do you not take the job, because the skills you've learned on your own are "better" than the skills the team uses? What if you are in the early stages of your career and need some experience under your belt? Do you take the job and try to get the team to use better tools, at the risk of being fired? Or do you take the job and use Typed Datasets in code-behind pages and VSS, ignoring what you know are better ways of writing code?
To put it a more blunt way: How do you handle situations where you are Elvis in a sea of Morts?