Some time ago I read this article about Why Mit Stopped Teaching SICP. Gerry Sussman said that nowadays people do not often need to build something from scratch again, there exists massive and huge library code for nearly everything. So today’s programming work is more like poking around other people’s code until it works.
I’ve beening doing Android dev for some time now, and I have to say that I sadly agree with him. Android is the platform, the framework, the library code that just been given to us by google, our job is just to combine its apis to forge an app that works. And also using only native apis is still quite hard thing to do, so now we have image loading libraries, networking libraries, logging libraries, DI framework, and some monster like RxJava. Not saying all these are bad, they are good quality library and using them does save a lot of development time. But I feel that there is something that is lost by doing so.
Even though every problem is still unique, the solution by using the poking approach is not as unique as the problem themselves. By combining certain high level libraries, the solution tend to look similar in a way. They are very fast to make, but lack the quality of tailored just for the problem at hand. It’s like handmade furniture VS IKEA.
So to remedy this, I start learning C again by reading the classic K&R book and doing the exercises. Writing for loops and counting the indexes are tedious to do, but sometime they feel so relaxing and satisfying as well. We admire advanced programming language features and new libraries, but We often forgot what simple and straightforward programming techniques can achieve.