It's been six months since my first full-time job has begun. The first month was spent in learning two products, of which I never got involved in any project. My boss finally decided to let me pick up a product development project that has been going on since before I joined the company. I must say that it has been a great learning opportunity so far and I want to share what little wisdom I have found.
Let's start with some basic information:
- The product is a software application for smartphones;
- We are trying to support 5 smartphone platforms. I'm not talking about phone models - that would have been trivial. I'm talking about something more in line with a situation like Mac + Windows + Linux + Amiga.
- As much as possible, the application is written in native code on all supported platforms (as opposed to Java, which would have been easier to port);
If you think that this is starting to stink, it gets better:
- There is no vision document; the only available material that's close to a vision document is a bunch of PowerPoint presentations;
- There is no software requirements specification, not even an informal one;
- There is no software architecture document, again, not even an informal one;
- There is no software design document at all, again;
- There is an overly simple blackbox testing checklist;
You probably saw this coming by now:
- The programmers had started coding the damn thing and submitting test builds already.
If you think that this point above puts the final nail in the coffin, I am sorry that I must disappoint you. Read on.
- There are, not one, but two versions of the product, with two different product activation models. Not only do you activate the two versions in different ways, but the sets of features that are disabled due to lack of activation are also different;
- The two versions were being developed concurrently.
I suppose my dear reader has a good picture of the stage in mind now. I'll let you sleep on it for a bit so you can imagine what can go wrong as the story unfolds itself.