Skip to content

First Principles thinking in Software

First Principles thinking in Software

There are several perspective you could approach with First Principles thinking – when you dig into Software Development.

What Software – the client needs or requires?

If the client is simple and it’s not willing to pay a lot, one should not over engineer and put a lot of complicated architectures or new frameworks and libraries that you don’t have experience with. The shortest path is the path you’ve already walked on. This will help you in terms of speed of development. Less time will be wasted fighting with the technology.

Another point in business analysis is to realize what the client actually needs. Sometimes – the client does not need an app, because all features are implemented on any modern Web Browser. Requirements that will tilt to an application are – low level sensors, GPS, NFC, Bluetooth, Camera, higher security and performance or bigger offline resource needs.

Software Development Perspective

Take into account and handle all the edge cases. Everything happens all the time and a software should be prepared for every case. In low level – code detail – this is:

  • Write appropriate code in the else clauses.
  • Always handle the exceptions – as safe and user friendly – as you could.

One of the things that Test Driven Development reassures that once fixed, a problem could be rechecked every time when the software is build.

There is somehow similar decision making process when picking the right software tool – framework and libraries. There are a lot of tools that accomplish the same task on all the layers:

  • Multiple Cloud Providers
  • Multiple Back-end General Purpose Languages
  • There are – more than one could ever learn -> front-end libraries and frameworks.

On each of these sub-layers – there are even more options to choose from. Again, in my personal opinion, the best choice is the most well known – that matches the requirements. One must also be open to the idea that – the knowledge that he has – does not accomplish the new incoming task.

Leave a Reply

Your email address will not be published.