4 ms·
It's interesting watching how history rhymes. When I started learning to code in 2004, a lot of software tools started to abstract away from underlying fundamen
by jongjong 2y ago
It's interesting watching how history rhymes. When I started learning to code in 2004, a lot of software tools started to abstract away from underlying fundamentals, but they were very careful about the abstractions they introduced... Fast forward to around 2010 to maybe 2015, there was an explosion of abstractions (in terms of adoption); MVC, MVVC, MVP, ORM, design patterns, functional programming, dependency injection, etc... And a lot of frameworks just built on top of these concepts and were promoted as silver bullets.
Fast forward to today, frameworks are built on top of a massive amount of abstractions and philosophies, some of which don't really make sense together. There is so much stuff to learn at the top layer that, in the long run, you'd be more efficient just learning the fundamentals and working from first principles.
Even though I started coding in 2004, I started with Flash/ActionScript on Windows and I was wondering why anyone would need to use the console/terminal in this day and age... What happens is; over time, you will repeatedly get into situations which will force you to peak under the bonnet and the more you do that, the more you realize that actually a lot of these abstractions are unnecessary... Then you inevitably end up becoming a Linux nut who uses bash for everything.
I think the clearest illustration of how needlessly complicated a lot of frameworks/abstractions are, from back in 2004, was the Windows API in C++... Back then, you needed to write like 100+ lines of code just to create an empty Window! At the time, I felt so clever for memorizing over a hundred lines. I now realize how ridiculous that was. It invented a lot of abstractions, but those abstractions didn't make things simpler nor more flexible. Incorrect abstractions like this are everywhere nowadays though they moved away from the Desktop and to the web instead.