[lug] software engineering
Nate Duehr
nate at natetech.com
Sat Dec 2 02:12:08 MST 2006
David Morris wrote:
> On Mon, Nov 13, 2006 at 05:32:43PM -0700, Bear Giles wrote:
>> The levels where it starts getting difficult?... they're
>> management, not engineering. Don't get me wrong, it's
>> usually still people on the engineering side of the house,
>> but when you're trying to make sure 14 teams are all
>> working on the same problem that's a management issue, not
>> something you solve with your grandfather's slide rule.
>
> At the risk of going back to prehistory I'm so far behind in
> reading my email........
>
> The concept you're striving for here is Systems Engineering,
> a field newer than even software engineering. At least as
> an official engineering discipline, people have *done* it
> for quite some time with varying degrees of success.
You think it's really that new? Or was the role filled (even if they
didn't have the title) in traditional "Engineering" organizations by
Principal and Head Engineers with a lot of passion for the end-result?
I've never had the joy of working for an organization that ever had this
as an official role in software engineering, but I *have* seen the role
itself filled under other names in older, more discipline-focused sorts
of engineering. An example would be my own "world" of Telecommunications.
Most telecom operations have people labeled "Subject Matter Experts" who
have varying degrees of authority and power within the organization to
recommend and suggest (even approve) various forms of work done to
operational/production systems. They are the first to go to training
and or even work with the engineers directly during development to learn
the system and recommend changes when they're in that "development"
cycle, and they're the first and last say on a lot of things in the
"production" environment later on.
Who fills this role in software engineering in larger organizations, is
what I'm wondering -- someone who's overseen the entire life-cycle of a
product? I don't see many people (none, really) who are tasked with
this type of job.
> In short, the traditional engineer is focused primarily on
> how something should be done, while a systems engineer
> focuses more on the question of why.
>
> In the field of Aerospace (where I work), this is a vital
> role because of the need to get everything right the first
> time in an extremely complex system. Aerospace companies
> are still working out how systems engineering works into the
> mix and just finding out that its a good role to have around
> on small scale projects as well as large. I've worked on
> projects with good systems engineering support and others
> with next to none and the difference it makes is
> astronomical (sometimes literally, in this industry! ;)
Who made those decisions before they had an officially titled "Systems
Engineer"? I'm thinking specifically about Aerospace here, since you
mention it's your field... I've read a lot of things about Kelly
Johnson's Lockheed Skunk-works, for example. Was it handled by someone
like Kelly himself back then because his "name was on the door"?
I ask because it doesn't seem like a whole lot of projects today want a
single "name above the door". It's so much easier to spread the blame
for crappy software around to "the team", it seems.
No matter how hard an individual team member tries to ask those "tough"
questions, when it comes time to ship, they're just a member of "the
team" and they're rocking the boat. Sometimes the smart folks just
keep their heads down and their powder dry for another day's battles
when deadlines loom -- and bad things ship.
I understand Aerospace has some goals that must be met just to make the
mission happen -- just keeping the pilot alive in an SR-71 forced a lot
of "obvious" Engineering questions and design realities, I'm sure.
In software, we don't seem to have our act together yet -- a
"successful" software project typically only means the thing did some
percentage of the desired result and manages to stay running to say,
six-nines... that magical number that got a lot of marketing traction in
the last few years. Or it can mean something completely different.
Do you think it's possible to state in black and white a list of
requirements that EVERY "successful" piece of software has to have? I
don't, and I think that's one of the dilemmas of software engineers.
What's "successful"? If the software does everything that was required
of it, but is a nightmare to maintain for the operations people -- is
that successful? Is it successful if a customer later complains that
it's too hard to maintain? Is the answer ALWAYS, "the next version is
coming, welcome to our software treadmill?"
> I'm not certain how much systems engineering (as an official
> position on the project) has been adopted in the commercial
> software industry, but I haven't heard much about it. I
> imagine that as time goes on we'll see an increase in this
> role and a direct increase in software quality along with
> it.
You haven't heard much about it, and I've certainly never seen it. I've
seen cross-functional teams produce some pretty nice products that took
a lot of things into account, if they're given the resources and
authority to make whatever changes necessary to the product, and then
have a director-level person who can communicate to Sales and Marketing
about what the product is REALLY going to do, long before it's
released... worked on a team like that once. Was the representative for
"support"... caught a lot of things... like, "How are we going to access
this appliance remotely to handle service contracts?" ... and "I
understand this six page document to reload the database, but if the
system's down and you have to walk a customer through it, you're going
to have one very confused/pissed off customer... could this be
scripted?" (And yeah, I ended up writing the script... in REXX. That
was odd. Long story about how it came to be REXX, but it was an OS/2
box...)
Thanks for the insights. I keep thinking there's some way to slowly
move software off the never-ending treadmill of buggy releases and have
much better quality than we have today, overall -- but I think the
problem here is the industry isn't set up for it.
I think customers tend to hate the whole, "That will be fixed in the
next version (which will break three other things and make your life
complex because you need to figure out how to take the downtime
necessary to upgrade" syndrome, but I don't see any way to get software
engineering as we know it today beyond that stage.
I keep meaning to see what (if any) good reading there is on the team
that built MS Excel. As much as our little Linux list might not like
MS, you have to admit -- after about the second or third version of
Excel, the thing generally "did" what its end-users wanted, relatively
bug-free. I can't think of any time I've ever heard anyone complain
about Excel in terms of how "buggy" it is. I'm sure something advanced
that only a small percentage of users use in it has some bugs somewhere,
but for the vast majority of the customer-base, Excel works "correctly"
for them. How'd they do that seems like a useful question. Apache
might be another good example, but I'm not sure... users don't directly
interact with Apache itself... maybe a bad example. Hard to compare
desktop apps to server apps, I guess.
Nate
More information about the LUG
mailing list