Your happiness should not come from your code

It’s exciting to learn

One of my best students is going through college. He’s innovative, smart and amazing. However, the opportunities for him are scarce because of a stupid prejudice: being young. I have been mentoring him for two years and he’s gotten full-time jobs while going through college, but very few companies will believe he’s an experienced developer. Nobody actually believes he has 2 years of full-time experience. The few companies that have given him interviews have been amazed by him. He even got an offer to intern at a FAANG-level company.

However, while the FAANG offer materializes (thanks, COVID) he’s been working a mediocre programming job to make ends meet. It’s great for his résumé, but it’s still shit pay. Worse, it’s a completely soulless job. There’s only so many times placing a label and changing its color will give you that endorphin rush.

A few days ago he approached me for help: he was totally burned out. He hated his job because it was not rewarding. The team was filled with interns that were learning and he is already a competent dev, so not only are the tickets he works on boring, he has to constantly fight everyone in code reviews so that they don’t ship shitty code.

Can you move this level 5 pixels to the right?

When you’re coding and learning, you’re (usually) happy! You feel useful and smart and amazing. It’s a perk of the job. Feeling useful and smart is one of the best feelings in the world.

Then you finally land your first job! Your interview may have been extremely difficult (e.g. reverse a binary tree while someone is carefully noting your every mistake) or it could’ve been a take home test. What matters is that you’ve proved to your interviewer that you can code.

Your boss then greets you, onboards you (if you’re lucky) and asks you to just pick a story to get started. Here’s a few examples:

  • Add a button to continue without an account to the welcome screen.
  • The user is sometimes crashing when they go to their Settings screen.
  • Add search to the [REDACTED] table view.

It’s all about UI, consuming an API, using the camera/microphone. Learning how to do each of those things will give you an adrenaline rush and getting them merged into develop and seeing them on the App Store is amazing.

The first time.

Oh, and that one too. 5 pixels to the right.

Most apps out there are just dumb clients for a web service. Think about the most popular apps: Youtube, Facebook, Instagram, Tik Tok. All of these are the same: show a list of [videos, articles, photos, videos] that come from the API, then make it so that the user can post [videos, articles, photos, videos] and share them.

So what you end up with is a lot of apps where you’re implementing the same things over and over. Oh, another table view. Yes, another API call. Look, I need to show an image picker so that the user uploads a photo again.

Sometimes you’ll get a task to implement something new or refactoring your front-end to SwiftUI. That’s going to be really fun because you’ll be learning and improving.

Other days, however, you’ll be doing boring, monotonous tasks and that’s okay! It’s okay as long as you understand that the company is paying you to do a job, whatever that may be. If they want to pay you to put labels on the screen and change their color, it’s up to you to decide if that’s worth your time.

Your work should contribute to happiness, but it shouldn’t be your main source of happiness

My advise to my student was to remember that programming is like a sport. Playing football or DOTA with your friends is going to be awesome. Even if you’re competitive, you’re going to shoot the shit and have fun, because sports are themselves a leisurely activity.

However, if you want people to pay you for doing a “leisurely” activity, you better get ready to be serious. Put in the work and do the boring stuff too. It will still have ups and downs, but you must understand that programming for fun is not the same as programming for money.

Now, if your job is shit, don’t just suck it up and stay. Be active, try to be an agent of change. If that fails after several attempts, then you should absolutely look for another place. Just don’t fall prey to “the grass is always greener…”. No codebase is perfect, no team will be amazing all the time, and there is literally no chance that you find a backlog filled with only interesting stories.

If you liked this article, please consider subscribing! I write a weekly newsletter with a 15-minute coding exercise, and additional sections like interviews from members of our community.