views:

179

answers:

6

I have developed some medium level corporate web applications until now. I have learnt syntaxes of couple of programming languages, but have never created something useful, web-based or desktop-based.

I have tried to work on a couple of applications from the scratch, but each and every time I lost interest because I spent too much time organizing. I want to be able to do a project in one of the languages I am familiar with and slowly improve myself as a programmer.

How best to organize a project when starting from scratch? Should I create the database schema first? Should I develop the mock screens first?

A: 

First, have a plan.

You can make a design, but you also can chose to use an agile method. But the most important thing is that you have a plan.

Gamecat
+1  A: 

It sounds like you have the organizational part down. Start coding. Don't be afraid to make mistakes; it's not going to be perfect the first time.

Robert Harvey
A: 

For my personal projects, I used to just keep a list of features in a text file file. These days, I'm using 3x5 story cards. They're easy to re-prioritize, and they help keep things simple.

And I'd suggest that you can use agile AND have a design, but it should just be a rough sketch. If you make it too detailed, you'll probably never get started, and your design will quickly stale.

Don Branson
+4  A: 

The best way to do a personal project from scratch without losing hope is to take the inside-out approach. That is, start small and build up gradually - don't set yourself massive goals and plan huge with a large feature set, to use a cliché - KISS (keep it simple stupid).

From there you can grow it, and not give yourself a huge mountain of workload that de-motivates you and essentially puts you off a project that you originally had enthusiasm for.

Chris S
+2  A: 

I suggest that you should ship some deliverable part regularly. Each week show publicly something new that works.

Tagging system for bug database that will be used once the application is finished doesn't count. Only parts of the application itself. Networking, database schema, GUI, whatever.

Show it to customers, blog about it, be proud of your achievemnt even if it's not perfect.

Observe your fear levels. Bravely go outside your comfort zone and steer against the fear.

As they say, good engineers ship.

Print this poster and put it on the wall.

Tadeusz A. Kadłubowski
+1  A: 

It depends on your personality. If you're a planning type person, Then go about making a detailed plan. If you're a gung ho person, go and start coding.

For planning, I suggest going up the app layer, starting with the DB. Create an access layer to handle all types of DB requests. Build the app layer by layer. That's how I did it on a recent job application where I had to create an app from scratch.

For Agile, develop harder concepts first. That way, you know you'll always have something to do because there will be more easier stuff to do later on.

It all depends on what feels comfortable. And fun.

johnofcross