Mobile App Development
I gave a talk a few months ago to an audience comprising of mostly business people about mobile app development. Slides are here. Here’s a summary.
App Development
While mobile app development has many similarities with building other software products like web applications and websites, there are also notable differences.
You are usually working with a smaller screen. Usually a phone, but sometimes an even smaller watch screen, or a bigger tablet format.
App Store
There is a gate keeper. It is most useful to think of app stores as a brick and mortar retail store. Limited shelf space owned by someone who has power over you.
There are top selling charts. Be on those charts and you gain visibility. It’s a chicken and egg situation.
If you app is featured, you gain more exposure. While a good quality app has a higher chance of being featured, it’s still down to a bit of luck.
You have to play by the app store’s rules. Certain apps aren’t allowed and even when your app seem to fit within the rules, it is up to the reviewer’s interpretation.
Slow deployment cycles
- Web — Instant
- Android — hours
- iOS - days/weeks
You will also have to handle users running multiple versions of your app.
App store Promotions
Specifically for Apple, if your app is to be featured, you need to provide ample time for submission and approval of assets (banners). At least provide weeks of buffer.
Expensive
60 days to do the development … total development cost of $200,000 – Craig Hockenberry of IconFactory, Twitterrific
This was a quote in 2010.
- They raced to finish in 60 days due to release of iPad
- Tools have improved, but customers’ expectation are also higher now
The app
We often talk about building the app. But there’s a few components to it. They all cost money and take time, and can introduce complexity.
- Front end (the “app”)
- Backend
- Dashboards
- Web site/app
- Internal tools
Obj-C or Swift?
For Apple, Swift is definitely the way to go in the future. Unless your developer is extremely fluent with Obj-C, go with Swift.
But wait, there’s other choices, including:
These are both cross platform, but tools that build native apps. The former uses Ruby, the latter Javascript. Naturally, they are not officially supported by Apple and are incomplete and immature in different ways. But they both offer some significant benefits over Apple’s official toolchain.
iOS or Android?
Rather than rushing to build both, pick one. Figure out your feature set, marketing correctly and arrive at product/market fit. Then reach out to the other platform.
Iterative development, not waterfall
Software development using the waterfall process is still surprisingly common. Resist. Work with someone that can build your app iteratively. Waterfall might be fine if you know upfront exactly what you want. Chances are you don’t.
Finding a good developer
The million dollar question. How do you find a good developer?
Here’s a few things to look out for:
- Communication
- Get things done
- Always learning
- Waterfall or iterative?
- Automated testing
- Code review
- Regular builds/code drops
Dev shops vs Individuals
Individuals (freelancers/consultants) have a few limitations:
- Limited manpower
- Bus factor = 1
- May need to assemble your own team
But you have the potential to convert them to full-time staff
Low communication overhead
Communication is essential to software development. Of course with a dev house, you’ll work with a project manager who will/should handle that for you. But working with an individual means both you and them will need to spend less time communicating, or messing up communication.
Areas of involvement
While looking for a developer, it’s also important to look at other areas which they can help out with. Depending on experience and skill set:
- Strategy
- Product management
- Marketing
- Feature planning
- Design system/visual
- Coding
- Testing
Specialists vs. Generalists
Different developers have different skill set. Generally specialization is more useful at a later stage. You want to start with a generalist because there are several things you need to build (including the backend) and as mentioned previously, fewer people means less communication overhead.
10x developer
This isn’t a myth. Great developers write less code and fewer bug. Productivity between developers can vary a lot. There are many factors. This is important to keep in mind because this means that estimates from different developers can be very different.
Dev Shops
You get a package deal. One number to dial, one neck to choke. I am generalizing here, but for a certain type of dev shop, you get:
- Local sales & project managers
- Offshore developers
- Designers
- QA team
- More established/rigid process
- Can’t talk to developers
Portfolio
Since you can’t directly access a dev shop’s developer capability, a good way is too look at portfolio. What they have done, how well those apps are rated.
Important to realize that in the sales process, you would likely be talking to the sales and presales person. These are not the people who will be working on your app. You need to try to talk to the project manager and developers.
Where
So where do you find them? Go to a meet up. For e.g. in Singapore, there is iOS Dev Scout, a monthly meet up.
If you find an app that you like, try contacting the developer.
How to Access Them
This is harder than it may look. So you really want to find someone who you trust and who is technical. Let them interview the developer.