DEV Community

Discussion on: Beware the Trendites

Collapse
 
alainvanhout profile image
Alain Van Hout • Edited

A very good discusion, with plenty of good points. To make maintainable software, it doesn't pay to only focus on the highest level of abstraction.

The sentence "This is why I say that a programmer must know C to be considered a true professional." did make me cringe though. The problem with that is that a programmer can very easily be extremely productive and create very maintainable code without knowing any C. A true professional uses the tools required for the job at hand, and makes sure that he uses those tools properly. That may or may not include knowledge of C.

To put it into perspective, it would be equally valid (i.e. not) for me to say that no C programmer could be considered a true professional without being sufficiently adept at old-school electronics as well as the underpinnings of quantum mechanics (with a particular interest in quantum electrodynamics), since that's what all of it fundamentally runs on.

(Edit: notably, there's a sizable difference between a skill not being needed in general, and it not being needed in every single person -- it's the splitting up of skill sets among individuals that has served as the engine for much of human progress, since the times in history when one person could possess all human knowledge are long gone)

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

I think I understand where you're coming from. I rarely make statements like "a true professional must X". My motivation on that one exception was that it is hard to really understand the underlying mechanics of programming without knowing C. That knowledge of underlying mechanics is generally critical to writing clean, well-performing, efficient code.

That said, it could be argued that knowing any number of similar low-level languages with such low-level control can substitute for knowing the C language. For example, if one were proficient in Assembly, they could absolutely skip C in terms of the fundamental knowledge it provides.

The trouble is, we have too many programmers who just "leave the fundamentals to the mega-nerds", and crank out garbage as a result. They don't actually know what they're doing, why they should use certain algorithms and design patterns. Even if someone can leave the low-level work to others, they shouldn't be in the dark about it.

Collapse
 
bosepchuk profile image
Blaine Osepchuk

There are "good" programmers who know C and there are "bad" programmers who know C. There are also "good" programmers who don't know C (or any other low level language).

To make your case you'd have to take a group of "bad" programmers break them into groups and run experiments on each group. And then come up with the result that the only way to turn them into "good" programmers was for them to learn C (all other treatments failed). If that turned it to be true, I'd be very suprised.

I know there are a lot of "bad" programmers out there but I think their level of C knowledge is a non-casual factor. Do you know of research that suggests otherwise?