Some experience, decisions and a rant
A while ago, I said that I’d rewrite this site in .Net. But that didn’t really happen. Here’s why.
- .Net forces you into Windows territory, which is very different from what I’m used to. I paid for Windows 8.1 Professional in order to use the Windows Phone emulator - only to find out that enabling Hyper-V disables support for other virtualization software like VMware, Virtualbox and the Android emulator. Hyper-V can be turned off, but that requires a reboot to take effect, and then another reboot in order to enable it again. Very annoying.
- While Visual Studio is a really good IDE, the .Net MVC 5 platform fails to get me excited.
- Even when hosted on an Intel i7 with 16Gb of ram, the site I built felt kind of slow. This might be because I missed some “required” tweaks somewhere, but at the same time - the Laravel version of the site (this version) felt snappy on the same hardware. Without tweaks.
- PHP is getting faster and better with each release - and it runs pretty much anywhere. Of course C# is superior to PHP language-wise, but that doesn’t mean that you can’t work around some of PHP’s problems and get stuff done.
Of course, there are good reasons for using .Net too.
- Integration with Windows-based systems and/or services.
- When a client already has a Windows server in place.
- When a web service requires a long running process, and options like Java, NodeJS, Go, Python, etc. doesn’t fit the requirements.
There are a lot of great .Net developers out there, and a lot of job opportunities for people who know their .Net. But there is also a lot of developers who only knows how to use web technologies through some abstraction layer, which often is Microsoft-specific (this is also the case for some Java developers, who are a little too fond of whatever framework they’re using).
Using abstractions is fine, but I want to know what’s happening on a lower level.
The same goes for programming languages; while most people will agree that you can be more productive in Python than you are in C, you’ll miss out on some important insights using pre-packaged batteries included solutions.
So, to sum this post up.
While I think that .Net is a great platform and that C# is a really great language - it’s not really my cup of tea. More and more I feel that code should be portable and run on multiple platforms without requiring any major changes. The Mono project enables us to build and run software written in .Net on other platforms, but I found Mono Develop a bit buggy under Ubuntu/Linux Mint, which is yet another reason why I don’t really want to spend time on learning .Net.
With that said; for those of you who actually like Windows - learn .Net and C#.