Tyler Boright

Building tech focused around people.

You Won't Advance Through Coding

2020-10-26

I used to work myself to death. Not resting, I would try to complete as many tasks as possible each day. Organized todo lists, itemized jira boards, and productivity hacks littered my second monitor as I did my best to cram as much work into each day as possible. By the end of the day, I felt exhausted. I thought this was a sign I had a productive day.

Much to my surprise, I was passed over for promotion. When asking my manager for feedback, I was told I did a good job and didn't have much to pick at. I felt I was a top performer. I mean, hell, I was busting my ass every day to do as much work as possible. I had a stellar performance review. What was the problem?

After this happened a couple of times, I saw others around me promoted on a faster time line and obtain more benefits. Most of them were doing good work as well, but it didn't seem that they were doing more than I was. Some of them didn't do much work at all.

I inappropriately attributed my lack of success with company values. I left that company and moved to one I thought would value my technical expertise and solid work ethic.

I encountered the same situation at this new company. It was here that I figured out something was wrong with me.

I misunderstood what companies value in general, not a particular company's values. Things engineers value in well-written code are almost irrelevant to the actual corporation. What is valuable to a corporation is creating software that fulfills the customers' needs at a profit.

Solve the business problem

The ultimate question every business entity cares about is: "does this piece of software solve our problem within the budget afforded it." Everything else is a non-issue.

This is the reason there are so many bank systems written in Fortran and older programming languages. This is also the reason that the co-worker who can't program themselves out of a paper bag can still find a way to remain in the company.

TDD, language choice, and other hot programmer topics are a complete non-issue to the business side unless they interfere with meeting budget or hurt the business's value proposition.

Technical chops are secondary to reliability and willingness to work for the salary given.

Crafting quality software is important to your immediate development team. But don't expect your VP or CEO (i.e. your actual clients) to applaud you on having built a system with in the hottest framework out there.

There is no Meritocracy

Corporations do not promote people based on how skilled they are in their craft. For developer jobs at large corporations, it's nearly impossible to track how valuable a particular developer is.

Negative work, managing expectations of stakeholders, and whether or not the developer writes good unit tests can affect the influence a developer has over a codebase. But most of the ways a single developer influences the product are not quantifiable.

I used to believe that as long as I became the best software developer possible, my advancement would be inevitable.

When I finally was promoted, it had nothing to do with my technical skills. It wasn't until I had a long enough tenure at the company to justify being promoted and was put in charge of a project that allowed me to delegate some work to other developers that I finally obtained the coveted senior position I gunned for.

The combination of time in company and programming away from the keyboard resulted in my promotion. In fact, during the promotion process, not one time did anyone mentioned how great my code was or how awesome I was at unit testing. It sucked!

Program for yourself

Your coding skills are for you alone to enjoy. Yes, you might work for teams in small enough companies that your actual skill will be more applicable. On a small team, dead weight and negative work are compounded enough to show if someone isn't pulling their weight.

Most of the time this will not be the case. Forge your technical skills to earn implementaton self-confidence. Solve your own problems. Scratch that itch.

There is a giant upside to having solid technical skills. Although promotions are not determined by coding, if you want to stay in a technically-oriented track and hop between projects or teams, having awesome technical skills will make your life a lot easier.

Imagine you are put on a team building an application in a language you have never used before. Regardless of your time in the industry, if you have spent your career painstakingly acquiring deep technical knowledge, learning the new language will be MUCH easier. It chould prove to be the difference between a couple weeks of learning versus a couple of months.

Whether you found a job in software because you love to code or learned to code because you wanted a job in software, having solid technical skills will help you wade through bullshit and feel more confident in a particular role. Just remember that they probably won't rocket you up into the C-suite.