Building computer systems via problems rather than solutions

When it comes to building computer computer system, even something as simple as storing the name and address of universities can be surprisingly complicated and messy.  While the mess and complication often can’t be avoided, knowing what the end user needs are can help you come up with the best way of tackling them.

“Just” storing university names and addresses

Imagine you’re designing a system, and someone asks you to store the names and addresses of UK universities.  That’s not too hard, so you should get it done quickly, right?  It will be even easier and quicker if the person making the request adds the magic word just to their request.  For instance: Can you just add university names and addresses?

Unfortunately, this request is bad for at least a couple of reasons.  The main one is that it’s a solution in search of a problem.  Why should we add this information?  For whom, and to help them with what problem in their world?  Adding this information might be the best solution to whatever this problem is, but alternative solutions might be better – for instance, integrating with a third party that already solves it.

As we don’t know the user requirements, this solution in search of a problem leads people to assume a lot of important things.  There’s a big risk that people will unwittingly assume different things.  This will lead to unhappiness, bug reports, delay etc. when this clash of assumptions is discovered.

To unpack the various ways in which this request is bad, and the difference in assumptions people might make, I’ll go through a few questions and issues that the simple can you just add university names and addresses? contains.

Cambridge University Library

What is a university?

This might seem like an odd question, but it’s still important.  Is it an institution with university in its name, like the University of Bristol?  This would then include the University of London, which doesn’t award degrees and you can’t apply to.  (It’s a federation of more normal universities such University College London.) It would also exclude places like Imperial College London, The London School of Economics and Political Science (LSE) and King’s College London.

What about collegiate universities such as Oxford or Cambridge?  The university awards the degrees, contains central facilities such as big libraries and also the departments (which in turn provide the lectures, practical sessions, etc.).  However, the colleges provide accommodation, pastoral care, tutorials (known as supervisions) and other important things.  

Unless they explicitly choose to accept any college, a student must pick a set of colleges to apply for, just as they also pick a set of universities to apply for.  A student is a member of their college and the university at the same time, and college identity can be a big deal – there are many inter-college sport competitions such as the Bumps.

Is it an institution that awards a degree?  You might be surprised to learn that the list would need to include the Archbishop of Canterbury, as he can award Lambeth degrees.

So, I imagine that you will probably find an official list of institutions and use that, i.e. you will delegate the decision to someone or something you can trust.

What is an address?

Which address is important for a university? There will be many, and they might refer to places that are far apart.  Is it an administrative address, the address for university accommodation, the address of one of the departments or something else?

While many universities are fairly gathered together in terms of where they exist in space, others are not. The University of Highlands and Islands has campuses that are far enough apart from each other that it could take over 16 hours to travel from one to another (from Dunoon to Lerwick). Not all campuses offer all subjects – for instance, the BSc in Aircraft Maintenance Engineering and Management  is offered only at Perth.

What address is relevant for places such as The Open University where the bulk of a student’s time is spent learning from home?

Time

Having sorted out which institutions we want and which addresses we store for them, we still need to think about time. Do we need to store only the current names and addresses?  If they change in the future, do we just overwrite the old versions with the new ones?

What if institutions merge or split?  What about institutions that were colleges rather than universities, but gained university status?

This kind of thing matters because we will probably refer to the institutions via an id that points to an entry in the list, rather than using the full name each time.  Can this id change as the institutions merge, split or change their name?

Better requests

As I hope you can see by now, can you store university names and addresses? isn’t a good request. It doesn’t give any guidance that will help you navigate the mess and complexity of the relevant part of the real world.

Digging beneath the surface of the request, to try to unearth the real user problem, will help.  The user problem might be something like:

  • Is my home close enough that I can live at home while studying for this course at this university?
  • Which areas of the country have the highest concentration of students?
  • Where are universities that have history departments?

These are problems rather than solutions, but they are probably going to be easier to work from.  The person giving the solution might think they are helping by pre-digesting things for you, but without the context of the original problem this can be unhelpful.

This kind of digging is a form of testing that doesn’t involve code, and doesn’t need people with tester in their job title. 

Leave a comment