I’ve been very big on ‘Agile’ software engineering in the past. In the early days of Agile (2001/2002 ish) I was pure Extreme Programming (XP), and later covered other, softer agile methods, finally settling on Scrum (note it is not SCRUM) in later years.
I’m now moving into academic research, and looking at how to do research. I was recently asked to provide a project plan for some research I am about embark on and looking around all I could see were Gant charts. Each one said “I will do A, which will take X weeks, then I’ll do B which will take Y weeks” and so on. Very nice and waterfall…
So I’ve been thinking about “agiling” it all up. How could I do this?
(note that this is all my first thoughts, and I’ll post more when I actually have done some)
The following is for my project ‘A Domain Specific Language for Artificial Neural Networks’
Constraints
What are the constraints of the project?
- Timescale: there is a fixed timescale for my project (3 months)
- Resources: there is only me!
Deliverables
Luckily I have already thought about a series of deliverable based on what can be accomplished, so in priority order:
- DSL for designing a neural network
- DSL for performing experiments (i.e. training/testing) on the neural network
- Expanding the DSL to encompass other areas of machine learning
Each of these could then be split into partial deliverables, each of some use.
Process
An initial plan for the project looks something like

So the development phase is nice and agile, but can I make it “more agile”?
What if the background research only covers what is needed for the next iteration? Sticking to agile principles (especially XP here) I’m thinking that it is purely focussed on the next deliverable. We entrust the “extreme” methods to provide us with a base that can adapt (hence “agile”) as new iterations bring in new deliverables. Here I’m thinking about both software development and research methods:
In software development, our normal extreme practices (merciless refactoring, low coupling, high cohesion etc) will establish an agile product, while in research methods I’m currently thinking of tools use: Mendeley or Papers2 to organise research & papers, mind maps to organise thoughts & ideas etc.
Similarly can we write the thesis (or paper) as we go? Again relying on tool use to keep the deliverables agile. If we do this then the thesis as a whole would not be a separate deliverable, maybe just the abstract & conclusions.
A process like this might look like:

Looks like an agile process to me, sounds like an agile process.
The real test is if it works.
That’s some initial thoughts about doing that project “agile style”. More later…