3 ms·
Software engineering is a generalist discipline: how to solve problems and add value to organizations using software. It applies whether you're writing performa
by dkarl 15y ago
Software engineering is a generalist discipline: how to solve problems and add value to organizations using software. It applies whether you're writing performance-critical weather simulations or web apps.
I agree absolutely. I've done jobs in scientific computing (whoops! knew nothing about interfacing with hardware, had to learn) networking (whoops! knew nothing about SNMP, had to learn) and stock trading (wtf is an intermarket sweep order? time to learn again.) There's a role for specialists, and I like the fact that I become more valuable and more independent as my domain knowledge increases, but even more I like that my skills transfer from one vastly different domain to another.
Someday maybe programming will be specialized. Like medicine: there's no way we would let a chimpanzee doctor operate on a human or even prescribe drugs to one. Right now there are natural areas of specialization, but specialization just isn't what it's cracked up to be. Anyone who has dealt with hired guns in software knows that specialists can't compete with smart generalists who are close to a problem. It's as if botanists performing surgery on close friends and family members always achieved better medical results than surgeons operating on people they didn't know. What's the use of specialization in a field like that?