.NET Core – good time to switch?

Via a PluralSight course from Scott Hanselman, I heard he read Rob Ashton’s blog to stay up to date on technology back then. So I checked it out and via a post from Rob Ashton I then ended up on a post from Byte Rot titled: After all, it might not matter – A commentary on the status of .NET (if you are short on time, start reading from “After the big promise of web 1.0…”)

I have been getting a similar feeling lately, this is my take on the subject.

Sorry I’m late

When there was a (re)new(ed) hype around MVC, there was no answer from .NET. Interested to try this approach anyway, I played with django. Being inexperienced at programming and coming from the Windows world, it felt very alien to me and I didn’t get comfortable with it so I stuck with ASP .NET Web Forms until ASP.NET MVC was released.

When ORM’s were becoming the norm, LINQ to SQL and Entity Framework were not ready for prime time yet. Being inexperienced at programming and working in what felt like an app store curated by Microsoft where we only used what came in the box, betting on NHibernate which was available looked too risky. Remember, this was before nuget, there really wasn’t this culture of just including third party libraries, unless you absolutely had to (e.g. an OCR library). So I just came late to the ORM game.

Sorry I missed you

When we needed a sturdy caching solution, redis seemed like a perfect match. But running .NET, all our machines ran Windows so adding a Linux machine to host redis might be a small step for a proof of concept, but it was a giant leap for our existing skillset to operate in a production environment. So we tried to help ourselves out with Windows Server AppFabric’s Caching features instead.

Being stuck on IaaS environments, docker seemed like it could bring some opportunity to get more agility in firing up and tearing down applications. But since it doesn’t run on Windows yet and will only be supported from Windows Server 2016 as it looks, this won’t soon be an option for many existing systems. So I left containers for what they are at the moment.

Sorry my mistake

Silverlight promised a platform for rich Internet applications, which answered a lot your doubts whether to go desktop or web. We know how that ended.

Windows Phone promised a vibrant Marketplace, then Store for apps. There’s more life in an suburban dead end street on a Monday night.

And like Hanselman joked, Azure lost the cloud race to a book store 🙂

Fork in the learning curve

So technology seemed to be constantly evolving and improving while .NET played catch up. Maybe a bit hyperbolic and I’m not saying this is a bad thing by definition, because it depends what it wants to be, a reliable solution or a cutting edge playground or both.

But with .NET Core opening to the outside world and connecting with Linux and Mac, I felt like I finally could also be early to the party for a change.

But, for understandable reasons, I can’t transparently migrate from .NET 4.6 to .NET Core. Both technically and skillswise, there is an investment to be made. Sure you can run .NET Core on Linux, but you’ll obviously have to find your way around that OS then. Just following the simple getting started steps for Ubuntu, show I need to learn more about some core concepts before I can transfer this to a production environment in a reliable way.

So .NET Core’s opportunity, mostly feels like a fork in the road for me.
As a Windows developer, even trying out an early (ASP.NET 5) ASP.NET Core on Windows felt like playing with Nodes.js and Bash with its project.json and command line tools.
So If I’m going to learn some fundamental new things that can run on Linux, why not put that energy towards the things that are already out and stable on Linux/Mac. I can use my existing .NET skills for Windows platforms, and grow my skillset to other platforms.

Microsoft has been welcoming Linux anyway (Linux VM’s on Azure, SQL Server on Linux, Bash on Ubuntu on Windows). I guess trying to run .NET on Linux while loosing some existing tooling and libraries, feels stubborn, embracing what’s there feels more natural.

So that’s where I’m at, I uninstalled Windows 10 and installed Ubuntu on my home machine a couple of weeks ago. Setting it up and using it for pet projects, gives ample opportunity to learn more about finding my way around Linux. We’ll see where this goes, but becoming platform-ambidextrous in the long term would be a great plus.

Theme music for this blog post

.NET Core – good time to switch?

Staying up to date

Staying  up to date as a software developer on what’s current in the software industry, is a requirement if you don’t want to become obsolete together with the technology stack you’re working  on.

By staying up to date, I just mean being aware of what relevant technologies and techniques are out there. I don’t mean mastering or even playing with them, that’s the next step.

However, with spare time being scarce and a a constant barrage of new technology hypes and trends, this can be either impossible or a serious energy drain that is no fun.

Through the years I have had different ways of managing this. A big one was listening to podcasts during commutes (.NET Rocks!, Software Engineering Radio), which completely leaves you spare time untouched.

But with podcasts not being a good option for me anymore, I switched to subscribing to good news letters with my work email, instead of my personal email.

This integrates the time spent on staying up to date in your work day. The key is the quality of the news letters, which ensures the time spent is well justified.

Because unless you are hired just to warm a seat, staying current is part of your job as a technologist.

I currently subscribe to these by email or RSS:

  • Thoughtworks’ Technology Radar – https://www.thoughtworks.com/radar
    • Low frequency updates on trends in the industry, about every couple of months
  • InfoQ – http://www.infoq.com/
    • Weekly updates on developments in the industry
  • Scott Hanselman – http://www.hanselman.com/blog/
    • Some posts might be personal or not relevant to you, but whenever there are big developments in the .NET ecosystem, his take on them will improve your understanding of what’s happening or where things are going
  • DotNetCurry Magazine – http://www.dotnetcurry.com/magazine/
    • Bimonthly magazine, gives me a chance to read up on .NET related things I didn’t give a chance yet
  • MSDN Magazine – https://msdn.microsoft.com/magazine
    • Ofcourse this is all about promoting Microsoft technologies, but skimming through the magazine is enough to ensure you haven’t completely missed any major developments in the Microsoft stack
  • Pluralsight – https://www.pluralsight.com/
    • Courses take time to make, so ofcourse this lags behind, but it gives you a chance to dig a bit deeper into topics, which is sometimes necessary to see or be convinced of something’s value
    • Depending on my task, I can put this videos on in the background on a second screen, while working
  • Lobsters – https://lobste.rs/
    • It’s not as overwhelming like Hacker News, it only takes a couple of minutes to skim through the home page for interesting pieces, ideal to end your lunch break
    • This allows you to get the best of other blogs and sites out there, which might not be worth subscribing to

Theme music for this blog post

Staying up to date