Writing Issues: Open Approach
The content in this issue is based upon the discussion amongst the Smarter.Codes team lead by @tushar12123 on open-approach. The video to the discussion is available here - Open Approach At Smarter.Codes
Open Source
Before we begin to discuss what, open approach is, you must understand what open source is in the first place because open source is what acts as a base to open approach followed at Smarter.Codes
According to opensource.com, the term open-source refers to something that can be modified and shared by people because its design is available publicly.
Open-source software hence is software that the entire community can access, modify to their liking and use without having to pay any fee or face any legal issue.
Open Source vs Open Approach
We wish to take Open Source to the next level, "open source on steroids" if we may, or let's call it "OPEN APPROACH".
Whenever we contribute code to a project, we do not submit a binary or an executable. We submit the source code for the project we’re working on. That is great, this means we are following open-source principles within our team and anyone else in the team has access to the code we’ve worked upon and he/she is free to use it, extend it or even modify it.
Open-source within a company, project or team is something that is followed almost everywhere in the software development industry but what we want to aim at is not only submit code that is Open Source but also open approach.
Overview of open approach
Let’s say I’ve started working on a task ‘A’. To complete this task ‘A’ I might have to do some research, go through some articles or documentation or stackoverflow answers.
What open approach says is that whenever I’ll decide upon an approach that I’m going to use for my task – I'll write it down in the issue for that task (we’ll see the format of doing that later). What this will do is give a starting point A, not only to me but to my teammates as well for how I am going to solve an issue or create a new feature, whatever it is. I’ll post the link for the blog article I’m following or maybe if it’s an idea of my own I’ll document that down in the issue.
If multiple approaches are an option, I would also mention the other approaches in a separate comment along with the reason why those were not followed.
So, after two hours, I ran into a blocker with the approach that I’d followed, now what? Of course, I’ll try to remove that blocker somehow by searching for answers and trying different things to solve the problem but I’ll also document and comment on the issue whatever I’ve tried (so far) to solve the blocker that I ran into.
Writing down all the steps that you took to remove a blocker or get something working is a very neat practice and it helps your teammates to help you better. By going through your comments, they’ll know what has already been tried and with what result and hence they will try something else instead.
If for some reason I need to change my approach – I'll mention the problem with the older one and also mention how the newer approach would get rid of that problem.
Basically, open approach means to document all your experiences during the completion of a task.
Every time you run into a blocker – write it down, when you find a solution for that blocker – write it down, changing your approach? You guessed it – write it down.
Even though there’s much more to the issue creation process in itself, the basic funda of open approach stays the same – describing what you are following/followed to not only your teammates but to your future self as well.
Benefits of open approach
-
Great documentation – Automatically, everything gets documented itself. Actually, knowing the approach is better than having the documentation as a teammate.
-
Allows more contribution from teammates – When teammates are more aware of what and how you followed something, they are in a better place to give their feedback/contribution as well.
-
Works great with async – When you and your teammates are not available at the same place/time, open-approach helps in keeping information available without having to contact someone.
Followup Read: Writing Issues - What, Why and How