Lately, I have been doing some freelance work creating some website. The project however, has been advancing pretty slow, for no apparent reason. So I have been thinking about it. Why on earth are we taking so long for such a simple site? Even more, why does pretty much ANY project I work on seem to advance pretty slow?
And my mind keeps quoting what this guy at the office loves to say:
Software development success lies on communication
Communicating with your customer
I can't complain about my customer, really, he's slightly above your average client. He's not technologically inept and he's open to ideas. The one flag he has however, is not ever wanting to go on until everything is perfect.
When a new problem arises, we solve it fast, the client gives his opinion on the solution, and we keep going forward...until he changes his mind. He keeps going back and forth, re-shaping the solution to already solved problems.
Apparently, we have been unable to totally understand some of his needs(at least, I would like to think that's the reason he keeps comming back to "optimize" already solved issues).
Right now, we are starting to document user requirements (I know right) to better understand the client
and to protect ourselves against ever-morphing requirements.
This seems to be derived from the fact that he assumes we see things just like him, thus, skipping plenty of "obvious" facts that end up having an impact on the project.
Since I'm hoping the documentation solves the problem of having morphing requirements, the issue with the client not communicating all he has in his mind should be:
There should be no such thing as "obvious", on either direction (customer -> dev, dev -> customer)
How am I ever going to let him know there's no such as obvious or too much information? That is totally my next challenge :)
And that's just the tip of the iceberg regarding communication in a software development process, then there's the communication with your team...but it's late, so I will rant about it some other day.