Beyond the Tech
It is easy to find learning materials about specific technologies, but sometimes it is good to take a step back in order to gain a better understanding of the big picture beyond the technological side. Here are some suggestions.
Learn about the basics of systems thinking. Learn about elements, interconnections and functions. Learn about positive and negative feedback loops, constraints, resilience, and emergent behaviour.
Understand that you are constantly interacting with systems. Learn to see not only the applications you build as systems, but also code repositories, deployment processes, companies, project teams, relationships and societies.
Learn that the environment shapes behaviour. Think about how the environment in your company shapes the behaviour of the employees. Think about how the design of our cities shapes the behaviour of their citizens. Think about how you can tweak the feedback loops and constraints of the systems you interact with in order to get the outcomes you desire.
- Meadows, Donella, and Diana Wright. Thinking in Systems: A Primer
- Meadows, Donella. Leverage Points: Places to Intervene in a System
- Meadows, Donella. Dancing With Systems
Design and Usability
Learn about graphic design and typography. Learn about composition and the organisation of information. Learn about the principles behind the usability of interfaces and appliances. Think about good and bad usability in the products you use every day.
Think about usability not only when you build user interfaces, but also when you design APIs for modules, libraries, or web endpoints. Think about who will use the API. Think about how you can structure your code so that another developer can easily understand it all the way from the high level view to the implementation details.
- Norman, Donald A. The Design of Everyday Things
- Lupton, Ellen, and Jennifer C. Phillips. Graphic Design: The New Basics
- Lupton, Ellen. Thinking with Type: A Critical Guide for Designers, Writers, Editors, & Students
- Bringhurst, Robert. The Elements of Typographic Style
- Tufte, Edward R. The Visual Display of Quantitative Information
Written communication is an important part of the job. Learn how to look at your writing from the perspective of the intended audience. Steven Pinker describes writing as transforming a web of ideas into a string of words. He uses the metaphor of guiding the reader’s gaze through the world in order for them to see something they haven’t seen before.
Use writing as a tool for clarifying your thoughts and finding gaps in your reasoning. Learn to write documentation, user stories, requirements, specifications and anything else with clarity and intent. Learn to see source code as a medium of communication between humans.
- Pinker, Steven. The Sense of Style: The Thinking Person’s Guide to Writing in the 21st Century
- Zinsser, William. On Writing Well
Learn the rules, so you can break them
There are several variations of this quote, including “Know the rules well, so you can break them effectively.”, “Learn the rules like a pro, so you can break them like an artist.”, and “Learn the rules and then forget them.”, attributed to the 14th Dalai Lama, Pablo Picasso, and Matsuo Bashō, among others. For jazz musicians, there is also the related “If you can’t play hip inside, you can’t play hip outside.” (no source), and Charlie Parker is quoted with variations of “First you learn the instrument, then you learn the music, then you forget all that shit and just play.”
While completely forgetting the rules might sound like a step that is more applicable to the artist than to other professions, there is still some general truth to it. First of all, forgetting the rules does not mean that you will never apply them again. It means that they have become so ingrained that you don’t have to think about them any more. Second, every rule and best practice is based on certain assumptions and valid in certain contexts. Learn the rules and try to understand these assumptions and contexts. Understand the reasoning and the purpose behind them. Then you know when to apply them and when it makes sense to break them. Be pragmatic.
Taking one more step backwards, understand that everything you see, everything you feel, everything you think, everything you perceive is a making of your own. There is no objective reality you can perceive; you can only see the world with your own senses, and your brain tries its best to create a model of the world that is consistent with your previous experiences.
When you disagree with somebody, neither one of you is absolutely right, and neither one of you is absolutely wrong. While you discuss, focus less on convincing the other person, and more on understanding the reasons why they disagree. Try to understand the axioms behind their arguments. This gives you a better basis for reconciling your differences, and for learning from each other’s experiences.
Be open to other people’s ways of thinking. Even if you disagree with someone, there will always be something to learn from them. Determine whether their opinions can add to your experiences. Acknowledge when you don’t know something.
Understand that the human mind is very effective at rationalising behaviour after the fact, even if a decision was made spontaneously and subconsciously.
Learn about mental models and cognitive biases. Think about how different languages and programming paradigms influence the way you think about a problem.
- Kahneman, Daniel. Thinking, Fast and Slow
- Maturana, Humberto R., and Francisco J. Varela. The Tree of Knowledge: The Biological Roots of Human Understanding
- Watzlawick, Paul, et al. The Invented Reality: How Do We Know What We Believe We Know?
This is a very subjective list of topics I find useful to learn about. You will end up with your own list. Learn what you gravitate towards. Anything that helps you to look at the world in a different way will be useful. See if you can take what you learned in one field and apply it to other fields. As Steve said, you can only connect the dots looking backwards.