"Does it get easier?" Yes, but Also No...

Many question marks

Image by Arek Socha from Pixabay

It's complicated...

"Does it get easier?" I see some form of this question asked a lot in beginner programming groups. I always struggle with how to answer this honestly and clearly, because the truth is not that simple. In some ways it does get easier, but in other ways it is almost always going to be difficult if you are advancing in your career. If you are a programmer and your job is easy for years on end, the most likely explanation is that you're in the kind of dead-end position that people try to avoid, not the kind of position people dream about when they think of becoming a developer. Most likely you are not getting better at being a dev, not working with new tech or solving new kinds of problems, not being given more responsibility, etc. etc. etc.

I've seen some pushback from other newbie programmers on the idea that it could remain difficult past the initial learning stage. Notably I have never once seen somebody who's already working in the industry try and argue that. Some claim it's gatekeeping, others will say "if it's so difficult why don't you go do something easier?" Now I'll be the first to admit that there is way too much gatekeeping in this industry, and I've experienced plenty of it, including in interviews where my geek creds were being checked in the name of "cultural fit". But talking about how programming remains hard for your entire career is not gatekeeping: it's trying to let people know what they're signing up for.

Difficulty is not a value judgement.

As for the second argument, "why not go do something easier?", this, of course, is a logical fallacy (not to mention a question that reveals more about the asker's attitude than the person they are asking). Difficulty is not a value judgement. Just because something is difficult that doesn't mean it isn't fun, worthwhile, fulfilling, or any other good thing you can think of. There are plenty of careers that we commonly accept as both difficult and worth doing: medicine, law, engineering, rocket science, whatever. And I think many would accept the idea of parenting being something both difficult and worthwhile. So there is no reason on earth why the same should not apply to programming. In fact, there are many of us that choose this career because it is so challenging: the difficulty and always-changing nature of the work is a big part of the appeal. There is also another big reason many want to get into the field: it is seen as a lucrative career. Thinking about it logically, if it were so easy, why would it pay so well?

That said, again, there are some things that get better. Many folks struggle a lot in the very beginning because they have to learn a different way of thinking in order to program, and once they have developed that new, logical mindset it gets a lot easier. As your problem solving skills improve, it will take less time to solve the same or similar kinds of problems. After you've worked with a given language/framework/code base for awhile you won't have to look things up as often, or when you do need to look them up (you do NOT need to keep everything in your head, just know where to find it) you'll know exactly where to look, including for examples of similar functionality you've built in the past, so it'll be both faster and easier. Past successes also tend to lead to more confidence in the future: once you've proven you can, in fact, do hard things, then doing more hard things in the future seems less daunting. And of course if you're learning in a very intensive course or bootcamp, once you start working that sort of intense drinking-from-a-firehose feeling is not going to be there most of the time (although it can still feel pretty insane whenever you start a new job or project or get new responsibilities... but at least then you're getting paid for the insanity!). These kinds of things do legitimately get better.

A brain and neural connections superimposed over a woman's head.

Image by Gerd Altmann from Pixabay

What doesn't get better? For starters, you will never be able to stop learning if you want to stay in the industry. There is effectively no way to "master" anything in the sense of learning everything there is to learn about something and then being done with it. Even if you stay in the same tech stack, there are always new versions coming out. Not only are there bug and security fixes you will want and need to take advantage of, but at a certain point you will be forced to upgrade as hardware/OS/framework/programming language versions become obsolete. Sometimes the tech you're working with will even get completely discontinued, so you will need to learn an entirely new way of working. A very recent example is Flash being forcefully discontinued at the beginning of the year. All those programmers and users had no choice but to move to something else.

In addition to this, the kinds of problems you will be expected to solve will only get harder and more complex as you advance in your career. Not only in terms of business needs (a company is unlikely to continue solving the exact same problem in the exact same way over and over, after all), but also in terms of responsibilities. A junior may be told what the user interface should look like and what kind of approach to take to program the back end, where an intermediate dev will be left to figure most of it out on their own (with supervision and assistance from more senior devs), but a lead dev will have to come up with the entire architecture for the project. "How to program" is really just the start, even if you specialize. Database schema design, user experience, accessibility, architecture, networking, scalability, security... The list goes on. There is no way you're going to know all of this coming out of a bootcamp or even from a 4 year degree plan. But if you want to get promotions and more money, you will need to continue learning and improving.

A partially assembled puzzle version of a hundred dollar bill

Image by Arek Socha from Pixabay

Learning to program is not a get-rich quick scheme.

I write this not to be discouraging, but because I want people to understand what a career as a programmer really looks like. Particularly right now, when there are a whole lot of people making a whole lot of money selling the dream of becoming a dev, many of whom are quite frankly selling the modern-day equivalent of snake oil, I think it's important for those of us already in the industry to be clear about what it's really like. Learning to program is not a get-rich quick scheme. It takes quite a lot of both time and effort to start, and the effort part is never going to go away. Time, arguably, becomes less of an issue; professional development should be on your employer's dime once you get a job. Granted there are plenty of (in my opinion quite toxic) workplaces and devs that promote the idea that you need to program non-stop and have no personal life in order to stay relevant; that is thankfully not actually a hard requirement, unlike the effort. Either way though, if you are turned off by the idea of constant learning and ever-increasing difficulty of job duties, this is not the career for you.

It's hard, but you can do hard things!

On the other hand, if that sounds amazing to you, like it does to me and many other devs, come join us! It's hard, but you can do hard things! It's (usually) fun and interesting and it's rarely boring. Plus you get to see people look super impressed when you say what you do for a living. A++++, five stars, would highly recommend. I can't imagine doing anything else for a living, even if I am well into in the 4th and final stage of a dev's life:


Newbie Developers: "I don't know anything!"

Junior Developers: "I know everything!"

Senior Developers: "I know nothing!"

Veteran Developers: "I know nothing about everything!"

— Casper Beyer (@caspervonb ) April 11, 2018

22