Mechanical vs. Software Engineering.

I’m doing this paper for school about mechanical and software engineering. I’ve chosen to write about whether mechanical engineering will be as vital to new technologies as software engineering. I’ve chosen to write about this because I have noticed that software engineering has become extremely important to new technologies. For example, the Segway wouldn’t be nothing without the programming involved in it and neither would the missile systems the military has with all the programming involved in its guidance system and whatnot. So I’m basically doing a survey here and I need at least 15 replys, so if you can, please reply to this, it will be much help to me. I just want to know what your thoughts are on this. Also include if you’re a student or engineer, and if you’re in an engineer, what type. Thanks in advance.

in robotics the sky is the limit… as new technologies are developed in either of these 2 fields it allows for growth in the other

They are both equally important, and they will always be equally important. Software is nothing without properly working hardware (Try running Doom 3 with a fried videocard, I dare ya). But likewise, hardware is nothing without software (Try running a computer without an OS. Useful, no?).

I think i’ve made my point…

UNLESS that machine needs no logic (Like Van De Graff Generators, WimHurst Generators, Tesla Coils, etc).

It depends on the situation, but somewhere down the line, software will always (in a way) depend on hardware (you need some type of machine to allow you to create software in the first place), while hardware will not always be dependant on software. I’m a student.

Software engineering is nowhere if you can’t make the software * do * anything.

But, to answer your question, first let me say they are two sides to a coin.
Second, i think the possibilities sofware side are increasing. We now have the ability to make our software do exciting things (like high schoolers with the help of mentors making a robot cap a tetra with a green band). And we have the ability to get electronics (ie sensors) at affordable prices and so on so we CAN do fabulous things with programming.
These things combined add the possibility of giving machines a lot more autonomy than they currently have. And I think this will be an increasing trend in the future, finding more and more machines with more and more autonomy. More autonomy = more programming.

Thats quite the quandry you have there. Its a good topic to think about as well, seeing how technologies are rapidly advancing due to computers and software.

As a Software Engineering student at Clarkson, I’ll throw in my two cents. The truth of the matter is this, there is no true way to tell. Software engineering is not a concrete process, it is still highly evolving. In fact, there is a saying ‘Bridges collapse less frequently than operating systems’ (and no this is not refering to Mircosoft. It’s actually well-known in software circles)

Software systems cannot be modeled in the same way as mechanical systems. One way to put this is as follows: mechanical systems can be mathematically modeled using different forms of calculus, depending on what you are designing. Software systems are mathematically modeled using discrete steps, which is actually a large difference between the two conceptually.

One thing to keep in mind that there is a sort of hierarchy in this regard:

Software -> hardware -> eletrical -> mechanical or vice versa depending on the way you see it. (Yes, this is overly simplified)

the software and hardware need to know how to send the various electrical signals in order to do what needs to be done mechanically. (i.e. A C program cannot tell a drivetrain how to move without some sort of intermediary.)

So is there really a way to tell which will be more important in the future? I highly doubt it since the computer age is still going strong and growing at a phenomenal rate. However, part of what makes engineering is taking an existing concept and improving upon it, something that mechanical engineers have been doing for a far longer time and thus by now are pretty darn good at it.

I highly recommend you keep pursuing this topic and if you don’t mind I’d like a copy of it when you’re done with it.

First let me say I am an Engineer, my degree is in computer science and I am now working as a project leader in a product development group. In that role it is my responsibility to coordinate the efforts if mechanical, electrical, firmware (software that is embedded in a device) and software (PC based). The biggest changes that I have seen in the 20 some odd years since graduation has been in the computer based tools used by all of these disciplines. These tools could not be developed without a group of people getting involved in software and another engineering discipline. As time moves forward I believe the software industry will continue to develop specialties along the lines of other engineering disciplines to the point that the boundaries will begin to disappear. Just like reading and writing allow us to communicate across time, software is a means of taking difficult engineering concepts and making them easy for the average person to use. An example from FIRST is the use of Autodesk Inventor. Most teams use this tool extensively to develop their robot. Being able to completely design and build (through constraints) the robot in the virtual world greatly speeds the process. This moving of engineering knowledge into software application also frees the mechanical engineers to advance their discipline by focusing on the unknown. The development of simulation tools allows us to take complex engineering tasks and simplify them to the point that they are accessible to the masses. In conclusion I believe all engineering disciplines to be very important! Software is an enabling technology that is allowing all engineering to advance. My vote is for software.

I’m a MechE, so I’ll throw in my 2 cents as well. As mentioned above, software is an enabling tool that lets Mechs do more with less. So it’s important in that regard. However, mechanical engineering isn’t completely computer modelling of parts. That’s really one of the last steps in the process. A lot is about creative thinking and solving problems. A lot of new tech is going to depend on miniturization, and that’s highly dependent on mechanical engineering and creativity. Look into microelectromechanical systems (MEMS) and you’ll see an awful lot of exciting stuff there. Things like microscopic motors and pumps and all sorts of stuff. When you get that small, the equations lots of things change and that takes a sharp MechE to rework things before software can do anything with it.

Software packages have their limitations. FEA packages aren’t 100% accurate and can be blatantly wrong if you’re not careful. You need enough engineering knowledge to make sure your result is in the ballpark.

Both of your examples are controls systems, which do depend on software to process feedback and control the system. No amount of software engineering will help you understand the dynamics of the system and what it actually has to do to control the system, however. Tweaking the constants and functions that generate the control signals is pure mechanical. The software is there simply to translate the MechE’s work into reality.

In the end, I don’t think you can say any technical discipline is better or more important than another in an absolute sense. They’re all highly interrelated and interdependent and you can’t advance in one without advances in others.

Just remember, Software Engineering wouldn’t exsist if the Mechanical and Electrical engineers hadn’t developed the hardware to make the software possible.

From experience, trying to program a robot that is mechanically not up to par (ie. Underpowered articulating arm) to be controllable is impossible. However, not doing a good job programming a perfectly engineered robot is equally distressing. For both the fields of computerfscience and mechanical engineering to flourish, atleast in regards to a FIRST team, one must do quality mechanical design and programming. My point being that without one the other is nothing.

IDK it just seems that both Mechanical and Software Engineers are dependent on one another. They both have their strong aspects and at the same time they have their Aschillies(sp) heel. Mechanical engineers wouldnt be anything without software engineers in order to get many mechanical devices working and software engineers wouldnt be anything without something to work with. Well anyways thats how I think of it.


Things designed by mechanical engineers go crunch grind shatter bang as they fail, whereas the works of software engineers expire softly and silently, like snow falling on a moss-covered river rock.


One cannot exist in our technologically driven world without the other. Software engineering brings life and soul to machines that mechanical engineering makes. They will eventually gain equal importance in the future. True, there is a surge of people into the software industry, but eventually the two sides will balance out. And who knows, maybe there will be a third type of engineering that will supplement the technology of tomorrow.

I’m a mechanical engineer who spent most of his career doing software. You seem to be focusing on software in “embedded systems” where it’s used mostly for control and operator interfaces. Control systems have always been important to mechanical systems. Early on they were mechanical in nature, for instance, the governor controlling the speed on a steam engine. Later, the controls move to electrical and then electronic. Now, the electronic has evolved into programmable microtrollers which allows for smaller, cheaper, and much more powerful control systems. It also allows for things to be distributed so that each of the components of a system is smart and then integrates into the system as a whole. Another thing modern controls add is greatly improved diagnostic capabilities.

For my two cents, the people who program embedded systems are the ones truly deserving the title “software engineer” in that most are engineers and follow engineering design practices. Most “software engineers” however are simply programmers who like the title because it sounds more important and have no clue about how engineering is done.