I’d say it’s a little of both. Enterprise programming below a fairly senior level doesn’t demand much knowledge of algorithms, complexity theory, formal language theory, or most of the rest of academic CS; in a lot of jobs you can quite easily grind along for years without writing so much as a binary search. On the other hand, it does often demand knowledge of unusual tools and language features, enough flexibility to fit your head around arcane and poorly documented architecture, and above all the ability to understand and fix other people’s crappy code—something that academic CS does a very bad job of teaching.
That’s a fairly shallow skillset, but it is a broad one.
On the other hand, it does often demand knowledge of unusual tools and language features, enough flexibility to fit your head around arcane and poorly documented architecture, and above all the ability to understand and fix other people’s crappy code
Is enterprise programming special in this regard? From the description it sounds like game developers, embedded developers etc. also have to face similar problems.
I wouldn’t say any of those problems are unique to enterprise development, but enterprise might be the only major branch of software development where dealing with them well is the main skill needed for the job.
I’d say it’s a little of both. Enterprise programming below a fairly senior level doesn’t demand much knowledge of algorithms, complexity theory, formal language theory, or most of the rest of academic CS; in a lot of jobs you can quite easily grind along for years without writing so much as a binary search. On the other hand, it does often demand knowledge of unusual tools and language features, enough flexibility to fit your head around arcane and poorly documented architecture, and above all the ability to understand and fix other people’s crappy code—something that academic CS does a very bad job of teaching.
That’s a fairly shallow skillset, but it is a broad one.
Is enterprise programming special in this regard? From the description it sounds like game developers, embedded developers etc. also have to face similar problems.
I wouldn’t say any of those problems are unique to enterprise development, but enterprise might be the only major branch of software development where dealing with them well is the main skill needed for the job.