All articles

Continuous online learning

Online resources to keep learning.

I had been preparing this article since the beginning of the year, but had not had time to finish it until now.

A new decade has begun. Every new year, millions of people set new goals. One of my recurring yearly goals is to keep improving as a programmer.

A crystal ball telling us which technology will be the next big thing would be very useful: it would make deciding what to study much easier. But however hard I look, I still have not found one.

Looking back at the last decade, we have seen some languages become much more popular and others decline. If technologies and the market change so quickly, is studying a specific technology worthwhile?

Suppose a new programming language called “Excellent” appears tomorrow. It supports both functional programming (FP) and object-oriented programming (OOP), and suddenly every company needs to migrate to it because of its excellent performance, maintainability and other features. Practically speaking, every programmer in the market would know nothing about it except its creators. Nevertheless, those with experience in OOP and FP could transfer their knowledge to the new language: they would only need to learn its syntax and peculiarities. All those hours spent studying PHP, Elixir or another language would not be wasted. That is why it is important to learn programming fundamentals well, keep an open mind and explore new technologies and ways of solving problems.

We cannot say which language or framework will be most popular five years from now. But we can be almost certain it will not be today's leaders. As Heraclitus said, “The only constant is change.”

Without a crystal ball, how can we prepare for the future as developers? I see two paths: create our own language or framework and show other developers how much it can help their everyday work, which seems rather complicated; or keep studying. But with so many resources online, where can we find genuinely valuable information? Here is the list of sites I personally use. It is not exhaustive—there are many more resources online—but these have been particularly useful to me, and I think you, dear reader, may find them useful too.

General

Coursera

Excellent courses from prestigious universities. This is my favorite resource when I want to refresh my knowledge of algorithms, data structures and computer science in general. All courses can be taken for free; certificates require payment.

Edx

An alternative to Coursera with a very similar approach.

Khan Academy

An excellent resource. I mainly use it to refresh my mathematics knowledge. It also has interesting resources for getting started with programming and for students from preschool through high school. It is completely free.

Technologies

Pluralsight

This site has a huge number of courses on different technologies. One feature I really like is that content is organized by roles, such as Node Developer or React Developer. It also organizes content into paths for JavaScript, Java and other topics. Role IQ lets you assess your knowledge and recommends what to study based on your results. The Premium option includes interactive courses, projects and practice for some certifications. This site is not free.

Linkedin Learning

Previously Lynda.com, it was acquired and renamed by LinkedIn. It is very similar to Pluralsight, but without roles. It is not free, although an account at an approved public library can give you free access to the entire catalog.

Example: Toronto Public Library: https://www.torontopubliclibrary.ca/detail.jsp?Entt=RDMEDB0187&R=EDB0187

Egghead

Mini-courses. Each video tutorial generally lasts less than ten minutes. It focuses mainly on JS but also has courses on other languages.

PHP

The two major video-tutorial resources in the PHP world are:

Symfonycasts

Focused on the Symfony framework.

Laracasts

Focused on the Laravel framework.

Both offer excellent tutorials about their frameworks, PHP in general, testing, OOP, best practices, design patterns and other topics. These are paid sites.

English

English is essential in programming. The best literature and the documentation for many frameworks and languages are available only in English, so starting or continuing to improve our English is very important. There are countless online resources for studying it. My personal favorite is Duolingo. It is free.

Ideas

Several companies allocate funds for employee development and can pay for many of these subscriptions. If an annual subscription does not fit our professional-development budget, it is best to decide exactly what we want to study, spend one to three months studying intensively on a relevant site, and cancel the subscription after finishing the courses. Almost all these sites offer a free trial of a week or ten days.