A widely held set of assumptions that: * Systems programming is unusually difficult compared to other forms of programming * OS development and design are the pinnacle or programming achievement, and the highest calling for any programmer * Systems programmers are inherently superior to other kinds of programmers * A competent systems programmer will naturally be gifted in all other forms of programming Even though I am myself an aspiring systems programmer, I find these assumptions laughable. It is my opinion that the over-emphasis which is placed on systems programming, in academia especially, has a corrosive effect on the study of other branches of the field. -- JayOsako Hmm, I'll mildly disagree here, Jay. I hold ''good'' systems programmers and compiler writers in high esteem, because of the complexity and the number of levels of abstraction spanned by both tasks - ranging from the metal (register allocation, evaluation, selection, and even composition of machine instructions, interaction with interrupt handlers and device I/O register) to the quite abstract (models of resource allocation, security, syntax trees). Of the two, system programming rates higher in my esteem, because of the significant additional burden imposed by concurrency. I've never written more than toy compilers. I have done some system-level programming. Certainly, the bonus points for spanning abstractions don't really apply to a programmer who is concerned only with a small subset of systems programming - for instance, someone who writes only hard disk interface drivers. I'll agree with your last point, though. Writing good user interfaces, for instance, requires some very different skills, I think. -- DanMuller Yes, but do you hold them in high esteem because they are systems programmers, or because they are good? There's the rub. It seems some programmers assume that anyone who dares to hack a Linux kernel or write a compiler must be a genius, regardless of how good they actually are. I've never seen that kind of semi-mystical awe around, say, DBAs. I do agree that a background in systems is useful and that most programmers would benefit from some understanding of the low-level details, but I think that there's a tendency, at least among US universities, to teach it to the exclusion of other useful aspects of the field, especially theory. -- JayOsako I hold them in esteem ''if'' they're good ''at'' system programming. I've known a few, and accorded them different levels of professional respect, depending. I can't speak from first-hand experience of recent curricula, and much of what I hear is not good. When I went to school, systems programming started with theory. Concurrency (mutual exclusion etc.) and queuing theory still come to mind, for instance. Since I was also studying EE, I also had a good mix of hands-on digital design and low-level programming, and I for one found it extremely useful to understand programming from the bottom up - but I'll admit that my top-down theoretical understanding lagged a bit because of my dual focus. I guess you'd have to be more specific about what the current curricula are like (or provide a pointer to something you think is typical) before I could give an opinion on that. -- DanMuller ''All of this is really besides the point. The real problem with the CultOfSystemsProgramming is that is devalues DomainKnowledge - it is based on the assumption that a skilled programmer in one specialization is automatically equally skilled in all of them, and that the programming field has a hierarchy of complexity with systems programming at the top. Both of these claims are demonstrably false. -- JayOsako'' ----- See also: SystemProgramming