The personal website of Nimish Jha

Code

Technologies

JavaScript

CSS

D3.js

Angular.js

PHP

C

C++

Python


I dislike frameworks in general, because of the cognitive, maintenance, and performance overhead they impose, especially considering the short lifetime of any given framework. I prefer to start from scratch. As development progresses, patterns emerge, and you can create your own abstractions, tailor-made for that project.

Contrary to popular myth, this reduces development time compared to using frameworks. Frameworks let you get something initially impressive up and running quickly, but the pace of development falls off a cliff as soon as you need to make changes that the framework designer(s) didn't envision. There are always those last little bits that your chosen stack just won't let you do, and this is how projects balloon in complexity, cost, and fail to meet specifications.

Furthermore, the generic abstraction that frameworks provide comes at a very perceptible performance cost. The more generic the framework, the more possibilities it has to account for at every step, and this leads to performance hits on the scale of orders of magnitude.

Some people call starting from scratch "reinventing the wheel," and they're wrong - it's more akin to developing a custom wheel for your specific needs. A Formula One car's tyre is a wheel, as is a crude wooden oxcart wheel. I doubt anyone would argue that the Formula One tyre was a waste of time to develop. There are relatively few procedures that are the same across projects. Statistical computations come to mind. Even something as simple as user registration is very different for different organisations. Trying to build a generic user registration framework is a fool's errand... but that's never stopped people.


Javascript

CSS

This page was last updated on Apr 06, 2017