I have recently found myself needing to learn new languages, namely Python and then Android (Java). I wasn’t expecting to need to learn them, but after learning Objective-C for Cocoa Touch and Cocoa, knowing AS3, HTML5 – JavaScript, PHP, etc. The learning curves haven’t proven to be too steep.
A few years ago when Flash much was more prevalent and perhaps relevant, I started to see the writing on the wall. Some of those in the Flash community started to branch out and put some more tools into their development capabilities box. I was one of them. Others seemed to want to fight what was slowly happening – and I certainly hope that they have branched out and learned more programming languages. If they haven’t, I hope that they are maintaining a solid career. No one wants to see bad things happen to anyone.
Python
Python was fairly straightforward picking up. There is tons of example code and libraries to do just about anything. Python isn’t a very fast language, but wrapping C code certainly bridges the gap. Most of my Python has been confined to the Terminal. Very easy. Installing libraries is extremely easy and quick too. Indention at first gave me problems, mainly in how the code looks. I thought it looked messy, and sometimes I still do. Sublime Text 2 solved a lot of issues for me – it’s a great IDE, especially for Python in my opinion. I picked it up in a few days with the help of a Python freak at work and coded in Python for a month or two.
Android
Then I had to pull in the clutch and pick up Android/Java. I tried it a few years ago and I used Eclipse. It took me a whole day to get my Android device to be seen by Eclipse and allow me to build to it. I was confused by Activities and all that. I put it down. I recently went back to it out of necessity. Since I had all these other languages under my belt, learning Java wasn’t too daunting. But I really don’t like it. I am using Android Studio which seems to make some things easier, but it’s no Xcode. Xcode has a lot of hidden and stashed-away settings that one doesn’t normally need to be concerned with. The same with Android Studio, but they seem even harder to find.
There were a lot of external things I had to set up just to get the IDE to work right – without a wizard to help in the process. I had to update my Java and a few other things. When I got errors, I didn’t know which knobs to turn or switches to flip. It’s still like this, but I do have the IDE talking to my Android development phone (Google has made this a lot easier through settings). I know have oodles of gradle files to deal with, but that’s okay. Adding libraries is fairly straight forward after you know how to do it. One needs to import EVERYTHING – and the IDE helps with this, especially when pasting code into a Class that doesn’t have the required import statements – the IDE offers to generate those statements. It’s just a slower language to code for in my opinion. The layouts being XML-based with lots of tags is a bit of a hassle in my opinion. Storyboards are XML-based too, but they just work so much better in my opinion. Cleaner. Apple has taken a lot of steps to streamline the process, offers to fix settings when they need changed, ListView (like UITableView) seem clunky – especially when you want a custom layout. Perhaps it’s really Java I find myself wrangling with, but when I get something to work for Android I feel like throwing a small party. With Objective-C/iOS I feel like I am getting work done & it’s on to the next thing.
Granted, my Android development has only spanned about two weeks of perhaps half-day attention. That might impact my feelings for it – but while I used to speak evil of Android development, I’ve learned to think it’s okay. But it’s not iOS/OS X development by a long shot.