When someone sets out to break into a new field, or change careers, or build a new partnership, they often talk about “getting a foot in the door.” This is true in all sorts of areas but it’s a sentiment that I frequently hear about programming. High tech, as an industry, is attractive for lots of reasons — impactful work, challenging problems, and high pay to name a few — so it comes as no surprise that large numbers of job-seekers are interested in finding a way in. Breaking into the industry in general is one thing though, getting the best jobs in the industry is another. Competition for these jobs is fierce, domain knowledge takes time to acquire, and the interview process is daunting. As a result, people hoping to get into tech in general, and programming in particular, often adopt up the aforementioned “foot in the door” mentality.
Another way to describe this approach is to say that people are aiming to learn “just enough” to break in. Usually, people take this approach in the hope that they can then parlay any initial inroads they make into something more meaningful. Although this is an understandable approach, it is not without risk. Learning “just enough” can perhaps help you land a job, but it’s not the right way to start a career. More importantly, the “just enough” approach often leads people into jobs that aren’t satisfying, which is contrary to the whole point of changing careers in the first place.
Learning “just enough” can perhaps help you land a job, but it’s not the right way to start a career.
Bad programming jobs are not only unpleasant, but they don’t provide the kind of experience necessary to transition into good jobs later on. Changes in the marketplace have made such transitions significantly harder. This is an often overlooked truth, which is why I think it’s so vital that we take time to explore the difference between a job, which you get with “just enough” knowledge, and a career, which you get by starting out with a mastery of fundamentals.
Rise of the “Just Enough” Job
To those on the outside, programming has always had a certain mystique to it — as though it were a dark art practiced only by select individuals. For reasons that are outside the scope of this article, that aura of impenetrability has at times been encouraged by people in the profession. In reality though, programming is a logical pursuit. It is not easy per se, but it can be learned by those willing to put in the effort. However, programming has had a hard time shaking this reputation for difficulty. As a result, fewer people have entered the profession, fewer employers have taken the time to understand it, and relatively straightforward programming skills have steadily commanded high salaries.
What then is a “just enough” job, and why has it so dominated the industry in recent years? In my view, speaking specifically about web development, we can define the term and explain its rise as follows.
- As a counterpoint, a “just enough” job is not one that requires full application or systems design (those jobs have always required much more expertise.)
- A “just enough” job is one that only requires limited programming skills, which a budding programmer can learn relatively easily. And yet, even this relatively shallow skill set has historically been enough to intimidate many employers. As a result, disproportionately high salaries have long been the norm.
- A “just enough” job is one that appeared as a response to the rise of e-commerce and social media, when virtually every business — not only engineering-centric businesses — found itself in need of a web presence.
Together, these factors led to a massive overvaluation of “just enough” programming knowledge. And any time a relatively easy-to-acquire skill is vastly overvalued, a market will pop up to take advantage. That’s exactly what happened with the rise of the coding bootcamp. All of a sudden, there was a huge market for relatively straightforward coding skills and entrepreneurs realized that they could teach people enough programming to get a job in just a couple of months. And, unsurprisingly, a lot of people jumped at that chance.
Contrast this with almost any other field and it becomes apparent why the “just enough” model is unsustainable. Imagine, that you wanted to become a professional musician. If you spend 10 weeks learning to play the guitar, you can probably learn a lot about scales, and chords, and basic music theory. This is the “landing page” equivalent of music knowledge — it’s important, but it’s still just prefabricated pieces. However, could you book a gig with this level of music knowledge? Probably not. And yet, that’s what happened in the early 2010s when the market called out for masses of workers with basic programming skills.
And yet, just as the aura of impenetrability once misinformed businesses about the difficulty of programming jobs, now the aura of “just enough” misinforms the public about what it takes to get a good job. The market is changing, but the advice that well-meaning and experienced developers give to aspiring programmers isn’t. Many still advise people to “just get your foot in the door.” They give this advice in earnest because, after all, this is how they got started; however, that advice is actually detrimental to today’s beginning programmer.
“Just Enough” is Becoming “Not Enough”
Make no mistake, software developers are in greater need today than at any time in history. In fact, there is a huge gap between the number of jobs available and the number of people qualified to fill them. But the key difference is that these jobs are not “just enough” jobs. The job market for developers has evolved significantly since even just a few years ago. The reasons are varied, but a few key points are worth mentioning.
- Overcrowding: The market today has too many junior developers and not enough senior developers. The ability to make and maintain a landing page is no longer enough to get a job — now, programmers need to demonstrate their ability to design and implement complex applications.
- New Tools: Businesses that need a landing page, blog, content management system, or even a full-featured e-commerce marketplace no longer have to hire a developer to make it for them. At significantly lower costs, businesses can instead turn to the likes of Wix, Weebly, Wordpress, and Shopify — and they can do so with zero programming expertise.
- Competition: It used to be that landing page-type skills were not only enough to make a good living but also enough to parlay a bit of experience into a better role. However, with the automation-driven death of landing page-type jobs, many developers are trying to move into the aforementioned better roles, thus drastically increasing competition for them.
Tech is, in many ways, an unforgiving industry. It moves rapidly and leaves behind those who don’t adapt. Changing technology has already eliminated some low-level programming jobs, and as that technology improves other low-level jobs will be at risk as well. Not to mention the fact that the “just enough” jobs will be the first to go in the next economic downturn.
A Job and Job Satisfaction Are Not the Same Thing
Market conditions aside, there is another problem with “just enough” jobs: they don’t provide long-term job satisfaction. Another unfortunate side effect of programming’s aura of impenetrability has been a lack of understanding about what makes for a good programming job. As wonderful as it would be for every job in tech to be exciting, challenging, and fulfilling, that’s simply not the case. The truth is that lots of programming jobs are downright terrible. In some cases, they’re terrible because the work itself is pure drudgery, and in others they’re terrible because the people doing them aren’t valued by their employers.
As budding programmers, it’s vital that you aim to work for companies where programming and software engineering are “profit centers” rather than “cost centers”. That is, the company seeks to invest in programming and software engineering, rather than seeks to drive down its costs.
Consider the difference between working as a programmer at a company where the engineering department is a profit center and one where the engineering department is a cost center.
- The company’s primary product is engineer-driven.
- Programmer compensation is high because company profits are directly tied to the work programmers are doing.
- Company leadership values high-quality code.
- Programmers get to work on interesting and challenging tasks.
- Programmers have greater autonomy due to their status as a profit-driving force in the company.
- The company actively invests in the growth and education of their programmers.
- The engineering department’s only role is to support profit-centers in the company.
- Programmer compensation is lower because the engineering department is seen as a consumer of revenue rather than a producer of revenue.
- Programmers are tasked with the bare-minimum necessary to support profit-centers, resulting in less interesting work.
- Rather than invest in the engineering department, the company is actively looking for ways to cut engineering costs.
The difference between working in a profit-center vs. a cost-center is immense — both from a day-to-day perspective and from a career perspective. This is true not only for programmers but for many fields. If you’re thinking of changing careers and want to break into tech, this is an important consideration that will significantly affect your job satisfaction. This does not mean that you have to work for a classic engineering company — it just means that you should aim for a company with a culture that views engineers as vital rather than incidental to the company’s overall success. Engineering-centric companies are naturally going to provide better experiences for programmers; however, they’re also significantly more competitive.
Why Learning More than “Just Enough” Is the Key to Job Satisfaction
If you’re an engineer, it’s self-evident that it’s better to work for a company that values engineering work as opposed to one that does not. That doesn’t necessarily mean that the company has to be an “engineering company,” but it does mean that the company has to recognize the importance of what engineers do and treat it as a competitive advantage rather than a cost sink. And a good company will demonstrate its understanding of your value in a variety of ways: compensation, respect, mentoring, intellectually stimulating problems, and much more. All of these are vital components of your overall job-satisfaction.
Of course, there’s a catch in all of this. Great companies will go out of their way to show you how much they value you, but first you have to prove that you’re valuable to them. And how do you do this? Through consistent demonstration of competence and long-term potential. In other words, these are not “just enough” jobs. To the contrary, getting these jobs (and keeping them) requires a mastery of fundamental skills and a commitment to lifelong learning. Jobs at companies like this are competitive and to get one you’re going to have to show that you have something to contribute. This does not mean that you have to be one of the mythical “10x programmers,” but you will have to show that you’re a good cultural fit for the company and that you’ll be able to keep up with the demands of a challenging (but rewarding) work environment.
Those who feel they can find any job to “get their foot in the door” and then transition to one of these profit-center jobs are in for a rude awakening. There’s a strong firewall between these two job types, and working one’s way up to such a job would be equivalent to trying to work one’s way up to a top chef’s kitchen by starting from a fast food joint flipping burgers. The fastest way to jump that firewall is through structured learning through fundamentals.
The market for people with programming skills is in a massive state of flux right now. We’re on the downward slope of an unreasonable overvaluation of basic programming skills and entering a more traditional phase where competence is rewarded over “just enough”, and simple jobs that can be automated are being automated. The result of this shift is that “just enough” programming knowledge will soon be “not enough”.
To some, this might sound like a bad news story, but I assure you it is not. All of us are better off in a settled market where competence is appropriately valued and uninteresting drudge work is automated. More importantly, this shift away from “just enough” jobs does not mean a shift away from programming jobs in general. Software engineers are still in incredibly high demand; however, breaking into the industry increasingly requires a solid foundation in core skills. Acquiring these skills may take a little longer, but with the right approach it is absolutely possible — and in the long run, it’s well worth the extra time.