Life is learning. Learning is life.
And one career where you’ll learn a ton is software development.
And not just lessons about how to code, either. You’ll learn a lot of stuff that you can apply to your daily life.
Those are some of the biggest lessons we’ve learned as software developers.
“Fail fast, fail often,” is one of those mantras of Agile software development.
We live that mantra at Gunner Technology.
Let’s take you back to the launch of one of our earliest products, ESPN’s Fan Profiles, the first social network for sports.
The day of our big launch was a Friday. At around 6 PM (Pacific time, we were out in LA), we flipped the switch an took the site live. And it immediately crashed.
So we respun up the servers. And it crashed again.
Over and over, we relaunched the cloud architecture, and over and over the site went down.
This went on for three days.
On Monday morning, after nearly three days with no sleep, one of the devs at a software development firm we were working with found the problem.
A hidden configuration setting had the production application running in development mode.
That means nothing was being cached. That means the entire application was being reloaded every request. That means, basically, that the site was doomed.
It was a failure of epic proportions.
But you know what? It was one of the best things that’s ever happened to us.
When you go through something like that, you learn how to fail. And you learn what failing gracefully means.
You learn that the most important part of failure is growing from the failure.
And I don’t just mean making sure your production site is configured correctly or any number of other technical takeaways.
I mean learning how to persevere. How to handle failure with grace. How to be more proactive and how to keep a level head when stuff inevitably goes awry.
Everyone fails. It’s inevitable. If you can fail better, you’ll be better for it. Software development teaches you that.
Software development also teaches you how to take criticism.
You’re never going to know everything. And, as a corollary, there will always be someone who knows more than you (or at least know more than you about a particular subject).
The field is so broad and varied that you can’t possibly be the foremost expert in everything.
But when you do something wrong (or suboptimally) and are called on it, the one thing you can’t do is shut down. You have to embrace the criticism you receive. That’s how you grow.
Whether it’s writing bad code or using a programming methodology the wrong way, whatever it is, if someone shows you a better way to do something, you should be overjoyed!
The goal of every software developer is to produce the best work they possibly can.
And the more helpful criticism you receive, the better you’ll be at software development.
So not only do you learn how to take criticism, you learn how to seek it out. You want to know where your deficiencies are and where you can improve.
It’s a daily occurrence of software development.
You’ll work on something for hours only to throw it away and start over from scratch.
And you’ll do that half a dozen times before finding the actual solution days after you started.
Software development can be extremely exhausting and mentally taxing. And that’s going to make you unbelievably frustrated from time to time.
When you’re in that mental state, it’s probably best to be left alone.
You shouldn’t be working with clients or interacting with coworkers.
You especially shouldn’t be doing anything that involves calm and repose, like giving friendly feedback to someone.
You’ve got to be constantly aware of what head space you’re in when doing software development, and if you’re in an extremely negative state, you’ve got to realize that.
Day-to-day as a software developer, you’re going to be talking with a lot of folks.
Whether it’s in a Reddit subgroup or a Slack channel or hopping on the phone with a client or development partner, communication is key.
And most people are terrible at it.
People frequently take conversations in a negative direction – you’ve got to stay positive!
Clients often give vague, innocuous requirements for development requests – you’ve got to remain calm and ask good questions!
Other team members might be bad at communicating about statuses and timelines – you’ve got to continue to press them for details and hard dates!
But the point is to always remain upbeat and level-headed. (And realize when you can’t do that – see the lesson above.)
All of these lessons – learning to fail, learning to take criticism, learning to be aware of your mental state, and learning to communicate – translate over directly to your daily life. It’s not just about software development.
It actually makes you a better person.
You fear failure less and try more stuff out in your non-work life.
You don’t bite people’s heads off when they give you feedback. You calmly digest and try to improve yourself.
You don’t lose your cool with people because you’re more consistently aware of your mental state, and you become a better communicator and your interactions with other people improve.
It’s strange to say, but being a software developer does actually improve your life.
It’s all about those life lessons!