lets say,
from 100 developers, 5 are highly motivated by their passion for technology and self teach them what they think is the best thing to know.
the other 95 developers will be trained by those 5 developers and what they think that are the best techniques.
Best practices/techniques?:
IMO these are ways, to develop a software product, known to lead to a performant and maintainable system - and these ways come with the experience from the development of a real software system and not one from a training course.
// Latter edit:
//Short on topic answer
-> C# best practices in a corporate enviroment?
They use frameworks similar with CSLA http://www.lhotka.net/cslanet/ , or they make or use frameworks which has at the basis concepts like: Business Entities, Business Components or Business Objects.
More sepecific on C# -> nothing just go with the conventions :).
//Long boring answer:
-- My background
I worked with ASP.Net MVC 1.0 in a company with 170-200 employees and now I'm working in the same company but just on ASP.Net, we pretty much do ERPs and big web apps like that.
I self taught myself ASP.Net MVC and when I worked on ASP.Net MVC I had to do small trainings for the other memebers in my team which didn't had experience with it.
By my logic,
A selft thaught is a developer who works on frelanching projects or in a startup.
A corporate trained developer is a person who works in a corporation with 100 - 50000 employees and does java/.net in well controlled and planned corporate enviroment.
Because even if you are self thaught, in a corporation you will end up beeing trained.
//Technology
A self thaught thinks more about the technology itself, not carring about: "will this thing be easy to maintain after 3 years, is this good for an enterprise client... and so on.
The thing is that a self thaught will always teach himself the latest technology while a corporate trained developer usually is trained on the "mature technology" which is "risc free" and everybody in the corporation board thinks that this will stay here for at least 10 years...
Therefor because of that an responsible PM in a corporation will enforce their devs to use in the project an Inversion of Control Framework - one that is mature :P.
While a self thaught, because he didn't went through big projects, will be tempted to just code.
I go on the logic that a big project needs over 50 devs and that is kindoff corporationish.
Remeber if you are self thaught and work in a corporation you will get trained...
//Project and scaling thinking
A corportate developer doesn't have to think, he has to know very well the flow and the practicess that are thought in the corporation.
A corporate PM will always think about scalability and to have a smooth architecture, while
a self taught person should think like this:
http://www.aorsi.com/wb/startups_die_for_not_having_customers_so_stop_thinking_about_how_to_scale/
//A little bit of coding practicess:
Corporation:
We want to develop X and Y, good let's build a framework around the solution, maybe something like CSLA, Business Entities or worst case Business Components, we create 3-tieers and split the project on tasks.
In a corporate enviroment you want to do this because you are always thinking about maintenance, which is kindoff interesting because you will reach the sentence -> "we need developer A, B, C, to train the newcomers about the framework" - so you still have a little bit off overhead with the training...
Self thaught developer:
Dives directly into the tehnology.
//Coding practicess are the same for both self thaught and coroporate trained:
For example in ASP.Net MVC
Keep your controlles very clean and small in size.
TDD is more and more frecvent used in corporations and by self thaught devs.