Last Updated on
A few days back this idea pop up in my mind while writing a blog post for www.geekmj.org. The idea sucked me so badly, I stopped writing and started pondering over it.
How many times in my career as a software engineer/developer, technical lead, or architect, I tried to find out the right architecture, language, framework, libraries, package, cloud provider, and other for need in context?
The answer is I do it very very often.
List of few of my past decision making:
- Selecting Date & Time Library for Python 3.X
- Selecting a web development framework between Spring Webflux or Spring MVC.
- Selecting Language for a software project.
- Selecting a database among Oracle, MySQL, and Postgres.
- Choosing between MongoDB and DynamoDB.
- To select between SQL (Relational Database) and NoSQL. (Non-Relational Database) database.
- Many more …
The typical steps (process) involve in making my decisions are as follow:
- Listing constraints or factors which impact my decision. For e.g. Few critical success factors to decide a web framework is engineers’ availability, fast development, quick troubleshooting, resource availability, language, long term support, etc.
- Assign a weight (scale 1 to 100) for each factor. The Sum of weight for a factor will always be 100.
- Assign a rating on a scale of 1 to 10 for every constraint against each choice.
- Now we have a weighted score for each choice available to us.
- Based on the weighted score we can decide what is appropriate.
Most of the work involved in assigning a score for factors for each choice. It requires a lot of research. I often do research by reading online articles, GitHub project, StackOverflow questions, books, and watching relevant videos.
Whatever the choice be, my rating will be always biased with my thoughts and understanding of the subject matter. How you present and win the support of other team members also make a difference.
But I can sense a pattern or process which always follow to make these decision. As of now I am not seeing any product which can answer my question quickly, saving my valuable time.
Does it make sense to envision such product which will require software intelligence along with good quality research data.
Considering I create a nice web app and provide quality data for a few specific areas to start with. Will people use it?
It’s difficult to say without having anything in hand, hence an experiment is required. In this experiment (Minimal Viable Product) we will create a web app and decision making data points for Web App and Database made available.
📦 The Minimal Viable Product
I am starting with following features:
- Tool Profile Page – Logo, Title, Category, Usage, Age, Release Cycle, Adaptation, Developers, Support, Reusability, Type, Cost, Ease of Development, Learning Curve, Skill Availability, Extensibility, Longitivity, Adaptation, etc.
- Decision Playground –
- Select Core Options like Database, SPA, Language, Architecture for making decisions for paradigm or tools or software
- View Each Option and their a