Don't just teach languages; teach ecosystems

Learning a new programming language is pretty easy. Using any of a number of freely available online tutorials, you can pick up a new language within a week. The only problem is that after doing so, you still don’t know jack. Sure, you now know how to write a for loop in Python, and how array slicing works. But if someone were to ask you to implement a simple REST webservice with a MySql backend running on a Windows Server environment, you wouldn’t even know where to start.

I’ve been using .NET since 2005, and I like to think I’m a decent C# developer. But my actual knowledge of the C# language has little to do with my skills as a developer. Sure, it’s a prerequisite, but it’s only a small part. The reason I’m effective at applying the C# language is due to my knowledge of the .NET ecosystem. I know Visual Studio inside and out, what the different project types are, how to configure them, how to set up my build, and how to work the debugger. I know all of the most common classes in the BCL, the most popular NuGet packages, and how and when to use them. I know my way around Entity Framework, ASP.NET MVC, WebApi, WCF, WPF, etc. And, finally, I know how to deploy my application, whether it’s a console app, a WPF gui app, a Windows Service, or IIS app. In other words: I know how to bring the various pieces of the ecosystem together, and how to use them to solve a problem. In this context, the syntax of a C# foreach loop is much less important than knowing what libraries to use to set up your new webservice.

Of course, I don’t expect a programming tutorial to teach me 10 years worth of ecosystem experience. But I’ve seen so many programming tutorials that just focus on teaching the language and stop there. This includes tutorials that claim to be aimed at experienced devs. It’s a real shame because after completing the tutorial, I still feel like I haven’t really learned anything and there’s usually no indication of where to go next. The language is only the start. It should take up no more than the first section of any decent tutorial. Teach me the ecosystem next!