Hacker News new | past | comments | ask | show | jobs | submit login

My own personal views (electrical engineer who deals a lot with software and who codes a lot) are that you can find people that can do engineering work without an engineering degree today. A lot of that stems from powerful software that abstracts away much of the math. So you can load a model into a vendor's product and run transmission load flows without much formal training. However, if you haven't taken any circuit classes, complex power, calculus...etc, you're never going to truly understand the results of what you're doing and the end results will suffer in quality. That's why engineers are generally hired (assuming a PE license isn't required) instead of anyone with a 4 year degree. Before computers, a lot of that would be done by hand (at least the calculations that were feasible at that time) and you would pretty much have to have gone through an engineering, physics, or math program to have those kinds of chops.

Software is different in a lot of ways. Especially at the high level, you are solving a puzzle. Let's say you need to generate a report. You've got all the tools in your language and several libraries. You know you'll have to talk to a database, pull down data into some kind of data structure, open a file handle, write the data, close the file, and save the results somewhere and then send an email. Is it technical? Yes. Challenging, well...maybe not this example, but software can be very challenging yes. But is it engineering? I wouldn't call it that. And no, I'm not sneering at it, or calling engineering superior. I just see the two as very different.

The stuff you do in engineering school (calculus, differential equations, statistics, linear algebra, circuit analysis, signal processing, Fourier transforms, control theory...etc as tools to solve problems with radio, industrial machines, turbines..etc) has pretty much zero to do with web design, standard business apps, databases, compilers...etc. If you use engineering as a general term to mean "make technical stuff" than you could apply it to either field equally, but engineering has already had a definition for many years and software is it's own thing. So use the term "coder", "developer", "programmer", "hacker", "complexity guru", or even "software engineer" as they all make sense. But the general term "engineer" would apply to mechanical, electrical, chemical, industrial, civil, biomedical...etc. All of those fields have the same core math classes and they then usually share an intermediate set of classes (thermodynamics, dynamics, statics, circuits...etc) before the advanced classes which specifically apply to your field. I don't think a very high percentage of coders (amazing, technical, often better paid, and very valuable as they are) have an overlapping lineage and language with what you would think of as traditional engineering. Believe me when I say I'm not gatekeeping the term either. I just honestly feel like there these things are taxonomically different. Maybe a new single word term should exist to convey what software developer does with two words.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: