The Lounge is rated PG. If you're about to post something you wouldn't want your
kid sister to read then don't post it. No flame wars, no abusive conduct, no programming
questions and please don't post ads.
After graduation I joined an aerospace engineering firm on their graduate training programme. A 2 year period of courses, working in various departments in the company, and honing my software skills. My mentor told me on day 1 "you think you're a good programmer, which you probably are, but you're not an engineer, we're going to train you for that", I thought "what does he know?"
I learned so much. Programming is actually a much smaller part of software engineering. It's about the application of rigorous standards and processes to whatever you do, while applying a formal set of constraints. It's the ability to flow down system requirements to individual testable functionality, and tracing that all the way through to final acceptance.
I spent 3 years in the systems engineering department. This was a collection of individuals with various specialisations; mathematicians modelling scenarios, and developing complex algorithms, for example. I worked on bid prep and requirements gathering and analysis. Meeting stakeholders and identifying their user requirements, then translating these to system and functional requirements, to be flowed down to software engineers, while also creating the associated test framework so that each requirement could be tested, and the whole thing formulate a system acceptance process. Much of my time was spent using software like DOORS. Subsystem interfaces and dependancies were probably the most challenging part (software eng. can be thought of, in it's purest form, as developing a series of interfaces).
As I became more senior, I became a graduate mentor, for what was now a 4 year graduate training programme, leading to CEng. I remember using the quote my mentor used above for each of my graduates, and guessed they thought exactly the same as me when I was a graduate.
I've met many developers who think they're engineers, and they just hack some code and knock up a bit of documentation (slight exaggeration there). Process never enters their mind, and that's he most important part of engineering.
Engineering in the UK is not really recognised as one of the professions, which is bizarre. It's fixed up with technician, or mechanic. In the US, I believe you have to be registered. I worked for some time with a German firm, and there, they are considered a proper profession. My father's best friend was a successful architect, and said that in many countries, engineers are revered more than architects.
In Germany, if you are introduced to somebody as an engineer, they'll want to introduce you to their daughter/son; in the UK, they'll want to introduce you to their broken washing machine
It's required by law, but not regulated by it. It discriminates based on gender, marital status, age, and other non-protected characteristics like profession. The formulas determining how much you pay are completely opaque and likely arbitrary, with no limits as to maximums as far as I can tell. If you're a single male who learns to drive in his mid 20's, (hi), with no parents whose car upon which to take out a shared policy, you're going to be paying what is likely 6-8 times the cost of the car for your first year's insurance, and the second year isn't much better.
If you go for several years without making an insurance claim, you pay less for insurance the next year, which disincentivises using your insurance, meaning if you get in a bump with someone, it's usually better to privately sort the repair costs, COMPLETELY sidestepping the legal protection and ease of life insurance is meant to provide you.
Initially I did so because my college degree was in computer engineering (Wright State University[^], class of '84). We were the bastard step-child of the computer science and electrical engineering programs, who put us through their hardest classes in the hopes we'd give up and go away. For a few like myself, it didn't work.
Now I use the term because most of my work is in process control software, which uses one or more computers to automate or control industrial equipment. I do that via programming (writing software) and software engineering (programming according to a set of guiding principles and best practices), which makes me both a programmer and a software engineer.
I think of myself as a brilliant technological magician. I tailor my information to the crowd I am addressing. For most people I just say "I write software" because they're not likely to understand (or even want to know) anything more anyway.
Hmm.. I remember when we had PAPER terminals for editing our code, in a souped up version of EDLIN called TECO (Text Editor COrrecter).
Rewrite your code, no syntax checking. Desk check it.
Submit for compile, and come back the NEXT DAY to see if it compiled...
Then we got Green screens. Pretty much the same, but fewer trees were killed.
Boy things have changed. Being a programmer required the patience of Job.
I am embarrassed to admit how often I use autocomplete because you can no longer keep track of the methods on every class you come in contact with...
We will always expand our efforts to the point of failure, and then develop newer tools!
When they said I was a programmer I worked daily in 2 languages while I knew to varying levels about 5. I used printed manuals since that was all I had available, no google, no web, the index was your friend and remembering was faster.
Then they labeled me a developer, I was working daily in about 4 languages and knew many more. The web was just beginning so it still wasn't much use and there was still books and man.
Now I am an architect, there are no printed manuals. I can be working at any time in any of around 10 languages. I now realize that all languages are basically the same, except for prolog. Now I think more along "I want to do foo, I have to use language bar, how do I do foo in bar?" Somewhere out on the web somebody has probably done foo in bar or at least something close enough to figure out the rest of the way.
I use a calculator for bit masks over 8 bits, I use a regex tool rather than stare at the ceiling. I spend a lot more time thinking about how to make the resulting code/arch understandable to the next person who has to look at it. There are better things to do with my memory and time than tracking the various shiny objects in the field, knowing that I need to do foo is more important.
I use the term software engineer to describe myself to people who ask but won't understand.
I think of software engineer as the guys who write compilers, device drivers, implement network protocols, design operating systems, frameworks, and that sort of thing. Programmers make use of the stuff created by software engineers, in order to build higher level applications. Generally speaking, software engineers build stuff for programmers, while programmers build stuff for everyone else.
That being the case, I started out as a software engineer 20+ years ago, but am now a programmer.
On the other hand, you have different fingers. - Steven Wright
Last Visit: 31-Dec-99 19:00 Last Update: 24-Nov-17 9:24