I’ve been spending some time thinking about what a person, or a group might need to be able to deliver an app for a phone, a tablet or a PC for people to get hold of and use. So far, I’ve identified eight general categories:
1. An idea
If you are going to produce an app, you really need to know what that App is. This might sound a bit obvious, but actually I think represents quite a shift from the more traditional world of software development – particularly for people used to the world of bespoke software development within organisations where people called “business analysts” define a problem, and the software architect or developer’s role is to produce a solution to that problem. Identifying the “problem” in the first place (or coming up with an idea that is truly innovative) is quite a different skill.
To build an app, you’re going to need to have the motivation to build that app. If you are in paid employment, building apps, then it’s your job (although whether you’re motivated or not is a whole different topic). If you have a great idea that you believe in, then realising that great idea and getting it out to people who might want it might be the motivation you need. But without the motivation to build it, an app isn’t going to happen.
Building software takes time, effort, thought and possibly access to some hardware, software and services. You need the motivation to find that time if it’s not your day job (here speaks the somewhat exhausted father of two toddlers…).
4. Programming ability
To build software, you need the ability to program. That might be something you have yourself. It might be something that you train yourself to do, or it might be something that you find in others.
5. Design ability
The world of consumer apps tends to be much less tolerant of things that look ugly than maybe has been tolerated in software development in the past. To make things look beautiful, you need the ability (or find the ability in others) to design beautiful things.
6. Business and marketing ability
If the intention of developing an app is to start to turn it into a business, then understanding the mechanics of business planning, management and marketing are going to be important at some point. Likewise if you want to build apps for other people.
7. Technical understanding of a platform
If you’re building apps, you’re going to need to know how the platforms you are building for work, and also what they are capable of. Whilst you might have general programming abilities, this is the specifics of developing for a particular product or device.
8. Tools & other knick-knacks
Software development environments (or “Word for Programmers”), accounts to be able to distribute apps on marketplaces, and other bits and bobs are also required (and subject to the device that is being developed for).