As a programmer my first instinct is to start coding, but then again chapter one of every programming book says that you should NOT sit down and code.
So the question is, where to start?
I’ve given the project some thought, it’s going to be a fairly simple web app, kind of a time logging app, to give you an idea.
Even though it’s a small project I want it to have great-for-general-public-use quality, and I am willing to even cash out a bit to have a designer do a proper look and feel for the page.
This is a list of things I’ve thought about:
-
It’s going to be in ASP.NET MVC
-
I want it to have the most dead
simple log-in (a la Instapaper, but
possible with option to do OpenID, a
la SO) -
Should be able to use it with no
log-in too, just session cookie -
It’s going to have several “layers” of
usability, from very basic, to a more
“dashboard” info tracking. -
The webpage should very simple to
use. -
Planning on using jQuery for
interactivity -
Will use Linq2Sql
-
I want to start with the MAIN time
tracking function, and then add other
tools that not all people might want
to use, but that more advance users
would like (and no is not
feature-ism, they are things that
really have to go there for the
product I want to do) -
If the page was a little bit successful, I’d like to add mobile apps, so I should have some sort of internal web API?
So where should I start?
Class diagrams? Basic “sketch/design” of the app? Workflow Diagrams? Mission statement?
And what should I do after that? When is “good” to start coding till I fall asleep?
This question is a bit subjective but here is a very short explanation of what i do.
I always begin with my data. What do I want to store and how? Then I build my database and indexes.
I then create a data layer project and import my db as a linq2sql class.
Then I decide on the first bit of functionality i want to sign off. perhaps enter a time.
I then write my test cases in a test project. then i make each test pass by writing the code in my data repository layer.
then i write a controller and finally my views.
then i move on to the next story point or piece of functionality