A magic dwells in each beginning
Hermann Hesse, Steps
I’m a C# developer. I’m doing nothing but C# (except for some JavaScript/jQuery – you just can’t do web programming without it). On the one hand because it is simply the best, most modern, and most powerful programming language that exists these days, on the other hand because it is challenging enough to focus on one single thing at a time if you want to do it right.
Until some months ago, I never thought about taking a closer look at mobile programming. Learning Java, a language that is essentially outdated? Or Objective C, when I gave up C++ more than ten years ago because I considered C# a far better alternative? And not to mention the maintenance and organizational nightmare that comes with today’s mobile development.
Unacceptable, I would not even do that in my wildest dreams.
But then I stumbled upon the Xamarin platform which opens up mobile development for C# developers, and at the same time enables true cross-platform development: Sharing a large part of the code between the apps while preserving each platform’s individual capabilities. Xamarin wiped away all of my caveats at one blow, and so I was very curious to give it a try.
Initially, I was playing around with it for some weeks to see what I could do with it. But soon – almost immediately – I got seriously infected. So I bought myself a Mac Mini and began to dive into Xamarin programming more systematically, with the clear intent of incorporating it into my professional skill set.
There were various reasons that led me to that decision. Here are some of them…
Freelancer Market and Software Industry
Let me begin with some general considerations about the market situation here in Germany, likely developments, and some thoughts about what consequences these developments might possibly have.
The Mobile Market is Exploding
First of all, let’s simply look at the bare figures: While the number of mobile computers grows at a very impressive rate, the corresponding numbers for desktop computers have reached their top and will stagnate at best, most probably they will even slightly decrease. It was in 2014 when mobile devices outnumbered desktop and laptop computers for the first time.
Technically, this is because today’s smartphones have more computing power than they had to fly to the moon back in the sixties.
From a more conceptual viewpoint, this is partly because smartphones/tablets kept the promise that PDAs once made: Everyone has one, and you cannot manage 21st century’s everyday life without one. They’re handheld computers, equipped with all kinds of sensors (cameras, accelerometers, NFC chips, etc.) and communication resources (Phone, SMS, WiFi, Bluetooth, …). – The fact that you are able to make telephone calls with them is only a marginal aspect.
This is the overall situation, and Xamarin (especially Xamarin.Forms with its rapidly evolving ecosystem) has a high potential to become a real game changer in the mobile programming world.
So it generally is a good idea to jump on the mobile bandwagon just now.
A Xamarin License is Probably the Best Investment that you can Find These Days
While the expenses for Xamarin licenses look very high at first sight, they are a no-brainer at second.
The Xamarin Pro licenses ([1]) cost $1599 (you get a 20 % discount if you’re new to Xamarin or if you’re an MSDN subscriber). This translates to about €1480, considering the – currently disastrous – €/$ exchange rate. Now, given that a mobile developer can take rates that are at the very least €5 higher than those of an ‘ordinary’ C# developer, these license costs have a payback period of 296 working hours or 7.5 weeks.
7.5 weeks? Not really that frightening, huh? And this is only a very conservative calculation…
My Personal Career (or: the Things that I Love to Do)…
The above are some ‘objective’ arguments for why it might generally be a good idea to go into mobile development. But there are also some reasons that are closer to how I’m personally approaching my programming job and to what keeps me going at the very heart.
The Software World is Fundamentally Changing, and I Want to Take Part in this
Mobile is not only another hype, nor is it only a new UI paradigm, or another new technology to learn. At the very ground, it’s a cultural change which affects not only the way that people interact with computers but also the way that people do things, how they perceive the world around them, and how their thought processes are structured.
Apart from any pragmatic considerations, this is one of the most significant and exciting trends of our time. And I find it really gratifying to be a part of it – however small that part might be ;-)…
Less Routine, More Fun
I love programming. And therefore, most of the time I love my job (Regrettably, it’s not only programming all the way through. Sigh ;-)…).
However, I was feeling slightly unsatisfied for some time now. Something was missing. I was busy maintaining my skill set, but there was no excitement at all any more, and I was no longer learning something completely new. So the only reason to work was to make enough money to pay my bills. This surely is a strong reason in itself. But in the long run it’s not enough to make me get up in the morning.
When I was diving into Xamarin, I regained some of the excitement that I had in the beginning of my programming career. Mobile programming with Xamarin simply is fun to me: The UI concepts and usage patterns are totally different and new compared to the desktop world, and the programming itself is much more component-oriented and much clearer divided into smaller chunks. All things that I like very much in programming.
In the best moments, I’m totally absorbed. Just like a little child sometimes is when playing with his favourite toy…
… and how this (Hopefully) Fits into the Rest of my Life
Last but surely not least I feel I should shortly mention some thoughts that are quite personal. You might not expect to read about such stuff in a programming blog. However, these thoughts are fairly substantial for me, and this post just wouldn’t be complete without them. So here they are…
Rotting Nerves
I’m suffering from Cerebellar Ataxia (a genetic and progressive neurological disease that affects balance and coordination) for some years now, and I’m well aware of the fact that things – especially those revolving around mobility – will become more difficult over time. Consequently, I prefer contracts that allow me to do large parts of the work from Home Office.
Also, I have to think ahead of the time when I will be bound to a wheelchair. Just being an ‘ordinary’ .Net programmer will probably no longer be enough then ([2]). In any case it will be very helpful to have a broader variety of skills to offer.
Time for a Change Anyway
The last point is somewhat related to the previous one. I’m currently in the process of rethinking large aspects of my personal life (at least I try, it doesn’t always work out…). This is why I was in the mood for changing things anyway. As a consequence, I tried to bring back my professional activities closer to my heart…
So these are some of the reasons that made me dive into the Xamarin platform. While, when reading this post, these reasons may seem pretty straightforward and clear-cut, things were much more chaotic in reality, and some of the above considerations took months to mature.
But what really counts in the end is the fact that I simply was excited of now being able to bring my C# programming and architectural skills over to the world of mobile programming. It brought back some of the childlike fascination that I felt when I experienced for the first time that a machine was at my will only because I wrote some lines of text…
Ironically enough: While I’m writing these lines, I’m in negotiations about a (long-term) contract for C# development with WinForms – the oldest UI technology that’s available on the .NET platform. This sounds totally crazy and it seems to contradict everything that I’ve written above. But I’m very okay with it (mostly because the customer is very close to my home and the technical domain is interesting, sophisticated, and on the edge). I’m not in a hurry to become a rock star developer in mobile programming anyway, as long as I can keep up with current technical trends and developments around mobile and especially Xamarin. Essentially, this just means that next year I should probably work for 15 weeks in the mobile area ;-)…
P.P.S.
I took the job…