A breakdown of problems and difficulties in the software development process. My thesis will consist in picking some of these, identifying potential solutions to them, and designing tools to implement those solutions.
The trouble is...
- No one knows how this code works.
- I don't know where (in the code) to look.
- I can't tell what's happening.
- I don't know what will happen if I change this.
- My assumptions are wrong.
- I can't penetrate the abstractions.
- I'm getting lost in the details.
- I can't tell what connects to what.
- I don't know what this functon does.
- I don't remember the name of...
- I make lots of typos.
- Abstract thinking/generalization is hard.
- Everyone's code looks different.
- I don't know why this code is the way it is.
- The concepts about which I think don't match the concepts I can manipulate.
- I need a place to explain code, its design, and its connections.
- I'm using the wrong tool for the job.
What did I forget? What part of software development makes you go "argh"?