Tate Price, a Firehose graduate and software engineer at SPS Commerce, is a former professional athlete turned software salesman turned developer.
He wrote this guest post for the Firehose blog on the truth of his day-to-day experience as a new programmer, and why it’s worth every minute.
With technology becoming more and more prevalent, the high demand for programmers and development skills has caused a lot of people to pursue a career as a developer for the wrong reasons.
At the end of the day, if you’re motivated by the wrong reasons, it will become pretty obvious pretty quickly. You’ll hate yourself. You’ll hate programming. And you should find a different career.
But know that some programmers genuinely love the work they do with an inexplicable passion, and that’s why they come back for more day in and day out. Take it from Tate, and do something you love every day.
“None of this makes sense….”
I kept repeating these words as I stared blankly at the components of my first production-level application. I had read through many documents and navigated through a number of online tutorials, but none actually proved relevant or helpful to my current situation. Everything on Stack Overflow assured me that this was “the easiest way to complete task X,” but you see, the authors of these posts didn’t write with the expectation that their audience would be detangling and refactoring a poorly built application to make it functional. Alas, I dove back into the fray.
Here’s the truth: Development work can suck. Really, really suck.
Software development can feel like digging for treasure without adequate resources. You have a shovel, yes, but you don’t necessarily have all of the other tools that would expedite the process. Rather, you are typically given a deliverable, two weeks to complete the task (or tasks), and sent on your way. (This is the current sprint design at my company, and might differ based on your company.)
Thus, the majority of your time will be spent correctly Googling (read: not searching “broken Angular application” and pasting the logging error from your terminal) and trying to find sites that might apply to your current predicament. This is reality. But soon enough, you gain some traction, and then a little more, and then enough to feel forward momentum. Soon, you are a coding machine cranking out lines of code the likes of which only Zuckerberg or Gates could produce.
Then something breaks. Again. And you must continually repeat steps A through C to get back on track.
The validation is in your code.
Even after the large problem is diffused and you push your code up for review, there is no guarantee it’ll be accepted. You might’ve used a component your current site cannot support (do not get me started on Cross-Origin Resource Sharing…) or you could have written bloated code that, while effective, is wholly inefficient and must be refactored. So, you rinse and repeat and rinse and repeat.
Finally, after all of the trials and tribulations, your code goes live. And guess what? No one really cares. Your better half, your parents and your friends, unless engineers themselves, will stare blankly as you proudly demo your work and at the end ask: “Why is the bar at the top of the screen blue?”
Love the work not the rewards.
This tale might not apply to you. Maybe you are a better coder than I am and you have never had to experience the Oh sh**, what am I supposed to do??? moment. If so, kudos and you can skip the rest of this post. But for those of you who can empathize with this struggle, I want to tell you this:
Despite every frustrating second of rewriting the same code day in and day out, I love my work.
I wouldn’t trade it for all of the gold in your Fort Knox (shout out to Jeremy Irons). Even when my wife asks me why I stay up until 3am running regression tests, or when I tell people that I am a software engineer and their first question is, “Can you build me a website?”
You know why I still love it? Because I can build their site, and it will be awesome with blue bars all over the place. Persevering and completing work I’ve been entrusted with might be the most fulfilling experience I have ever felt. In none of my other trades, whether it was professional sports or software sales, did I experience a feeling as powerful.
Keep coding and things get easier.
This post got a bit off the Rails (depending on the version), but this is the reality of a professional software developer trying to make hay in a corporate environment. It’s bloody and difficult, the hours are long, and few understand or appreciate the work you do. In the end, however, you get to see your creation take life. Teddy Roosevelt put it best:
“It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat.”
It’s a long quote but it’s entirely applicable to life as an engineer. Bust your butt, do the work, and be prepared to get knocked down and have to do it all over again.
Most of all, love what you do. If you don’t, you will be miserable every time someone rejects your pull request and you’re forced to rewrite your code. Only passion will help you persevere. I wish you luck!