Type systems are core components of programming languages. However, it's easy to get confused by the rich vocabulary we use to describe them, especially since they seem to have different sense depending of the programming language you speak about. What are the big ideas of a type system? Is there a better type system to rule them all?
Why nobody seems to agree when to apply the Single Responsibility Principle? Why is it often misunderstood? Let's see where this principle comes from, why we shouldn't mention it, and what we should speak about instead.
For 30 years, command-line interfaces have been developed and extended to solve many problems developers can have. That's why the shell is the keystone of a powerful and efficient development environment. It's important to choose one which help you accomplish your goals without getting in your way. It's exactly what Zsh does.
As developers, learning is part of our job. We need to learn about many different topics to be good problem solvers. How to learn effectively, and efficiently? This is the question this article try to answer by brushing over the vast concept of learning.
Cognitive biases can bring mistakes, bugs, and wrong implementations. Knowing what cognitive biases are, what are the most common ones in software development, and how to fight them, can help you takes more logical decisions and create effective solutions.