The first sentence in the article encapsulates one of the biggest problems in this industry. It may apply to very specific roles within certain companies, or to specific subdisciplines, but in general the statement is little more than an unsupported assertion. It is very popular in a population heavily weighted by CS graduates, but popularity doesn't imply correctness.
As a thesis statement it is wildly out of sync with all but a few of the bullet items, most of which have almost no relation to "CS fundamentals". Working on projects outside of class/work is broadly applicable to any field, as is contributing to large projects as part of a team or group; neither of these requires "CS fundamentals." OO programming and learning specific languages are likewise disconnected. Some of the points aren't bad with respect to being required in order to be a good software engineer, but even those are too scant on detail (even for a bullet list).
Most of the "learn about" points are vague. In particular, as an example, the point about DS/algorithms is awful. What does "learn about" mean? Satellite engineers "learn about" materials, orbital mechanics, radiation and E&M, but they aren't in general expected to know the fundamentals (as a physicist would understand the term) of the theories of particle physics or gravitation for example.
The bullet points read like a survey of random computing related topics. There is no focus or cohesion connecting them to being a good software engineer. It reads like somebody's random meanderings when contemplating something they might find interesting within the field of computing. It's not a guide; it's a disconnected hodgepodge.
Remove everything that isn't related to being a good engineer (that would be almost all the points about sub-discipline-specific items, like machine learning), elaborate on the DS/Algorithms points, and provide something in the guide to actually support the opening statement (good luck).
I generally agree, but I would also argue that they've left off the things that relate to being a good engineer, at least for engineer in the traditional sense.
As a thesis statement it is wildly out of sync with all but a few of the bullet items, most of which have almost no relation to "CS fundamentals". Working on projects outside of class/work is broadly applicable to any field, as is contributing to large projects as part of a team or group; neither of these requires "CS fundamentals." OO programming and learning specific languages are likewise disconnected. Some of the points aren't bad with respect to being required in order to be a good software engineer, but even those are too scant on detail (even for a bullet list).
Most of the "learn about" points are vague. In particular, as an example, the point about DS/algorithms is awful. What does "learn about" mean? Satellite engineers "learn about" materials, orbital mechanics, radiation and E&M, but they aren't in general expected to know the fundamentals (as a physicist would understand the term) of the theories of particle physics or gravitation for example.
The bullet points read like a survey of random computing related topics. There is no focus or cohesion connecting them to being a good software engineer. It reads like somebody's random meanderings when contemplating something they might find interesting within the field of computing. It's not a guide; it's a disconnected hodgepodge.
Remove everything that isn't related to being a good engineer (that would be almost all the points about sub-discipline-specific items, like machine learning), elaborate on the DS/Algorithms points, and provide something in the guide to actually support the opening statement (good luck).
That specific enough for you?