Want to learn to code? Start with Excel

Mike Adams
mgadams
Published in
15 min readOct 30, 2018

Why Microsoft Excel provides an ideal sandbox for new coders to learn the foundational concepts of coding.

Photo by rawpixel on Unsplash

A near decade ago I graduated from college with no job offers, no technical skills and tens of thousands of dollars in student loan debt. As the first person in my family to have ever even been to college, I was so focused on graduating that I was completely oblivious as to the skills and experiences I would need to get my career launched and to succeed in the real world. Thanks to non-trivial amounts of luck and the help of one life-changing adjunct professor and his recommendation of me to some colleagues in the San Francisco Bay Area, a consulting firm departed from their norm of 4.0 GPAs and top 10 degree pedigrees to offer me a job. I have little doubt that after my first few weeks on the job, there was some serious buyer’s remorse as I struggled to learn the business context, best practices, and technical skills I needed to justify my billable rate.

Every day I felt like a fraud. Every day I expected to be walked out the door in shame. But every day I showed up to work and it never happened.

Over time, I just got better. One day at a time. I gained more confidence, I made fewer mistakes and I became quite good at Microsoft Excel by using it to solve problems for nearly 12 hours per day.

As simply as I can put it, mastering Excel literally changed my life. I knew that no matter what happened in my job, I had developed in-demand technical and business skills that I could transfer to any job in any market. In fact, in the time since then, BurningGlass has searched 27 million U.S. job postings and discovered that Excel is the #1 most demanded technical skill and is listed as a requirement in over 80% of all middle-skill jobs. According to the report:

Digitally intensive middle-skill jobs grew 2.5 times more rapidly between 2000 and 2013 than middle-skill jobs that do not require spreadsheets, word processing or other digital skills.

While I knew at the time that my job security was improving, what I never could have realized back then was just how foundational my background in Excel would be in developing the high-level programming skills I’d eventually come to rely on as a start-up co-founder and leader of engineering teams.

Learners must connect with the feeling of success

While the theoretical concepts of computer science are essential to any meaningful career in programming, they are almost always taught without the context of how they can be used to solve real-world problems. Unfortunately, as a result we lose too many once eager learners to boredom and lack of relevance to their short and long-term interests. The science of learning is very clear that the more engaged learners are in solving problems they personally identify with as important, the more likely they are to push through the learning curve to retain and build on what they’ve learned. Gaining employable levels of technical skills is far more about persistence and motivation than initial performance or natural ability. If you want to learn to fly commercial airplanes and become a pilot, there is simply no shortcut to getting the requisite hours in the cockpit. The exact same thing is true of learning to code or any technical skill. We need to stop acting so surprised when people get bored and give up as we’re teaching them mathematically dense computer science in Java just in-case they might eventually need to fly the space shuttle. A Cessna will get them off the ground and experiencing the joy behind the yoke, let’s start there.

This past summer, my wife and I took our kids to the Giants game at AT&T Park in San Francisco. My 3 year old daughter and 4 year son watched in awe from the left field bleachers as the Giants hit several home runs over the 350 foot fence in what would be a 13–10 win over the Pirates. A few minutes later we walked up the stairs to the 1/10 size replica kids field where they’d get a chance to play home-run derby. Naturally both of them immediately began swinging for the fences. Apparently the desire to “hit dingers” is engrained at a very early age and as human beings we may even be pre-wired at birth to love the long ball. On my daughter’s 3rd trip up to the tee she connected with the ball and sent it sailing over the fence. The plastic ball hung in the air for what felt like eternity as it drifted in the wind down into the players parking lot 10 stories below. The crowd of parents erupted in cheers and she ran those little bases with a pride and joy that rivaled Travis Ishikawa. My wife and I’s faces beaming with pride likely further reinforced what we can only hope will become a life long pursuit of swinging for the fences. Whatever her future success in baseball may be, it will have started with the feeling of success she felt on the kids field.

While starting small might not be as glamorous as playing in the ‘big-leagues’, when it comes to developing new technical skills it is of critical importance that we hook into the virtuous cycle of feeling successful while we’re learning new skills.

Too often when people are starting out learning too skills, they’re playing on the regulation size field and don’t even realize it. Forging the connection between the complex tools valued by employers and the joy that comes from feeling success while using them to solve real-world problems can meaningfully demystify what is possible to a beginner. It gives learner’s the positive reinforcement and the motivation fuel required to progress to more abstract tools that can solve more complex problems — which are in turn more valued in the market in terms of compensation and job security. It’s a virtuous cycle that must take root in small ways first. People quit learning new things not because those things are intrinsically too hard to learn but because they lose motivation before establishing the flywheel of success that keeps them going. In my personal experience over the past half-decade supporting nearly a thousand people’s journey into new careers based on technical skills, Excel has continued to stand out as the best possible place to start.

Let’s not kid ourselves, you can build beautiful art, complex role playing games and even stop-motion animated music videos with Excel. More often than not, Excel may be is the right tool for even the most complicated tasks and analysis for the most technical of people. There is an extremely long tail of opportunity for dopamine rewards from solving problems in the tools that spreadsheet software can provide. At MissionU, we built an entire custom LMS using Google Sheets as the database + user interface and using AppScripts for programatic response to user input or time based automations. This enabled us to build a full featured suite of tools to automatically track and summarize Zoom seminar attendance, generate individual assignments to be tracked in real time, and evaluate granular skill performance over time, all in a matter of days. We could then rapidly respond to the needs of our students so that when we went to develop our custom engineered solution. From the actual user feedback using the spreadsheet prototype, we ruled out many features that would have been a complete waste of time to build and discovered others that we wouldn’t have even thought of if we had waited until the software had been developed. As a result, we were dozens of development and design cycles ahead at a fraction of the time and cost.

The bottom line is that it’s essential that learners have the shortest gap possible between the pain of being a beginner to the reward or feeling successful doing real work. It has been my lived experience that pretty much anyone can learn even the most complex concepts in programming if they are able to manufacture enough “wins” along their journey to stay motivated to hold the course long enough to get their hours in the cockpit logged. Excel provides an ideal tool for this purpose that is both powerful for those that are experienced and is approachable to get started for those that are brand new.

Engineering Best Practices… learned from Excel…?

After two years of economic consulting, I watched The Social Network (cliche… I know… but it’s the truth) and in a somewhat impulsive moment of inspiration I quit my job to co-found a start-up so I could get in on this whole software eating the world thing. I found myself immersed working with an overseas development team that struggled to meet deadlines and I quickly felt the pain of not knowing how to code. I lacked the technical know how and experience to guide them to success. I would wait days and sometimes weeks for what my instincts felt were minor updates to the product. I remained helpless to improve the pace and quality of the team. I firmly resolved to upgrade my Excel skills and learn to code, something that I didn’t realize at the time would take years of painstakingly hard and isolating hours to accomplish. Up to that point in my career, fortunately I had experienced sufficient pain to generate the motivation I needed to push through. Eventually, when working in my first official job as a Software Engineer at OpenTable, I was introduced to the book “The Pragmatic Programmer” and I distinctly remember my flashback of panic as I read this sentence:

“Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.” — Andrew Hunt

Back when I was a consultant I had been tasked to build an “allocation model” in Excel that would distribute lawsuit damages over once forgotten mid-century insurance policies. I could still feel remnants of the pride I had taken in the length and complexity of one particular formula because I assumed that its length and complexity were reflective of my complex problem solving ability and Excel skills. As I read Andrew Hunt’s words, I felt a wave of shame that was quickly replaced by frustration that I had been rotting in ignorance this whole time. It turned out there was an entire discipline focused on solving these types of problems that I knew literally nothing about.

On the bright side, there is no such thing as “Excel debt” (unless your name is Charles Komanaff) so the consequences of my poor algorithmic architecture were relatively minimal. Within a few months, the case resolved and my Excel model became just another forgotten file in an intranet folder. However, this real-world experience while modeling in Excel helped me to learn from the mistakes I had made solving complex real-world problems and had a near 1:1 transfer rate to help me to avoid similar mistakes and technical debt down the road as a Software Engineer (where others would otherwise inherit any spaghetti code contributions).

I am not advocating that everyone who works in Excel should study computer science (although if they find it interesting it certainly wouldn’t hurt) but I am making the claim that there are countless useful principles, concepts, and theory shared between the them. Excel also provides a simple and eloquent way of learning many of the foundational problems of computer science such as primitive types, arrays, input fields, functions, conditional logic, input fields, error handling and data visualization — to name a few. These connections are difficult to see because Excel deliberately abstracts them away because the vast majority of its users don’t actually need to understand how it works under the hood.

A visual interface for instant feedback

At its core, a spreadsheet interface makes for an ideal beginners IDE (Integrated Development Environment) and sandbox for logical experimentation and analysis. It possesses two essential features identified by Bret Victor in his landmark essay “Learnable Programming” that are essential when supporting quality environments for new learners.

1. Transparent functionality to support new ways of thinking

Programming is a way of thinking, not a rote skill. Learning about “for” loops is not learning to program, any more than learning about pencils is learning to draw.

The reason there are over 1 billion users of Excel is because it effectively bridges the gap between an intuitive visual way of thinking and a more abstract and powerful problem solving set of tools. Because Excel is built with non-programmers in mind, you don’t have to look up a tutorial about build tools or version control, you simply type the = sign and a user is prompted with a range of possibilities. The Excel toolbars are a visual way of understanding what is possible to do within a spreadsheet, without having to download the list of 471 Excel functions in their mind. Bret Victor calls this “dumping out the legos”.

With Excel, people don’t need to understand relational databases or separation of responsibilities, they can simply tinker and experiment until something works. In the process of doing meaningful work, they develop a new way of model based thinking which can be built upon. The value of this transparent functionality to the learner cannot be understated. If and when learners of Excel move on to learn to code, they will have one less layer of abstraction to overcome. It will be intuitive that they can make their lives easier by choosing text editors and IDEs that feel more familiar to them with tooltips and human readable transparency about happening within their system. Thus, these learners will be more likely to continue up and to the right in the virtuous cycle of success. As it is eloquently put by in Learnable Programming:

How does a programmer learn to write this abstract code? How does she learn to write a single description that is generalized for many cases? She doesn’t. The learner should start by writing concrete code, and then gradually change it to introduce abstraction. And the environment must provide the tools to perform this process, in such a way that the learner can understand the program at each stage.

It has been my lived experience that pretty much anybody can learn even very advanced concepts in computer science if they are able to get their footing in the concrete first and benefit from the momentum that comes when they feel the reward of feeling successful.

2. Instant Visual feedback

People understand what they can see. If a programmer cannot see what a program is doing, she can’t understand it.

With my students, I typically describe the ideal learning environment as supporting a progression from the sandbox to the beach. The beach is the real world. It’s a beautiful place where two biomes connect, land meets water and the richness of life unfolds. However, the beach is also a dangerous place for those who are unfamiliar and ignorant of the dangers the lie in the rip-current and changing tides. We don’t want our learners to lose sight of the glory of the beach but it is critical that we provide them a bounded and safe sandbox to get familiar with the viscosity of sand and how to build new creative things from the infinite possibilities that lay dormant in the mix of sand and water. In order words, we need a place where we can limit the number of things that can go wrong and where we have a reasonable expectation of where we expect them to be so that we can provide automated feedback and support on what matters most at this stage.

2012 was the birth of the recent wave of coding bootcamps, which are a 3 month immersive program where ambitious people learn to code by working through spec based assignments in pairs. Their objective in the early parts of the curriculum is for the students to experiment until they get their spec/test to pass (the sandbox) and eventually they would build their own creative open-source projects where they were able to apply what they’d learned with control and autonomy (the beach). The spec based curriculum and pair model ensure that there is instant and real-time feedback while providing room for learners to try new things and experiment. A properly scaffolded curriculum will reinforce critical concepts multiple times through mixed/retrieval practice and spaced repetition until eventually the student were prepared to begin their journey to the beach (where there is still lifeguard supervision of course). Just look at the alumni distribution of Hack Reactor, where I was fortunate to be in the first batch of students, found the alumni community HRX, and later be part of the leadership team.

I’ve always loved LinkedIn’s alumni tool to track the outcomes of various coding bootcamps because while every single now defunct bullshit 98% placement rate, there are a great many incredible life-changing transformations that take place among those who attend the better designed schools.

While at Hack Reactor I realized that for a good number of people, they had no problem starting off with their sandbox as a text editor and a spec based testing suite. However, for every student who could thrive in this context of abstraction with limited prior background in programming or math, there were at least one order of magnitude more people who struggled to get up to speed from scratch in these abstract tools, would lose motivation and flame out. Many had been negatively affected by the “It’s cool to hate math” stereotypes dating back to grade school and just never had meaningful exposure to mathematical and computational ways of thinking. From my experience working closely with those earlier down the quant curve, I believed that this is where Excel could fill a gap but it would need to be taught in a completely different way.

In 2016, I co-founded MissionU to create a program that could take eager learners from little to no quant or math experience, fresh out of high school in many cases, and progress towards higher-order ways of thinking, starting with Excel. The vast majority of these students have secured full-time employment or internships at places such as Spotify (4 of them), Chegg, Laundry, Mindshare, Insacart, WeWork and Red Bubble to name a few. It has been one of the joys of my life to work along side these eager students at MissionU and see the potential inside of each of them blossom under the right mixture of personal grit and determination, peer and staff instructional support + accountability, properly scaffold curriculum, and pioneering employer partners. These students have further reinforced my belief that ANYONE CAN LEARN TO TECHNICAL SKILLS, you just need the right system to keep your motivation high enough to keep trucking when the going gets tough, as it inevitably will.

Recently, I’ve been working with some friends on a project to teach Excel that takes advantage of the concepts discussed in this post and teaches the foundations of both Excel and programming using Excel itself as the evaluation and feedback mechanism. It utilizes the concepts from of a spec based curriculum but applies this framework to exercises in Excel. It also enables students to experiment within the actual spreadsheet environment (not just knowledge based quizzes) and gives instant feedback on the correctness of their approach. It can even detect if a student is hard coding answers to a problem or using the formulaic answer and encourages them to use the latter to naturally reinforce best practices and higher order ways of thinking. It’s called ExcelByDoing.

For example, at the conclusion of the introductory Essentials course in the ExcelByDoing series, the real-world final assessment requires learners to go to Google, look up and understand some basic concepts in Finance & Digital Marketing in order to calculate the Cost Per Click, Total Revenue and Average Discount % metrics on a hypothetical list of shoe orders. The assessment provides room to encourage experimentation using the actual tool (not just a quiz testing concepts) but it also provides context specific feedback to help learners to know when they’ve written the correct formulas (as opposed to just hard coded answers).

This process leads learners through the virtuous reward cycle and strengthens the skills of not just WHAT excel is and HOW to perform basic tasks but most importantly WHY they would ever use a SUM function in the real-world. Over time and once the foundational skills are solidified through a series of Excel focused courses, there will be a course designed to make the explicit gap between the worlds of spreadsheets and programming to translate the skills between the two.

Translating Excel into Programming

Later I’ll be posting a list I’ve compiled of some of the concepts in which I received my first exposure to in Excel but later understood their larger context in Computer Science. The working list of topics is below, but I will fill each of them out with illustrated examples in my next post.

Primitive Types

Conditional Logic

Data Structures

Algorithms

String Manipulation

Data Cleaning/Munging/ETL

Systems Thinking

Manual Testing/Tie Outs

Functions, Arguments, Inputs

Libraries & APIs

Reading Error Messages & Error Handling

Reading Documentation

Data Visualization

Formal Modeling & Problem Solving

Relational Databases & Tables

Structured Query Language (SQL)

Filtering & Sorting

Operational/Run-time Complexity

Version Control (or at least why it’s important)

Variable Assignment (Fixed vs Variable)

Usability and Interfaces Design and formatting

Originally published at www.excelbydoing.com.

--

--

Mike Adams
mgadams

CEO of Grain. 3x Founder (previously MissionU & Degreed). Sign-up for free at https://grain.co