
Frequently Forgotten Fundamental Facts about Software Engineering - jwilliams
http://www2.computer.org/portal/web/buildyourcareer/fa035
======
gruseom
I read Glass' _Facts and Fallacies of Software Engineering_ a few years ago,
and this list is largely a summary of that book. What's interesting is that it
references the research literature for each claim it makes, which is rare for
popular books about software process. This isn't an entirely good thing,
because the research literature on software projects is itself so weak.

Glass has been in the software world for decades, publishing his own
newsletter and books. He made a career choice to remain a technical person,
foregoing the management path which is traditionally the only way for
programmers to rise inside companies, because he wanted to code. He wrote a
book about this called _The Power of Peonage_ arguing that staying at the
lowest level of an organization has the great advantage that no matter what
you do, you can't be demoted. That sounded worth reading to me, but it was
impossible to find. [~]

Glass also wrote a series of articles defending COBOL by pointing out features
that are useful for business programming and shouldn't be forgotten. How's
that for contrarian!

[~] Not impossible anymore -
[http://www.abebooks.com/servlet/SearchResults?an=glass&s...](http://www.abebooks.com/servlet/SearchResults?an=glass&sts=t&tn=peonage)
\- but I don't care quite _that_ much.

~~~
yters
Why's it so important to not get demoted? Why not start out as high as you
can, and then get demoted to peonage - getting the best of both?

On the other hand, peonage is enticing to me b/c then you don't have to care
so much about red tape. If you are an awesome peon, then you pretty much have
free range, though not a lot of money. But, if you're warm, fed, and have an
internet connection, who cares about money?

~~~
gruseom
_you don't have to care so much about red tape. If you are an awesome peon,
then you pretty much have free range, though not a lot of money_

Right, I've always assumed that's what Glass meant. Perhaps more than not
getting demoted, the power is in not caring about getting _pro_ moted, which
means there are all sorts of soul-sucking games you can just ignore.

It seems like a pretty rational strategy for inside an irrational
organization. Personally, I'd rather just not be there to begin with.

~~~
yters
On a related tangent, one interesting statistic I've seen is that the Air
Force has the most intelligent enlisted, but the Navy has the most intelligent
officers. In line with Glass' idea, this makes sense b/c the Air Force is the
one military branch where the officers are the ones put in harms way. So, the
enlisted both don't have to risk their lives, and they don't have to worry
about red tape. Thus, the smartest people in the Air Force are probably in the
enlisted, which is why it is said the chief master sergeants (some of the
smartest enlisted) run the show.

------
yters
I wonder how many of the problems that plague the standardization of software
engineering reduce to some form of Godel's incompleteness theorem?

My thinking is this: unlike the artifacts of other engineering disciplines,
programs can be self referential. Thus, they can meet the basic criteria for
Godel's theorem to hold. Godel's theorem states that for a formal system
meeting these criteria, not all true statements can be generated from its rule
base.

So, if we can say true statements are equivalent to use cases, and design
patterns are equivalent to rule bases, then it may be demonstrable that
software engineering is actually an unsolvable problem, at least in the large.
Thus, there is then a rigorous argument that programming should also (but not
only, since there are good software engineering insights) be considered an art
in order to be accomplished effectively.

------
swombat
While this list is interesting, many of these so-called facts are statements
of disagreement with common practices in large organisations, rather than
"fundamental facts".

Perhaps this would be better labelled a list of fundamental mistakes and
misunderstandings...

