Compounding Opportunity Costs: Five Things Software Engineers do to Kill their Potential

by brian

The Five Things Software Engineers do that Compound Yearly to Kill their Potential

1. Not refreshing core material

Software engineers have to spend a minimum of one hour per week simply reviewing and improving their skills and understanding of development.

Straight out of college, even computer science majors struggle to name a few common design patterns they will need to start grokking from their first day at a company.

If you are going to hit the ground running with new projects, understanding core computer science data structures, algorithms and design patterns is essential.

As Peter Norvig notes1, it can take 10 years or perhaps 10,000 hours to become an expert at programming. Some things you can spend your time on, snagged from Norvig’s list:

  1. Program
  2. Talk with other programmers and read their code
  3. Work on projects with other programmers both as the worst in the group and as the best in the group
  4. Learn at least 6 programming paradigms/languages (Java, ML, Lisp, Prolog, Scheme, Sisal). A great book for that is Seven Languages in Seven Weeks
  5. Work on projects other programmers have written. This is essential for a career software engineer. Working on pre-existing code is unavoidable, and an incredibly powerful learning tool. Learn what your code feels like to someone else2 and you will learn to become a more productive team member

2. Pursuing a Job instead of a Calling

In the field of work-psychology, there’s a saying3:

There are three types of employees:

  1. “Job” employees
  2. “Career” employees
  3. “Calling” employees

Job employees are there 9am to 5pm and do what their boss tells them.

Career employees take their career advancement seriously, being sure to do things that get them ahead and bode well for future jobs.

Calling employees take their calling seriously. That is, they care about what they do as part of their company and find ways to make their daily work tie in to their over-arching concerns.

Calling employees are more engaged at work, take the fewest sick days45, and are consistently the most productive.

3. Not communicating well

In software engineering, communication can be the ultimate time saver.

  1. Estimating task time and breaking projects down so they can be scoped down
  2. Requirements gathering and negotiation: figuring out the intent of a task can save you from doing it altogether, or let you engineer an alternative that is quicker and easier
  3. Interpersonal dealings: if you are upset about something, you should feel comfortable bringing it up and working with your company to solve the problem. Often times this is a matter of breaking the problem down to its core components and discussing those soberly (without lizard brain rage). This means if you want a raise, promotion or to work on different projects, you should be able to break down your reasoning in a way that your coworkers can accept

4. Not conducting deliberate, effective job searches

When you look for a job, what do you do?

Does the job find you via email, or do you perform an intelligent breadth-first search based on your long-term goals?

The impact of your job choices, compounded over multiple moves, can be enormous. It will define who you work with and learn from, what you work on, and how happy you can be. Do not take the job search task lightly.

5. Not preparing for interviews

Like job searches, programming interview success or failure can mean the difference between long-term success or failure, compounded over multiple job search periods.

This, and conducting an effective job search, are maybe the quickest, easiest, and highest-impact changes you can make starting right now.

Have you ever failed at a job interview due to lack of preparation? Not a good feeling.

Just a few minutes each day in the month preparing for your interviews can mean a lifelong difference.

Fight back

It’s possible to work towards realizing your full potential. Deliberate practice and continuous determination can get you far over time.

Coding for Interviews, my weekly programming interview question newsletter can be a valuable resource (one email per week, no spam, easy unsubscribe):

Email

  1. http://norvig.com/21-days.html 
  2. If for some reason you will never, in your entire career, have the opportunity to work on shared code, try revisiting your code from three years ago and work with it. 
  3. Hall, D. T. & Chandler, D. E. Psychological success: When the career is a calling. J. Organ. Behav. 26, 155–176 (2005). 
  4. States., U. The power of federal employee engagement. (2008). 
  5. Surprisingly, career employees take more sick days than the job employees.