The world of mobile apps is an ever growing world of possibilities. WIth new features and functionality being added to the mix all the time, the possi...
The world of mobile apps is an ever growing world of possibilities. WIth new features and functionality being added to the mix all the time,
the possibilities are endless. So why should you start building a mobile app? Well, how long is a piece of string and that should give you the answer!
A mobile app can be/do just about anything these days, from a simple egg timer to a home automation system, from games like Angry Birds to augmented reality navigation, all neatly packaged with a nice little icon that sits in the palm of your hand.
So the question is, how hard can it be?Getting StartedWell, I decided to give it a whirl and started learning the basics. There are so many questions to ask yourself:
What platform do I want to use?
There are plenty to choose from, Apple iOS, Google Android, Blackberry, Symbian, etc etc. Well, best bet is choose 1 and be good at that before trying to have a poker in each fire. I chose iOS, I own an iPhone so that makes sense.
What kind of app do I want to make?
There are so many different kinds of application out there, one of the hardest things is deciding WHAT to make rather than HOW to make it. For me, I think there are 3 ways to chose what to make, either pick a brand new concept/theme out of the air, improve on something that already exists on the target device, or copy/improve something that exists on a different platform and bring it to your chosen one (You don't really think Angry Birds is a new concept do you?).
Do I want to sell my app?
Depends how good it is really. If you do, then people have to want to pay for it which means it either has to be better than the alternatives or unique, or just cool!
How will I market my app?
Thats a topic all in itself, but suffice to say, leverage all the tools at your disposal. App stores, web, twitter, Facebook, posters, sponsor events, whatever you can to get your app known.
The list goes on.
First StepsI decided not to jump right in at the deep end and go for a fully fledged app, but start at the bottom and work my way up, don't start with a socially location aware networking app that can remotely boil a kettle and walk your dog, you're just going to fail!
First things first: understand the language. You wouldn't try to make a cake using a cookbook in french if you couldn't speak french would you? Learning the basic principles of the programming language that supports your app is a fundamental 101. Without this, you're never going to build anything of any real merit, and no one will download your app. So learn the basics. In my case, iOS Apps (iPhone/iPod Touch/iPad) are built using Objective C, a programming language spearheaded by Apple that takes its routes from NeXTSTEP. Coming from a web background, the shift in way of working with Objective C was a little daunting. Whilst all programming languages work off the same basic principles of variables, methods, loops, conditions, Objective C is no different, however the biggest difference is the way methods are called, using a process called "messaging", which actually makes reading someone elses code a lot easier to do (I wont go into details it will probably bore you, google is your friend :)
Oh miss, miss, ask me, ask me!
Once I had the basics covered I played around with a few tutorials but decided I needed a bit more of a hands on approach to fast track my learning. So, whilst out in Silicon Valley on vacation, I decided I would sign up for an iOS SDK Class for Beginners in Mountain View at the geekily named Hacker Dojo. The workshop was taught by Bess Ho, a Mobile Architect and Instructor. I turned up (after the sat nav did its best to try and make me late), grabbed a seat, opened my laptop and was ready to go. In what can only be described as a warehouse come geek frat house, with desks everywhere, sofas, more power extension cables than I've ever seen and a strange house with a roof terrace inside the building, I was ready to go.
Bess started by introducing herself and got under way going through some of the basics. It was like being back at University, but I was actually paying attention. There were about 40 other people in the workshop, ranging from programmers to product managers, all in a similar position to me. I felt a bit sorry for some of the non-programmers as Bess had a tendency to glaze over some of the programming basics that I felt were quite important without fully explaining them, luckily I knew what she was talking about due to my previous limited experience with Objective C, however if I hadn't had any then I would have definitely found that part challenging. We worked through several example applications, getting to grips with things like Interface Builder that allows you to easily create interfaces using a drag and drop interface, modifying application settings, setting default orientations, basic animation and sounds. We started with a basic background image of some sea with some buttons on the screen with a picture of a fish that when pressed inverted their colours. Bess showed us how to create the same interface using the Interface Builder as well as through code, which is definitely a more important skill to have as you will see later.
We then built upon this to add some animated fish that flipped using a 3D flip effect (all handled natively with a few lines of code) and some linear animation. Along with this we hooked up events to our buttons to get them to start the animations when pressed, all fairly basic but highly important stuff. I was impressed that most people seemed to be able to do this without any problems, even people with no programming experience, however a lot of the process was copy and paste, and im not sure how much information people absorbed as the code walk through was sometimes a little quick for some people and I felt that some key aspects of the code weren't always explained (like what @property and @synthesize are for, or why the dealloc method is important in memory management)
Each hour we had a break and had a chance to chat with our fellow iOS'ers about how they were getting on and what they do etc, then it was back to coding. We moved onto audio and built a basic fruit machine application (I say fruit machine app, bit it was basically an image with 4 buttons on it that played some sounds, no animation involved) but it gave us the basics to add sound to our applications, a very important part of making a well rounded app.
We also looked at how to animate a video sequence using a set of images (like a flip book), and didn't quite have time to get onto loading a web page within your app, but the notes are in the excellent course materials.
My AppAt the end of the lesson we had about 45 mins to produce our own app and demo it to the class. The app could be anything we liked and used the basic principles that we learned in the lesson. The course materials were supplied with a bunch of assets (images, sounds, backgrounds) that we could use to create our app.
I decided to create the addictive Bubble Wrap game as it seemed pretty simple and used some of the basic principles that we learned (buttons and sounds). I also added a counter and have since added a timer (also included in course materials) and popped states that are chosen randomly from a set of 3 images. All this was created using only code, there are about 75 bubbles on screen and I didnt fancy creating them manually, so I wrote some code to loop trough 75 times and place the buttons on the screen, much easier.
I was pretty pleased with my app and demod it to the class who also seemed rather impressed.
Bess asked me to write a blog post and provide her with my bubble wrap application so she may feature it on her blog also :) not bad for a first attempt.
In all, I learned a lot in the 5 hour lesson, enough to get started with some basic applications and am looking forward to the intimidate class next weekend!
So my advice to anyone wishing to learn mobile programming is learn the basics of the language in your own time, try out some examples and tutorials, but try and find a hands on workshop as I learned much more from the workshop than I've learned from any books or blogs.