Software Developers are the World’s Greatest Librarians.

Without knowing what software developers do, it’s easy to assume that it’s a very technical career. You’ll obviously be putting together mathematical formulas, fighting with the hardware, fighting with the software and fighting the hackers too. These are what we call the “hard” skills – the kinds of things that scientists and engineers are good at.

What they didn’t tell you is that great developers require strong “soft” skills too. In any large organisation, there are rarely any roles that know the business inside-out like developers do. Every major department uses software to manage the data and processes in their department, and while many of these tools are bought “off the shelf”, developers are often called in to custom develop or tweak the software to suit the business. In order to do that, you have to understand first of all what is required, looking at it in a human way, and then implement that against the strict limitations of what the technology can do. No other role combines that interaction of humanity and technology. If you fail to understand the human requirements, your implementation will get rejected, and what’s crazy is that you have to understand what they want better than even they do, because you’ll always be filling the blanks for the things they forgot to tell you.

That’s a great deal of complexity. Code, data, logic, hardware, technologies, etc. As a developer you have to manage all that information without exploding your brain, and the only way you do that is by logically organising it into obvious places, so you know where to find it when you need to fix or tweak it. If you have poor organisational skills as a developer, you’re eventually going to overload yourself and start making bugs, and with bugs comes the blame and shame game. Put the details in a box, close the box and forget about it until you need it, so you can get mental closure and give yourself fully to the next requirement.

These are all the basic skills of a librarian. Establish a pattern, fit things into a pattern, organise according to a pattern.

You can start developing that mindset now with some simple exercises. Firstly, next to you walk down a business street, begin to sort each building into groups. I’ll let you decide, but groups could be things like restaurants, supermarkets, etc. What about a hair salon or a locksmith?

Secondly, try the same exercise mentally with trees while you’re driving. How would you define groups of trees? Tall? Short? Dark? Light? Broad leaves?

Lastly, the next time you’re in a supermarket, try grouping all the staff in different ways. What group would cashiers fit into? What about deli counter staff or cleaners? And can you form multiple levels of groups? Cashiers and packers in a group and managers in a group?

The point of these exercises is to train your brain to think abstractly. Some brains can see a red Ford, but they only think of a red Ford. Abstract thinking involves looking at a red Ford and thinking “that’s something that carries people” or “that’s something that has windows”. Rather than the specifics, pull out the common features between two objects, and once you’ve done that, you have a pattern. When you start writing a lot of code, you’re going to break chunks of code down into different layers or services, and you’ll do that based on its purpose. Well organised code is easier to maintain, fix, improve and pass along to someone else.

– Eric Savage (Senior Developer)