10

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:

  1. I broke down the product in features; each 'feature' is, de facto, a separate product;
  2. Each feature is built on top of the previous one;
  3. 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.);
  4. 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.

yannis
  • 39,547
  • 40
  • 183
  • 216
  • Speaking as a former PhD student who labored for years in what felt like a black pit of stagnation and obscurity, I would have been pretty excited (and also terrified) to know that professionals were standing by waiting to do something useful with my work. It would have been tremendously motivating. I see this question was asked almost a year ago, but if the situation remains the same, then I'd be interested to know how much contact you have with the students. It might be helpful to let them know you're rooting for them! – octern Mar 30 '12 at 18:03

3 Answers3

7

I've been in that position a few times, and with experience, you cannot count on the PhD student to deliver research that's relevant, and you certainly can't rely on it happening on a timescale that's useful. PhD students are specifically allowed to go where their research interests take them, and it can be ultra-difficult to be downstream when suddenly they go haring off on a side track that's relevant to them but not to you. This is a major source of risk to your project, so you must use appropriate risk mitigation strategies in your project plan.

Given that, work out when you've got to deliver by (see the research grant; it's determined by your funding rather than anything else) and how long it will take to deliver assuming that the research is delivered. This will take some almighty guesses, but that can't be helped; make those guesses explicit in the time estimation. Later on, manage the risk by staying in reasonably close contact with the PhD students (e.g., sitting in on their tutorial sessions once a month) so that if it looks like they're not going to deliver what you need on time, you can think about mitigation strategies in detail. If you're lucky, the gamble will pay off and you'll get something useful out of the research. Odder things have happened.

Everything else will follow from knowing who your customers are going to be, and thinking about how you want them to use the eventual product (and how they will actually use it too). If you don't know that, you won't sell to anyone. But you ought to know it, or at least find it out soon. (If it's determined by the research part, you're in deep trouble! Research projects can most certainly produce negative – or partially negative – results; it happens all the time, even if it isn't always that widely reported.)

As a final point, I think it's a terrible shame that you're doing this anonymously, as all you're doing is seeking advice on a particular type of project management. You're not mentioning what the subject of the research is or who is undertaking it or who any of your collaborators are, nor would it matter for this question. The only way it could be a problem is if you were seeking non-R&D funding before the research delivered, but that would either require that you disclose the level of risk involved (probably scuppering the investment!) or be highly dishonest; since you're planning to be honest, it shouldn't come up as the project should only seek that sort of funding once risks are more certain. (If you – as a group – are being dishonest with the potential investors, that's a problem right there and it will end in tears. Or lawsuits.)

Donal Fellows
  • 6,347
  • 25
  • 35
  • Donal, thanks for your answer. You raise a few good points; especially on risk management. On research, yes, they are supposed to find negative results: that's how research is done! If you already knew what you're going to get, it's not research, it's advertising. On the need to stay anonymous: it's because from my stackexchange account you can see on my careers profile who I am and where am I working. That might jeopardize the future salary of my team (yes, we're seeking non-r&d funding). If it was just me, I'd be honest. But it's not my money that it's paying them now, so I must be careful. – Another Anonymous User Jun 26 '11 at 17:11
  • 1
    Excellent answer. Even in the kinds of commercial software development I've done, there are unknowns where you just have to make an educated guess at specifications and schedules. As long as everybody knows those are guesses and subject to change, it's okay. One thing you can do with the research items is that for every number you have to provide (dates, money, etc.), guess at and provide good case (10% chance it'll go that well), expected (50%), and bad case (90%) values. Also, for mitigation on the unknowns, try to have "Plan B" (and ideally plans C and D) in your virtual back pocket. – Bob Murphy Jun 26 '11 at 20:31
  • The problem with depending on research is that there's a strong chance you'll end up with a “definite negative” answer: that what you want for the product doesn't just require something unknown, but something that cannot be created. Or that the research never delivers anything _relevant_ at all (a real risk with PhDs). The point to get the big investment in is after you've got a small proof of concept going, so that you know at least it can be done and that all you've got to do is solve how to make it usable and marketable. – Donal Fellows Jun 27 '11 at 08:51
2

I think in research development planning stuff in one go and tgen developing does not really work well. I work at a research institute, and we work more using rapid prototyping. Often developing a prototype yields the insight into what is needed exactly. By rapidly creating a prototype you can get feedback from your boss and the researchers and determine if this was what they where expecting, and also see if your approach works. Afterwards you can refactor and improve your code. This is what I see in practice at the research institutes where I worked.

Paul Hiemstra
  • 2,155
  • 17
  • 14
2

How do I make my boss happy while at the same time get something out the door?

Be smart and get things done.

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)

If you don't know what you're going to interface with, that's a problem. What inputs do you give the magic box? What outputs do you get from the magic box? That will also help the researchers define what the magic is.

If your academic has been funded by a grant, then he probably wrote up a research proposal. Get hold of that. If it's like any of the research grant proposals I've seen (and written), it will have a timeline and a "specification" of what they are trying to do.

How do I get the requirements for that, given that there are yet no clients nor investors, just lots of interests and promises?

Requirements are what the end-users of the algorithm / thing-a-ma-jig. See if you can interview them (or potential customers / clients).

Otherwise, eat your own dog food.

How do I get peace in the world?

Off topic :-)

Peter K.
  • 3,828
  • 1
  • 23
  • 34