By Dustin Ewers October 12, 2018

How to Balance Knowledge and Action

There’s no shortage of material on the web telling you to “take action.” Largely, they want you to forget learning and focus on action. While these posts are well meaning, they aren’t the whole picture.

Learning without action is useless, but so is action without learning. Developers are knowledge workers. That means learning is an essential part of our job, but we also need to create. The key is balance.

If you’re sitting on your ass collecting articles without using the information, then you need some bias toward action. But, if you’re running blindly into the fray, you aren’t going to get very far.

How many projects have you been on where an ignorant developer creates work you have to clean up later? They may not only lack the skills; they may also be unwilling to learn. An unskilled developer can result in negative productivity for a team, especially when that developer is the type that blazes ahead without thinking.

Learning and action complement each other. Too little learning leads to inefficiency and poor-quality software. Too little action leads to minimal results. To maximize your effectiveness as a developer, you need to balance acquiring knowledge and doing useful work with it.

In this post, you’re going to learn how to balance knowledge and action. By the end, you’ll have some concrete strategies that’ll improve your work, your education, and your sanity.

Why Learning Matters

We need to begin with a reminder that we have only so much time. Not only is our total time limited to 24 hours a day, but we also have only a limited amount of effective, attentive time. Even if you could devote all 16ish waking hours to developing software and learning, you’d burn out far before then.

Most productive writers and artists spend only a few hours a day working on their craft. Even virtuosos can spend only a few hours a day in deliberate practice. There are limits to the amount of energy you can put into both learning — and the same goes for action.

This limit underscores the need for efficiency when using your time. With all of life’s demands, most people struggle to find the maximum number of useful hours they can work in a day. Even if you manage your time well enough to reach that limit, you still need to be careful about how you allocate your time within those hours. (This is one of the main benefits of learning. Knowledge can make you more efficient.)

The more you know about a given software library or programming stack, the more you can sidestep issues. You also don’t spend as much time fishing for answers on Stack Overflow.

Additionally, learning how to manage time, write clearly, and communicate better can make you more efficient in other ways. It’s usually faster to solve a complex problem with a conversation than it is with code. I sometimes refer to this as “resolution by diplomacy.” It’s my favorite way to fix a bug. Many of the issues you run into as a software developer are due to a lack of clarity.

Learning also expands your skill set. Knowledge of new technologies means that you can build different types of software. It means you can go from maintaining systems to architecting them. Knowledge expands capability.

Technology is constantly changing, and we need to spend time understanding the current trends in our industry to plan our careers. A career in software development is a career spent keeping up.

The software developer’s struggle to keep current reminds me of this quotation by the Red Queen in Alice in Wonderland: “My dear, here we must run as fast as we can, just to stay in place. And if you wish to go anywhere you must run twice as fast as that.”

Our industry moves fast. We need to keep learning, or we’ll be left behind.

The Importance of Action

I started this post off criticizing people who call for action instead of learning, but that doesn’t mean action is unimportant. Action is essential.

It doesn’t matter how much knowledge you have available; if you don’t use it, it’s meaningless accumulation. The purpose of learning is to improve action, not to win at developer trivia.

You can read a hundred programming books, but it won’t matter if you spend your nights and weekends on the couch instead of building that side project. It won’t matter if you keep using the same techniques, technologies, and practices at your job. You’re only going to make progress when you take all the lessons you’ve learned and try to apply them in the real world.

Action also solidifies learning. Action triggers recall, which is the key component in learning. For example, it doesn’t matter if you’ve watched two dozen Pluralsight courses: You don’t know a technology until you build something with it. I refuse to put anything on my resume that I haven’t at least built a few demo projects with.

People don’t really care about what you know. People only care about what you can do. Knowledge assists with action, but it shouldn’t replace it. Don’t be an overeducated couch potato. Put your hard-won knowledge to use.

The Balancing Act

At this point, you should understand the importance of balance. Now you will learn some concrete strategies to bring that balance into your own life.

The first strategy is to become a more efficient learner. Spend some time learning how to learn. If you’re not interested in a course, I recommend the book Make it Stick. Learning more quickly frees up time for action. Since learning is an essential part of what we do as developers, time spent learning how to learn will return huge dividends over the course of your career.

In addition to learning how to learn, find extra time in your schedule by co-opting errands and other “dead” time with learning time. You can’t use this time to build software, so feel free to co-opt that time for learning. I listen to podcasts and Audible books during my commute. I also listen while doing household chores. I’ve consumed several hundred books over the past few years that I would not have otherwise had time to read. I also read articles while I’m waiting in line. This is time that you would normally waste. Make it it useful learning time.

Another way to increase your overall efficiency is to be more careful about the information you consume. Avoid the time sucks of social media and low-quality infotainment (Buzzfeed, Cracked.com, Business Insider, etc.) These junk sites are black holes for your time and deliver very little value to your life. Not only are you saving time, but you’re also saving stress. Most information junk-food sites rely on triggering stress responses. Stress reduces your creativity, which makes it harder to build things. Limiting junk information gives you more time for learning and for action.

Before you begin learning a topic, know what you need to get out of it. Figure out what kind of actions you’re going to take with this knowledge. For example, let’s say you’re curious about virtual reality (VR) development. Write down what you want to do with the knowledge. Do you want to build a cool VR application, or do you want to have something interesting to say the next time you and your developer buddies talk about VR? Adjust your learning plan accordingly. If you only want to keep abreast of VR, you can subscribe to a blog, and call it a day. You can save a lot of time by taking only what you need from a particular resource or topic.

Another way to save time is to practice “just-in-time” learning. Just-in-time learning is where you spend time learning only things that are immediately applicable to your current project or goals. Instead of accumulating lots of skills that may see little use, only spend time learning things that relate to your current project. Tie your learning directly to your actions. This approach is especially useful in areas of software development with a lot of churn like the JavaScript space.

When you’re building something, regularly take stock of what kinds of information would make you go faster. Pay attention to when you’re flailing against a problem instead of using your brain to solve it. Sometimes it’s easier to hit the books than bang your head against a keyboard.

The final and best way to balance learning with action is to do both at the same time. Whenever I learn something, I connect it to some sort of project. This could be something public like a blog post or technical talk, or something private like a reference implementation.

Regardless, you don’t really know a technology until you’ve built something with it. Always connect your learning to a project to really burn in the knowledge.

Learn to Act and Act to Learn

Learning and action are two sides of the same coin. In order to have the best career possible, you need to do both.

Walking the tightrope between learning and acting is difficult, but with a few strategies it can be done. From learning how to learn efficiently to connecting learning and action, these two aspects of your career can be balanced.

To get started, sit down and think about your learning plan. Figure out what you want to do and what skills you need to get there. Then plan learning for each of those skills, mixing in projects to reinforce your learning. Your future self will thank you.

About the author

    Dustin Ewers

    Dustin has been building software for over 10 years, specializing in Microsoft technologies. He is an active member of the technical community, speaking at user groups and conferences in and around the Midwest. While not building the software of the future, Dustin likes a mix of low tech and high tech hobbies, including reading, cooking, hiking, and fishing. He writes about technology at https://www.dustinewers.com/. Follow him on Twitter at @DustinJEwers