What is it like to be a software developer?
The best analogy we could come up with is doing a jigsaw puzzle.
A lot of technology work is problem solving. You’re basically doing mini-puzzles all the time.
Just like looking for the right piece for an empty square, a lot of your time as a developer is spent looking for the right solution to your current problem.
You’ll be doing tons of research (more on that later) and writing/throwing away tons of code. Constant experimentation, searching for a solution: that’s what software development is all about.
And your brain spends a lot of time thinking about solutions, both consciously and unconsciously. You’ll never stop thinking about an issue until it’s done.
Even when you’re not actively involved in the problem, your brain will be working on it. Often, hours or sometimes even days later, you’ll have a flash of insight and immediately see the solution to the issue.
And sometimes it’ll even be hard to sleep. (Although that might be an effect of the massive amounts of caffeine you’ll be consuming, but more on that later.)
You might wake up in the middle of the night, run to the computer, and finish in an hour what you’d spent the previous couple days trying to figure out.
With that much cognitive effort, there’s one thing that makes someone really good at software development (or jigsaw puzzles for that matter).
And it’s not intelligence.
Software problems take time. Often it’s an hour of planning, ninety minutes of research, half an hour of implementation, and two hours of testing.
It’s a huge effort, but you’ve got to have the willpower to power through every single one of those steps.
And often, you’ll be working on something you’ve never done before. You’ll be in unfamiliar territory, breaking new ground, and it can get pretty frustrating.
But the good news is, you start recognizing patterns and learn to work in different contexts.
(Just like with jigsaw puzzles, to belabor that analogy just a bit more, where you know whether you’re looking for an edge piece or if you’re looking for a particular color or pattern.)
You’ll start recognizing what kind of problem you’re trying to solve and have different tools for different tasks. And speaking of tools…
You have help as a software developer.
First, and foremost, you have coffee.
Caffeine is your friend. It helps you focus on the task at hand and push through when you’re stuck with a frustrating problem.
(That’s also why a lot of software developers take Adderall. You get that artificial, priceless, laserlike focus. You basically feel like Bradley Cooper in “Limitless”.)
And when you need to get creative, you can leverage what’s known as the Ballmer Peak.
According to Steve Ballmer, there’s a peak BAC (Blood-Alcohol Content) for coding, somewhere around 0.14. So don’t be afraid to knock a couple back, especially when you’re trying to come up with a creative solution.
Beyond the substance side of things, you’ve got a tremendous wealth of resources online, especially when you’re working with open-source technologies.
If caffeine is your best friend, Google is like that really trustworthy friend who you’ll call to bail you out when you only get one phone call. (StackOverflow and Reddit are pretty good too.)
A lot of your time as a software developer is going to be spent researching people’s previous solutions and picking and choosing the best parts from all of them to craft your own unique solution to the problem.
Finally, a word about taking breaks.
You have got to make time for something fun and recreational periodically. Sometimes powering through just isn’t the most effective option.
Have an office basketball hoop and play some HORSE. Or fire up your Switch for a couple rounds of Mario Kart.
Or run to the gym and lift weights or do some cardio. Elevating your heart rate is a great way to destress. (And it’s great for your brain too!)
Just do something to relax and let your mind take a little break. Your code will be better for it.
In many ways, there’s no such thing as a typical day anymore in software development.
Even if you’re working on a long-term project, any given day is going to have its own particularities.
The best you can reasonably do is to try and organize your days around specific activities. Wednesday might be your meeting day, for example. Maybe Friday is your day dedicated to testing. Weekends could be for simple drudgery.
You’re going to have to wear several different hats, so it’s best to plan ahead and make sure you’re in the right mindset based on what work you’re going to be doing that day.
That’s especially relevant today when software developers are increasingly expected to be jacks of all trades.
You can’t just know one technology anymore. You have to know myriad different languages and backend technologies. You have to be able to hop in and help wherever you’re needed.
Companies don’t want an expert in one thing, the want someone who is an expert in many, disparate things.
So learn a bunch of different technologies and be ready to move around wherever you’re needed. That’s the best way to make yourself valuable!