Software engineering, while it can be immensely satisfying, can also be thankless. You get to be creative and solve problems, and well written code has its intrinsic beauty that can be hard to describe. The portrayal of programmers has been mixed, evolving from the pocket-protector-wearing, taped-glasses nerd to the elite hackers that can instantly read passwords or hack any government entity. I wish I was that cool, but unfortunately I don't think I could hack my own computer.
The reality of being a software engineer is considerably less sexy than the Hollywood depiction. The hard truth is people couldn't care less about how elegant code is. Nobody else understands that sometimes adding a feature will take one hour, sometimes one month, and there's no easy way to predict that. People measure a developers worth by the amount of code they spit out daily, and how hard they can work to achieve deadlines. And when something breaks, anything good you've ever done is instantly forgotten about, and it's back to square done. It's the job of a software developer to produce something that's easily measurable and can be compared to others.
The prevalence of the impostor syndrome in the software industry, driven by titans like Steve Jobs, Bill Gates, and Mark Zuckerberg, drive impossible working hours to crank out the latest feature or stay up to date on new tech. Developers stay up into the wee hours of the morning learning new frameworks, refactoring libraries, and neglecting life for what? So many times I've spent hours to get code nicely refactored and working, only to have coworker s roast it for not being properly tested rather than the kudos I was looking for.
When people call your code ugly or when hard work and sacrifice is rewarded with negativity and a lack of appreciate, yes it can be hard to deal with. Even with team members, pointing out an overlooked issue in code or requesting a small additional feature can be met with an aggravated and accusatory response from the one who coded it. For the developer, it can easily seem like a personal attack, but it's not. The fault doesn't lie in the person that found the problem, nor is it an attitude problem on the programmers part, but how we respond to questions and complaints matter.
Successful programmers have the right attitude. Attitude trumps any skills, and will be recognized and rewarded by everyone.
What holds career backs is our responses to people. Nobody cares how many hours you work, or how nice your code is. People already see your job description as including breaking your back to get code completed, and will not be rewarded.
What people do notice is how you respond to their needs and their efforts. People like to feel good. If you want people to recognize you as a great employee, they need to first experience and appreciate you as a person. Personal relationships matter. If you can get along with others, and play the game of networking and maintaining relationships, you will rise to the top as a leader.
Lets look at some examples of situations and how you can say things in a way so that people will respond positively.
Manager: Why did it take so long to fix that scrolling issue? There was an issue last week that Joe fixed that he was able to do in an hour, it's been a week! What have you been doing this whole time?
Bad Reply: Joe works on the mobile application, and his issue was a small layout bug of a button, considerably simpler. This is a web app, and a complex one. The scrolling issue wasn't surface level, but required me to refactor half the codebase to make it work. I then had to redevelop all the test cases to work with the new components, add some new logic, etc.
This reply sucks. Although yes, your manage may not understand the intricacies of the bug you were facing, or how hard it was to fix, they don't really care, it's not their job to know about these details. This explanation sounds like excuses and justification, which is bad when the manager is already questioning your behavior.
What I suggest is trying to see the situation from your managers point of view. They've probably never written code in their life, and why it took so long isn't th real question. They care about meeting deadlines, increasing sales, and making their boss happy. Care about what they care about, and you'll make your manager happy.
Better Reply: I can understand your frustration with this issue. It's important to me that this bug is fixed properly, so I've been taking the necessary time to ensure that's it's implemented in a way that will satisfy our customers, and ensure that this project is maintainable and functioning flawlessly for years to come. There was a lot of changes that were necessary to fix this issue, which I can go over in detail with you if you'd like. In the future, I'll ensure that I keep you up to date on my development path so you have a better idea of where I'm at and what I'm doing.
Much better. No excuses, no real explanation, just being empathetic and addressing their needs and wants by focusing on what they care about, the big picture product and the customer.
- Never apologize unless you actually need to make amends for a fault. Instead of saying "sorry it took so long", say "Thank you for being patient"
- Emulate who you want to be. Want to be the top developer at your work? See what they do, make friends with them, and mimic them as a "best practice"
- Get in early, leave after. Whether or not others realize it, when you walk in and out of work does matter. People will see it, and it will affect their perception of your work ability and dedication.
- Socialize Socialize Socialize. Generally programmers aren't the most social of people, but leaders generally are. If you want to be noticed, be noticeable. Invite people to lunch everyday, send funny emails, bring in donuts, put a bowl of free candy on your desk, do nice things for your coworkers and people will begin to notice you.
- Communicate early and often. Keep everyone involved always updated on the latest status of your project. This will ensure that everyone knows that you're always working on something, and that you care that everyone else knows.
- Work talk stays at work. When you're with others away from a work environment, be more vulnerable and personal with them. Relationships are key to success, and you can establish them with mutual trust and a shared connection outside of just work.
Attitude is king, and it'll take you further in life then any coding skills likely will.
Crossposted from Comet Code