CS Lessons #000: Introduction and motivation

In 2016 I can finally say that I have 10 years of commercial experience in web development. Yay! During those years I've seen a lot of new technologies introduced to make building applications for the web much easier. I am talking about things like Ruby, Ruby on Rails, Go, Elixir, Phoenix, ES6, React, Docker, Redis and much more. This is amazing.

But I also see a problem here. People take those technologies for granted and they don't see or care that those new exciting technologies are actually build on top of something else. Something that has been out there for a long time. Good example can be Elixir and Phoenix, which is build on top of Erlang and OTP (30 years old stuff).

Another thing is the library ecosystem. Many languages have a lot of libraries that you can easily use in you projects. Developers use them, but in most cases they don't know how those libraries work. They make everything easy, guarantee more productivity, but they also make developers lazy. It reminds me of the story about tester guy, who automated his daily tasks so well, that he could play League of Legends for the next 6 years. After this time, he forgot how to code.

I am not saying that you shouldn't use new technologies or libraries. I am saying that you need to pay more attention to the basics, to understand how technology works. Doing so you won't be only a passive user of technology. It will help you to learn new stuff and to solve problems in the better way, because you will be able to code your own solution and not depend only on libraries.

I created this series to encourage developers to try to know those basics. This will be about core programming, data structures and algorithms, file format, internet protocols and so on.

Posts in this series: