Figuring it out
November 24, 2013 11:34 AM   Subscribe

What should I learn next: Node.js or Android development?

I'm currently up to a pretty good level of knowledge in development of iOS apps on iPhone and iPad (on my 2nd job with iOS development).

I'm wondering whether as a mobile developer if I should expand into web technologies (thinking of Node.js) or into Android development.

Not sure which is a better choice.
posted by antgly to Computers & Internet (6 answers total) 8 users marked this as a favorite
It depends on what your interests are. Do you like to do front-end or back-end work? Do you want to learn a second native environment or something web-based, "agnostic", that runs behind the app? Learn Java if you want to make Android-specific apps and do UI work. Learn JavaScript and Node.js if you want to write back-end web services that integrate well with web-based front-ends.
posted by Blazecock Pileon at 12:01 PM on November 24, 2013 [1 favorite]

At a talk during Indiecade this year an ex-zynga guy now running his own large mobile company (in LA) mentioned that it is very difficult for him to find good Android developers, much more so than iOS devs. More and more apps are heading to Android and having success. So that's my vote!
posted by meta87 at 12:10 PM on November 24, 2013

Any answer to this question is going to be arbitrary unless you articulate your goals (as best as you can).

Commercial software development is a large enough field at this point that an individual developer can make a decent living now, and create a sound career in the future, in a variety of ways. There is room for breadth and/or depth across a variety of dimensions.

For example, a perfectly reasonable option is to double down on some aspect iOS development. I have a friend who's main focus right now is on performance optimization of iOS apps. He is paid well, likes the job and the people he works with, and was hired to work from the other side of the country for a large San Francisco based tech company that he has never worked for before (he hasn't even worked in the bay area before). Back in the day, this guy was a NextStep developer, with slow, deliberate digressions since into Java, Ruby, JavaScript and C++. His reentry into iOS work came relatively late. He's in his mid 40s and he has pretty much always had as much work as he wanted. Point being, while you should always be working to improve your skills as a software developer, you don't have to jump on every major trend, you can pick and choose, and sometimes even skip a cycle or two (I don't think my friend has ever done development using a Microsoft environment, or PHP, or any more Perl than absolutely necessary...).

Given your question, I'll suggest a couple of ways to look at your options:

Given that you are already an iOS developer, it would make sense that you decide to focus on being an excellent mobile developer. That focus could itself lead you in multiple directions as your next step. You might focus on improving your understanding of mobile user experience and mobile interaction design. This would certainly increase your value as a mobile developer on a significant portion of mobile development projects. You could also focus on bringing your android and/or mobile client-side HTML/JS skills up to par with your iOS skills, because that would improve your ability to basically be a one-stop-shop for client-side mobile development. In time, you might take steps forward on both fronts.

It could also make sense for you to be a "full-stack" mobile developer for iOS apps that need a back end in-the-cloud. The caveat here is that you should first understand the existing options for quickly assembling backends for mobile apps. It might be that all a project really needs is an intelligent combination of AWS service or similar. Within the range of projects that need back-end services that can't be reasonably served by cloud services, node.js is one option, but it is also worth understanding that there may be better environments for doing asynchronous, event driven programming than Node.
posted by Good Brain at 12:14 PM on November 24, 2013 [1 favorite]

node.js is awesome but also a niche. Android will open up more jobs, but node will open up a smaller number of more interesting jobs IMO.
posted by zippy at 12:46 PM on November 24, 2013

Speaking entirely agnostically of job opportunities, Node is going to open up another world for you, whereas Android is going to take you into another house much like the one you've been dwelling in, that's different, but still another house.

Once you learn Node, you'll be able to build non-blocking programs that can be web services or file transformers, or both. Server stuff, if it's a mystery to you now, won't be anymore. If you didn't know JavaScript before, now you will, and you'll be able to use that to do browser web stuff. If you didn't use blocks extensively in Objective-C, now you'll get to see the beauty (and traps) of closures.

Of course, bigger leaps require a bigger investment of your effort and time, and it may not be worth the effort if you want to get the most job opportunity bang for your buck.

I should note: Having gotten into Node this year after having done a lot of iOS development, I am incredibly biased. I've found it incredibly empowering, though.
posted by ignignokt at 1:28 PM on November 24, 2013 [1 favorite]

I would suggest thinking about where you want to be five years or so from now. What do you see yourself doing?

For the last few months I've been trying to fill some front end development positions (mobile and web) so I may be biased by that. But for what it's worth... What I have observed is that the front end/mobile crowd has a really weird dynamic going on.

On one hand you have a very small number of mature, skilled developers who work in front end who have a solid CS and programming background, who understand the release process, supportability, and can debug through to the backend part, and who have a great attitude about the realities of front end development (build it again, repeat, learn new tools and frameworks) which is itself an attitude that is quite alien to most experienced engineers. These guys generally are not busy chasing the framework flavor of the month and staying shallow as a result and they generally have real development experience but have chosen to focus on the front end because they like it despite the grindy reality. These are the guys who didn't drop out of front end after the dotcom crash flooded the market with resumes.

The mature guys are just solid engineers who happen to be inordinately blessed with patience and are not cursed with the need to "build it right" - there is no right in front end, it will always, always get rebuilt. Those guys are one in a hundred. I am desperate to find a few more of these.

Then there is this giant pool of kids and career changers who don't really know what they're doing but can cobble together a UI quickly based on the flavor of the week framework (on the web side) or the huge RAD stack leverage (IOS). They chase dubious junk and never develop depth. They don't last because the way companies use this crowd is to fill development seats and grind, grind, grind. They are generally unable to answer any programming questions that require depth.

Put short: don't decide you're a "mobile developer" - that as a specific category is subject to eventually go away, same as "flash developer" did. Decide what you want your career to look like and realize that learning the next flavor of the month framework (especially one that seems to cause damage to the area of the brain that realizes handling errors is as important as throwing together a 30 line webserver) is probably the wrong question to ask.
posted by rr at 2:12 PM on November 24, 2013 [8 favorites]

« Older How can I listen to new music inside my blackhole...   |   Need art portfolio app with extended text, for... Newer »
This thread is closed to new comments.