The Asterisk to Human Knowledge
What you and I know about anything has a perpetual asterisk. It’s an asterisk that qualifies all human knowledge and has been subconsciously writing itself for years. It’s handy and occasionally necessary but to a certain threshold. But, once this threshold is passed, it can severely hinder society — and we might be doing just that.
In demystifying this asterisk, let me take you back to your childhood.
Did you ever play with LEGO as a kid? Or maybe Knex, Erector Sets, Tinker Toys, or just some regular wooden building blocks? I did, and I was a huge LEGO fan (and still am). I attribute my interest in software development largely to my LEGO-centric childhood. If you can relate to this in any way, you understand that feeling you get when your creation starts taking shape, piece by piece.
Now, what if I told you that you could digitally experience that same childhood satisfaction? I’m talking about LEGO bricks but for building software. Cool concept, right?
With no-code platforms, you don’t have to write a single line of code to build production-level software. Development is all drag-and-drop, plug-and-play. Yet, while theoretically an innovative premise, I couldn’t help but notice how it unintentionally expands the asterisk to human knowledge.
How? By creating another labor shortage like the skilled trade shortage we face now.
The skilled trade shortage can be attributed to two factors: schooling and recession. According to Bridging America’s Gap, the removal of shop classes from the high school curriculum prevented students from being exposed to projects that could inspire a career in a trade. The No Child Left Behind Program forced schools to shut down shop classes to focus on college. The 2008 recession only compounded the problem in which contractors went out of business and apprenticeship opportunities disappeared.
Today, we’re seeing another labor shortage: software engineers.
From the above chart, we see that there is triple the demand for computer engineers as there are bachelor’s degrees awarded. According to one study, it takes 50% longer to hire someone in a tech role than in other positions. This means companies will inevitably need to increase the lucrativeness of their offers to compete for candidates while not seeing a corresponding increase in required skills.
The 2020 pandemic was our version of the 2008 recession. We saw a dramatic increase in university deferral rates in terms of schooling as campuses went online. In a May 2020 Carnegie Dartlet survey of 2,800 high school seniors, 33% of seniors reported that they might defer or cancel if classes go entirely online. This sentiment would only add to our software engineer shortage. Yet, that’s the least of our education concerns.
While there have certainly been efforts to introduce kids to programming, they’ve honestly been lackluster. In High School, my class had an annual event called “Hour of Code.” We would spend that hour learning programming on our school Chrome Books, making simple games, or solving puzzles. While a fun and exciting diversion from the standard lesson plan, it was a novelty, a break from the norm. Yes, something is better than nothing, but these digital shop classes are too few and far between to meaningfully inspire an interest in tech. While these digital shop classes might not be abandoned, they will be left un-nurtured if no-code is overly relied on. If these classes rely on no-code, software engineering will become trivialized and misunderstood.
All of this points to the asterisk attached to the knowledge you and I possess. That is, society’s eagerness to accept abstraction and affordances. Let’s put these two concepts into the context of the software engineer shortage.
Abstraction is a fancy way to say that we’ve simplified something so much that we don’t need to know how it works to use it. No-code platforms promise to replace the software engineer requirement because now anyone can ship software platforms. While this reduces major initial expenses and makes building MVPs more accessible, it treats the symptom and not the cause.
Future Shock, a psychological state coined by 1970s futurist Alvin Toffler, is the “dizzying disorientation brought on by the premature arrival of the future.” In other words, we’re progressing faster than we’re processing.
According to Toffler, this acceleration of the timeline shortens the duration of many situations and experiences we all used to have — including the processing time needed to adapt to change. In our software engineer shortage, we substitute taking the time to improve education with a potentially short-sighted fix using abstraction. Instead of designing the school system to sufficiently introduce students to technological concepts, we abstract these concepts so much that few know why and how things work the way they do. A yearly “Hour of Code” buttressed with no-code platforms just doesn’t cut it.
Affordances are the qualities of an object or environment that allow you and me to perform an action. Whether or not you push or pull on a door, know what “righty tighty” refers to, or learn to wave your hand in front of an automatic faucet is all communicated through affordances. Programming languages also use affordances to communicate their intended use. In an excerpt from the 2014 Mountain West Ruby Conference, programming language affordances “influence the kinds of solutions we develop. The more languages we know, the more we ‘expand our design space’ so that we can come up with better solutions to the problems we face every day.”
Thus, if students rarely venture further than no-code platforms, they’re mentally stifled. No-code platforms have their own affordances, which students learn to adopt and adhere to. If left unchecked, these affordances can limit their problem-solving ability. Again, this is especially troublesome because of these platforms’ high level of abstraction and environmental lock-in.
What can we do?
If you’re an educator…
Discuss ways to introduce basic programming projects into the curriculum with other faculty members. No-code projects can be a good start, but ensure you dive into actual programming. Teaching your students Python or basic web design (HTML and CSS) is a fantastic place to start. You can also incorporate free programming platforms like Code Combat, FreeCodeCamp, and Dash that help gamify and direct your programming lessons. Even if students never become software engineers, they will always appreciate having another mental mode to solve problems.
If you’re a parent…
Encourage your children to experiment with the learning platforms listed above and with different languages. This will help them build a deeper understanding of the concepts behind what they love. If your children never decide to enter a computer science field, they will still be better problem solvers with that technical foundation.
If you’re a maker…
Build low barrier-to-entry products. But! Build them with avenues for users to learn more deeply. By helping them reduce their dependency on abstraction and platform-centric affordances, you can generate magnitudes more value for your end-user.
Using digital LEGO blocks to build software sounds incredible. For the corporate world, no-code is a good way to produce an MVP. For students, it’s an excellent way to get involved in tech quickly. But used in isolation, they can have detrimental effects if not implemented thoughtfully. Educators must be careful not to neglect meaningful technical understanding with abstraction and limit their students’ problem-solving ability. We must strategically design and balance our curriculums around the asterisk of human knowledge. That way, we won’t short-change the future generation of innovators.