What is the right technology stack to implement a solution ?

What is the right technology stack to implement a solution ?

·

2 min read

One of the biggest challenges in software development is decision quagmire. For example what to choose when we have multiple options.

For a project whose scope is well defined and given the functional and non-functional requirements, we could first create the system design and then find many of the answers.

But still, sometimes there could be some aspects which still hamper our productivity.

  • variable naming/database table naming

  • ORM vs SQL

  • SQL vs NoSQL

  • java vs nodejs

  • react vs angular

Below are some ways you could make progress and rapidly

  • Comfortable

    Choose whatever you or your team is comfortable. For example, choose sql if your team is not comfortable with ORM’s and you are short on enough time.

  • Previous Experience

    You could have had some experience with some aspect of a software component which could push you to use a different one.

  • Less Number of Moving Parts

    When you are starting, the more components you introduce, the greater the complexity.
    Try to push your existing systems and reap the maximum benefit.
    Of course, postgres is not design to function as a queue, but that doesn’t mean it cannot be used. It could very well work for your scale and problem.

    You need to build a recommendation system for suggesting products to your customers. You could use sophisticated machine learning algorithms using a complex pipeline. But what if you could pull off an initial baseline using some SQL. This helps in having a baseline for evaluating an ML-based recommendation system should you choose to go down that line in the future.

  • Conventions

    Choose a convention good or bad (choose the best practices) and stick to it. After some experience, if you feel a need for improvement, change the conventions. The less number of decision points, the faster you progress

    • folder structure

    • file naming (underscore/camelcase)

    • Generic Request validation, Services for Business logic etc.

  • Experiment

    Sometimes you could have a decent time, try using something that you have been wanting to try. Like, use golang for building a cli tool used internally.
    This way, you will learn what its like to be on other side of the fence which you would have been wanting to.

Whatever you do, even if sometimes you move backwards, just remember that its improving your workflow and productivity.

Start building !