I have one idea that I want to make an app for iPhone, I have recently bought a mac for the same purpose. I want to make small app and build on it in later versions. I work in in a small company and have 1 year of experience on working of iOS platform . I am a developer and don't have any design background so I want to know - should I take help from some designer? Or learn on my own and start coding for the app?

I would like to know before starting out, what things should I consider or give more importance to. In general how should I approach building the app, design first and code later or reverse way.

closed as primarily opinion-based by Bart van Ingen Schenau, Kilian Foth, gnat, user53019, user40980 Dec 13 '13 at 0:27

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.


In case of the first small practice project, I would just start coding right away and try out the different things, that you can do with the iOS SDK. But since you already have one year of experience, you might as well skip that part.

Design or Code first?

Always design first and then start development. You will likely not save any time on the design, with the code already written.

However you can save countless hours when starting with a clear vision of your design, before writing a single line of code.

Changing design is like fixing bugs: The earlier you do it, the more time you will save.

Idea before monetization

Sure, I can relate to the fact, that you will want to make some money from a project, that you put countless hours of work into. However, to make a successful application put the user first.

Focus on what is original about your idea, not on what might make the most money. Keep the revenue in mind, but don't make it your priority during early stages.

Clear strategy

Plan your strategy ahead. For example: If you are creating an app, that needs a backend, decide before how you are going to do it.

Are you going with a cloud service like Parse?

Are you coding it yourself? If so, are you using: JSON or XML? Ruby on Rails, Java, php, Python or something else? REST? Lay out all of your Routes/URL Schemes before starting to work on your App.

The same thing goes for Frameworks. The earlier you pick the right framework, the more time you are going to save. Nothing kills your productivity than fixing bugs at late stages and throwing away code, because you suddenly notice that there is a better way to do it.

And of course, even on small projects test-driven development and the use of source control are never a bad idea.

  • Very nice answer! Very well explained in such a short post. – Creative Magic Dec 10 '13 at 7:06
  • Thank you for very detailed answer, I will definitely consider your points going ahead. I will start with the back end and database as I know Java, mysql and REST. I would start thinking about my design as well and prepare how to connect the dots together. Coding in Objective-C is not an issue as I have already decided on frameworks and third party libraries. Thanks – Suhit Patil Dec 10 '13 at 7:19

Your question in rather opinion based - there are no strict guidelines weather you should start with design first or functionality of main features as separated components that could later be attached to your interface.

It is up to your judgement, skill and budget to consider learning UI design or hiring a professional designer.
I'd say - if you're interested in design, have designer skills or you're sure that you can achieve same quality as a pro in reasonable time - go for it!

About the part of what goes first - I'm not going to stress the way I prefer, it's all opinion based. But you've said you work in a company for a year now - you should know the workflow by now. Why not use same approach as the company uses - it is familiar to you so there's less chance of having mistakes you never heard about.

But let's say you're unhappy with the workflow you know by now, you want to know other ways or simply need unsure what effect your actions might have.

Let's look at a few ways an app can be created.
For the sake of an example let's say the app is a step counter with statistics. Abstract examples are harder to understand anyway.

1) Build a screen list. My favourite way. Easy to understand even for a non-developer. Make a sheet with all the screens and lines to show screen relations.enter image description here

Then, when you're satisfied with workflow you can list all the features with better understanding how to implement them in the current system. It also helps to keep the code separated and clean in your head as every feature will know it's place regarding it's screen.

2) Code first. Not the official name of the approach btw :) A well working alternative - just write all the model (model as in MVC), so it's easy to know what you're working with. Then, make the controller, so you can change the state of the model. It's fun that only a true programmer will appreciate. Not much you can show to other team-members/client meanwhile, but you can see the output in the console and know it's working! Then attach the visuals, sound feedback that other parts of the View. It doesn't really matter how your View will be like - it is the engine that's important.

In both cases, if done correctly, changing a part of your app won't affect the other. Both apps can be written with any standard, guideline, framework. It's merely a way to organise it in a way more understandable to you.

There are unlimited ways to break up the app into smaller tasks to help you understand your ToDo list. I won't be able to cover them all here.

There is no rule, only guidelines, so when you're making an app, think what you want to see or do first. Have your own guideline for consistency, but try approaching every program based on what's the best solution rather sticking to only one way.

  • Thanks for your inputs, i really loved your idea of having designer skills, I will definitely learn going ahead. As for the approach I would love to do as mostly followed in companies, create a working template and build, like you said design screens and connections and then code. MVC will be great help as you mentioned, will be my way to go as well as there are constant changes as the app grows and can iterate using agile methods. – Suhit Patil Dec 10 '13 at 7:33

Not the answer you're looking for? Browse other questions tagged or ask your own question.