I have a client right now requiring me to develop a school enrollment system. Now this is the first time im having this kind of challenge. Most of the past software that i created are not that complex.

I know most all of you have created complex softwares, i just want your advise on this. Should i design first the front end or back end?

thanks!

Here's a conclusion of an article I found in the internet a while ago. Just whant to share

http://www.skitoy.com/p/front-end-vs-back-end-developers-my-take/157

Front-end vs. back-end developers (my take)

My personal take

Again it’s a matter of training, some broad stroke generalizations:

Front end developers


Typically don’t have a CS degree, or
have a CS degree from a 3rd tier
school.
Work in languages that similar to
basic (see PHP is Basic)
Have a visual skill in converting
photoshop documents to CSS/HTML/etc.
Have a high tolerance for iterative
programming, due to type free
languages


Back end developers


Have a CS degree or lots of
experience
Tend to me more systematic in their
problem solving approach
Don’t mind spending days finding the
one object that is leaking
Try and build tools to solve problems


If you start at the back, and go forwards, you run the risk of misunderstanding the client. As you will be creating things that they can't easily see and comprehend, they can't participate very easily in verifying whether you meet the requirements.  This means that you might waste a lot of work.

If you start at the front, and go backwards, you run the risk that the client will think it's almost done, when all you have done is draw a simple form on the screen.  They may then question why it's taking so long, since you had it mostly finished in a few days.   You also run the risk of painting yourself into a corner, when you realise that you have to do some complicated work to marry the front to the back, when a more suitable front-end would have been simpler.

IMO, you should work on it feature-first.  Write the front and back end together, for each feature in the system.  This gives the client greater visibility of progress, and it gives them the opportunity to say "no, that's not what I meant", without causing you too much distress.

That said, if this is a very large project in which you need to consider the server hardware or the capabilities of any software you rely on (e.g. which database you are using), then you should probably have a good think about that part first.
