Boston Linux & Unix (BLU) Home | Calendar | Mail Lists | List Archives | Desktop SIG | Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings
Linux Cafe | Meeting Notes | Blog | Linux Links | Bling | About BLU

BLU Discuss list archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss] Programming vs Engineering



On 01/21/2012 04:37 PM, Richard Pieri wrote:
> On Jan 21, 2012, at 1:39 PM, Mark Woodward wrote:
>> Does anyone have any comment?
> Yeah, but it's more rant than anything else.  You've been warned.
>
>
> The title "Engineer" has a specific, legal meaning.  Professional use of the Engineer title requires rigorous education, testing, internship and licensure.  None of these exist for professional programmers.  Therefore, there are no Professional Software Engineers, regardless of what is on our business cards[1].  All of this also applies to the "Architect" title.  Architects have similar education and testing requirements to Engineers, and like Engineers they must be licensed to practice professionally.  Use of the Engineer and Architect titles for computer specialists is nothing more than aggrandizement.
>
> In my book, your exemplar "good software engineer" is really a good programmer, and your "good programmer" is anything but good.  He is terrible.  He'll write "correct", "clean" code that will be five to ten times slower than the good programmers' painstakingly optimized code.  Then he'll go and rewrite their code to "clean it up" to match his own and check it in without telling anyone.  Then the next release candidate suffers catastrophic performance problems and a mad scramble to figure out why ensues.  Someone at a previous job of mine did this, and the senior management was not amused.  Bad programmer, no biscuit.
>
> Rant off.
>
> [1] My title at my last gig was "Senior Systems Engineer".  I hated that title and I hate putting it on my resume because it is a lie.  I'm no Engineer.
Basically, I agree with your first paragraph and I have had the title of
Software Engineer (by way of job description) for many years. There are
certain principles of software engineering that mirror principles of
engineering in contrast to a programmer or programmer/analyst. But, in
industry it is more of a pecking order. In a company where there are
programmers who work on product, they are generally called software
engineers where programmers in the IT department are generally called
programmers. In some companies I have worked at, to become a "principal
software engineer" you needed to be published,.

The bottom line is that engineering is a discipline. That means in terms
of code, that the code works when you throw it over the fence, that it
is also readable and maintainable. It also means that you don't rewrite
code for the sake of it. I've had to work with many very old programs
(like Lex and YACC) where the code was originally written by a graduate
student. But, both programs work. I've seen many rewrites of old code
that never were able to perform as well as the old code. Another
discipline is to document both using comments, as well as reasonable
comments when checking in to a source code control system like git, SVN,
or CVS. Recently at work there was a question of why my code (BASH in
this case) pointed at a specific server. I went back to the git logs and
found when that was changed. (I know it is not a good practice to hard
code things like that, but this was originally designed as a way to make
it easier for people in the office to install a piece of software we
bought from Europe).

-- 
Jerry Feldman <gaf at blu.org>
Boston Linux and Unix
PGP key id:3BC1EB90 
PGP Key fingerprint: 49E2 C52A FC5A A31F 8D66  C0AF 7CEA 30FC 3BC1 EB90





BLU is a member of BostonUserGroups
BLU is a member of BostonUserGroups
We also thank MIT for the use of their facilities.

Valid HTML 4.01! Valid CSS!



Boston Linux & Unix / webmaster@blu.org