Saturday, March 10, 2012

We Are Not Software Engineers

The other day it came to my attention, after years of thinking of and calling myself a ‘Software Engineer’, I was not in fact one. Not only that, but many of my talented tech friends were not either. We had all been committing a fraud, if only unknowingly.

Worse still companies advertising to hire a ‘Software Engineer’ were also clueless since that was not what they were actually seeking to higher. Ok, so what am I talking about?

Well I have found that, legally speaking, most us cannot call ourselves ‘Software Engineers’. In order to be a licensed professional engineer one is required to:

  • Have the legal authority to use an engineering title without restriction.
  • Can offer engineering services.


Most states in the US prohibit the unlicensed ‘practice of engineering’. To offer engineering work without a license is actually illegal. Licensing laws exist to maintain a certain level of professionalism and competency of the term ‘engineer’ so as to ensure public safety.

One can, though, legally use the term engineer in their title under certain conditions:

  • One only practices engineering for their full time employer.
  • One’s practice is limited to their employer’s facilities and products.
  • One does not use the title outside of their company.
  • One does not claim that they are qualified to offer engineering services to another party.


So how can one become a licensed software engineer? Well, in the state of Texas one would need to have the following:

  1. Possession of an engineering, a computer science, or other high-level math or science degree.
  2. At least 16 years creditable experience performing engineering work.
  3. References from at least nine people, five of whom are licensed engineers.
  4. Required educational and other credentials.



So from now on, we’re all just software developers. Also, feel free to report all those claiming to be ‘domestic engineers’. That’s just annoying.:)


Friday, March 9, 2012

The Levels of Foo

I found an article on the web site of the Internet Engineering Task Force (IETF) today which gives the etymology of the word 'foo' and defines the different levels of foo. They are:

foo
bar
baz
qux
quux
corge
grault
garply
waldo
fred
plugh
xyzzy
thud

Now let's see how many levels we can refer to in our example code. Ha


   foo /foo/

   1. interj.  Term of disgust.

   2. Used very generally as a sample name for absolutely anything, esp.
      programs and files (esp. scratch files).

   3. First on the standard list of metasyntactic variables used in
      syntax examples (bar, baz, qux, quux, corge, grault, garply,
      waldo, fred, plugh, xyzzy, thud). [JARGON]

      When used in connection with `bar' it is generally traced to the
      WW II era Army slang acronym FUBAR (`Fucked Up Beyond All
      Repair'), later modified to foobar.  Early versions of the Jargon
      File [JARGON] interpreted this change as a post-war
      bowdlerization, but it now seems more likely that FUBAR was itself
      a derivative of `foo' perhaps influenced by German `furchtbar'
      (terrible) - `foobar' may actually have been the original form.

http://www.ietf.org/rfc/rfc3092.txt