"Underlying our approach to this subject is our conviction that 'computer science' is not a science and that its significance has little to do with computers. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Mathematics provides a framework for dealing precisely with notions of 'what is.' Computation provides a framework for dealing precisely with notions of 'how to.'"
> Mathematics provides a framework for dealing precisely with notions of 'what is.' Computation provides a framework for dealing precisely with notions of 'how to.'"
But some parts of math deal "with notions of 'how to'" and there commonly do so more "precisely" than computer science. There are such parts in optimization, control theory, statistics, and numerical analysis.
E.g., numerical analysis says how to (1) solve systems of linear equations numerically exactly using just single precision arithmetic, (2) solve systems of linear equations with accuracy guaranteed by error bounds from condition number, (3) solve systems of large, sparse linear equations where the matrix is large, positive definite, and diagonally dominate, (4) how to solve ordinary differential equation initial value problems, e.g., for space flight trajectories, and (5) how to solve partial differential equations of heat flow, fluid flow, and electromagnetic fields, and (6) how to do discrete Fourier transforms of positive integer n points in time proportional to n log(n) instead of n^2; statistics says how (1) to get minimum sufficient statistics in the Gaussian case, (2) how to design a most powerful statistical hypothesis test, (3) how to pick a survey sample size that will give desired accuracy, (4) how to get minimum variance, unbiased estimators in multivariate statistics, and (5) at a Web site with users arriving at a rate of 10 a second, how to find the probability of a minute with arrival rate of over 20 a second; control theory can show (1) how to execute best possible decision making over time under uncertainty, (2) how a rocket can reach orbit for minimum fuel, (3) how an airplane can climb to a given altitude in least time; and optimization can show (1) how to find least cost flows on large networks while avoiding cycling in the network simplex algorithm, (2) how to assign interceptors to targets in the best possible way in guaranteed execution time, and (3) how to assign signals to satellite channels to minimize the worst case of signal interference.
As someone with an engineering degree, it does irk me to constantly hear programmers referred to around these quarters as 'engineers', it's extremely introspective, and IMO a little disrespectful. Similarly to the 'are you technical?' thing, why is there such an aversion to the term programmer or software developer?
I have no problem with the term 'software engineers', as i do seem some parallels, and it is clear what you are talking about, but please leave the straight up 'engineering' term to those dealing with the physical world.
E: most replies and downvoters seem to have missed that I have no problem with the term where it is unambiguous. You wouldn't call a software architect simply 'an architect' (would you?).
Huh, I didn't realize that some hardware folks are still so irrationally jealous of the label "engineer" being applied to software engineers as well. In truth the distinction between a physical versus information end-product as a prerequisite for the term "engineer" is arbitrary, self-serving on your part, and not recognized by any common definition of "engineer" of which I am aware.
Not to be too hard on you though; yes, the biggest aesthetic difference between hardware and software engineering is that with the latter, the cost of fabrication is essentially zero. But as described here: http://www.ics.uci.edu/~jajones/papers/p439.pdf
> The essential distinction between software and other engineered artifacts has always been the absence of fabrication cost. In conventional engineering of physical artifacts, the cost of materials and fabrication has dominated the cost of design and placed a check on the complexity of artifacts that can be designed. When one bottleneck is removed, others appear, and software engineering has therefore faced the essential challenges of complexity and the cost of design to an extent that conventional engineering has not.
So naturally the set of constraints is different than the ones with which hardware engineers contend, yet software engineers do fundamentally apply math and science to design products to meet hard, real-world constraints: Development time and cost, program correctness, time and space performance under expected load, reusability, and maintainability to name a few.
If there is a valid objection to the notion of software engineering as a "real" engineering discipline, it should be that a subset of the science upon which the discipline is based – that of software architecture – is at this point still underdeveloped and poorly understood, and as a result software engineers generally rely on their own intuition when it comes to architecture. (This in contrast to fundamental computer science, which is well developed enough that we can typically determine from mathematics or empirical evidence what kind of algorithm or data structure to use under given circumstances.)
But an arbitrary bias that engineers produce only physical artifacts does not constitute a valid objection.
Agreed about the "engineer" label. My acquaintances at university were engineering students, and they would themselves correct me if I called them engineers - that requires licensure. (They're not even "engineers in training" until they've passed that monster FE.)
You betcha, PEs are justifiably proud of the title.
We have sysadmins around here who call themselves "Microsoft system engineers". It bugs me, but title inflation is a Dilbertesque fact of life.
I have a bachelor of software engineering and could pursue PEng if I wanted (which I won't). Right after graduating it annoyed me that everyone in software called themselves engineers, but I got over it.
Engineering is defined by the various international agencies and schools that accredit engineers, not Wikipedia. "Software Engineering" is a real engineering discipline in Canada and other places. The premise "An engineer's model must be tightly bound to the laws of physics and chemistry" just seems to be a construct of the author.
Engineering is about the practical application of rules, balancing factors like cost, maintainability and scope. Chemical, mechanical and software engineers do similar jobs, working with different sets of rules.
I think most of the people replying to your comment miss the biggest issue. In alot of countries the title engineer is a protected title.
It's alot like doctor or lawyer, you technically can't call your self one unless you have a professional certification from the applicable engineering society.
I know when I graduated with an engineering degree in Canada you couldn't call your self an engineer until you were a PE.
Yeah, and leave the "web" for spiders, correct?
Engineering was long before software appeared, but is this a good enough reason not to reuse the word? Some software just happens (alas), but some is engineered—that is thought upon, designed; time is spent thinking how different parts are put together and how they will interact.
"As someone with an engineering degree, it does irk me to constantly hear programmers referred to around these quarters as 'engineers', it's extremely introspective, and IMO a little disrespectful."
I'm not certain it has anything to do with the physical world; after all Industrial Engineering is considered a valid disciplined that is entitled to an Engineering license, and many of the IE's I know might be better characterized as mathematicians.
Still, I tend to agree with your assessment of the term Engineer, although it's largely because unlike other Engineering fields, Software Engineers in the US seem to be happy to hold the title without having to meet any of the legal requirements [1]. A PE license, while not insurmountable, is not exactly the easiest title to acquire. Efforts have been proposed to make Software Engineering part of this licensing process, but it seems to have a lot of push back. Perhaps the solution is to have legal weight (perhaps like 'Lawyer' or 'MD') behind the title, as countries like Canada have (the US has this to some extent, but it's not nearly as strong).
I never really liked the term software engineer, and I think by the very definition of engineer it doesn't work. I've always refered to myself and others as a programmer, coder, or developer.
"Programmer" is someone who just writes code. They don't plan, organize refactor ... they write code according to someone's instructions. They can see that it works and debug issues, but they're not the "architects" or "engineers" of the system. The men doing the physical labor of building a ship aren't the "engineers."
"Software developer" doesn't have simplistic connotations to me, but seems to evoke something in non-devs ... as if I'm using lingo and being pompous.
"Software engineer" is someone who designs software systems and understands the impact of design decisions made from the bottom/back of the stack through the top/front. Perhaps, this being an industry of mental rather than physical labor, the engineer also fills the job of "programmer."
So in my mind, "engineering" is a way of thinking about and solving problems in any given space; it requires breadth and depth. But how do you quantify something like that in an industry that changes so rapidly, where someone can begin to grok concepts and "get their hands dirty" without ever having to approach the dangers out in The Real World? You don't want some random kid to think he can build a bridge, but he can certainly start writing software... and he can become "engineer quality" before he ever gets to a university.
I don't know that I've ever heard anyone call themselves "an engineer." That's nice. Does that mean you drive trains? That you design and build roads? I don't believe many engineers of the physical world variety can just just fields - a computer engineer is not going to build sky scrapers.
Stupid companies have titles and titles are associated with more pay and and more respect. It so happens that people who went to a 2 year technical school would call themselves "programmers" and then those who went to a 4 year college and worked for 5 years don't want to be called by the same label, so they have to invent something sounds harder to get, something more prestigious, so now they are "software engineers". Just like chemical engineers, it implies a certain difficulty of attaining this title, and it is used to differentiate the ranks. But it doesn't stop there, then there is more stupidity there is "Programmer II" vs "Programmer VI" vs "System Architect".
Hacker, engineer, ninja, rock star...these terms are bandied about in this community and I don't have a problem with it, it's just part of the lingo. Anyone stumbling on this community who may get confused with the term "engineer" (for example, in a HN job posting) would figure out pretty quickly that that they mean someone who makes websites. It's not like a company really wants a rock star or someone trained in martial arts, or someone with a P.E.
One part of the problem is (US) customs. I travel to the US frequently and must use a title including words like, "Engineer", "Architect" or "Analyst". When a title like programmer can be obtained by reading the introduction to "Learning VB" it carries little to no weight and I cannot say I disagree. I don't really care all that much what I am called, 90% of society still has no idea what I do.
Does this mean that drawing blueprints for the bridge is not engineering? What about working a crane? Laying brick? Sealing pavement? Sweeping the bridge?
Could you say that an AWS datacenter is not a feat of engineering? Certainly writing the software that powers it is as important as any other discipline, and every piece of its execution has definable metrics to measure performance.
I've known janitors who sell accounts and measure their foot steps to find the fastest cleaning path. If you sell janitorial services for $2000 a month and it only takes you 2 hours a night to do a job, then you'll make as much money as some engineers. Not that salary is the measure of an engineer, but using math and science to maximize favorable outcomes should be.
Whilst I don't necessarily disagree with the point you are working towards, I don't follow your pedantic breakdowns of various endeavors.
"Drawing" the blueprints would be done by a draftsman not necessarily an engineer, working a crane is a skilled job done by crane operators (again not necessarily engineers), and brick laying/pavement sealing/bridge sweeping is again not necessarily done by an engineer.
In building a bridge, the "engineering" is done by the civil engineer who designs the bridge, chooses and calculates its construction: "applying scientific knowledge, mathematics and ingenuity to develop solutions for technical problems."
Similarly, a datacenter may be considered a feat of engineering, but the construction (read: design) of the datacentre is done by civil/structural engineers and is separate from this argument (although this may not have been what you were getting at, my interpretation was that you were initially including the building in your point).
I would argue that if a janitor was to optimise his/her route by counting steps, this is not a technical problem and so doesn't make him an engineer.
"Does this mean that drawing blueprints for the bridge is not engineering? What about working a crane? Laying brick? Sealing pavement? Sweeping the bridge?"
Yes. None of these items, strictly speaking, qualify as Engineering work for purposes of licensing. If you are applying for an Engineering license, you will need to subtract these hours from your Engineering experience, and if a large portion of your day-to-day work consists of these tasks, then it may take you significantly longer to obtain your license.
It took me six years rather than the usual four to get my license as a result. Lunch doesn't count. Facebook doesn't count. Filling out expense reports doesn't count. Re-filling the paper in the printer doesn't count. Soldering doesn't count. There are a large amount of necessary non-Engineering distractions in any career, and none of these count.
"But we don't have this in software designs for the most part. We have the requirements, such as what the input and output looks like and the run-time constraints which dictate the maximum time a given operation is allowed to take. But there is much in-between these that is elusive to objective metrics. "
I pretty much stopped reading here. Elusive to objective metrics? I agree that you can't measure a program like you would a bridge, using physical laws such as physics and chemistry, but you very well can measure many aspects of it such as: efficiency, size, required resources, relative ease of use, etc. Just because it is not a physical thing doesn't mean we can't use a "scientific method" approach, we just need to be open to using metrics that exist in the digital realm.
The reason people say silly things like this is that "software design" is used for slightly the wrong thing. What is called a "design" in software is much closer to a relatively low level specification in physical manufacturing, while a completed mechanical design can just be handed to a factory for production, and is much closer to source code for software.
The contention that Computer Science is not a science because on opening a CS textbook you get confronted with a number of mathematical concepts seems a fairly ridiculous one. The same argument could be made to say that Physics is not a science, after all.
The problem is that there's a conflation in most people's minds of the terms 'computer science' and 'programming'. Computer Science courses teach you how to program, so this is understandable. But the research that goes on in Computer Science departments is not all about 'how to program'. Hypotheses are generated and tested for specific end-goals.
Sure, CS is highly mathematical in its execution, and the introspective areas of research are thus mathematical. Some of the research in the Algorithms areas is probably best published in mathematical journals. But that's not the whole science. What about measurements of routing efficiency in Networking? What about HCI? What about Ubicomp? What about NLP, or even AI in general? Even if they are using mathematical principles in forming their systems for experimentation, they're still doing science. Hell, all sciences rely on maths somewhere.
I think that this is basically saying "Computer Science is science because it uses science." But Electrical Engineering uses just as much scientific method in its research papers as CS does. Does this make EE a scientific field?
To my mind, every engineering field has researchers who use the scientific method every day to produce stuff for the engineers to use. The field is not defined by those researchers -- it's defined by the users (engineers). EE researchers often publish stuff based on the scientific method, or by proof, but the end product is meant to be used by engineers. CS researchers often publish stuff based on the scientific method, or by proof, but the end product is meant to be used by ... well, we call the "programmers". But they're engineers of software.
Quote from http://wikipedia.org/wiki/engineer
"An engineer is a professional practitioner of engineering, concerned with applying scientific knowledge, mathematics and ingenuity to develop solutions for technical problems. Engineers design materials, structures and systems while considering the limitations imposed by practicality, safety and cost. The word engineer is derived from the Latin roots ingeniare ("to contrive, devise") and ingenium ("cleverness")."
Software engineers definitely fall under this definition.
Reminds me of the statement by I think H. Abelson though it might have been Sussman (from their SICP video lecture 1)that goes something like :
Computer Science is not a science and it's not about computers.
Computer science is only about computers in the same way that physics is about particle accelerators.
My favourite quote from the article "... studies suggest that the paradigm or language that a given developer is most comfortable with is the one that makes them the most productive. This would mean that to get optimum productivity, hire a bunch of like-minded developers who are fanatics of a given language or tool."
The cross discipline Engineering workflow is:
1. define metric of success
2. fiddle with system till metric is high enough.
3. <optional> research alternative 1.s and cheaper 2.s
Real software engineering, e.g. profiling optimization, is definitely a branch of engineering. Research into software architectures, is not.
Science is about disseminating the unknown. You do not do science in most software jobs. You are doing science if you publish your results in scientific journals. An example of real computer science is understanding how discrete systems (such as DNA or CPUs) can turn into complex systems (such as life or A life).
The author of this article has very little understanding of engineering or science.
Does this mean that in order to charge money for any programming work at all (even VBA) you have to have an accredited qualification, or can you do so but not call yourself a software "engineer"?
BUT, having lightly skimmed it, I get the general idea because "real" engineers have been whining about the Software Engineer title since nearly the first day I was at college like 11 years ago.
Oddly, perhaps, I haven't ever heard scientists complain that computer scientists aren't scientists.
I can't speak so much about software engineers as that is not really what I do, but as a computer scientist I can say without reservation that it is indeed a science. Research and experimentation is a core part of a lot of what computer scientists do. Solving problems that had no solutions until you came along and invented them.
I don't know anyone who especially disagrees with this, but etymology is not a consistent process. The term "software engineering" evolved for various reasons; whether the discipline is actually covered under "engineering" is as relevant as whether or not you're actually killing 1/10th of a population when you "decimate".
Also, reminds me that my favorite description of my school (http://www.wpi.edu) was that it specialized in "science, engineering, and computer science", since of course CS is neither science nor engineering.
I almost do not agree with anything you say in this article, and I'm not entering the details since most of them has already been commented here, but just a point I feel like missing: software IS bound to laws of physics and chemistry, because it runs on hardware, which is bound to such laws. Most of the time, when engineering software (which is NOT the same as coding/programming) you must take into account the hardware limitations, and on last instance, test that software on some hardware and do optimizations where needed.
"Computer" science is more like "computational" science - reducing everything to numbers, using logic to make safe assumptions and find paradoxes, etc. Humans can't compute as well as transistors so we use them for all of the heavy thinking.
It's engineering in the same way that constructing a stainless steel table is mechanical engineering (buy a sheet, cut it, put 8 bends in it, weld corners, grind corners, polish corners with acid, weld legs on, grind leg welds, polish leg welds)
The software "engineering" argument is debatable, but computer science certainly implies some classical scientific principles. Areas such as quantum mechanics, relativity theory and thermodynamics are relevant in computer studies. The subject of "Computer Science" is vast, at least equalling the scope of more accepted scientific disciplines and probably stretching beyond.
[+] [-] espeed|13 years ago|reply
-- Preface to the First Edition of Structure and Interpretation of Computer Programs (http://mitpress.mit.edu/sicp/front/node3.html)
[+] [-] unknown|13 years ago|reply
[deleted]
[+] [-] ten_fingers|13 years ago|reply
But some parts of math deal "with notions of 'how to'" and there commonly do so more "precisely" than computer science. There are such parts in optimization, control theory, statistics, and numerical analysis.
E.g., numerical analysis says how to (1) solve systems of linear equations numerically exactly using just single precision arithmetic, (2) solve systems of linear equations with accuracy guaranteed by error bounds from condition number, (3) solve systems of large, sparse linear equations where the matrix is large, positive definite, and diagonally dominate, (4) how to solve ordinary differential equation initial value problems, e.g., for space flight trajectories, and (5) how to solve partial differential equations of heat flow, fluid flow, and electromagnetic fields, and (6) how to do discrete Fourier transforms of positive integer n points in time proportional to n log(n) instead of n^2; statistics says how (1) to get minimum sufficient statistics in the Gaussian case, (2) how to design a most powerful statistical hypothesis test, (3) how to pick a survey sample size that will give desired accuracy, (4) how to get minimum variance, unbiased estimators in multivariate statistics, and (5) at a Web site with users arriving at a rate of 10 a second, how to find the probability of a minute with arrival rate of over 20 a second; control theory can show (1) how to execute best possible decision making over time under uncertainty, (2) how a rocket can reach orbit for minimum fuel, (3) how an airplane can climb to a given altitude in least time; and optimization can show (1) how to find least cost flows on large networks while avoiding cycling in the network simplex algorithm, (2) how to assign interceptors to targets in the best possible way in guaranteed execution time, and (3) how to assign signals to satellite channels to minimize the worst case of signal interference.
[+] [-] polshaw|13 years ago|reply
I have no problem with the term 'software engineers', as i do seem some parallels, and it is clear what you are talking about, but please leave the straight up 'engineering' term to those dealing with the physical world.
E: most replies and downvoters seem to have missed that I have no problem with the term where it is unambiguous. You wouldn't call a software architect simply 'an architect' (would you?).
[+] [-] Niten|13 years ago|reply
Not to be too hard on you though; yes, the biggest aesthetic difference between hardware and software engineering is that with the latter, the cost of fabrication is essentially zero. But as described here: http://www.ics.uci.edu/~jajones/papers/p439.pdf
> The essential distinction between software and other engineered artifacts has always been the absence of fabrication cost. In conventional engineering of physical artifacts, the cost of materials and fabrication has dominated the cost of design and placed a check on the complexity of artifacts that can be designed. When one bottleneck is removed, others appear, and software engineering has therefore faced the essential challenges of complexity and the cost of design to an extent that conventional engineering has not.
So naturally the set of constraints is different than the ones with which hardware engineers contend, yet software engineers do fundamentally apply math and science to design products to meet hard, real-world constraints: Development time and cost, program correctness, time and space performance under expected load, reusability, and maintainability to name a few.
If there is a valid objection to the notion of software engineering as a "real" engineering discipline, it should be that a subset of the science upon which the discipline is based – that of software architecture – is at this point still underdeveloped and poorly understood, and as a result software engineers generally rely on their own intuition when it comes to architecture. (This in contrast to fundamental computer science, which is well developed enough that we can typically determine from mathematics or empirical evidence what kind of algorithm or data structure to use under given circumstances.)
But an arbitrary bias that engineers produce only physical artifacts does not constitute a valid objection.
[+] [-] dandrews|13 years ago|reply
You betcha, PEs are justifiably proud of the title.
We have sysadmins around here who call themselves "Microsoft system engineers". It bugs me, but title inflation is a Dilbertesque fact of life.
[+] [-] scosman|13 years ago|reply
Engineering is defined by the various international agencies and schools that accredit engineers, not Wikipedia. "Software Engineering" is a real engineering discipline in Canada and other places. The premise "An engineer's model must be tightly bound to the laws of physics and chemistry" just seems to be a construct of the author.
Engineering is about the practical application of rules, balancing factors like cost, maintainability and scope. Chemical, mechanical and software engineers do similar jobs, working with different sets of rules.
[+] [-] chollida1|13 years ago|reply
It's alot like doctor or lawyer, you technically can't call your self one unless you have a professional certification from the applicable engineering society.
I know when I graduated with an engineering degree in Canada you couldn't call your self an engineer until you were a PE.
[+] [-] brianto2010|13 years ago|reply
Personally, I don't usually see people favoring the word "engineer" over programmer or software developer. As for myself, I see them as synonyms.
[+] [-] rimantas|13 years ago|reply
[+] [-] barik|13 years ago|reply
I'm not certain it has anything to do with the physical world; after all Industrial Engineering is considered a valid disciplined that is entitled to an Engineering license, and many of the IE's I know might be better characterized as mathematicians.
Still, I tend to agree with your assessment of the term Engineer, although it's largely because unlike other Engineering fields, Software Engineers in the US seem to be happy to hold the title without having to meet any of the legal requirements [1]. A PE license, while not insurmountable, is not exactly the easiest title to acquire. Efforts have been proposed to make Software Engineering part of this licensing process, but it seems to have a lot of push back. Perhaps the solution is to have legal weight (perhaps like 'Lawyer' or 'MD') behind the title, as countries like Canada have (the US has this to some extent, but it's not nearly as strong).
[1] http://www.ncees.org/Exams/PE_exam.php
[+] [-] Wohlf|13 years ago|reply
[+] [-] delinka|13 years ago|reply
"Programmer" is someone who just writes code. They don't plan, organize refactor ... they write code according to someone's instructions. They can see that it works and debug issues, but they're not the "architects" or "engineers" of the system. The men doing the physical labor of building a ship aren't the "engineers."
"Software developer" doesn't have simplistic connotations to me, but seems to evoke something in non-devs ... as if I'm using lingo and being pompous.
"Software engineer" is someone who designs software systems and understands the impact of design decisions made from the bottom/back of the stack through the top/front. Perhaps, this being an industry of mental rather than physical labor, the engineer also fills the job of "programmer."
So in my mind, "engineering" is a way of thinking about and solving problems in any given space; it requires breadth and depth. But how do you quantify something like that in an industry that changes so rapidly, where someone can begin to grok concepts and "get their hands dirty" without ever having to approach the dangers out in The Real World? You don't want some random kid to think he can build a bridge, but he can certainly start writing software... and he can become "engineer quality" before he ever gets to a university.
I don't know that I've ever heard anyone call themselves "an engineer." That's nice. Does that mean you drive trains? That you design and build roads? I don't believe many engineers of the physical world variety can just just fields - a computer engineer is not going to build sky scrapers.
[+] [-] rdtsc|13 years ago|reply
Stupid companies have titles and titles are associated with more pay and and more respect. It so happens that people who went to a 2 year technical school would call themselves "programmers" and then those who went to a 4 year college and worked for 5 years don't want to be called by the same label, so they have to invent something sounds harder to get, something more prestigious, so now they are "software engineers". Just like chemical engineers, it implies a certain difficulty of attaining this title, and it is used to differentiate the ranks. But it doesn't stop there, then there is more stupidity there is "Programmer II" vs "Programmer VI" vs "System Architect".
[+] [-] steverb|13 years ago|reply
http://usmilitary.about.com/od/enlistedjobs/a/21.-uJZ.htm
[+] [-] brianto2010|13 years ago|reply
Yes, yes I would.
http://en.wikipedia.org/wiki/Architect_(disambiguation)
- third bullet down
http://en.wikipedia.org/wiki/Architecture_(disambiguation)
- look under 'Process Architecture'
[+] [-] colkassad|13 years ago|reply
[+] [-] nahname|13 years ago|reply
[+] [-] unknown|13 years ago|reply
[deleted]
[+] [-] padobson|13 years ago|reply
Does this mean that drawing blueprints for the bridge is not engineering? What about working a crane? Laying brick? Sealing pavement? Sweeping the bridge?
Could you say that an AWS datacenter is not a feat of engineering? Certainly writing the software that powers it is as important as any other discipline, and every piece of its execution has definable metrics to measure performance.
I've known janitors who sell accounts and measure their foot steps to find the fastest cleaning path. If you sell janitorial services for $2000 a month and it only takes you 2 hours a night to do a job, then you'll make as much money as some engineers. Not that salary is the measure of an engineer, but using math and science to maximize favorable outcomes should be.
Or maybe thats just the measure of a hacker.
[+] [-] thomseddon|13 years ago|reply
"Drawing" the blueprints would be done by a draftsman not necessarily an engineer, working a crane is a skilled job done by crane operators (again not necessarily engineers), and brick laying/pavement sealing/bridge sweeping is again not necessarily done by an engineer. In building a bridge, the "engineering" is done by the civil engineer who designs the bridge, chooses and calculates its construction: "applying scientific knowledge, mathematics and ingenuity to develop solutions for technical problems."
Similarly, a datacenter may be considered a feat of engineering, but the construction (read: design) of the datacentre is done by civil/structural engineers and is separate from this argument (although this may not have been what you were getting at, my interpretation was that you were initially including the building in your point).
I would argue that if a janitor was to optimise his/her route by counting steps, this is not a technical problem and so doesn't make him an engineer.
[+] [-] barik|13 years ago|reply
Yes. None of these items, strictly speaking, qualify as Engineering work for purposes of licensing. If you are applying for an Engineering license, you will need to subtract these hours from your Engineering experience, and if a large portion of your day-to-day work consists of these tasks, then it may take you significantly longer to obtain your license.
It took me six years rather than the usual four to get my license as a result. Lunch doesn't count. Facebook doesn't count. Filling out expense reports doesn't count. Re-filling the paper in the printer doesn't count. Soldering doesn't count. There are a large amount of necessary non-Engineering distractions in any career, and none of these count.
[+] [-] foldingstock|13 years ago|reply
I pretty much stopped reading here. Elusive to objective metrics? I agree that you can't measure a program like you would a bridge, using physical laws such as physics and chemistry, but you very well can measure many aspects of it such as: efficiency, size, required resources, relative ease of use, etc. Just because it is not a physical thing doesn't mean we can't use a "scientific method" approach, we just need to be open to using metrics that exist in the digital realm.
[+] [-] polshaw|13 years ago|reply
[+] [-] nialo|13 years ago|reply
[+] [-] unknown|13 years ago|reply
[deleted]
[+] [-] betawolf33|13 years ago|reply
The problem is that there's a conflation in most people's minds of the terms 'computer science' and 'programming'. Computer Science courses teach you how to program, so this is understandable. But the research that goes on in Computer Science departments is not all about 'how to program'. Hypotheses are generated and tested for specific end-goals.
Sure, CS is highly mathematical in its execution, and the introspective areas of research are thus mathematical. Some of the research in the Algorithms areas is probably best published in mathematical journals. But that's not the whole science. What about measurements of routing efficiency in Networking? What about HCI? What about Ubicomp? What about NLP, or even AI in general? Even if they are using mathematical principles in forming their systems for experimentation, they're still doing science. Hell, all sciences rely on maths somewhere.
[+] [-] SeanLuke|13 years ago|reply
To my mind, every engineering field has researchers who use the scientific method every day to produce stuff for the engineers to use. The field is not defined by those researchers -- it's defined by the users (engineers). EE researchers often publish stuff based on the scientific method, or by proof, but the end product is meant to be used by engineers. CS researchers often publish stuff based on the scientific method, or by proof, but the end product is meant to be used by ... well, we call the "programmers". But they're engineers of software.
[+] [-] yanatan16|13 years ago|reply
Software engineers definitely fall under this definition.
[+] [-] robocaptain|13 years ago|reply
[+] [-] jabiko|13 years ago|reply
[+] [-] manuscreationis|13 years ago|reply
[+] [-] Juniper|13 years ago|reply
Computer Science is not a science and it's not about computers. Computer science is only about computers in the same way that physics is about particle accelerators.
That was the gist of it anyway
[+] [-] currywurst|13 years ago|reply
[+] [-] t_lark|13 years ago|reply
Real software engineering, e.g. profiling optimization, is definitely a branch of engineering. Research into software architectures, is not.
Science is about disseminating the unknown. You do not do science in most software jobs. You are doing science if you publish your results in scientific journals. An example of real computer science is understanding how discrete systems (such as DNA or CPUs) can turn into complex systems (such as life or A life).
The author of this article has very little understanding of engineering or science.
From a Engineer/Scientist
[+] [-] OlivierLi|13 years ago|reply
Software engineers have to come from accredited engineering schools and take the same exams as engineers from other fields.
They are also required to follow the same code of conduct.
[+] [-] jiggy2011|13 years ago|reply
[+] [-] valdiorn|13 years ago|reply
I may be an engineer, but I'm not employed as one, even if it says so on my business card.
[+] [-] benthumb|13 years ago|reply
[+] [-] fiatpandas|13 years ago|reply
;)
[+] [-] dromidas|13 years ago|reply
BUT, having lightly skimmed it, I get the general idea because "real" engineers have been whining about the Software Engineer title since nearly the first day I was at college like 11 years ago.
Oddly, perhaps, I haven't ever heard scientists complain that computer scientists aren't scientists.
I can't speak so much about software engineers as that is not really what I do, but as a computer scientist I can say without reservation that it is indeed a science. Research and experimentation is a core part of a lot of what computer scientists do. Solving problems that had no solutions until you came along and invented them.
[+] [-] acheron|13 years ago|reply
Also, reminds me that my favorite description of my school (http://www.wpi.edu) was that it specialized in "science, engineering, and computer science", since of course CS is neither science nor engineering.
[+] [-] m0skit0|13 years ago|reply
[+] [-] stephengillie|13 years ago|reply
It's engineering in the same way that constructing a stainless steel table is mechanical engineering (buy a sheet, cut it, put 8 bends in it, weld corners, grind corners, polish corners with acid, weld legs on, grind leg welds, polish leg welds)
[+] [-] philhippus|13 years ago|reply
[+] [-] unknown|13 years ago|reply
[deleted]
[+] [-] nlz1|13 years ago|reply
[+] [-] Wohlf|13 years ago|reply
[+] [-] TazeTSchnitzel|13 years ago|reply
[+] [-] warmwaffles|13 years ago|reply