Computer Science vs. Software Engineering 322
theodp writes "Microsoft's promotion of Julie Larson-Green to lead all Windows software and hardware engineering in the wake of Steven Sinofsky's resignation is reopening the question of what is the difference between Computer Science and Software Engineering. According to their bios on Microsoft's website, Sinofsky has a master's degree in computer science from the University of Massachusetts Amherst and an undergraduate degree with honors from Cornell University, while Larson-Green has a master's degree in software engineering from Seattle University and a bachelor's degree in business administration from Western Washington University. A comparison of the curricula at Sinofsky's and Larson-Green's alma maters shows there's a huge difference between UMass's MSCS program and Seattle U's MSE program. So, is one program inherently more compatible with Microsoft's new teamwork mantra?"
Engineer is better fit to lead product development (Score:5, Insightful)
In my opinion CS majors have always been the philosopher kind who like to nit-pick every angle of development. Product development leadership requires someone more practical as an engineer.
Re:Engineer is better fit to lead product developm (Score:5, Interesting)
Computer Scientists create things like linux.
Software Engineers create things like Windows 8.
Not trolling, This is a complete fact. Far more high level CS degrees are working on linux and OSS than Windows 8.
Re: (Score:2)
Re:Engineer is better fit to lead product developm (Score:4, Funny)
Over paid for your education is doing it right.
as if (Score:5, Insightful)
Re:as if (Score:5, Insightful)
Yep, these are senior executives with a thousand or more people reporting to them who spend most of their time in meetings. The details of computer science or engineering classes they took in college 30 years ago are pretty much irrelevant to their current jobs.
And it's especially true in this case, as personal computers were in their infancy when they were in college, anyway. Trying to compare two programs based on what they are *today* makes no sense when they graduated in the 80's.
Re: (Score:2)
This is the same in most industries. A degree from any number of schools gets one an interview. Experience and ability gets one a job.
Re: (Score:2)
I don't understand. Why wouldn't they send in their resumes and cover letters and talk about how good they are? Isn't that how it normally works at all levels of society?
Re: (Score:3)
Schools matter somewhat in terms of their career trajectories and the experiences they earned. You can't get hired as a professional engineer if you aren't an engineer sort of thing, so your school can shape your biases somewhat. But as you say, at this stage, corporate executive level, they're much more about their experience after the fact.
But different schools, especially computer science schools are wildly different in their programmes, so you can't really compare 'CS to SE', CS at one particular scho
Re: (Score:2)
Based on the comments at http://minimsft.blogspot.com/ [blogspot.com], it's the politics and social networking at Microsoft that matter much more under Ballmer's regime, not solely the technical competence.
Every company is like that. Working with people is a job requirement for managers.
It's the difference between science and tech. (Score:2)
If CS were called engineering, SE would be called mechanics.
Re: (Score:3, Insightful)
Computer science, is a ... science
Only in the old sense of the word "science," i.e. "knowledge," but then software engineering would also be "science." CS is not about gathering data then forming a theory; it is about developing logic systems from a set of basic assumptions (e.g. the semantics of your programming language, or of a theoretical computational system like a Turing Machine or Lambda Calculus). That would be mathematics (which at one time would have been called "science" as well). CS is a particular branch of mathematics: t
Re: (Score:2)
Computer science is not axiomatic, i.e. built from the ground up
Really? When most people write a computer program, they assume the semantics of their programming language (even when you bootstrap a compiler, you need to make assumptions about whatever computational system the bootstrapping code runs on). If you do not call that "axiomatic," then I am not sure what you would say is "axiomatic."
In particular, CS is not a branch of mathematics
Considering that the field of CS began with an effort to classify mathematics and that we have results like the Curry-Howard correspondence, I am not really sure how you can
Re: (Score:2)
Engineering is actually the science of applying fundamental science for practical applications.
So it's science too.
Using Ruby on Rails is not engineering, it's just development.
Re: (Score:2)
That's not really been my experience. If you think that Software Engineering is concerned with RoR and WordPress, then no offense or anything but you probably have a narrow understanding of the (computing) world and lack breadth in your studies and experience.
Computer Science, like science in general, attempts to expand human understanding of a field of study. So Computer Scientists spend a lot of time exploring new things. For this reason, they rarely talk about Turing Machines. Some do, but most don't - t
Re: (Score:2)
"Computer science is not a science, and it's not about computers" [youtube.com] - Hal Abelson [wikipedia.org].
Re: (Score:2)
Re: (Score:2)
Sciences deal with understanding the natural world. CS doesn't. It's more closely related to logic and mathematics, neither of which are sciences.
Re: (Score:2)
None of those try to study or gain a better understanding of the natural world. You said it yourself, it's electrical engineering. You could also say that mathematical formulas are used to describe the natural world. While true, that doesn't imply that math is a science.
I think the best field where you could make a case is in modelling, e.g. of galaxy formation, climate change and such. Here computer simulations are really becoming a third pillar alongside theoretical science and experimental science. If yo
Re:It's the difference between science and tech. (Score:5, Informative)
Same as any other science degree.
Most grads in math, physics, chemistry also end up doing relatively "mundane" jobs. A degree in bio-chem and you can be a lab technician. A degree in geology and you analyze oil drill results. Physics degree -- you might end up working on radio antennae...
Re: (Score:2)
I don't know anyone who did studies in math, physics or chemistry but who didn't end up doing teaching or research-like work in their respective fields (well there was a guy who studied physics who ended up doing bio-chemistry, but it was because they were interested in the effects of lasers on their stuff).
Then again I don't know anyone who studied those fields and stopped before getting a MSc.
Re: (Score:3)
Seriously? Well I know many people who majored in these and others and ended up as programmers/software engineers, lawyers, MBAs (corporate and I-banking), and a few MDs. One chem major ended up playing minor league baseball before going to med school. And a physics major is is now an CG animator.
I'd go as far as saying the majority (as in more than half) graduating with those undergraduate degrees don't end up going on to academia/research, and that's from a school ranked #1 in Physics and #2 in Math pr
Re: (Score:2)
I believe the reason for the difference in our experience is because you're talking about undergraduate studies.
Undergraduate studies don't mean much, and are often used as a mechanism to tell if people are smart enough to do science, but are not expected to actually do science as a job. It's mostly an evaluation criteria.
Re: (Score:2)
Well, you were at some point talking about undergraduate studies, as well:
Then again I don't know anyone who studied those fields and stopped before getting a MSc.
Gotta get a bachelor's before continuing on to get a masters, and stopping would imply just a bachelor's in the field which was my point...
But sure, definitely if you get a graduate degree you're much more likely to do research. Still, I know a chemistry PhD who is a drug sales rep (probably making more than her MD husband) and a physics PhD who
Re: (Score:3)
I've personally had to break in a physics PhD, recently doing post doc at CERN (this was 10 years ago). It was ugly, very ugly.
They assigned him to work on a Access front end for SQL server (spit), designed by another PhD (applied math, good at solving LPs, DB design involved lots and lots of columns, second table joined cause he ran out of columns.)
They wanted him (the new guy) to find the useful bits in that steaming pile, which he was unprepared for. Nobody was, Heisenberg's uncertainty etc. That co
Re: (Score:2)
Of course an anecdote isn't reliable data, but your post is an anecdote as well.
Re:It's the difference between science and tech. (Score:5, Insightful)
I see you don't get the point of college education. It is supposed to stretch your mental capabilities so that when confronted with a new situation, you aren't without the mental faculties to understand and master it. Why should CS majors learn calculus? Because mathematical reasoning is important, and many CS people rub shoulders with engineers. You want to talk to them and be useful, learn your calculus...well.
Higher Education is just that Higher Education. It is not Trade School Skill Boot Camp so you can regurgitate the latest buzzwords MS and the rest of their ilk cram down managers throats.
Re: (Score:2)
Higher Education is just that Higher Education. It is not Trade School Skill Boot Camp so you can regurgitate the latest buzzwords MS and the rest of their ilk cram down managers throats.
Exactly! In hindsight my biggest college regret (and strongest recommendation to college students) was not having enough time to take more electives completely unrelated to my major.
And while I'm sure most of the major-required classes benefited my career background in some way, many of them really aren't that relevant to what I do. And work isn't everything - engineering college students should really try to go take a couple semesters of Chinese, medieval history, psychology, creative writing, whatever.
Re: (Score:2)
Re: (Score:2)
Can't do dynamics without DiffEq. The math is a pre-requisite/co-requisite for good reason. Dynamics is the same math as Circuits II in the EE track. Control systems is usually taught in both departments as a next class (but differently IIRC). A couple or MEs took digital controls in EE with me (back before we had lawns).
It's pretty hard to stack up the classes in less then 8 semesters. 3 of calculus and physics, 1 of DiffEq, circuits 1 and 2, control systems, digital controls. Without exposure to digita
Re: (Score:2)
They do not have things like mass, heat, flow, friction, stress, wear, corrosion, and a dozen other things that gears and hinges have.
True, but the control systems which drive those are typically software driven.
when a CS or software guru makes a mistake, things don't blow up and hurt people.
Mars Orbiter [cnn.com] was due to improper units. Stuxnet [wikipedia.org] software was impressive. Siberian oil pipeline explosion [wikipedia.org] due to malicious software. Or medical eqipment software configured to deliver fatal x-rays [wikipedia.org], remote exploits with pace makers. [thebunsenburner.com] Airbush crash due to software [google.com]. How about software which drives Wall Street trades, surely that affects many more people? What about power outages due to improper software configurations? Here is a nice
CS is Math, SE is an application (Score:5, Insightful)
Re:CS is Math, SE is an application (Score:5, Insightful)
Re:CS is Math, SE is an application (Score:4, Insightful)
So really, for a real-world project, you probably a (good) software engineer.
Re:CS is Math, SE is an application (Score:4, Interesting)
Eh, most computer scientists are not going to be able to develop a system that meets specifications by a deadline unless they also have software engineering skills. ...which in practice are taught in nearly all computer science undergraduate programs. So anyone currently claiming some superiority of SEers over CSers is likely just trying to prop their own degree.
I've developed shipping code for companies as well as research projects at university. Research code is write-only since it is not worth architecting properly something that is meant for one time use, not because of some supposed lack of software engineering skills.
Heck! a good software engineer is equally likely to program a write only perl script to do a one time migration of their system.
Re: (Score:3)
Research code is write-only since it is not worth architecting properly something that is meant for one time use, not because of some supposed lack of software engineering skills.
Except that research code is not always meant for one-time use; there are quite a few research programs that are used in multiple projects, which which are poorly documents, poorly engineered, and hard to run. I have seen a lot of grad students s
Re: (Score:2)
Hum, no. And I wouldn't assume that if somebody told me he had an equivalent degree on software engineering either.
The ugly reality of IT is that nearly everybody in it don't have a minimum idea of how to code. Whatver dimension you choose, be it maintainability, number of bugs, complexity, actualy implementing the specs, discovering what the specs are, use of resources, whatever... You na
Re: (Score:2)
Software engineering is taught but not required by most CS curricula (at least from what I have seen),
It is part of the ACM curricula recommendations [acm.org].
Re: (Score:2)
Might depend on the school.
At FSU, where I got my degree, for example, the difference between CS and SE was, literally, one course.
CS took "Programming Languages"
SE took "Software Engineering II"
Re: (Score:3)
You could have stopped there, that's accurate enough.
Computer scientists can't write code, and they really shouldn't. It's a waste of both their time and that of others.
Re: (Score:2)
Computer scientists can't write code,
Funny you write that, since the SE moniker didn't even exist as an option until about 15 years ago or so. Before that all software was written by CS people. You might actually have heard of some [wikipedia.org] of [wikipedia.org] them [wikipedia.org].
The Poorest Scientist (Score:3)
Computer scientists can't write code, and they really shouldn't.
It's a poor "scientist" that only thinks and never experiments.
Real computer scientists need to also be adept programmers, because it turned out The Last One [wikipedia.org] really wasn't and there is still code between thought and program.
Also if your field of interest was computer languages it would be foolish indeed to try and design language features without understanding the pitfalls and benefits of said features in whatever languages they have appeared i
Re: (Score:2)
Except engineering *is* science.
Don't confuse fundamental/applied with science/non-science.
Re: (Score:2)
As a Software Engineer, I care plenty about "why" things are the way they are. For example, I care a lot about why unindexed database joins are O(n^2), because I need to know how to avoid writing slow code. Engineers who don't understand why their software will perform/scale adequately and meet SLAs aren't very good engineers.
I think a more accurate way to describe it is: science is more about "new" and engineering is more about "useful". Scientists don't bother researching things that are already known and
Re: (Score:2)
I'd say, where the rubber meets the road, science is "Huh?" and engineering is "Hmm".
Re: (Score:2)
Computer science is a branch of mathematics;
False. Mathematics does not care about grounding or motivation in reality. Computer science without grounding in reality is math, computer science with grounding in reality is how should I put this, computer science.
Re: (Score:3)
Mathematics does not care about grounding or motivation in reality
https://en.wikipedia.org/wiki/Numerical_analysis [wikipedia.org]
https://en.wikipedia.org/wiki/Applied_mathematics [wikipedia.org]
Also,
https://en.wikipedia.org/wiki/Curry-Howard_Isomorphism [wikipedia.org]
Re: (Score:3, Insightful)
As to N.A. and A.M if you ask most mathematician they will tell you those fields are not really math.
The Curry-Howard link is neither here nor there. Math is applied routinely in many sciences, and is often inspired by reality (more so in the past that recently) yet this has never been central to what math is.
Re: (Score:3)
As to N.A. and A.M if you ask most mathematician they will tell you those fields are not really math.
Except for those mathematicians who work in applied fields of math, who will tell you that they are mathematicians. Not that people could be biased or anything like that, or that experts might not agree on how to define their field.
The Curry-Howard link is neither here nor there. Math is applied routinely in many sciences,
The Curry-Howard correspondence is not a statement about an application of math in computer science. In simple terms, the correspondence is this: a mathematical proof can be converted into a computer program, and a computer program can be converted into a proof of some mat
Re: (Score:2)
A fundamental link as much as everything in physics can be translated to an equation, yet no one claims all of physics is math, because the goals are different, which brings us back to our original point. Motivation is more important than technique.
Re: (Score:2)
Yes and no. Many mathematical disciplines were invented because some physicists or engineers were trying to solve a real world problem. At some indistinct point, the mathematics involved becomes a discipline unto itself. The deep problems are mathematical but they got driven by real world considerations. It also can flow in the opposite direction, number theory starts out from mere counting for taxes and commerce. It progresses until it is involve with problems that have nothing to do with its origins. But
Re: (Score:2)
False. Mathematics does not care about grounding or motivation in reality.
Ever heard of "applied mathematics", like for example statistics or operations research?
Re: (Score:2)
It still is about state machines, compilers, programming languages, parallel algorithms. Having research papers with mathematical formulae and proofs is all nice and dandy, but at some point it's nice to actually implement the shit, test it out, studying the practicality of the thing etc., and that's software engineering.
Re: (Score:2)
IMO "CS" is misnamed. There's not a lot of science, as in applying the scientific method, involved. Would it be better to start calling them "computer mathematicians"?
Re: (Score:2)
When a professor insists computer science is X but not Y, have compassion for his graduate students. [yale.edu]
Deja Vu? (Score:5, Insightful)
http://ask.slashdot.org/story/12/11/10/2038211/ask-slashdot-developer-or-software-engineer-can-it-influence-your-work [slashdot.org]
Another gem from timothy, right-supreme glorious editor for life.
Scientists versus Engineers (Score:4, Insightful)
An engineer uses his tools and techniques to solve problems.
A scientist invents new tools and techniques.
If you're just using your knowledge to build things for people, you're an engineer. Unless you're exploring the limits of knowledge, coming up with and testing new ideas, you're not a scientist. And publishing has nothing to do with it, it's a mindset.
Knuth is a scientist - by laying out algorithms and describing their merits and deficiencies, he's essentially publishing a box of tools that others can use. Bill Gates is an engineer - he implemented known algorithms and solutions into a unified package (nothing new there).
definition of a scientist (Score:2)
. Unless you're exploring the limits of knowledge, coming up with and testing new ideas, you're not a scientist.
So the lawyer at Apple who came up with a new way to patent page-turning is a legal scientist? Who knew?
--
--
--
Yeah, I know "Unless A then not B" doesn't mean "if A then B," but we are talking about a guy who is a proven expert at twisting meanings around.
Re: (Score:2)
I am exploring the limits of my knowledge daily, I am an engineer, a bit of a scientist, but still not a computer scientist.
Get your definitions straight.
Re: (Score:2)
Engineering is science, dismissing your point entirely.
Re: (Score:2)
Engineering is applied science + business + art.
Re: (Score:2)
What a random guy says on a small website article hosted on some IEEE website is irrelevant and doesn't reflect the opinions of IEEE. You may want to look it up in a dictionary or encyclopaedia instead.
CS vs Engineering 30 years later (Score:5, Interesting)
Those guys are 50 something. The difference between Computer Science and Software Engineering does not matter 30 years after you graduated. Whether you kept up with progress and what kind of experiences you acquired during that time is what matters. Old guy did not left because of the school he was in and the new guy was not hired because of the school he was. They left / have been hired because of what they did last 7 years.
At that level, it's about experience (Score:2)
What you learned in school is irrelevant at that level.
Re: (Score:2)
What you learned in school might be irrelevant. The mental training you received at school and how it influences you to approach problems very much is relevant.
Silly question (Score:3)
99% of CS grads are Software Engineers (Score:2)
Engineering, as it's practiced in other fields, is applying existing models (often created by scientists) to make something new or modify something old. Bridge building applies a lot of science but doesn't do any science.
Scientists postulate new theorems, perform and evaluate studies, publish papers on those studies.
The vast majority of CS grads go into jobs where they use existing languages, algorithms, APIs and libraries to create something new or modify something old. Thus Engineers, not scientists. How
Re: (Score:2)
In most universities the department is actually called "computer science and engineering".
Re: (Score:2)
Thats the problem. The market needs Software Engineers that were trained as Software Engineers, not Software Engineers trained as Scientists. The why both approach and solve problems are completely different. I'm not saying CS people can't solve problems, but its the SE that know what problems the solutions create.
Re: (Score:2)
Yes, there are the CS people doing actual science, performing studies, creating the new stuff for all the future SE's to use, but they're the vast minority. If you want to see more than 2 in the same room go to SIGGRAPH.
True. More true in the 1990s, when rendering and physical simulation were being figured out. Game development used to need theoreticians. Now it needs people who can wrangle the large number of people and vast amounts of data that go into an A title.
There's no difference at some schools (Score:2)
What theoretical "nonsense?" (Score:4, Insightful)
Even C++ now has lambda expressions. Introspection was once a theoretical topic (e.g. Turing machines that can read their own description). Type theoretic concepts (type constructors, dependent types, etc.) are probably going to become more mainstream in the near future.
Software Engineering = the grind (Score:4, Insightful)
Software Engineering, in the sense of the Seattle University program, is the attempt to reduce the production of software to a set of reproducible steps that any monkey (code monkey) could accomplish. You know, you start with your requirements, you proceed to a high-level design using object oriented design techniques, then you make a low level design, and finally, almost as an afterthought, you write code. As anyone who has been on a software project which attempts to follow this particular discipline knows, it doesn't work. It does, however, succeed in its secondary goal of turning an interesting job into a horrible grind.
I suspect working on Windows is already a horrible grind, so it probably won't make much difference.
Leaders don't matter (Score:2)
Re: (Score:2)
I don't think that the folks at apple would [have] agreed with you.
Re: (Score:3)
Re: (Score:2)
I've heard this opinion expressed a lot, but I'm a bit skeptical because I've never seen it work in practice. If it works so well to have leaders who are just there to serve the machine, where are these great companies that have good engineers and subservient "leaders"?
If you look at all the big successful tech companies, they all seem to have strong leadership with a clear vision. For example Amazon, Facebook and especially Apple are all built around what are almost cults of personality. Even Google's lead
I'm not sure (Score:2)
But,
I think the difference should be similar to a physicist and a engineer. When the engineer specializes in practical application of the science, and the physicist researches the science.
A computer scientist researches and develops sorting algorithms. A software engineer knows which one to use when.
CS is not helpdesk / system admin / desktop (Score:2)
CS is not helpdesk / system admin / desktop.
Reminds me of the king's toaster (Score:5, Funny)
While not a perfect match to the above, I think the story of the king's toaster [ryerson.ca] is a good example of the difference between an "engineer" and a "scientist". I originally saw this on USENET in the 1990s, so the technology is a little dated:
Re: (Score:2, Funny)
I think your anecdote describes two different types of engineer.
A true computer scientist would present the king with a paper that proves the toaster is a specific solution to a special class of problems having a property called "Breakfast Completeness".
To put it another way: (Score:2)
Computer Science is Physics
Software Engineering is Mechanical Engineer/Eletrical Engineering.
The Women Behind Windows (Score:2)
Julie Larson-Green will be promoted to lead all Windows software and hardware engineering. Tami Reller retains her roles as chief financial officer and chief marketing officer and will assume responsibility for the business of Windows.
Isn't the more important story here the rise of two women to senior positions in management and engineering at Microsoft?
The software and semiconductor sectors have the lowest percentages of women among the five highest-paid executives in a company, with 4.4 percent and 2.7 percent
Where Are the Women Executives in Silicon Valley? [nytimes.com]
Julie Larson-Green is no slouch when it comes to logging the years and time at Microsoft. She joined the company 19 years ago as a program manager for Visual C++ and has worked her way up through the ranks.
Larson-Green worked hand-in-hand with Sinofsky on Microsoft Office. Before that she worked on Microsoft SharePoint and Internet Explorer. She actually led one of the most dramatic redesigns at the company when she worked on the so-called ribbon interface in Office.
The Woman Behind Windows [go.com]
''I don't even know how to explain how amazing and exciting that is to every woman who works in tech right now and probably in business across the board,'' said Michele Weisblatt, executive vice president for Women in Technology International.
''It"s not just about (the company) putting them over a division, it's about them leading the flagship product --- the money-making, revenue piece for Microsoft. It's just phenomenal.''
Women hold just a quarter of computing and mathematical jobs in the U.S., according to a 2008 report on women in technology from Catalyst, a nonprofit research organization.
''Microsoft's move is important because of its visibility as a technology and corporate giant, so girls in school who see women like Larson-Green and Reller move into such high-profile roles will carry that with them for a lifetime,''said Jenny Slade, a spokeswoman for the National Center for Women & Information Technology.
Women rising in the ranks at tech companies [nbcnews.com]
What Makes a Good Software Engineer? (Score:5, Insightful)
Side note: I'm mystified at how someone with a Bachelor's degree in business can earn an MS in Software Engineering. Yes, management skills have an important role in an SE curriculum, but not to the exclusion of the technical skills.
Difference (Score:2)
why does that matter? (Score:2)
The problem Microsoft has is neither with computer science nor with software engineering; their problem is with design, usability, and functionality.
Re: (Score:2)
exactly. for the purposes of this role, the variation of individuals within each group is much greater than the variation between the groups. i doubt that the type of degree was the top factor in decision.
Computer Science includes Sofware Engineering (Score:2)
Computer Science is the overarching term for everything to do with computers. This includes computer science theory, hardware engineering, software engineering, networking, etc. A good Computer Science program covers the theory required to build a computer from scratch (circuitry, microchips, firmware, software, etc). A good Software Engineering program provides practical skills to develop applications, games, etc.
If I may paint with a really broad brush (Score:2)
"Software Engineering" implies a more practical focus, with emphasis on using real teams to create working systems with real-world applicability. "Computer Science" implies a more theoretical approach, perhaps a bit removed from practical application. Both have their place, and there's huge overlap (one institution's Comp Sci program may even be more "practical" than another's Software Engineering program), so it is hard to make snap judgements.
But in general, putting someone with the Software Engineering d
A Classic Treatment (Score:3, Funny)
THE TOASTER
Once upon a time, in a kingdom not far from here, a king summoned two of his advisors for a test. He showed them both a shiny metal box with two slots in the top, a control knob, and a lever. "What do you think this is?"
One advisor, an engineer, answered first. "It is a toaster," he said. The king asked, "How would you design an embedded computer for it?" The engineer replied, "Using a four-bit microcontroller, I would write a simple program that reads the darkness knob and quantizes its position to one of 16 shades of darkness, from snow white to coal black. The program would use that darkness level as the index to a 16-element table of initial timer values. Then it would turn on the heating elements and start the timer with the initial value selected from the table. At the end of the time delay, it would turn off the heat and pop up the toast. Come back next week, and I'll show you a working prototype."
The second advisor, a computer scientist, immediately recognized the danger of such short-sighted thinking. He said, "Toasters don't just turn bread into toast, they are also used to warm frozen waffles. What you see before you is really a breakfast food cooker. As the subjects of your kingdom become more sophisticated, they will demand more capabilities. They will need a breakfast food cooker that can also cook sausage, fry bacon, and make scrambled eggs. A toaster that only makes toast will soon be obsolete. If we don't look to the future, we will have to completely redesign the toaster in just a few years."
"With this in mind, we can formulate a more intelligent solution to the problem. First, create a class of breakfast foods. Specialize this class into subclasses: grains, pork, and poultry. The specialization process should be repeated with grains divided into toast, muffins, pancakes, and waffles; pork divided into sausage, links, and bacon; and poultry divided into scrambled eggs, hard-boiled eggs, poached eggs, fried eggs, and various omelet classes."
"The ham and cheese omelet class is worth special attention because it must inherit characteristics from the pork, dairy, and poultry classes. Thus, we see that the problem cannot be properly solved without multiple inheritance. At run time, the program must create the proper object and send a message to the object that says, 'Cook yourself.' The semantics of this message depend, of course, on the kind of object, so they have a different meaning to a piece of toast than to scrambled eggs."
"Reviewing the process so far, we see that the analysis phase has revealed that the primary requirement is to cook any kind of breakfast food. In the design phase, we have discovered some derived requirements. Specifically, we need an object-oriented language with multiple inheritance. Of course, users don't want the eggs to get cold while the bacon is frying, so concurrent processing is required, too."
"We must not forget the user interface. The lever that lowers the food lacks versatility, and the darkness knob is confusing. Users won't buy the product unless it has a user-friendly, graphical interface. When the breakfast cooker is plugged in, users should see a cowboy boot on the screen. Users click on it, and the message 'Booting UNIX v. 8.3' appears on the screen. (UNIX 8.3 should be out by the time the product gets to the market.) Users can pull down a menu and click on the foods they want to cook."
"Having made the wise decision of specifying the software first in the design phase, all that remains is to pick an adequate hardware platform for the implementation phase. An Intel 80386 with 8MB of memory, a 30MB hard disk, and a VGA monitor should be sufficient. If you select a multitasking, object oriented language that supports multiple inheritance and has a built-in GUI, writing the program will be a snap. (Imagine the difficulty we would have had if we had foolishly allowed a hardware-first design strategy to lock us into a four-bit microcontroller!)."
The king had the computer scientist thrown in the moat, and they all lived happily ever after.
Personal Experience (Score:4, Interesting)
Yet on the other end I find that many computer software engineers tend to master something like Java and then just wail away at every problem with their one mastered skill set. Then after a while they get a second skill set such as SQL and as time goes by they end up with a sort of vertical integration of skills. But where they don't usually progress is when you do have to look at a problem as a system and start doing discrete math, working out the nodes, connections, and so on. This is where computer software engineers will implement a cryptographic library but do it really badly leaving elephant sized holes.
So I would say CS is often too pedantic, CE is too much like a plumber, but a CE with strong math and a good dose of CS can generate art. Sort of like Escher; he could draw quite well and had a good understanding of math, he combined the two into something incredible.
BIOS? (Score:2)
Frankly, I find it confusing when the word 'biographies' is shortened to 'bios' - especially when dealing with a CS subject.
East vs. West then? (Score:3)
So you've got Seattle on one hand, and Massachusetts on the other. Massachusetts has a reputation of being more theoretical about engineering, as opposed to cheap and practical like west-coast people. Massachusetts-made thinks like DEC's VAX were big, expensive, heavy, tough, and polished. Seattle has...well ...MSDOS. Quick, dirty, gets the job done, ultimately Microsoft flourished and DEC withered and died. BUT concepts live on, as NT was done by ex-DEC people. West Coast is more hack, East Coast is more engineering. Personally, I am from Massachusetts and would like to think the Yankee 'craftsman' approach is better than the west-coast hippie 'hack', but the truth is, that the distinction isn't always easily made, and that elegant design needs some pragmatism as well. But, I think it's an interesting intellectual exercise when think of East Coast CS craftsmen vs. West Coast CE hackers.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Computer engineering is close to EE, it only took 1 more semester to get both.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Neither one is their job.
Nice try, but wrong. CS is admittedly not about project management etc. (although SE is often either part of the curriculum or an elective) but software engineering, as formally defined, is all about management of software projects to get predictable quality results.
And, yes, I've been involved with both at the formal academic level.
Why technical expertise helps (Score:2)
If you are a manager with good tech skills, it's easier to detect technical BS and to ask the tough questions that will get you the information you want quickly.
If you don't have the right skills, you need someone you trust who does at your side to fill this role.
Now, at the 5000-person level, you do have a point. If she trusts everyone who reports directly to her not to BS her OR she has someone at her side who can ferret out BS, then she doesn't need a technical background. But if she isn't that lucky,