[racket] Racket style guide (was Re: Argument order conventions (was: Variable naming conventions))
Hendrik Boom wrote at 09/22/2011 08:16 PM:
> Software Engineering is the art of getting things done with
> large numbers of relatively stupid programmers -- because there aren't
> enough really good programmers.
>
That certainly seems to be the predominant Java school of thought. :)
I'm going to quibble with this use of the term "software engineering",
since I have somewhat different notions of the term, which have been
important to me. I'll admit in advance that my own definitions are
fuzzy here...
Some of my earlier career, starting when I switched from being a
programmer kid with my own tiny software business, to a lowly intern
(below even Software Technician I, which itself was two big hops below
Software Engineer I), was on process and tools for critical
aerospace/datacomm/etc. software. So that was where my notion of
"software engineering" started. Closer to "how do we build something
necessarily complex that will do what is needed and work properly" than
"how do we get 40 clerical workers to code these 400 data entry screens
and 400 reports that we think we need".
Most recently, in some of my consulting work, the flavor of software
engineering that I practice involves *small* numbers of smart software
developers, who use engineering discipline (and usually Racket) to
implement functionality in a way that will be reliable in production and
maintainable in the future, despite constraints (time, resources,
information, coordination, etc.). There is an element of art to this,
true. There's lots of analytic speculation and balancing of concerns
going on, in addition to applying accepted best practices.
So, I think of software engineering as discipline that smart people
employ smartly to get things done, rather than the art of managing large
numbers of perhaps lower-skilled programmers. And if they those large
numbers of programmers learn and exercise software engineering
discipline, I wouldn't call them "relatively stupid", since the negative
connotations in English would be unfair. Software engineering is hard,
and it's not about reining in grunts with bureaucratic process, IMHO.
When there's doubt about the quality of a process, I say "development"
(or "programming" or "coding") rather than "engineering".
--
http://www.neilvandyke.org/