Web programmers: How do you start your projects?

SagaLore

Elite Member
Dec 18, 2001
24,036
21
81
I have a few projects on my to-do list.

- corporate Helpdesk
- website CMS
- discussion Forum

I know I can code these if I put enough time and effort into it. The problem is, I hardly have the time, so I never get started. When I code something I need to keep working on it intensely or I will quickly forget what it was I was doing. I know I need to create a flowchart for this and make it as modular as possible, that way I can work on smaller parts at a time without getting overwhelmed.

Any suggestions? How do you proceed? Do you plan out your db tables first, or add as you go?
 

igowerf

Diamond Member
Jun 27, 2000
7,697
1
76
Originally posted by: SagaLore
I have a few projects on my to-do list.

- corporate Helpdesk
- website CMS
- discussion Forum

I know I can code these if I put enough time and effort into it. The problem is, I hardly have the time, so I never get started. When I code something I need to keep working on it intensely or I will quickly forget what it was I was doing. I know I need to create a flowchart for this and make it as modular as possible, that way I can work on smaller parts at a time without getting overwhelmed.

Any suggestions? How do you proceed? Do you plan out your db tables first, or add as you go?

I took a class where we wrote a large web application use Java/Derby. The professor had us plan out the entire project first (site map, db schema, etc).

When we started coding, we first wrote a big class that gave us easy access to the database. We could just call getUser() or whatever to pull specific data from the db.

After that, we just needed to write control code to handle information passed by the users. The control code handled user input, processed it, interacted with the db if necessary, and then redirected to another page. While we coded this, we used very basic, utilitarian HTML pages to test our code.

Once we were done, we integrated our backend stuff into the fancy, HTML design using tag libraries.

I found that taking time to plan out everything really simplified the project for us when we actually started coding. We followed the Model View Controller architecture and that allowed us to split up the coding and keep it separate.
 

Descartes

Lifer
Oct 10, 1999
13,968
2
0
Why are those projects on your to-do list? Are you seeking fun or profit? If you have to remind yourself to do it then find something else to do, imo; it should ultimately be something you enjoy, because the more the chore the more the bore.

That said, if I'm just starting on a project I spend at least some of my time organizing my thoughts in some manner. This could be anything from a simple aggregation of features to scribbling high-level sequence diagrams. This process is ultimately supposed to be in support of the creative process, and if it's something you have to think too much about then you simply shouldn't do it. It's analogous to a composer who seeks out notes at the piano without regard for the final composition; it's not the immediate notes, right or wrong, that matter; rather, it's a systematic isolation of candidate notes that ultimately lead you in the right direction.

Of course, the above isn't always necessary of even possible when attempting to recapitulate the features of projects already implemented thousands of times; no offense, but discussion forums, CMS paltforms, etc. have been implemented so many times that the creative process is almost entirely removed, imo. In these cases it's often more convenient, if not prudent, to simply look at what available packages offer and find a means by which you can differentiate your solution. The key would of course to have a plan, and that could be anything from providing a more intuitive interface, a more integration-friendly platform (perhaps the only solution available is COBOL and you want to offer a Java or .NET platform more conducive to third-party integration), etc.

I don't think I've really said anything at this point, so let me summarize:

1) Build a plan. What are you trying to accomplish and why? This would likely keep you on track so that you don't forget and get overwhelmed.
2) Gradually distill the problem into its parts. If you find the parts you know where to start, and if you know where to start you can more easily accommodate a more emergent solution. This will allow you to stage out your development efforts, time, and overall success. It's much easier to say "I want to build a framework that supports the submission of user commentary for review" (ok, that's a silly description, I know) than it is to say "I want to build a corporate helpdesk platform." The more palpable the problem and its answer the more focused you will be. There are countless ways to document these parts, but in my professional efforts I most often use use (sic) cases as so much of my time is spent communicating with "the business."
3) Build it and accept revision. The point here is to accept that the solution will emerge rather than present itself as a milestone you can see a mile down the road. Don't look for the wall... just keep walking and you'll find it; run and you'll likely hit it ;)

I've worked on projects ranging from a few thousand to 100 million, but there is never one thing that I always do first. It's ultimately a creative process (I'm saying that a lot), and part of your job is to have a pulse on the heart of the project so that you know how to move; you have to feel your way through it. To say, "First, you need to create this diagram, and then that diagram" would be a lie. Find the philosophy of thought that suits you (I've provided a summary of my thought process above) and let the formalistic diagramming (e.g. UML) serve as a listener, not a director.

My $0.02.
 

SagaLore

Elite Member
Dec 18, 2001
24,036
21
81
Originally posted by: igowerf
When we started coding, we first wrote a big class that gave us easy access to the database. We could just call getUser() or whatever to pull specific data from the db.

Awesome advice! :Q

Originally posted by: Descartes
Why are those projects on your to-do list? Are you seeking fun or profit?

Fun now, profit later. I have been spending a lot of time with various CMSs and Forums, and while digging into the code there is always something that bugs me about them. On the outside, what I find the most frustrating is that Search Engine Optimization is always an afterthought and never part of the development process, so you have to resort to weird hacks.