“Good decisions come from experience, experience comes from bad decisions.”
– Mark Twain
Everyone wants to think they have it all figured out, but they don’t (except you, right?) Everyone also suffers from “imposter syndrome”. For those of you who might not have heard of “imposter syndrome”, it is that feeling in your gut that you are going to be found out as a complete idiot, and you are going to be fired. It’s a real thing, I have been doing development for over a decade now, and it still bites me from time to time.
In the spirit of letting new recruits of the “Nerd Army” know that “…you are not alone, because we (the rest of us) are here with you…” here are some snippets of advice that I have received over the course of a life lived with the talent of choosing the more difficult path the vast majority of the time, intentionally or not.
1. Ask Questions
Do not be afraid to ask questions. Sprint planning, backlog refinement, kickoff meetings, daily standups, and whenever you run across something you don’t understand are all the perfect time to ask a question. And the best question for a developer to ask is… “Why?” Why do we do something “this way” and not “that way”? Why is this more important than that? Why is there no documentation on the application? Asking “why” will give you a much better understanding of what needs to be done, potentially tease out opportunities to let people remember something critical that they originally forgot, and also lets people know that you care about the quality of the product you put out. Do not be afraid to ask a question, any question. That is how you learn. And that helps you to be much more effective at what you do.
2. “Imagine that the person who will be maintaining your code is a psychopath who knows where you live, and has no problem with the idea of going to prison.”
This was presented to me within the first month of my career. And over a decade later it still bounces around in the back of my mind when I am writing code. If you have been developing applications for any length of time, you have almost certainly run across “bad code”. While “bad code” is mostly subjective, I consider any code that requires more than 5 minutes of study to understand what it is doing to be “bad”, let’s not get into code that is unnecessarily abstracted out to where the work is all done in the great-great-great-great-great-great grandparents classes. Developing apps is not easy to begin with, and technology is evolving so quickly, nobody can truly master every nuance of a language. If you write spaghetti code that is all over the place, or you abstract out and modularize everything as far as it possibly can be, you are adding an undue amount of stress and work to the people who have to maintain your code. To quote the Golden Rule, “Do unto others as you would have them do unto you.” By this, I mean keep SOLID principles in mind, but biased towards being able to maintain an application. Nobody wants a knock on their door at 3am from a groggy, sleep-deprived, frustrated person they have never met demanding them to fix their shit code that is breaking in the weirdest ways possible.
3. Work to Live, Don’t Live to Work
This was brought up by some friends of mine from overseas that I played some online games with. They asked where I had been, and when I replied I was busy with work because we were in “crunch time”, they made a comment about how Americans are so obsessed with work, we forget to enjoy the one life we are given.
It is important to unplug from work, laugh with friends/family, and remember WHY you are working in the first place. Think about it like this, if you make a salary of $100,000 a year, at 40 hours a week, 52 weeks a year, your hourly rate is $48 an hour. If you work an extra two hours per day, you’re still only going to make that $100,000, except it’s at 50 hours a week, 52 weeks a year, or… $38 an hour. You are giving the company a 20% discount on your services AND taking on 10 hours a week of opportunity cost from your life.
4. It Does Not Hurt to “Have a Conversation”
These were the words told to me by a recruiter. I was happy where I was working at the time, other than the 1.5 hour commute. The people were great, the company was stable, and I could see me being there a long time. Then I got the call from a recruiter about a tech lead position. I felt like I was vastly underqualified to lead anything, I hate the interview process because most of the time it is a complete waste of time and has absolutely nothing in common with the actual work, and I was comfortable where I was.
But, he was right, it couldn’t hurt to talk. If nothing else, I would get to interact with people, network, and get an idea of what others were doing. As it turned out, the company was in a niche that I was very familiar with, so I personally understood a lot of the pain points that their services addressed, it was less than a 30 minute commute, and the icing on top was that a former coworker worked there – so there would be at least one friendly face.
And wouldn’t you know it? I got the position. It turned out to be a 25% raise, a position two levels up the corporate ladder, a whole new career experience for me, and the people made me feel like I mattered as an employee, coworker, and person. And my team told me I was one of the better tech leads they had ever had. All because I was talked into having “just a conversation”. Never turn down a chance to talk to someone – you never know where that road may take you, and adventures are exciting!
5. A Team Sinks or Swims Together
Never try to shift the blame, point fingers, or make up excuses when things go sideways. An organization is a team at its core. And that goes for ALL organizations. Everyone has a role to play, and everyone is equally important.
The C-Suite might make the big bucks, and you likely will never even meet them. But they are not more important than you are. Salespeople are typically Type A personalities, and they bring in the revenue, but they are not more important than you are.
People who are hung up on “titles” and “power” are rampant in the business world, so you will have to deal with them. But at the end of the day, their title does not make them more important than you.
An organization needs a sales team to generate revenue, but that sales team needs to have something to sell or they can’t do their job. A manager who has nobody to manage cannot do their job. This is a simple fact. It takes EVERYONE doing what they do best to make an organization run smoothly.
So… in summary, do your best and take pride in your work, help out where you can, have conversations whenever possible, write clean/maintainable code, question everything (in a positive manner and for the right reasons), and don’t forget to take time to enjoy life – you worked hard to get where you are, so be sure to pay yourself for your hard work, you deserve it!