Very often we are tackled by a new request from our PM. As a team of developers we are first very excited to have new assignments and we start thinking on how we can develop it.
But is that the best way to think about new assignments?
Today on ADC – Self VS Shelf
Self made is (obviously) a self made software. You get the requirements, build the architecture, code the software, QA it, Release it and Maintain it.
Shelf products are products that exist in the world and fully or partly comply with the requirements. There is no need to design, QA or code them. You only need to integrate them.
As a developer, it’s very hard for me to recommend on a shelf product. Even if I’m busier than the president, I can’t see myself giving up on developing something. (Unless it is very boring…)
But sometimes we are requested to look beyond our hat as developers and really give our honest opinion on what is better.
When I was confronted with the request to see live updates on our systems, I could have developed a system that reads from a database and shows graphs. That would have taken me weeks and it would be nothing compared to Grafana.
On the contrary, I can see another product I developed that I know there are a few shelf products I could’ve used, but the time and effort I needed to invest on any of them to adjust them for our needs were bigger than just developing it by myself.
How can we choose?
It depends largely on the request itself, obviously. When working on a new project, I always look for examples on how others did it to learn from them. I hardly believe what we are doing is completely new and we try not to invent the wheel over and over again. That doesn’t mean I’ll always take a shelf product if it exists.
When trying to decide, I will consider a few points:
- How much of the requirements the shelf product complies with as-is?
- How easy would it be to make it comply 100% with our needs?
- How easy would it be to make a POC out of it?
- Is it open source?
- Is there a community behind it that can help with bugs and questions?
- In what language is it written? (I wouldn’t want to present more and more languages and frameworks to my team)
- How much does it cost?
Let’s take a look at the Grafana example.
Requirement: We needed a live statistics viewer that can read the data from a database.
- How much of the requirements the shelf product complies with as-is? It complies 100% with our requirements (and more!).
- How easy would it be to make it comply 100% with our needs? No need to work hard, it’s already there!
- How easy would it be to make a POC out of it? It took me a few minutes to make a POC with it.
- Is it open source? It is!
- Is there a community behind it that can help with bugs and questions? There is a large community behind it! You can see it by looking at their GitHub page.
- How much does it cost? It’s free!
On the other side, developing such a framework, as a side project at the beginning, was simply impossible.
The answer here is pretty straight forward – Take the shelf product.
The answer is hardly ever straight forward and I see myself many times thinking if we made the correct choice even after the product is in production. The important thing to do is to be aware of the options you have and be able to explain to yourself, your team and your manager, why you chose what you chose.