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/

_________________________________________________
 For list-related administrative tasks:
 http://lists.racket-lang.org/listinfo/users

Reply via email to