I live in the Medical Device software domain. It gets tiring really fast when people keep proclaiming that software development can't be engineering. It certainly can; it's just that most organizations don't want to implement the discipline required.
You want very low bug counts, predictable software schedules and the ability to go home at 5 every night? Then implement a process to build what you need built, actually follow the process, track progress constantly and adjust when it starts going off the rails. Expensive and time consuming and requires buy-in from all levels of the organization? Yes, but TANSTAAFL.
I have definitely come around to the idea that most programming is art, not science. Not to say there is no such thing as computer science as applies to programming, because there is. Algorithmic research, language research, etc, all of these can fall under the domain of 'engineering', even given the description of this blog post.
But if you are using those things, then you do so as a tool, using tools is not necessarily the domain of engineering, but it is often in the domain of art.
I would very much like if my job title read "Code Artist."
Considering that I have a degree specifically in Software Engineering, I think I'm quite justified in calling myself a Software Engineer. If you feel universities aren't justified in graduating students as Software Engineers, then that's something that you should take up with the Dept of Education and various other groups regarding accreditation guidelines.
My point being that just because building software is not as well defined up front as more classical engineering trades, doesn't mean there aren't aspects of it that are very similar to engineering principals, especially considering how young the field is. I bet that when we first started building bridges and skyscrapers, nobody had a good idea of just how long it would take.
Considering that even stay at home parents are considered "Engineers" (i.e., Domestic Engineers), I say you're perfectly justified in using that title.
Considered by whom, exactly? House-moms and -dads angry that their efforts are underappreciated? Great, I'll make sure that our Office Supply Engineer (we call her a receptionist) sends 'em a card.
This article is linkbait and stretches a metaphor way beyond its breaking point. Also, I think the author confuses various parts of the software field (process/methodology vs engineering/development vs craft/artistry).
Gardens have elements that are impossible to control so gardeners have to deal with randomness. With code, there is no randomness, the outcome of a piece of software will be exactly what people have written, down to the microcode, it is completely predictable.
In many ways software engineers are more engineers than civil, because we completely control our environment.
Maybe your organization is out of control, but your code is not.
What alarms me is the kinds of people who have co-opted the term 'engineer' to describe themselves. For example, the guy in my company who's job is to verify that anchor tags inside web pages point to the correct URLs, confirm that a site's layout adheres to a .psd, and to make sure that jQuery-powered divs appear and hide as they should. His title?... 'Senior QA Engineer'.
This is a bogus comparison. The difference between software engineering and other types of engineering is that for software, the detailed design is the implementation. For other engineering, several months or more of design and simulation occur these days before a single device/bridge/airplane is built. If you asked the engineers at the beginning exactly how many transistors this chip was going to use, or how many kgs of concrete/metal/etc., they wouldn't know the answer yet either.
I am going through and profiling code, analyzing memory requirements etc. before selecting new hardware. And then we prototype before finalizing the design. If that isn't engineering I don't know what is.
17 comments
[ 4.4 ms ] story [ 56.5 ms ] threadI live in the Medical Device software domain. It gets tiring really fast when people keep proclaiming that software development can't be engineering. It certainly can; it's just that most organizations don't want to implement the discipline required.
You want very low bug counts, predictable software schedules and the ability to go home at 5 every night? Then implement a process to build what you need built, actually follow the process, track progress constantly and adjust when it starts going off the rails. Expensive and time consuming and requires buy-in from all levels of the organization? Yes, but TANSTAAFL.
The article argues that most programmers are not engineers. At least I draw that conclusion.
But if you are using those things, then you do so as a tool, using tools is not necessarily the domain of engineering, but it is often in the domain of art.
I would very much like if my job title read "Code Artist."
My point being that just because building software is not as well defined up front as more classical engineering trades, doesn't mean there aren't aspects of it that are very similar to engineering principals, especially considering how young the field is. I bet that when we first started building bridges and skyscrapers, nobody had a good idea of just how long it would take.
Curriculum overview: http://www.se.rit.edu/?q=node/239
In many ways software engineers are more engineers than civil, because we completely control our environment.
Maybe your organization is out of control, but your code is not.
... unless your software deals with input from humans.
> the outcome of a piece of software will be exactly what people have written, down to the microcode, it is completely predictable.
http://en.wikipedia.org/wiki/Halting_problem http://en.wikipedia.org/wiki/Busy_Beaver
Space shuttle.
I am going through and profiling code, analyzing memory requirements etc. before selecting new hardware. And then we prototype before finalizing the design. If that isn't engineering I don't know what is.