Red Green Repeat Adventures of a Spec Driven Junkie

Failure: Not Understanding My Knowledge Portfolio as a Programmer

I share first hand what happens when not investing in one’s knowledge portfolio as a programmer. How one cannot ‘exchange’ knowledge portfolios, especially when there’s no overlap.

I tell how I built up knowledge in programming, let it languish by pursuing another field, only to find the value to be less than zero when returning to programming.

You will learn from my mistake and understand the value of your knowledge portfolio.

This article will take you about six minutes to read.

Rembrandt van Rijn - Aristotle with a Bust of Homer source and more information

Introduction

I’m enjoying the new edition of Pragmatic Programmer, recent posts on lessons I gleamed:

When reading chapter six of Pragmatic Programmer: Your Knowledge Portfolio, it reminded me of when I did not invest in my own knowledge portfolio and the work I had to do to pay back the debt when I wanted to re-enter programming.

I didn’t understand it at the time. as a programmer, your knowledge portfolio is your key asset now and in the future of your whole career.

Read on to learn what happened to me.

Background

After earning my degree, I returned to the company I interned at. I had a great time there and I wanted to continue developing further, the programming industry was unstable at the time.

I loved my job, I was a research developer, which meant internally I created new applications using new technologies and while externally I represented the company to advocate other industries to use the technologies I was building with.

As a researcher, I had no structure in software development. I just coded like the wind when crunch time came. I coded on the newest hardware for each project, so I did not appreciate software development concepts such as maintainability, compatibility, etc.

At the company ,I felt I was building up more and more programming knowledge with each project.

Situation

After seven years at the same company, in multiple departments and numerous projects of the same cycle, I was a bit worn out. I did the same work and felt I was just grinding things out each time. I wasn’t learning more from my environment.

Here, I felt my knowledge portfolio was pretty full as I had a strong mental model of how to complete projects based on my experiences.

Moving On

When my wife’s company offered her to move to the headquarters in another country, it was an easy decision together - I would quit my job to go with her together.

My knowledge portfolio was not only full, it was bursting at the seams as I felt burned out.

Consulting

Before leaving the company, I consulted with senior members of the company I knew. I explained my situation and asked what’s the best path forward. Most boiled down to:

Get your MBA and move to another field using my experience, jump the corporate ladder, and get into consulting!

Instead of finding work in the new country, I took time off and got my MBA there. Win-win, right?

I was leveraging my programming knowledge portfolio and converting it into another industry’s knowledge portfolio, consulting!

Pivotal Moment

When I tried to get into another industry, no matter what I did, I just couldn’t make it work - just didn’t “gel” with anyone in consulting. Attending meet-ups, networking with old colleagues, getting introductions, practicing for interviews, etc.

Business is fundamentally people, and if you don’t get along with them, you’re going to have a hard time. At the same time, my knowledge portfolio in the new field was empty. I couldn’t compete with others whose are fuller than mine, even though I had a programming knowledge portfolio.

This is when decided to retreat back to programming and use items from my knowledge portfolio to get back in and pick up “quick work”. I had so much in my portfolio before, I must have something left over to use, right?

When I left the profession, I was a master of the C programming language. With C, one can do anything. Build any piece of software. There would be lots of jobs for me.

While I was out of the industry, not only did I let my knowledge portfolio gather dust, I didn’t keep up with the industry, which also shifted.

When I wanted to get some “quick work”, the demand for programmers wasn’t for software a programmer could build in C - the demand was for programmers who can write the web, which use languages such as: PHP, Perl, Python, Ruby, and JavaScript.

My knowledge portfolio not only was dusty, there was a debt!

What did I Fail at?

Thinking back, there’s numerous things I failed at with my knowledge portfolio:

  • a full knowledge portfolio remains full without any effort
  • my knowledge portfolio will always remain relevant
  • that I can easily trade one knowledge portfolio (programming) for another (consulting)

How did I Fail?

When I made the conscious choice to leave programming for consulting, I didn’t really understand that I would be throwing away one set of knowledge and trying to rebuild another, from the ground up.

Thinking that these knowledge portfolios were “interchangeable”, were short-sighted of me. Some knowledge portfolios have overlap and are interchangeable.

The two I wanted to exchange did not have much overlap at the time and was just hard to exchange directly.

Another way I failed: considering my old knowledge in the industry would remain just as relevant when coming back. This may have been true if the programming industry did not have any new developments the time I was away.

Problem was, everything changed!

Why did I Fail?

When I dig deeper on why I took on these viewpoints, these stand out:

  • I mistaken my company accomplishments to be just as great outside the company as inside the company.
  • Although I could handle any “problem” in the company, I didn’t expand the types of problems I could solve, which there were numerous and expanded greatly with the industry’s growth.
  • The company insulated me from competition - at the market and individual level.

What did I Learn?

I realize my knowledge of programming was just starting. Even though I had more than five years of experience, I was at the start of my programmer journey.

The programming industry was transforming itself and everything around it. If I really wanted to “climb the corporate ladder” - programming would be a better path.

I need to maintain a pulse of where I stand in my career within the company and outside the company.

My knowledge portfolio is my most valuable asset. I can’t trade it in for another one “easily”. There needs to be overlap, transition, and continuous effort.

How will I integrate these learnings?

From a discussion of the author’s of Pragmatic Programmer’s, they say the best way to learn something is to write or speak about it. I have decided to write on my blog to demonstrate learning, even something small.

Build up my “tribe” of professionals people outside of work, like at meet-ups. They are essentially rivals, at the same time, they keep me sharp and have a continuous pulse of the world outside my company.

Why won’t this happen again?

This journey of rebuilding my programming knowledge took late nights, weekends, making new friends, and lots of failures. This rebuilding period definitely strained my relationship with my wife while she supported me over an extended period. I never want to let that happen again or expect her support for so long.

The Pragmatic Programmer suggested great ways from chapter six in the book: treat knowledge portfolio like a financial portfolio. This is the mind-set I will adopt and explains the failure in my journey in a clear manner.

Ways to manage my “knowledge portfolio”:

  • Invest regularly, for me, this is blogging weekly!
  • Go for breadth outside of main work focus, such as soft skills!
  • Maintain depth in work, to make work easier.
  • Learning new tech early can pay off big time later. Think about anything that was “on your radar” five years ago. Where are they now? What can you learn now for the next “five years”?
  • Review & re-balance the portfolio regularly? Sometimes, it’s OK to let things go that didn’t catch on, double down on things that are on fire!

If I could do it all again?

Tell myself to read the first edition of Pragmatic Programmer again. I received a copy of it when I first started my programming journey from a colleague in my company back then. I definitely read it and absorbed the right ideas.

Reading Pragmatic Programmer more than once would have illuminated different concepts at different stages of my career then. Such as introducing the concept of Knowledge Portfolio earlier!

Conclusion

This was a failure that took multiple years for me to work through and I am grateful I made it through.

At the same time, if even one person learns from my experience, it would have made sharing my failure worth it. The journey is not for the faint of heart. This is key reason why if you’re on my team, I highly encourage you to blog and attend meet-ups. I want you to avoid this failure and to understand the value of your knowledge portfolio.

If you want more details on my failure, contact me and I can answer any questions you may have.