Dear fellow programmers,
how do you do "software planning" when academic research is involved? And, on a side note, how do you convince your boss that writing software is not like building a house and it's more like writing a novel?
The gory details are below.
I am in charge of a small dev team working in a research lab. We started developing a software with the purpose of going public one day (i.e. sell and make money off that). Such software depends on, amongst other things, at least two independent research lines: that is, there are at least two Ph.D. candidates that will, hopefully, one day come out with a working implementation of what we need.
The main software depends also on other, more concrete resources that we as developers can take care of: graphics rendering, soft bodies deformation, etc.
My boss asked me to write the specifications, requirements AND a bloody GANTT chart of the entire project. Faced with the fact that I don't have a clue about the research part, and that such research is fundamental for the software, he said "make assumptions." For the clarity of the argument, he is a professor whose Ph.D. students should come up with the research we need. And he comes from a strictly engineering background: plan everything first, write down specifications and only then write down code that "it's the last part".
What I am doing now:
- I broke down the product in features; each 'feature' is, de facto, a separate product;
- Each feature is built on top of the previous one;
- Once a feature (A) has a working prototype the team can start working on the next feature (B), while QA for is being done for A (if money allows, more people can be brought in, etc.);
- Features that depend on research will come last: by then, hopefully, the research part will be completed (when is still a big question) ;
Also, I set the team to use SCRUM for the development of 'version 1.0', due in a few months. This deadline could be set based on reasonable assumptions: we listed all required features, we counted our availability, and we gave a reasonable estimate.
So my questions, again, are:
- How do I make my boss happy while at the same time get something out the door?
- How do I write specifications for something we -the developers- have no clue whether it's possible to do or not? (We still haven't decided which libraries to use for some tasks; we'll do so when we'll need to)
- How do I get the requirements for that, given that there are yet no clients nor investors, just lots of interests and promises?
- How do I get peace in the world?
I am sure at least one of my questions will be answered :)
ps: I am writing this anonymously since a potential investor might backfire if this is discovered. Hope you'll understand. However I must say I do not like this mentality of 'hiding the truth': this program will likely benefit many, and not being able to talk openly about this (with my name and my reputation attached) feels like censorship. But alas, I care more about your suggestions now.