So, You Want To Be A Programmer — Part II

Alexander Katrompas, PhD
7 min readJan 15, 2024

--

A while ago I wrote, So, You Want To Be A Programmer, detailing the 5 most important things you need within yourself; 1) attention to detail, 2) mathematical and logical intelligence, 3) love for algebra, story problems, and puzzles, 4) love for learning, and 5) passion for programming and technology. Since then, I’ve known a few people who both read that story, and were just getting into programming, while proudly declaring, “I have all those things!” Since then, a few have re-declared, “I hate this, I’m out.” So, it occurred to me, there is another part to this story and it also requires telling. Part I focused on what you require within yourself to be successful as a programmer. This part focuses on what you need to understand outside yourself, and in some cases what you will need to endure, to be successful and happy, as a programmer.

Coding Is The Least Of Your Time

When I got into programming in college, it was literally for the love of programming and technology. I was in the first year of grad school in economics (yeah, I know, what the hell was I thinking), and I had to learn to program for an economics course. After one class in programming, I was hooked. I walked out of the economics department, walked into the computer science department, and said, “can I be here instead?” They said yes, and I never looked back. Back then, I had all these wonderful delusions of coding all day for a lot of money and being happy doing what I love. Unfortunately, that’s not how it works.

In an average programmer's day, if they get 1-hour of real, substantial, and new code accomplished, it’s a minor miracle. I would estimate that accomplishing real, substantial, and new code is about 2–3 hours per week in the average programmer’s life. The other 50+ hours per week is pure overhead, both technical overhead for your job, and also mixed in with a lot of corporate nonsense.

So what is programmer's day filled with?

Meetings, meetings, and more meetings, most of which is to stroke the egos of non-programmers who are trying to get their job’s worth. I had a great boss once (once), who said, “Any meeting over 15 minutes is not a meeting, it’s a social event.” He was right, and as a programmer, you need to be prepared for a lot of these “social events.”

Documenting, documenting, and more documenting, and all of it to corporate specifications. You will be writing a lot of documentation. Ironically, this is a good thing (embrace it happily) because if you work in a place that does not require this, then you will replace the documenting time-sink with trying to figure out all the things that aren’t documented (that’s worse, trust me).

Testing, testing, and more testing. Most new programmers are shocked at the amount of time and code it takes to do proper testing. If you’re doing it right, testing will be 2–3 times the code and time you spend actually coding new features. If you are not spending that time and energy happily and well, then you will spend it fixing the bugs that returned to you because you didn’t test well enough. Then you will spend your time fixing up your resume and seeking employment because you got fired for not testing well enough.

Restarting a project, again, and again, and again. Do you know what “agile development environment” means most of the time? It means the people who are responsible for this project have no idea what they really want, even if they think they do, and they are hoping if they spin you in circles long enough, then you will stumble across it for them. For every three steps you take forward, be prepared to take one or two backwards, restart, redirect, and try again. This is because “agile” usually means, “try this… nope… how about this… crap, that sucked… how about this? Yes, we like that, keep that, but throw out the other stuff. Okay, now try this… nope…” That reminds me, someday I need to write a story about why agile is bullshit, and it’s just an excuse to suck and pretend to work because that’s mostly what it is now.

Googling, reading, googling, reading, and more googling and reading. Every day you wake up as a developer, one of three things is true about that day; 1) you’re now obsolete; 2) you have to do something today you’ve never done before; 3) you’re both obsolete, and you have to do something you’ve never done before. There are days you will read, try, read more, try more, experiment, read more, and when the day comes to a close, you finally wrote one good working line of code. Get ready for those days.

Your Work Will Be Thrown Out

Related to the “restarting again and again”, be prepared to have your work thrown out, abandoned, and ignored. One of the biggest “problems” in today’s corporate America is the “fail fast” mentality. Somehow, the idea that we need to fail fast and pivot at every sign of a difficulty has been so ingrained into American corporate culture, especially in entrepreneurial culture, you have to be prepared to start projects which will be thrown out before you’re even half done… thrown out just as you’re finishing, and it will never see the light of day… thrown out even after it launched, and it worked perfectly, but it’s no longer “business viable.” This is all because you, and your work, are subject to the fail fast mentality, which is purely a business decision. To be fair, maybe this is not an issue for the business (why I put “problem” in quotes above), and this is how business is successful today. I don’t know, I’m not a business professional, I’m a software engineer and computer scientist. So, all I know is this, for us, our work is a matter of pride, but for the company, it’s just a line item on a balance sheet. That means as soon as that line turns red, regardless of what point you are in the process, no matter how good it is, your work is terminated (and so are you if you’re not careful). Obviously, this isn’t always the case, real products do get made, but you have to be prepared for this to happen more often than you would think, and brace yourself for the pain of it.

You Will Be Stressed

Because of everything I just said, being a programmer is stressful. At times, very stressful. Astute readers will also notice, above, I implied 50+ hour work weeks. On top of everything else, get ready for that stress as well. Fifty-plus hours per week is the norm, and “overtime” (without overtime pay) is when you can’t go home tonight, and somehow the boss thinks if he throws the team a couple of pizzas it will make it all better. It doesn’t.

So, a programmer’s week goes like this… meeting, meeting, documentation, testing, meeting, reading, experimenting, documentation, testing, bug fixing, testing, bug fixing, testing, meeting, refactoring, documentation, testing, bug fixing, testing, refactoring, coding, meeting, committing, refactoring, meeting, documentation, committing… and then when the week comes to a close, you can proudly look in the code-base and see those shiny new lines of code you contributed… all 8 of them… after 52 hours “work.”

Artificial Intelligence Is Coming For Your Job

Any discussion today of a programmer’s life would not be complete if we didn’t discuss AI and scare the crap out of you. So, I wrote all about it. If you would rather not read all that, here’s the TLDR; summary. AI is about to start reducing programming career opportunities (and salaries), and will eventually remove most of them. I also wrote about this in another story (look under claim 5). In both stories, I state day-to-day programmers are in trouble long term (5+ years). That’s my story, and I’m sticking to it (for now).

I also need to take back my previous statements about the rise of the programmer technician. In that story, I talked about not needing to have an advanced degree, or any degree really, to be what I termed the programmer technician (i.e., the day-to-day coder). Back then, I claimed we are in the middle of the rise of the programmer technician, a person who does a lot of the day-to-day grunt work, assembling technical pieces, much like a factory worker on an assembly line. This job, I claimed, is a great career choice for many. Well… not so much now. I have to take it back. The day-to-day coder is squarely in the sights of AI, and corporate America is just dying to pull that trigger and put the bullet right between the eyes of the day-to-day coder. Bet on it.

So, You Might Be a Programmer…

Despite everything, I just said, you still want to be a programmer. Good. Me too. However, you need to be realistic, and set yourself up for success now. If you read through my Part I, and you thought to yourself, “that’s me!” then now have a serious conversation with yourself about this story and ask, “is this still me?” Can you deal with the overhead of this profession and live for those few lines of brilliance you will create each week? Can you pivot with the business and not take it personally? Can you shrug off the stress and live in your own head, happy with your own work? Can you rise above the pack and master AI before others do, and before AI masters you?

If you can say yes to all that, you might be a p̶r̶o̶g̶r̶a̶m̶m̶e̶r̶… software engineer.

--

--

Alexander Katrompas, PhD

Prof. Computer Science, Senior Machine Learning Scientist; specializing in AI, ML, Data Science, software engineering, stoicism, martial arts, Harleys, tequila.