RevComm Tech Blog

コミュニケーションを再発明し 人が人を想う社会を創る

Practical lessons on keeping a knowledge portfolio

Introduction

As a professional developer, you encounter something new every day: new coding techniques, new ways of organizing projects, new bugs, new tools, etc. The amount of knowledge the world has to offer is too much, so we write it down as a note in a Jira ticket or as a comment in a PR.

We recall certain patterns and internalize the frequent ones; we unconsciously discard the rare to the bottom of our long-term memory. And then it happens. That little hack comes to bite back again, and you have a hunch of how to solve it. You may have bookmarked the solution in Stack Overflow, or was it a ChatGPT conversation? When did that bug happen anyway? What was the context? I’ve experienced this many times. In this post, I’ll describe a solution to this conundrum: “a knowledge portfolio.”

A knowledge portfolio

Your knowledge portfolio describes all the information you’ve encountered throughout your career. In a sense, it determines your identity as an engineer. The Pragmatic Programmer [1] offers clear-cut guidelines to build a successful portfolio. In this post, I’ll comment on the most impactful points that kept mine robust and updated.

Tips

Write an engineering daybook

We use daybooks to take notes in meetings, to jot down what we’re working on, to note variable values when debugging, to leave reminders where we put things, to record wild ideas, and sometimes just to doodle.

- Andy and Dave, The Pragmatic Programmer

An engineering daybook is a recount of your day as an engineer. It could be ramblings about what you’ve done, a loose set of links of all you’ve seen, or wild ideas barely connected. Whatever the form, storing that information is crucial so it can be accessed anywhere, anytime. I especially recommend writing your thoughts, as it’s like teaching something. Just by doing it, you organize and consolidate the ideas floating around. If you hate writing, just a one-liner or a link is a good starting point.

Choose tools you’re comfortable with

I use Evernote to keep my portfolio, but any tool you’re familiar with is enough. Some essential functions any such tool should have are:

  • Export to plain text (food for your future super-intelligent AI butler)
  • Synchronization across devices (you might want that info in your phone)
  • Tagging system (to categorize your knowledge)
  • Task reminding feature (to plan your learning)

I also recommend Readwise to highlight anything from the internet. You can write a script to export everything to Evernote.

Tag everything

Was that some new feature in React? Ok, append the React tag. Tag everything so that you can find things more easily. If you can subcategorize tags, it’s even better. Evernote does it like this:

Maintain a "bugdex"

Because of optimism, we usually expect the number of bugs to be smaller than it turns out to be. Therefore, testing is the most mis-scheduled part of programming.

- Frederik P. Brooks Jr., The Mythical Man-Month [2]

Bugs are Software Engineering’s necessary evil. We spent a great deal of our time fixing them. Document every bug; you’ll never know when it’ll pop up again. Isolate the bug and track it on your favorite source control. There are two caveats. First, only some bugs can be isolated. In that case, at the very least, describe what happened (context, cause, and solution), your future self will be grateful. Furthermore, start to classify them by framework or programming language.

Make time for testing wild ideas

The most daunting piece of paper is the one with nothing written on it

- Andy and Dave, The Pragmatic Programmer [1]

Take advantage of your knowledge. If you find some interesting idea, don’t let it float around. Use your chosen tool’s reminder feature to test that idea later or to practice something you’ve bookmarked recently.

Conclusion

In this post, I’ve described my experience with maintaining a knowledge portfolio. Every person is different: the crafters who keep everything clean and organized, the pragmatics who just want the information to be stored somewhere. Find what works for you; in the end, storing and centralizing the data is the essential part. And if you never use that data, at least you now have a kind of work memoir for your family and friends: old traditions are getting cooler again.

About the author

Hi, I'm Jose @juanjo12x, and I work as a Backend Engineer here at Revcomm. I spend my days writing Python and thinking about what to learn next.

References

  • [1] Andy Hunt and Dave Thomas. The Pragmatic Programmer 20th Anniversary Edition.
  • [2] Frederik P.Brooks, Jr. The Mythical Man-Month.