Lately, I have been thinking about how I can share my experiences with the developer community. I am certain a lot of us try to re-invent the learning wheel when we are trying to understand a system or tool that we want to use. In this post I want to cover how to do it better.
Let’s say, I want to use Tool A for my new project which I found out is quite popular in the community. I read a few articles, install the tool, write code. If and when I get stuck, I browse Stackoverflow articles without looking at the error description or understanding why that error was thrown.
For argument’s sake, let’s assume that Stackoverflow doesn’t have an answer either (I have found that to be true in many cases with my project). What next? I try random options until I finally get it to work. Then I introspect the issue and make a mental note of the solution with reasons.
Months later, another developer comes around asking the same thing and I cannot quite remember how I implemented it or why it worked in the first place.
After observing the pattern, I realized I might be doing a few things inefficiently and hence I have decided to change my approach using following steps:
Step 1 – Learning of the Tool
Reading about the tool either in the Get Started section of the documentation or another blog is great and the right step. What is inefficient is the next step, using the same in the project!
There is a difference between understanding the tool and getting started with the tool. Perhaps, I can start with a few simple programs using the tool and performing specific operations to understand the tool.
Step 2 – Blogging Always Helps
The minute I have done a few tutorials trying to understand the system, I could start writing specific blog posts on how to use the tool. It need not be anything big but be more like a process to learning with actual examples.
This helps spread more awareness as to how a reader could go about learning what I learnt. I might not have the best approach but it certainly builds more confidence and learning. If I have written something incorrectly, I could be corrected and my learning can improve.
Best part is – all this is documented for any reader so any common pitfalls can be avoided.
Step 3 – Project Implementation
Once I have written blogs and helped explained what I have learnt, this is easier. The improved understanding makes problem solving easier when my implementation (simple or complex) breaks.
If it still doesn’t help, there is always Stackoverflow where I can reach out to the community.
Step 4 – Blogging Again
Often project implementations are more complex than meagre example programs. Blogging can help explain how I have used the tool in my project or architecture. This helps other developers take a look at sample architectures which they could leverage or use. There could be corrections made to my architecture or clarifications to my understanding.
This happened recently on a blog post of mine over fluentd where a fellow developer from the community read it and helped put things in perspective.
The blog was read by Treasure Data CTO – Kaz who took the time to stop by on his India visit to get feedback about their product.
— Prashanth H N (@honasagere) February 4, 2016
Disclaimer: Never post confidential information as part of this effort.
Why Should You Care?
Here are a quick set of reasons –
- Blogging improves communication in subtle ways. It helps organize thoughts and present better. You will need that skill as a developer to communicate with other developers or take trainings and sessions. Oft times developers struggle to get across the necessary points in developer conferences. We’ve all been either a victim or guilty of that.
- As developers, we need to sell our work. Yes! Our work is our product and we need to sell it to make ourselves employable or even show to the community what we have done and learn from it.
- It counts as part of your job. Every job description today says “Excellent Communication Skills” and what better way to start than blog?
- It helps you remember when you have forgotten and recollect in a span of minutes. You just need to go through your own writings to remember what you have done or come up to speed with what you have learnt when you have lost touch.
Do you need more?
My hope is that all developers blog. This helps me and this helps hundreds of developers or even future developers.
Let me know if you disagree or have to add to this?