Welcome to Ask Away where I answer some of the questions sent to me or found on the web. Today’s question comes from a Reddit thread that I answered recently about mobile development:

problemod: If a student or non-degree beginner takes a year and a half or so (or however long it takes to learn to build an app from scratch) to create a quality native app, will the skills be transferable if he/she wanted to work in web development (filling in holes in knowledge like HTML/CSS/JAVASCRIPT etc…)?

This questions stems from my concern of being “pigeon holed” into a certain niche. As a beginner I learned most of the basics of programming with Python and now moved onto java to make something I can see and use to keep me motivated. Just worried that if I focus so much on mobile, after graduating, employers would pass on me for non mobile jobs. May be a stupid question, but thanks if anyone could clarify.

Me: If you build a mobile app in something like PhoneGap, you’re essentially doing full stack web development. You could easily point to this and say that you’ve done web development AND mobile development once you’re done with it. It will require learning a back-end language as well as the front-end stack (HTML, CSS, Javascript) but will give you a lot of experience in two areas at once.

problemod: I’m actually learning java to do a native android app, but am i correct in assuming I also need to learn back-end for that as well ? I remember reading that a popular quiz game was developed with a Python and Flask back end (I started learning with Python so this would be great). I am not really interested in learning HTML, CSS, or Javascript as of now. I DO however want to learn mobile + back end.

Me: If you’re doing native apps and need a back-end, you won’t need to learn HTML, CSS or Javascript at all.

Some reasons you would need a back-end for a mobile app:

  1. It’s social. If you’re going to be about to add friends and communicate with them in some way, there needs to be a central place where the app exchanges those messages. This will be a back-end application that sits on a web server that your mobile app will connect to. An app like Words with Friends doesn’t really have a website, but it does have a back-end system that the mobile apps connect to in order to pass moves from one player to the other players in the game. Mobile apps (99.99% of the time) don’t connect directly to each other, but instead talk through a back-end system.
  2. It’s an app for a website. Something like the Runkeeper app or the Basecamp app are an interface to an already existing web application. This would need a back-end (typically a part of the existing website) to communicate with.
  3. It needs back-end information to work. Here, I’m thinking of an app like a weather app or an RSS feed reader. These application don’t typically have their own back-end, but use a back-end provided by someone else (like the Weather Underground’s API). These kinds of apps are probably going to be the easiest for you to get started with since you can use an already built back-end and see how to use an API from your app without having to learn yet another language at this stage.

I would also add that you shouldn’t be afraid of being “pigeon holed” at all when starting out. In this business, you’ll only be pigeon holed if you want to be pigeon holed. I’ve done web development, mobile development, and Java application development in my career because I kept learning and applying new things. You’ll only be stuck on one role if you decide to be.

Do you have a question you want answered? Send me a message and you might be featured on Ask Away Friday.