DEV Community

Victor Akpan
Victor Akpan

Posted on

Trade-offs, no absolutes

tradeoff

IT ecosystem is in a state of continuous change. A decade ago containerization tools like docker and kubernetes didn't exist. Today, you can't talk about fault-tolerant, availability and scalability without considering these tools. Chances are 10 years from now a new set of tools will emerge. There are no absolutes anymore, every technical decision has its trade-offs.

Merriam-Webster dictionary defines trade-offs as "1: a balancing of factors all of which are not attainable at the same time. 2: a giving up of one thing in return for another". Technical managers, architects and engineers have a duty to question every design decision, consider its trade-offs and how these trade-offs align to the requirements of a project.

For example, you are tasked with selecting a programming language for a new project. Your first instinct might be your favorite language or one you are comfortable with. Given the impact a programming language choice can have on a project, we have to set aside our feelings. Selecting a programming language for a project depends on a number of factors such as:

  1. Client's requirement (some clients explicitly specify which language to use, but you can advise on the trade-offs)
  2. Cost of hiring new talents
  3. Learning curve
  4. Functional vs OOP
  5. Strong static typing
  6. Isomorphism
  7. Interface support
  8. Ease of refactoring
  9. Explicitly defined data structures
  10. General readability
  11. Third party libraries

As engineers, it is easy to become attached to a particular technology or approach, especially if this approach was implemented successfully in your previous projects. But we have a responsibility to humbly assess the good, bad and ugly of every choice we make. Everything is a trade-off, no absolutes.

Top comments (0)