View Single Post
  #2   Spotlight this post!  
Unread 28-07-2004, 12:28
Joe Matt's Avatar
Joe Matt Joe Matt is offline
Reject False Icons
no team
 
Join Date: Dec 2001
Rookie Year: 2001
Location: CLE
Posts: 5,066
Joe Matt has a reputation beyond reputeJoe Matt has a reputation beyond reputeJoe Matt has a reputation beyond reputeJoe Matt has a reputation beyond reputeJoe Matt has a reputation beyond reputeJoe Matt has a reputation beyond reputeJoe Matt has a reputation beyond reputeJoe Matt has a reputation beyond reputeJoe Matt has a reputation beyond reputeJoe Matt has a reputation beyond reputeJoe Matt has a reputation beyond repute
Re: Attention engineers...What type are you and why?

Quote:
Originally Posted by Dave Flowerday
Well, it looks like you've taken some heat for this quote. Whether or not you agree with the other responses, many of us mentors on these forums who have earned degrees in engineering (me: BSE, Computer Engineering, University of Michigan) do get offended when we see students call themselves engineers. I thought I'd give you my personal reasons for why I feel that high school students are not engineers, with a heavy emphasis on the software engineering perspective.

Software engineering is an interesting field because almost anyone with a PC at home can learn some of the skills required by it. Students interested in software engineering can sit at home, learn programming languages, write code, and perhaps even release products to others, with little more than a $1000 computer that most people probably already have anyway. Contrast this to mechanical engineering where you can probably design a part at home on your PC but it's much more difficult (and expensive) to actually produce that part or sell it to others. I noticed this theme in college quite a bit: even in our freshman computer engineering courses we were writing real programs, compiling, and testing them. Most other disciplines were primarily working with equations and story problems for the first year or two. This is both a good thing and a bad thing at the same time. What this means is that the world of software is very tinkerer and hobbiest friendly, because the cost of entry is so low. This causes a lot of people who know how to tinker with computers and how to program to think they are software engineers, but they're not.

I know this is getting long already, but I have a little more to say, so bear with me. There is a distinct difference between a software engineer and a programmer. I've seen people in many places (even on ChiefDelphi) claim that people who write software for a living are not engineers because programming is really not an engineering discipline. At first, I'm offended. When I think about it for a second, though, I realize I mostly agree. Programming is not necessarily an engineering discipline, but it can be.

The reason that I do not hesitate to call myself a software engineer is simple: our software development process is just like any other engineering discipline. When we are ready to create a new software product, we do not just start hacking on code (like many programming hobbiests do). We start by gathering customer requirements. We break these customer requriements down into various product requirements. We break those requirements down into software subsystem requirements. And we keep going until we have requirements that tell us exactly what each piece of software needs to do. Once that's done, we move into an architecture phase. Architecture is where you determine which functions or classes will be used and what they will do (or, "How do I effectively organize my code to implement the stated requirements?"). Next is design, where you add more detail to the architecture. Arguments for each function & method are determined, class attributes are determined, etc. Only after all that is any code written. Many software engineering projects run for months or even years before anyone even begins to write any code. Then, after the code is written, there's lots of testing. We do unit tests (which is just testing the piece of software we wrote), integration tests (verify that your stuff still works when combined with other people's stuff), box test (verifying that the entire product does what it's supposed to do), and system test (verifying that every product in the system works correctly with all the other products).

This software development process is (I believe) very similar to the processes used in other forms of engineering. And, even in college they didn't really do a great job of teaching us all of that. It was only after I started my job that I really learned what "software engineering" (versus programming) was all about. I probably only spend 10% of my time as a software engineer actually writing code. The majority of my time is all the other stuff I mentioned, which is also the stuff that 99% of the hobbiest and moonlight programmers usually don't know anything about. If you do happen to follow all those steps when you develop your projects, then great: you're definitely ahead of the game, and it will benefit you. But I can tell you that most companies like Motorola are not going to hire someone to write software without a formal degree, because it's pretty difficult to verify someone's abilities like that. At least when they hire someone with a degree the odds are better (though still not 100%) that they will know what they are doing.

Bottom line: hobbiests, hackers, and tinkerers can fiddle with something and make it work. Engineers are people who engineer solutions to problems.


So, to sum it all up, if I'm correct, the guy who writes the code for the robot is a programmer, but the guy who writes the code for the program that the robot programmer uses is a software engineer. They don't just make it work; they make it work with efficiency.

As for being called an engineer without a degree, etc, lets put it this way. If you can place a band-aid over a cut, it doesn’t make you a doctor. If you plug in your new computer and get it running, you are not an electrician, and if you build a PVC instrument you aren’t a plumber Why? Because while you can USE the tools for the job and CREATE something, you don't have the fundamental principals down. You need to know about the human body, current, and water flow (respectfully) to ever START to master those professions. And just because you build a robot for 6 weeks and fix it for 3-6 days a year doesn’t mean you are an engineer. You can design the robot and build it, but you still don't know the principals behind it.
__________________
Steal back your future

Last edited by Joe Matt : 28-07-2004 at 12:47.
Reply With Quote