[racket] Racket style guide (was Re: Argument order conventions (was: Variable naming conventions))

From: Neil Van Dyke (neil at neilvandyke.org)
Date: Fri Sep 23 00:29:07 EDT 2011

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".


Posted on the users mailing list.