I have wanted to expand my skills into mobile development for a long time now. I love developing for the web and I think it's only natural for any web developer to want to take a peak in to the world of mobile app development.
Many tools exist already that I could use to build HTML5 websites and convert them into usable apps. Software such as PhoneGap, Cordova or Titanium. The problem is that I don't want to build sluggish HTML apps.
Over a year ago I spent some time learning to make Android apps using Java and Android Studio. My experience was okay. Nothing special. It wasn't all easy sailing because I have no previous experience with Java. Add that on to learning a new IDE and I feel like I'm battling with both.
I learned a lot in that time but I never really applied the knowledge. And I don't find Java enjoyable enough to push to continue.
So right now I am fortunate enough to have 11 days off from my job for our Christmas break. I have decided to dedicate an hour each day to learning RubyMotion (and an extra day because why not?!).
I already know Ruby fairly well. I am by no means a professional Ruby developer - I build websites and various scripts with it in my spare time. I use a couple of gems at work for certain tasks like SASS but that's it. Even so, I really enjoy using it and now I have an excuse to use it even more!
It's not just the language: It's the tools. To be more specific, I can use the command line to bootstrap code, run tasks, use the REPL and I can use an IDE of my choice.
I am not part of a team of iOS developers. I am not planning to maintain or build on previously made apps so there is no need to pick Swift, Obj-C or Java (for Android) over RubyMotion.
Reasons against RubyMotion
These are some common arguments I have found against RubyMotion. They are perfectly legitimate claims but I have explained my reasoning as to why they are not issues for me. If you are asking yourself the same question then you will have to weigh up if they are deal breakers for you.
I do not know enough about RubyMotion to know when or even if I will hit a wall. I do know that the apps I intend to make right now are pretty basic in functionality and being able to bootstrap code is more important to me. From what I have read there really aren't many limitations because it all compiles down to the same code anyway.
Cost is a big factor. HipByte have recently changed the pricing to three separate plans and the cheapest one suits me fine. Better support isn't something I need right now as I'm just learning the ropes. I have no time constraints to get shit done so better support just isn't necessary.
You end up learning iOS/Android API's anyway
I consider this a happy bonus. If the day comes where I find a game changing limitation and I decide to bite the bullet and switch to Java/Obj-C/Swift then I will have acquired a lot of knowledge already. Hopefully RubyMotion would have taught me enough to ease the transition.
Lack of documentation
This concerns me the most. Fortunately there are resources such as MotionInMotion screencasts and various books to help me on my way.
I do not aim to get a job as an iOS/Android developer so this is a non-issue for me. My only aim is to work on my own projects in a language I enjoy.
I have chosen to learn RubyMotion because it suits my needs. The benefit of using a language and tools that I enjoy and are already familiar with outweigh the negatives. If you're thinking of learning RubyMotion but are on the fence then I recommend reading the following articles:
- Is RubyMotion Suitable for Client Work?
- Should my company choose RubyMotion or Swift?
- Swift Will Only Benefit RubyMotion
I am currently on my 7th day learning RubyMotion and I am really enjoying it. I'm getting a lot of "Eureka!" moments the same way I do with Ruby, Vim, ElasticSearch and various other languages and tools that I enjoy. I will be writing another blog at the end with my experience in more detail.