I don’t know much about the enterprise world. Which of the following sounds more true to you?
a) Enterprise programming requires fewer skills, or a lower level of skills, than other kinds of programming;
b) Enterprise programming has a separate skill ladder, and a good enterprise programmer has important skills that are unknown to most non-enterprise programmers.
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.
There’s a bit of both. In favour of a), enterprise programmers are typically less enthusiastic than people from smaller companies, and also generally more narrowly specialized—they may deal with some small area of a larger system, where a startup employee has to be able to handle everything that comes their way.
In favour of b), enterprise systems can have higher demands in terms of robustness (your bank going down is worse than twitter going down), scalability (most small companies haven’t taken off in user numbers yet and probably never will), the amount of legacy code that needs to be read and dealt with, and the size and complexity of the existing code base and database(s), and the need for integration between a number of disparate systems managed by different teams.
I don’t know much about the enterprise world. Which of the following sounds more true to you?
a) Enterprise programming requires fewer skills, or a lower level of skills, than other kinds of programming;
b) Enterprise programming has a separate skill ladder, and a good enterprise programmer has important skills that are unknown to most non-enterprise programmers.
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.
There’s a bit of both. In favour of a), enterprise programmers are typically less enthusiastic than people from smaller companies, and also generally more narrowly specialized—they may deal with some small area of a larger system, where a startup employee has to be able to handle everything that comes their way.
In favour of b), enterprise systems can have higher demands in terms of robustness (your bank going down is worse than twitter going down), scalability (most small companies haven’t taken off in user numbers yet and probably never will), the amount of legacy code that needs to be read and dealt with, and the size and complexity of the existing code base and database(s), and the need for integration between a number of disparate systems managed by different teams.