originally published on LinkedIn.
If you are someone like me, then you have probably asked yourself, “How do I build a mobile app?” You might have even looked for answers going to Treehouse, Lynda.com, or some other resource that specializes in feeding the mobile development community. There is a host of wonderful resources on YouTube and elsewhere, but they all fundamentally lack the important thing that ties all of the how-to tutorials together – the 10,000ft overview of Software Development.
I remember taking my first baby steps as a software developer. It was not all that long ago. I remember being frustrated with the standard approach to teaching others how to build apps. The focus is on teaching with small module-like tutorial-based lessons, which are fantastic, but then lack the direction to how to employ the knowledge just gained. Wonderful, you finally get to see how this one feature works in a mobile app, but how in the hell does an entire application work? How do you architect a mobile app like Uber or Starbucks? What is a reasonable cost to build a mobile application? Now, having developed mobile apps for the past two years, I want to give back to the community of budding mobile developers by giving you the answers to my questions when I was right where you are right now.
Question 1: What does an iOS or Android mobile app really look like under the hood?
I really wanted to understand a big picture of what a mobile app looked like under the hood. What I mean by that is, when you write the application code, does it look like 500 specially formatted text files or just one massive one? When you design the app, how do you get the buttons to animate? How do you get information to be stored on the device or get information from the internet? These were the fundamental questions that I wanted to be answered; not in the highly detailed sense, but a 10,000 ft perspective.
A mobile app, depending on the complexity of the app, will have a few files, on up to the range of about 50 – 100 files. The count drastically differs between iOS and Android applications. Developing for iOS is actually easier to manage than Android, in part due to the special software development program, or IDE, you use to build the app. Working in Swift, Apple’s open-source language and follow-on language to Objective-C is much easier in many ways than working in Java, a somewhat dated and robust programming language developed by a company called Oracle. You may have heard of them before.
With Android, your project files can get really bloated! You design your user interface using XML layout files. If you have a background in Web, then your XML layout files are a funky combination of HTML and CSS. You typically will have a layout file for portrait and a separate layout file for landscape if you want to reflow your buttons, images, and text and capitalize on the new screen dimensions. The Java files for each screen pretty much follow the conventions that will be explained below in developing for Apple. Android Studio helps out immensely with cleaning up your code and making it adhere to best practices for Object-Oriented Programming, and I cannot wait for some of those features to hit Xcode!
When you develop an iOS application, generally speaking, you have one design file that is called a Storyboard Xib file. You get to drag and drop design assets on a canvas and make connections to code. The second file is the script that you write in Swift that tells the application what to do when to do it, how to get the information it needs, and how to save the data that the user generates. If the app is a simple notes application, the number of files might be in the range of 5-10. If the app is a social app like LinkedIn’s app, then you might be in the range of 40-50 on the low-end. (I really have no idea what their code base looks like)
Question 2: How do Mobile App Developers learn how to build mobile apps?
The short answer – from anywhere we can. There are some great locations that give great information for people who have never developed before, as well as good resources to stay up to date on any given technology. What mobile developers, really any software developers, do is find examples of certain common tasks, try it out for themselves in their IDE, and then copy and paste that code in an indexable program that makes it very easy to search and find for later use. The main focus of a successful software developer is learning not to repeat yourself, whether its repeating code in your code files, or in repeating figuring out how to do something more than one time. You already did the work of figuring it out, save it for the next go around! So, find the videos on YouTube® or blog posts on various websites. Those resources are great and will get you going in the right direction, but beware of bad examples that can lead to vulnerabilities in your code that can lead to your application crashing or compromising sensitive data. Definitely, check out Treehouse and Lynda. Another great resource is SafariBooksOnline. SafariBooksOnline is one of those resources that is worth the subscription price like you wouldn’t believe. Imagine having access to virtually every major publisher’s books on STEM-related subjects for one flat price.
Question 3: How do you get a job as a Mobile App Developer?
The short answer, start building small applications. Build your personal code library that you can use to rapidly develop more complex applications, organize your small projects into a portfolio that you can show potential employers that you know a thing or two about software development, and then start applying for jobs. Do some quick searches on LinkedIn and Indeed and take a look at the software that a lot of companies are demanding. Make sure your portfolio and resume (one page please) reflects those technologies and then you should be good to go from the technical end. You might have to work on your soft skills, but that’s a different subject altogether.
Question 4: What does a Mobile Developer’s portfolio look like?
There is no one-size-fits-all standard for your portfolio. A portfolio should show a record of what you have been exposed to and back up some of the claims you make in your resume. It should also be representative of the library of code that you have acquired over the time you have developed those applications showcased in your portfolio. Essentially, your portfolio says what you have done and a glimpse of what you can do for the company of which you are attempting to become a contributing member. I am a big fan of making a portfolio appeal to those who have both a technical and non-technical background. Remember, most who are in the position of hiring you are not necessarily developers. They are in a position to hire you because you are the expert in your field. At times, seasoned developers do get pulled off of their busy assignments to comb through potential hires and conduct interviews, but this is not always the case. Make a few example videos of your application and have code samples at the ready upon request.
Question 5: What do I actually need to know to be a Mobile App Developer today?
The short answer, EVERYTHING! I know, that really doesn’t help. Today’s mobile developer is expected to know a lot about a variety of topics. In my past career, I had this same problem. I used to be a diplomatic consecutive Russian / English interpreter, so I had to maintain a high-level of knowledge on topics ranging from Geopolitics, nuclear Physics, Economics, to even ice fishing and the distillation process of vodka. As a mobile app developer, there’s really no difference in the expectations, with the exception that the topics are a little different.
Today, you must know about your target platform, iOS or Android, and if you target both iOS and Android like I do, then get your saddle ready! You will need to know both SDKs, the history of each platform, the general trends within the industry, from what good User Interface Design looks like, how to make that design work for a target audience and accomplish the goal of the user without adding additional complexity (User Experience Design), and doing it all by keeping in mind the psychological interactions in play when the user uses the application in various contextual environments (Human Centered Design). There were a lot of Design words thrown in there, and I am a mobile application developer, not a designer…right? You keep telling your self that and we will see how far you will go. But I am not a designer, I am a developer – you might say. I say to you, designers must study design just like developers have to study development. Just because one discipline comes easy doesn’t mean you should neglect the other. Learning good design will only improve your ability to code!
Question 6: Should I be an Android developer or an iOS developer?
One of the main reasons why Android gained such popularity is because Android adopted Java as its primary programming language. Java had already been the language of choice for developing a multitude of applications on a wide range of platforms, so finding developers to tackle the challenges of the Mobile App Industry was the least of problems for the Android platform. iOS, – and when I say iOS, I mean iOS, tvOS, and MacOS – is a completely different story. In the ripe days of Objective-C, developing for iOS was pretty painful. Swift was an answer to a growing problem of adopting the iOS platform under Objective-C for a robust community of developers. Android is a pretty complex platform, namely due to the fact that you must architect an application for a wide range of devices that all may or may not have the same hardware capabilities. Android Studio just recently got a great update which has made developing in Java, or Kotlin if you feel like being an early adopter, a much more enjoyable experience. The bottom line is this: you will enjoy something more if you can find your flow in that activity. If you can get into a zone while programming, then programming can become a real joy. In my experience, developing in Swift makes getting in the zone much easier, and so, making programming a much more exciting activity. Android can be down-right a pain in the but to work with. Code that worked six months ago may need some tender loving care after the update you just made. This issue is in part due to the fragmentation of the Android market, as well as the wide range of device manufacturers. Android also enjoys putting things out into the wild without actually explaining how to utilize it. Then they may make a change and then not link that change so you may have to search around in about 5 different location on the Android documentation website just to figure out how to accomplish a seemingly simple task. Welcome to the world of software development! Oh, and Apple development is not always better.
Question 7: What other non-development things should I know that important in the industry?
Well, for starters, get to know the following topics: Apple Human Interface Guidelines, Android Material Design and Human Interface Guidelines. Continually research and apply Interaction Design (IxD) principles. Know about giving proper feedback to the user in your applications so that the user has a dialog with the app and the app with the user. You also must know about the different project management modalities that exist, such as Agile, Waterfall, and a multitude of other individual topics. How about I just give you a list of topics and terms research:
Agile Methodology, Waterfall Methodology, Gantt Chart, Trello Boards, Backlog (Agile), Sprint (Agile), Discovery Document, Creative Brief, Creative Commons, Accessibility, Mobile Security best practices, Copyright law, Prototyping mobile applications, User Testing, Unit Testing, Continuous Integration, MBaaS, SaaS, Bluetooth Specification, WiFi, iBeacons, the Internet of Things, and the holy grail of them all – Git Version Control!
Question 8: What can I expect to make as a Mobile App Developer once I look for my first job?
This really depends on your location, how well you present yourself, how high-speed you are, what your resume and portfolio show, what the company’s budget is, and most importantly, what impact you can actually make on the company’s bottom-line. Let’s face it, a company is not hiring you to give a handout. A company is hiring you because that legitimately need what you have inside your head – a skill that is in high demand. In general, you can find some smaller organizations looking to get very junior developers and are willing to pay no more than $15 an hour. If you have never worked before in the tech industry, these places might be a good fit to get real-world experience under your belt. If you get a fancy degree, have a robust portfolio and resume, and can show an employer this is what I have done and this is what I can do for you, then expect a starting range of about $60-$80k as a junior developer in a medium-sized city. In a larger high-cost town, you might see starting salaries nearing $90k, but expect the competition to be pretty high. In general, add an additional $20k for middle-level developers, and an additional $20-$40k on top of that for a Senior Developer. If you are bilingual in the development world, meaning, you can competently code in both iOS and Android, then, well, it’s a bit harder to say how much exactly you are worth. Wink, wink.
Question 9: Can I really make money selling an app in the App Store or Google Play Store?
The honest answer…yes, but if you think you are just going to submit an app and walk away with millions, then you have a lot to learn about business strategy and marketing. Take an app like Flipboard. You probably have seen it in the store or have it downloaded on one of your devices. You know about it because it had some marginal success, but it got financial backing and was marketed namely due to its mining algorithm for finding relevant news articles and blog articles that would be the most relevant to your interests. Once you hit the magical 10,000 download mark in the App Store, you usually get featured. Take a look at those apps. Most of them are really polished and have a team of developers making them come to life. Can you make millions? Yes, but just know that the days of overnight success are relatively gone.
Question 10: I really don’t know what to build. How can I get some project ideas?
Do what most people do when they first learn how to play a musical instrument – mimic the greats! Get on the App or Google Play stores and find a screen that makes you wonder how they built it and reverse-engineer the screen. Unlock your phone, open up an app and find a screen or two that catches your eye and go at it! Google is your friend, by the way. You can learn a lot from Stack Overflow. Start contributing to the community of developers and you will be amazed at how much you will learn in a short period of time. Get active with local developer meetups. Go to Meetup.com and find a local Android or iOS development community to get your feet wet. Feel a bit shy? Don’t worry, most of us are introverts who hate small talk. Just lean into the discomfort. I promise you, you won’t regret it!
- Photo by Kevin on Unsplash
- Photo by Janko Ferlič on Unsplash
- Photo by Tim Gouw on Unsplash
- Photo by William Iven on Unsplash
- Photo by Element5 Digital on Unsplash
- Photo by Brendan Church on Unsplash
- Photo by Glenn Carstens-Peters on Unsplash
- Photo by Aidan Bartos on Unsplash
- Photo by Bench Accounting on Unsplash
- Photo by Chris Knight on Unsplash