hmm cheaper itunes pricing... that's good... i guess. 5 hrs ago
  • Date
  • Thursday, February 14, 2008
  • Author
  • Corey Dutson

Respect the Process, Damnit

I went to college.

Shock­ing, I know. I did though, and on the lovely diploma that I earned and gently stuffed in a drawer some­where it says that I am both a com­puter pro­gram­mer and a sys­tems ana­lyst. What that means is not only am I (sup­pos­edly) com­pe­tent at coding solu­tions, I am also (appar­ently) com­pe­tent at look­ing at a system and fig­ur­ing out how things should work.

I always chuck­led in my Analy­sis classes. “Come on, this is all common sense!” I would pro­claim. I took what the teacher said for a grain of salt and left it at that.

Process.jpg

Fast for­ward to my cur­rent job. I can assure you that there are a plethora of exam­ples that I could choose from for the point I will be making here, but one strikes me as per­fect. You see when we devel­op­ers started there things were volatile, unstruc­tured, and pretty much a mess. My now fellow pro­gram­mers and myself were hired in the wake of a col­lec­tion of other devel­op­ers leav­ing for one reason or another. We were also thrust into a project pretty much from the moment we sat in our chairs.

This was all fine and good, and we build what we thought we were sup­posed to build. Three days before we showed it to the client, we went through a run-​through with the man­ager, only to find out that what we built was not what the client wanted. Well okay parts of it were, but for the most part it was off the mark. The result was months of us work­ing gru­el­ing hours of over­time, wherein time became an abstract con­cept and my world knew noth­ing but code.

What the hell happened?

We didn’t have a process.

We built what we were told to build at the start, but things changed. The func­tional spec. was updated and we were never told. On the flip side, we also never went look­ing. Com­mu­ni­ca­tion was sub-​par at best, and the short of it is that there was enough blame for everyone.

We thought we had a process, but the deba­cle that we ran head­long into demon­strated that what­ever process was in place either wasn’t work­ing or was never ini­ti­ated. The result was every­thing blow­ing up in our face. As it turns out, if you do not learn from this mis­take, it will happen again and again. I could pull from more exam­ples, but I’ll refrain… sort of.


I am on a new project, in fact I am the lead devel­oper of said project. It’s my first time doing this and I’ll admit that it is a daunt­ing task, but I set about doing my best. I was given a func­tional spec­i­fi­ca­tion, which I thought odd because I’m pretty sure I’m the one that’s sup­posed to build that. I was told to add my sec­tion to it and that was that. I did so, to the best of my abil­ity, with the infor­ma­tion I had avail­able to me.

It was okayed, and I started hand­ing out tasks and the devel­op­ment cycle began.

Then I was told that the way things were sup­posed to work wouldn’t work that way any­more. This was after we had built stuff. This is gen­er­ally a bad design move, because now any devel­op­ment that was already done now has to be reviewed and pos­si­bly scrapped. I updated the spec. again, and away we went. Then I real­ized that some­thing wasn’t cov­ered with the infor­ma­tion I was given, so I asked a ques­tion. One ques­tion, I swear to God I only asked one but what was the end result? Another over­haul. Another attempt at the func­tional spec.

This has hap­pened a couple times, and is not how the process should work. In a per­fect world, the func­tional spec. is com­pletely done before a line of code is writ­ten. The world is not per­fect of course, and we have to make do with what we got, but damnit, I wasn’t about to go and take another stab at any­thing only to have it change on me again. So I went back to my col­lege roots, and I made a decision:

I will make the process work again.

How can I do that though, when every­thing has appar­ently been thrown to the wind? It’s easier than I thought… well sort of. It still requires effort, but I’d rather expend the effort where I did fixing the process then rebuild­ing any­thing three times.

I sat down with my other main devel­oper, and we went through every­thing. We went through every aspect of the func­tional spec, screen designs, and data sources, and fig­ured out how it all works. We asked all the ‘hows’ and ‘what ifs’ as well as all of the ‘what the hells’ that sub­se­quently came up. We went through every resource, cre­ated or not, and decided what was needed, what infor­ma­tion had to be stored, etc.. We cre­ated use cases for the com­plex cases, and walked through more processes then I would care to count.

The end result? I spent ten hours (min­i­mum) in a board room with a print-​enabled white board and wrote every­thing down. I’m pretty sure we have at least 15 print­outs of notes and ques­tions and dia­grams and use cases which helped clear up the utter ambi­gu­ity that sur­rounded the project. They get it now, and so do I. It’s no longer a matter of “how does this work?” but a matter of “what’s the next task?” Yes I have to update the func­tional spec. again, but at least now I know what to add, and where. The doc­u­ment is finally useful, and the project is under­stood. The process exists once again.

I’ve also taken it upon myself to write all of those tasks down in a shared loca­tion, so that who­ever is on the project can take on new tasks as the run out of their assigned ones. That way no one has the excuse for not know­ing what is next.

So yes we lost a day of devel­op­ment, but we have saved our­selves days of effort of unneeded rebuild time. Do it right the first time, and you’ll save time later.

On a side note, Sorry Mr. Miller turns out you were write all along about Analy­sis. My Bad.

a Mixx Digg reddit Delicious Stumble Upon

Keep it clean, no spam, and thanks a bunch for any feedback you give.

*

*

*

No comments have been made yet.