by Gordon Zhu, March 2023
Here is a collection of my recent thoughts on programming teaching and hiring. The big themes are:
As the federal reserve has raised interest rates, companies can no longer spend lavishly on questionable things. One of those lavish things was hiring thousands of programmers that could barely program.
In the gold rush period from ~2011-2021, you could, with reasonable odds, get a programming job with shockingly little effort. I witnessed firsthand many students that haphazardly worked through 3-5 online tutorials and got programming jobs within a year, sometimes within months.
This created a situation where the market was flooded with thousands of "professionals" with scant ability. Put it another way, if you sounded even a little like a programmer, that was enough. Actual coding ability was viewed as an optional bonus.
For people outside of the tech industry, this seems baffling and implausible. But note how in 2023, Twitter fired over 73% of its staff with seemingly no negative effects. Now imagine this across the entire industry.
Early in my career, sitting in a huge building with hundreds of people on a campus the size of a small city, I thought to myself, "we could lose half these people and no one would notice." But it turns out I was far too conservative.
As a rational response to the unusual gold rush environment, learners for over a decade exhibited behaviors that in retrospect seem shockingly naive and entitled. But in their defense, I think they were simply responding to incentives.
When beginners looked around, they saw how easy it was to get into the industry. In terms of learning behaviors, what emerged was a path of least resistance. But in terms of actual learning outcomes, it was a race to the bottom.
A cynical optimization problem emerged: "how can I get a job with the least skill possible?". X-month cram schools quickly emerged to guide students on this path. We even saw this reflected in popular memes. Things were so good that people were proud and secure in their incompetence.
As someone that cares deeply about intellectual development, I had the unfortunate luck of starting my teaching career in the middle of this gold rush. Our approach is one that requires a lot of patience, care, persistence, and productive struggle.
What we stood for was directly at odds with the cynical optimization problem and the wider programming culture. Watch and Code was not just unappealing, some argued, but also pointless. Why do all that work when you can just avoid it completely?
This made it very difficult for us to find students. Only those who were philosophically aligned and intrinsically motivated stuck with us. Seeing how few people truly shared our values was difficult to digest and deeply depressing.
Now that the gold rush is over however, companies care about employee performance again. In other words, being good is no longer optional. We think this is a positive change for learners. When it pays to do things well, people will respond to those incentives too.
A whole industry emerged to provide a solution to the cynical problem. These companies took the form of x-month cram schools. They offered the following deal:
Give us ~$20,000 and there's a good chance that you'll become a programmer.
There were numerous issues around how these schools advertised misleading success rates. They engineered the numbers to make success look like a sure bet when it wasn't. But enough students got jobs for most people to look the other way.
However, now that the enough threshold is not being met, students are angry. The terms of the deal have been violated. They're still paying $20,000, but what are they getting? Many are discovering the hard way, not much. Some places will adapt, some will shut down, some will get acquired in fire sales.
Aggressive cost-cutting measures have made all professional engineers vulnerable to layoffs. In more targeted layoffs, especially at smaller companies, weak performers are the most vulnerable.
To increase the odds that you can hold on to your job, focus on job performance. In a targeted layoff, companies will rank employees by performance. Before that happens, you want to do everything you can to rank as high as possible.
Rapid promotions that came too easily are also coming back to haunt many. The low bar at the interview stage bled into promotion cycles too, as companies struggled to retain employees during the gold rush and doled out inflated titles. Many developers found themselves with senior-level titles, without senior-level skills.
The same title inflation can hurt you in interviews too. In some cases, where the skill gap is just too large, we advise students that were laid off from senior-level roles to change their job titles from "Senior Software Engineer" to simply "Software Engineer".
At the same time, prepare for potential layoffs by working on interview skills. If you entered the industry after 2010, understand that interviews in a downturn may be much harder than interviews you did in the past. A passing interview performance in 2015 might be disqualifying today.
It can be very difficult to self-assess your strengths and weaknesses, so being part of a structured program like Watch and Code where you can get high-quality feedback can be invaluable.
There are two ways to look at things:
I'm partial to #2. The cram schools of the last 10 years never made any sense. So on the whole, it's a good thing that the hype around them is finally getting stale. In many ways, this is a healthy development and a return to reason.
At the same time, the payoff from learning how to solve computational problems are higher than ever. Every field now is a branch of applied computer science. So if we are curious about our world, we must all become programming students.
As a school focused on finding the best way to teach programming, we think that's an exciting prospect.