Do you have the full picture?

Do you have the full picture?

One thing I always try to do when developing software is understanding as much as the problem and domain I can. This helps me make better design decisions and implement something that actually makes sense to the users, because we have a common understanding.

I don't necessarily mean I want the full story up front, a broad overview is great, and we can dive into more specific areas when the need arises. It helps me map out the application and where things may live in code, and how they may interact with each other, even at an extremely abstract level, this is really useful.

Unfortunately, time and time again we tend to dive into the specifics with out considering the big picture, which is dangerous. To help illustrate this, I have an incredibly contrived example. Let's pretend we're novelists, who are told what to write about... Stay with me.

You're told to write a book about a young boy in the 1980s/1990s, his parents were both murdered when he was a baby, so now he lives with his abusive aunt and uncle. He has it pretty rough, and lives off hand-me-downs from his older cousin to get by. Eventually, he gets sent to a boarding school and makes some cool friends and life starts looking up, but of course, for our young protagonist, we can't have it all too easy. The same psychopath who murdered his parents wanted to finish the job and kill this kid, because it should be easier to kill a young teenager than a baby, right?

Pretty twisted so far. We're gonna end up with some dark piece of writing off the back of this, but there's a lot to work on, so you write your novel, and it's dark, pretty brutal and incredibly graphic on some of the more disturbing details.

You now spend some time writing the novel, and you give it back to the person who asked for it, they read it and become horrified. It is pretty brutal. Then they drop the bomb shell: "Oh, we forgot to mention that the young boy is a wizard, and he goes to a magic school with other wizards".

OH, SO YOU MEAN YOU WANTED HARRY POTTER, NOT SOME DARK TWISTED NOVEL ABOUT ABUSIVE CARERS AND MURDER?

If we had that broad overview up front, we could've worked with that "he's a wizard" thing from the start. We didn't need to know what kind of wizard up front, but it certainly helps shape our story, we can get more details as and when.

Personally, as a developer, I want to write Harry Potter, do you?