The gap between writing code ("programming") and producing software that is going to be available after a while, in a team ("software engineering") is maintainability.
Where maintainability is composed of documentation, version-control, testing, building, issue tracking, soft management, automating all of the above, adhering to conventions even if they are crazy, and more. All are non-trivial but won't be gleaned from your average programming course.
The article brushes with some of these but misses the mark overall.
The article brushes with some of these but misses the mark overall.