The life of a programmer is hard. I’m not saying other jobs are easy. However, making a living as a developer demands solid effort and consistent focus. Us developers work alongside marketers, designers, managers, content creators, and many others. But, our quirky (and rewarding) lifestyle is often misunderstood.
What developers wish their colleagues understood about our jobs:
- Though others may not “get” what we do, we love it!
- We get deeply involved in our work – normal workflows don’t always apply.
- Sometimes, we gamble with new tech fixes, which can work out very well or very poorly.
- Certain frustrating fixes can take days to research and seconds to implement.
- It’s worth all the hard work to finally achieve victory!
- We’ve dedicated our working lives to supporting our colleagues and users – let us know how we can help!
In this blog post, I describe the many moods we developers experience at various points in our workflows. If you’re a developer, you’re probably way too familiar with these scenarios. If you work with developers, take a moment to smile at and better understand our world.
We’re a different breed, but we share one goal – giving our customers and co-workers the support and innovation they deserve!
1. Rocking Out in the Excitement Phase
Just like a cowboy in a western, your “trigger” fingers start itching. You get a healthy buzz from the endless possibilities that await you – you’re inspired by that one amazing idea.
Let’s face it – you know you’re going to drop any and all plans and dive into this project with every drop of energy at your disposal. You’re going to be up all day and all night.
Sooner or later, you snap, drop everything, and start coding this exciting new idea into reality – one line at a time.
Most of the time, this burst of motivation is a good thing. It catalyzes action like a drop of nitro inside your fuel tank. You feel hyper-focused and complete tasks at lightning speed.
However, you sometimes get excited about things that aren’t priorities. You chase tangents. In all your excitement, you find it difficult to satisfy your curiosity about solving this problem.
2. Getting in the Zone – And Loving It!
In The Social Network, Justin Timberlake’s character tries to greet a group of hackers. The Zuckerberg character says, “Don’t bother greeting, they are in the zone.”
Sometimes, you get the ball rolling so fast that everything else becomes a blip on the horizon. You put off your lunch break for hours. Your eyeballs start to turn yellow because you can’t stop—not even for a minute—to visit the restroom.
You code and code and code. With every code execution and every error, you feel the solution waiting for you – right around the corner.
“If I just fix this error, I can commit and take a break.”
Sound familiar? Does the voice in your head keep you going… to fix… just one more… bug?
This phase can go on for a full workday. After work, you feel hungry and tired, but happy. You’ve slayed yet another “bug monster” or reached the summit of one more “feature mountain.”
3. Refactoring Your Systems and Putting It All on Red
From time to time, you have epiphanies.
You discover a new technology or a better way of doing something. You feel eager and excited. You know this is exactly what you need to make your code faster, cleaner, and more optimized. You feel pumped up and dig in hard.
However, this phase often doesn’t end well.
Your great idea wasn’t necessarily a bad one. But, the thought that this was just a minor adjustment goes out of the window. After a week of refactoring, you realize one of two things:
a.) This is too big of a piece of cake to eat all in one go.
b.) This idea just isn’t working out with the current codebase.
However, these solutions sometimes work out. Your miracle really does everything you imagined it would. It’s a gamble, but refactoring failures are totally worth the feeling you get when your dreams really do come true.
4. Creating a Custom Bit of Software – Despite Your Better Judgement
Creating a custom bit of software is generally not considered a good idea. Updates to the main libraries are almost certain to break it.
However, the temptation is always there. Even if you decide not to include custom elements in your software, you’ll eventually break this rule
It’s just because of the fact that cool things aren’t built in the main library. Is it my fault that your product doesn’t have popups that shoot fireballs? If your designers sold this feature to the product lead, you have to put it in there – end of story!
5. Getting Over the Hump and Feeling That Magic Moment
The hours (and days) you spend stuck on something are far from enjoyable. They drag on and on and on… until you find that magic bullet.
You may be working on something new – or eradicating a particularly nasty bug.
Whatever it is, it’s something you just can’t put your finger on. You comb through the Internet, read the relevant docs, and look for any hint about how to proceed.
At the end of the day, you might have nothing to show for your hard work. You may have spent your entire work day cracking code and trying several different versions – all to no avail. In the end, however, your commit count is around zero. You have no more lines of useful code than you did when you got to work in the morning.
However, when you finally experience that Eureka moment, you feel incredibly relieved. You find a simple and straightforward solution. You wonder why didn’t you think of it straight away – instead of wasting days cracking code to find it.
After two days of steady work, one little line of code solves it all.
6. Realizing Software Development Isn’t Easy – But It’s Worth it to Our Users!
Here at Toggl, we developers have a catch phrase:
“How hard can it be?!”
When something seems simple, it’s probably quite hard to execute. For example, we recently dealt with constraints in Cocoa. All we needed to do was change the constraints of certain elements at runtime. It seemed quite easy: if we click here, we change the constraints.
But, we didn’t know the documentation for constraints was quite vague; we found precious few examples floating around the Internet. With good old trial-and-error, we eventually got it to work. But, this seemingly “simple” task was far more difficult than it appeared at first glance.
The Surreal World of Software Development
Every day, we developers fight these (and many other) battles. Some of them are harder than others, but each is a necessary piece of the puzzle – creating the new functions our users love!
NB: Check out why Toggl is great for web and software development teams.
If you know any other problems developers must deal with, feel free to post them in the comments!
Images courtesy: Mart Virkus @ Toggl.com