My last job was at a company that designed and built satellites to order. There was a well defined process for this, and systems engineers were a big part of it. Maybe my experience there is distorting my perspective, but it seems to me that any sufficiently complex project needs to include systems engineering, even if the person doing that is not called a systems engineer. Yet as far as I can tell, it isn’t really a thing in the software industry. When I look at job postings and “about us” blog posts about how a company operates, I don’t see systems engineering mentioned. Am I just not seeing it, is it called something else, or is the majority of the industry somehow operating without it?
Systems engineering is an established discipline, one you can get a degree in. It’s not just a random term I’m making up. https://en.m.wikipedia.org/wiki/Systems_engineering
No one said it’s made up, just that we don’t know what it is because it’s a term for big (and maybe hardware-oriented) industries. Most devs will never touch this in their lives.
From your link, it seems that the “software architect” is the closest equivalent. He must have a broad knowledge in a bit of everything from the code to talking with clients in order to make good decisions for everyone, and make sure that a good path is followed by everyone.
Last but not least, this book seems interesting and gives an overview of what I said: https://www.amazon.com/Fundamentals-Software-Architecture-Comprehensive-Characteristics/dp/1492043451
Software Architect.
Yes, most companies don’t have them nor know about them. It’s a pity, but software engineering isn’t understood nor recognised by managers. Most still have the mindset that software engineers and programmers are the same thing because they sit behind a computer all day. I imagine that in their minds it’s the equivalent of dicking around all day like a gamer does. It’s ignorance.
“it can’t be that hard, just tell the computer what to do”
People who don’t understand coding think it’s a bunch of mumbo jumbo made to sound difficult. They still think in the physical realm. Multiply engineers and it goes X times more quickly! If I wanted a building finished, all I need is manpower.
Of course they also don’t value the profession. They think managing people is much more difficult than writing code. I’ve heard this over and over for years. “You don’t understand how difficult it is to manage people”. I think “You don’t understand how difficult it is to write good software”. Since they think it’s easy and in some virtual, magical realm, that one person should be able to do many things. They don’t understand the value of QA, architects, developers, devops, sysadmins, etc.
Probably my quotes implied sarcasm, what i should have said is there are so many hats that a “software developer” or “software engineer” is really really broad like by the wikipedia definition at my current company we typically call those “principal engineers”, or “principal architect”; i’ve also seen them called staff software engineers.
Likely it’s super domain dependent; the failure cost with a satellite’s or hardware cost you the business. Where with a website the MTTR can be very small. So a large oversight isn’t quite as needed, as the cost is so small.
I’m thinking more of design than oversight. In my experience building a large, complex system without seriously considering the system design (in the way that a systems engineer would) leads to many “oops” moments that will eat into the schedule.