What I've learnt: Knowledge Base
Tags: devjournal, firstpost, career, learning
Published: 2020-11-20 22:28:33

Technology is a field that's constantly evolving in a rapid speed. As a software engineer, it makes continuous learning almost inevitable. Everyone has a different learning pace and sometimes we forget things we've learnt. Over the years, I slowly begin to understand the importance of having your own knowledge base. It is  a great way for learning, self-help and to "retain" those information. 

So... What is a knowledge base?

Knowledge base is a collection of documentation that typically includes answers to frequently asked questions, how-to guides, and troubleshooting instructions. Obviously, we can add anything we find useful including code snippets, documentation or even diagrams.

# The benefits
## Avoid wasting time on the same problem 🕵️‍♂️
Sometimes we spent hours on figuring/fixing "silly" things like setting up dev environment or other random issues. Or it could be one of those important operational things you have to do once in a while, for example, rotating a certificate in the server. So it's a good habit to start writing little "how-to" guides for yourself. Your future help would thank you for it.

## Keeping good documentations 🖋📘
Often, we write code, test, merge and forget all about it. 8 months later, we come back to the same piece of work and nothing rings a bell. We often overlook the importance of keeping good documentation - or just plain lazy ¯\_(ツ)_/¯ to even write a simple README file. If it's for yourself, it doesn't have to be really well written but at least something understandable when you re-visit.

## Discussion starter 🙌
Since you've documented on the things you've worked on, it's easy to share it around and get a discussion going. Perhaps one day, you have a new feature idea on component A(you worked on) and connecting it up with component B(by another developer) will increase the throughput by X percent. It's easy to send the component A documentation with a proposed idea to the other developer and start a discussion.

## You learn to write and think better 🤯
It's easy to read and think in our own heads. But when it comes to putting those thoughts in to structured sentences, it can be quite hard (especially for someone like me who's not a native English speaker). It can be frustrating when you can't understand some simple instructions you wrote in your own "how-to" guide. But with a lot of practice and time, you will eventually learn how to organize those thoughts and write better.

## Becoming more independent 💪
Now that you've face X number of issues and kept a good record of "how-to" guides/code snippets/investigation notes, you will be less dependent on other people. When you encounter a new problem, there's a chance that it might be similar to one of the old ones. All you need to do is refer to your own knowledge base.

## Makes life easier 🎉
Let's say you're transitioning to another team or leaving your current position some day. You probably need to write a handover document for someone who's taking your up tasks. Wait, maybe you don't. Just pick some of the important notes from your knowledge base. It makes everyone's life easier, you don't need to scramble at the last minute trying to figure out if you missed anything important.

---

Obviously, your knowledge base will grow over time and you have to keep it organized: some links might be broken, some code snippets might not work with newer version of SDKs, some "how-to" instructions are obsolete. So remember to update your knowledge base every once in a while 😊

Food for thoughts:
What are your experience on knowledge base?
How do you organize them?
And how often?

Thanks for reading and hope this helps.