Stuff formally trained programmers know

This is going to be a series of posts where I intend to dive into the stuff which "formally trained" programmers seem to know. # What do I mean by "formally trained"? The easy way to think of it is programmers who have a university education, or something similar, where the focus is on theory. It also feels to me that the old & wise programmers all just know this, but the upcoming generation seems not to have this knowledge. I don’t put myself in that group of formally trained programmers, and even after 20 years, I don’t know these things well enough to hold a conversation about them. What topics will I be covering? (These will be linked as the posts go up.)

Languages

The biggest pain for me in 20 years of programming is that not everyone speaks the same language. I’m not referring to C# or JavaScript—rather, the terminology we use. Is an Array always an array? How do we talk about measuring performance?

Data Structures

The way we structure data, the advantages and disadvantages of each.

Algorithms

Algorithms are ways of working with data and data structures in a consistent way. The advantage of knowing them is twofold: first, it helps communication since we can all use the same names, and second, it expands our thinking about programming.