Let’s put this in perspective, programming is not my main job and I don’t care how much I could earn as a programmer; with that in context, my decision has nothing to do with market forces, c# developers telling people vb.net is not a proper language, or  performance.

My Background: I started writing software using BASIC, Pascal, COBOL, Mumps, mnemonic code, and several others. I eventually settled on BASIC as the readability was important to me and Microsoft actively kept the language alive (and free). I’ve been programming for 25+ years as part of my job, but I could get someone else to do it for me.

What I do: I write applications for the Windows Store in my spare time, but recently I realised that all my home devices were Apple, I even have a Mac, but I still program for Windows as it’s where I’m comfortable. I’ve programmed against .Net since it came out, I switched from vb to vb.net and loved it (still do), but my hobby, photography, is more and more Mac focused.

Why Switch: I decided I wanted to write a Mac application to help with my photography.

The Torment: Deciding on a new language was not an easy or a short process (It’s taken me a year). If I could I’d use vb.net on the Mac, but it’s not an option. I spent many ‘moments’ switching to Swift in my head, trying it, giving up, trying again, using XCode designer, giving up. It felt like too much work to understand how it all fits together. I have better things to do that re-learn everything from scratch.

Swift: Certainly a great language, and XCode isn’t that bad, but compared to Visual Studio, it’s like going back 5 years. My main issues were the XCode designer, once you’ve used XAML for a while, it’s hard to go back to an antiquated design model. The second issue was the framework and the whole ‘how do I do this’. Learning a new development environment, language, designer, and framework was something I played with for a while but eventually decided it was too much for my time.

Xamarin: Ah yes, the cross platform capability in Visual Studio means I can use XAML, the .Net framework, and vb.net (No to vb.net (sad face)). XAML for Mac is a pain in the butt (until XAML standard – Q1 2018) , vb.net isn’t available, Microsoft focuses on c#, and you still have to delve into the MacOS framework. So, I gave up (I keep going round in circles on this).

Eureka Moment: Moving to the Mac wasn’t going to be easy, as I’ve said, I don’t do this for a living, I just want to build an app, not re-learn everything. And then it dawned on me, take it in steps. I’d need to know a lot (language, design, framework, and how it all fits together) so take each step in a timescale and with a purpose. This handily came from Microsoft and went like this – If I learn Swift (native code, xcode, framework) I’ll be using two languages side-by-side (as I still update my Windows Store apps), so learn one; one I can use on both platforms, so that’s C# (sounds obvious? but I could be a swift developer, nice and new and shinny). Once I know C# and Microsoft bring out XAML standard I can switch to MacOS and be fluent in the language, .net framework, and XAML, leaving only the MacOS framework to learn – that sounds good to me. I have 4 months to learn C#

Learning C#: Really easy, I did that in a day. Muscle memory is the hardest to overcome and I’m not saying I don’t keep having to look stuff up, I do, a lot, but it’s becoming more and more natural (there’s lot’s I don’t like, but I’m used to PrettyListing in vb.net). Knowing the .Net Framework and Visual Studio made it just a language and styling conversion. To make sure I get into all aspects of C# I’m converting my main library (5 years of vb.net code) which is a lot of work, but using .net standard 2.0 means all this work can be re-used when I move to the Mac.

Final Thought: Convert from vb.net to c# if you have a reason. I love vb.net and if it was available for Xamarin/MacOS I’d never move to c#. It’s just as powerful and performant as c#, in fact I’d say that I’ve found c# to be just as powerful and performant as vb.net. My reason was in preparation for MacOS development, that’s it, no other reason.

I hope that helps other developers.