I started to learn programming while in college, started with Java the first year, then it was pretty much C# from there (I would use Objective-C whenever I could, the last 2 semesters I didn’t even use C#).
Being a Mac user, using Apple tools seemed very compelling and inspired me way more, so as I started to use them I quickly became in love with Objective-C and Xcode.
Having said that, I’ve always felt a huge void in my skills as a developer not knowing in depth a server-side set of tools.
So every now and then I attempt to learn one of the many tools out there, here’s my take on the ones I’ve used.
Node.js (JavaScript)
This has been by far the easiest for me to adopt. I found it pretty easy to learn mainly because of it’s very bare bones, and NPM (their package/module manager) felt overall better than gem (for Ruby) or NuGet (for C#).
I even used Node.js (in combination with Express) for a college project, so I got to know it quite enough.
What has kept me from fully embracing it?
- It’s JavaScript (yet it’s a guilty pleasure of mine, although I don’t fully understand it’s prototypical inheritance).
- There is no clear ORM winner, you’re best bet to work with a databases (other than MongoDB) is to use SQL.
Ruby on Rails and Sinatra (Ruby)
The Ruby language seems very appealing to me, it’s minimalism gets my attention a lot.
I’ve tried countless times to get on board with Ruby on Rails. I just can’t. Setting everything up takes so long and often frustrating. Maybe it’s just me, but I feel like it generates too much stuff that I don’t even need, and getting it to do what you want to do seems like a battle not worth fighting.
Sinatra on the other hand seems way more compelling to me, it’s bare bones like Node.js. Maybe I should play with it more, but what keeps me away from Sinatra is that it’s not as popular as Ruby on Rails or Node.js, so finding answers to my problems could potentially take longer.
ASP.NET/WCF (C#)
I don’t know why, but I used to hate C# in school. Nowadays I’ve come to see that it’s a powerful language (judging by articles and videos I see).
I also hated VisualStudio. It feels like your typical super bloated software, with so many icons all over the place and very slow startup time. But nowadays my view on it has been balanced because of it’s claimed stability/robustness and excellent debugging tools.
I don’t know if I’m spoiled by Xcode, but I’ve found that I truly miss using an IDE when I start developing using a text editor and the terminal. And actually not only IDEs, GUIs in general (I use SourceTree to deal with Git, Versions to deal with SVN, Base to deal with SQLite, etc.). But I’m also picky about this, if it’s not a native app, I’ll think at least twice before using it, I can’t stand Eclipse for example.
So you would think then that C# should be the way to go, but… I need to run Windows, I don’t even want to get started on that topic (yes, I hate Windows).
Conclusions
I did omit PHP and Java (barely used them), due to the simple fact that I hate them and pretty much everyone can agree that they are horrible languages. I also omitted GNUstep, seems like it’s a big hassle and doesn’t offer 100% of what Cocoa has to offer.
In theory for me to adopt a set of server-side development tools in a blink of an eye would be having all these:
- Native Mac IDE.
- Easy deployment to Linux servers.
- Good ORM.
- Good Object-oriented, imperative, class-based inheritance language.
Yes, those are huge requirements, maybe someday.