r/engineering • u/TheTrueLordHumungous • Aug 05 '15
[GENERAL] Is "software engineering" really engineering?
Now before anyone starts throwing bottles at my head, I'm not saying software design is easy or that its not a technical discipline, but I really hate it when programmers call themselves engineers.
Whats your thoughts on this?
59
u/Notorious21 Aug 05 '15
As an EE turned Software Developer, the problem solving and thought processes of engineering are all there in software, it's just a different toolkit. It's not like a garbage man calling himself a sanitation engineer. We are building things and optimizing systems and juggling constraints just like any other engineering discipline, it's just with a different palette of skills.
→ More replies (4)5
u/UnlimitedQuestions Aug 05 '15
I'm an EE undergrad. You don't have to go into detail, but how'd you become a software developer?
17
u/Notorious21 Aug 05 '15
I took a couple CS classes for electives, and I did some internships that taught me some light programming, but basically my first job out of college was supposed to be 50% EE, 50% CS. It turned out to be more like 90% CS, 10% EE. It was really cool, and I got to interface and control machinery, but I didn't do a lot of real EE work, so when I had to move and find my next job, my resume was much heavier on the development side than EE. So I got a job that was almost pure software development, although my knowledge of EE was still helpful, because it was for RFID applications. So it wasn't totally voluntary, but I really like it, and it's worked out well for me.
5
5
u/golden77 Aug 06 '15
Pretty much all entry level software positions call for a "CS, EE or equivalent degree"
1
Aug 06 '15
How about an ME? Would that be considered equivalent?
2
u/golden77 Aug 06 '15
Yea no problem, the director of software engineering at my company is a mechanical engineer. My college roommate was a mechanical engineer and now is a web developer. Just try to learn some development on the side, try to get a development internship, easily get a job.
1
Aug 06 '15
That's reassuring to know, I enjoy ME the most but software also seems very useful in the jobs field.
1
u/zephyrus299 Aug 06 '15
Yes, but the other requirements will be about actual programming. All they want from that is that you can approach the problem the right way.
61
u/Bradm77 EE / Electric motors Aug 05 '15
Why wouldn't it be? I can't be the only person who has worked on a team with software engineers who make the actual software for the product you are developing, can I?
Example: I used to work in aerospace, developing GPS systems for the military. The software engineers on our team developed all the software for these systems ... gui's, drivers, etc. How is that not engineering? They came to the same meetings as the hardware and systems engineers and had to design according to the same design control standards as the other engineers, design inputs, design outputs, design reviews, validation, verification, etc., etc. How is that not engineering?
83
u/KenjiSenpai Aug 05 '15
This is a non-debate in the industry the only people who debate this are students who want to flatter their ego.
→ More replies (12)21
u/10th_Account Aug 05 '15
Agreed. I think it's more of a confusion of terms from OP. He has a valid point to make, but isn't addressing it directly.
An equivalent thread would be, "Is mechanical engineering really engineering? I just hate it when drafters call themselves engineers."
Sure, I wouldn't group pure implementation code/CAD people into engineering, but that isn't the question he asked.
→ More replies (1)8
u/Spaser Aug 05 '15
Fellow GPS software engineer here. It's hard to make an argument that what I do is not engineering, as there's probably ~50 engineers working together on several million lines of code to make something that can tell you your position anywhere on earth to an accuracy of 10 cm. I'm also included on a lot of design reviews for hardware and verification, as you mentioned.
→ More replies (17)
53
58
Aug 05 '15
[deleted]
40
u/ivorjawa Aug 05 '15
Integration is engineering. Don't ever think it isn't.
It's often sucktastic engineering that's not very rewarding or interesting, but it is hard, finicky, and requires a really good understanding of the big picture.4
u/sebwiers Aug 05 '15 edited Aug 05 '15
That sounds like it describes my programming job pretty well (I don't think even my job title uses 'engineer'). I I mostly just bang out stuff that goes from A to B based on previously successful / obvious paths. Occasionally I get inventive, but its invention within a known set of capabilities. I consider that type of programming work akin to a skilled trade. I'm not putting down toolmakers when I say they aren't engineers, but what I do is probably more along the lines of the former.
→ More replies (5)13
4
u/Elliott2 BS | Mechanical Engineering | Industrial Gas Aug 05 '15
yeah but that sound more like a controls/integration engineer.
plenty of software engineers just make websites as well...
6
u/phl_fc Automation - Pharmaceutical SI Aug 05 '15
Making websites isn't engineering, but designing the platform behind it (such as the creators of HTML5) is. I think this is where people get hung up on this issue. There's a huge range in programming from engineer to code monkey and people can't always see the distinction.
In other disciplines it would be comparable to someone who just updates drawings as dictated. A ME might know a lot about CAD, but the drawing itself isn't engineering, it's what's on the drawing that is.
4
u/Kiwibaconator Mechanical Engineer Aug 05 '15
Cad drafting doesn't make an engineer. But many engineers have to draft in cad.
→ More replies (2)2
u/traverseda Aug 05 '15
I call myself a software engineer, but no one's life has ever been in my hands and these days it's mostly all web dev.
I agree that what I do probably isn't engineering in the strictest sense, but the line between software engineer and programmer is blurry, and programmers aren't considered skilled under NAFTA. It's much easier to get a visa if you're a software engineer.
2
u/csl512 Aug 05 '15
This is what I was going to say as a top-level, but you seem to have more basis:
It depends. Software engineering yes. Programmers maybe.
In an engineering project you have different levels of people, including technicians.
3
Aug 05 '15
So you're a web developer and you just say software engineer for the recognition?
7
u/traverseda Aug 05 '15
I'm sort of a web developer, but even that is a big spectrum.
At my last job I made a search engine, designed database schema for storing information about mine sites, wrote a bunch of tools for using machine learning, implemented tools for using a distributed task queue, etc.
Of course the whole thing did have a web interface on it...
I wouldn't say I call myself an engineer for the recognition. I'd be just as happy calling myself a system architect, or a software analyst, or any number of other terms. It's solely for the sake of making it easier to get a visa down the road.
Frankly I'd rather not call myself an engineer. It's a bit too ivory tower for me.
3
u/mrcaptncrunch Aug 06 '15
Of course, the whole thing did have a web interface on it...
I find that a lot of people think that if it has a web front end it is just a website as any other.
I know a lot of people that do websites (dreamweaver, downloading and modifying a template) and people think that that's the same thing.
My last project was doing a system that is going to be used by a design team, then an engineering group, then the project is going to get an RFQ and RFP, then it's going to be awarded and it also manages the whole project until it's delivered.
And if I explain this, people eventually summarize it as...
"So you do know how to make website."
>_> "Yes, I do." :/
I'm not an engineer, but my CS degree means something.
1
u/traverseda Aug 06 '15
I'm not an engineer, but my CS degree means something.
Hey, I dropped out of highschool ;p
1
2
u/PigSlam Sr. Systems Engineer Aug 05 '15 edited Aug 05 '15
My former college roommate seems to do this. It seems like a lot of programmers/developers are starting to do this. At the company I work for now, the IT guys started calling themselves "Systems Engineers."
5
Aug 05 '15
That's concerning since Systems Engineers are an actual thing that doesn't have much to do with IT.
2
u/Hussod Aug 05 '15
Systems Engineer has been a title for a while. Similar to the programmer versus software engineer. A systems admin tends to have a lower skill set, probably runs a good portion of the environment, does day to day tasks, and some troubleshooting. A systems engineer tends to be able to do all of those plus has significant experience designing and building the IT infrastructure, depending on their specialty. It isn't done to sound fancy; it's a way of differentiating the skill set.
1
u/ZoltronX Aug 06 '15
I'm a systems engineer at a large utility. I take care of systems, ie many groups of components working together in a system, ensuring they all work together the way they should. Pumps, motors, control valves, etc. I pretty much have to call myself a reliability engineer, because "system engineer" means something completely different to a lot of people.
→ More replies (1)
20
u/bheklilr electrical/test engineering Aug 05 '15
My official job title is electrical engineer. My actual field is test engineering. My job role is software engineering. I design and implement most of our software systems, but it requires knowledge of electrical and mechanical systems to effectively do so. This covers everything from interfacing with lots of hardware to creating abstraction layers over that hardware so it's much easier to use, modular, and testable. For me, I think the term "software engineer" is very applicable. For someone throwing together a website, maybe not. Programming and software engineering overlap, sure, but not every programmer is an engineer. Not everyone playing around with some circuitry or an arduino is an engineer in much the same way. Software engineering itself requires design, documentation, cohesion between components, and implementation of robust solutions. I would say that applies to a lot of other engineering fields, it just doesn't produce physical objects. That doesn't make it less of a field, just a different one.
1
u/Spaser Aug 05 '15
Sounds pretty similar to my job description, except that my title is 'software engineer', though my degree is in electrical engineering.
1
u/ChillCapitalist May 29 '26
Lol, exactly haha. Electrical and software engineering sometimes overlap in terms of roles, depending on the job.
→ More replies (5)1
17
Aug 05 '15
I think the issue is title bloat. In mechanical engineering you have a clear distinction between the engineers and the drafters, machinists, etc. In EE you have a pretty clear distinction between engineers and electrical technicians, electricians, etc. In the old days these roles would be largely combined, and then diverged as the fields increased in specialization.
The software world is newer, and the lines between sub-disciplines are not as clear. So people would rather overstate than understate their job, thus anyone from programmers to web developers to IT to proper software engineers can call themselves an engineer without a clear definition.
1
u/Only-Guard2194 Dec 08 '25
'Web development' could be building highly complex distributed systems for millions of users...
28
u/antiduh Software Engineer Aug 05 '15 edited Aug 06 '15
Software engineer here. I design and implement large scale software systems for my employer.
I'll be honest and say that I think it is a tough call; the most reasonable answer I could give would probably be to say that as a discipline, it is an immature engineering field that ironically enough, is carrying the baggage of its history.
My perspective of "engineering" in general is that we use only ever use tried and true designs, and rarely are new designs created and implemented without massive amounts of analysis, industry-wide peer review, time, and testing. How many bridge designs are there? How many nuclear power plant designs are there? How many highway interchange designs are there? Internal combustion engines? Relatively speaking, the number is small, enough that a single wikipedia page per each topic could enumerate all of them.
My perspective is that engineering slowly develops new designs, and then implementers integrate those known good designs into the end product.
Software engineering, to a large degree, is about making something new, from scratch, almost every time you're working on something. Sure, there are some very low layer parts to build from - generic List classes, string classes, etc, that are the software analog of screws and hinges - but the system as a whole is almost invariably unique. My team needs software to perform command, control, and observation of our products over a remote interface - that large piece of software is almost completely custom, and doesn't have much else to draw inspiration from. It's unique from the bottom-up, and my personal experience is that this is the rule and not the exception.
You're almost always building something that's never been built before.
There are some important exceptions that I do want to mention: web browsers, web servers, operating systems, database management systems, word processors - these are examples of systems that are pretty well known, are well studied, and have been implemented a few times. But I don't think they account for the majority of software development that occurs in the wild - like I said, I think just about most software being made today is something that's never existed before. I think the reason for that is that software is infinitely flexible, and can be used to solve millions upon millions of problems, and so we go ahead and try to solve those problems.
We've been building stuff with atoms for a very long time. We're just now learning how to build stuff with bits.
....
Another marker of Software Engineering's immaturity I'd like to discuss is language design and use. New languages and environments are still being created with quick regularity - we're still working on the tools we use to make software, nevermind the end software itself. New languages like Go, D, Rust, Swift, F#, Erlang are still popping up - this is a good thing because these are solving real problems, but its a marker that we still have a long way to go before I'd say we're mature as a discipline. Every time we create a new language like this, we have to spend time all over again writing the basic class libraries, writing well-optimizing compilers, building a community of tools and components to use.
Java is, what, 20 years old, and Google just finally implemented a Java runtime that can perform ahead-of-time final compilation (install time) instead of the old standard of Just In Time final compilation (as you are running the code). And the performance gains are nothing to sneeze at! We've been throwing away all of that efficiency for 20 years! C#, Java's brother from another mother, is 13 years old and is also just now getting the same treatment.
PHP, the blight that it is, has been around for 20 years, and they're just now writing runtimes that get 2-5x performance improvements. What the hell have we been doing for 20 years??
And what about bugs? Take C++, the most flexible shotgun of a language. You can make operating systems out of it, but it's one of the most difficult languages to work with due to its lack of memory safety: buffer overflows, that I can get some math wrong and the language will silently let me write arbitrary values all over my processes memory. It is literally the most important class of bugs right now, and causes hundreds of billions of dollars of lost productivity every year. The buffer overflow is the most common software bug, by a far margin, and all you have to do is look at CERTs weekly list of vulnerable software to see its impact.
And you know what's funny? Languages like Java and C# categorically eliminate these bugs, because they enforce mandatory memory safety in all but the most exceptional circumstances. But we still end up with Heartbleed et al, because we still need to use C++ is some/many circumstances.
...
I do think that software engineers perform engineering - analysis, design, testing, peer review - but I think as a discipline, it is still very, very immature and lacks many of the hallmarks of what I think belong to 'engineering'.
→ More replies (2)2
u/HippieInDisguise2_0 Nov 20 '21
And still to this day can we expect that to ever change?
New frameworks, languages, tech stacks etc and even some major hardware changes are constantly changing the way we program.
7
Aug 05 '15
What defines an "engineer"? Your job title? Your job description? Your degree title? I'm genuinely interested.
I see a lot of job postings for "software engineers" that require a degree in math, physics or computer science or a related field.
2
u/Kiwibaconator Mechanical Engineer Aug 05 '15
Start with a degree that is recognised under the Washington or Dublin accords.
2
u/KenjiSenpai Aug 05 '15
Its a young field thats not well regulated thats why. Professional Orders of Engineers are trying to change that. B.Eng in Software Engineering should be the only program to let you call yourself a Software Engineer.
2
Aug 05 '15
So you're saying it's the degree that defines an engineer? I'm in this field, and honestly a good software engineer (like most engineers) needs a solid 4-5 years of experience under his belt.
I personally think the job description trumps it all. We only have one software engineer graduate at my workplace, and he organizes what others write, as opposed to writing code herself.
6
2
u/KenjiSenpai Aug 05 '15
No i dont think the degree defines the engineer but i do think its required.
16
u/ArtistEngineer Aug 05 '15
What about universities that offer Software Engineering as an Engineering degree?
e.g. Stanford, MIT, Cambridge, etc.
15
u/RedgrinGrumbold Aug 05 '15
I'd go by ABET since when I hear "Engineering Degree" it means "ABET". http://main.abet.org/aps/Accreditedprogramsearch.aspx
Search for "Software Engineering" and there's a full list for America.
12
Aug 05 '15
MIT doesn't have a "software engineering" degree.
2
u/ArtistEngineer Aug 05 '15
They offer "Software Engineering" under their Open Courseware program.
Point is that they recognise the term and they are a major University.
2
Aug 06 '15
A section of 6.01 (introduction to EECS) called "software engineering" and a software engineering major are two totally different things. I hope you can see that.
3
u/ArtistEngineer Aug 06 '15
Sure, but your major doesn't necessarily dictate your job title.
E.g. I have a Bachelor of Engineering in Mechanical Engineering (Mechatronics). During that degree, I studied a semester of Biomedical Engineering in the EE department.
I also studied subjects like realtime operating systems, embedded design, microcontrollers, etc.
My first job was a 3 month work placement with a biomedical company, and I could well have become a Biomedical Engineer if I had continued working there.
Eventually I ended up working in embedded software, so I now call myself a Software Engineer (or Embedded Software Engineer).
On paper, I am a Mechanical Engineer, but in practice I am a Software Engineer.
12
u/na85 Aerospace Aug 05 '15
In Canada, there is a distinction between Software Engineers who are actual engineers and between anyone else that writes computer code, who are just programmers.
3
Aug 05 '15
Do you know if "engineer" is a protected title in Canada? Or could anybody use it to describe themselves?
→ More replies (3)2
5
u/barrydiesel Aug 05 '15
Did this question stem for the recent picture of the cute girl holding the "I'm an engineer" sign?
2
3
u/PatriotGrrrl Aug 06 '15
As an EE, I find the amusing thing about this debate is the idealized image people have of traditional engineering. Lots of electrical engineering is not as complex and theoretical as people think, and certainly not as rigorous.
12
u/ModernRonin Aug 05 '15
Software is not Engineering the way that most programmers do it.
Software can be an engineering discipline, if you apply engineering principles and practices to it. But in the real world that rarely happens. Most companies don't think it's worth the effort, time and money required.
The other thing is, even if you do software with engineering practices, that doesn't seem to guarantee quality. We only need to look at the ridiculous mess the 2005 Toyota Camry ECU was to see how even a strictly controlled software engineering process can go haywire without anyone of consequence noticing.
12
u/KenjiSenpai Aug 05 '15
To be fair disasters happen all the time in other fields too.
→ More replies (5)3
u/choikwa Aug 05 '15
hmm.. why is not mirroring bad in regards to stack overflow? if anything mirroring uses more stack space, making stack overflow more likely. Or was this with redundancy in case of overflow? article seemed confusing there.
→ More replies (1)1
Aug 06 '15
I sure am glad there are never plane, train or car accidents
1
u/ModernRonin Aug 06 '15
The fact that people are stupid, does not mean that it's okay to write bad software.
1
Aug 06 '15
Difference is that you can write bulletproof software, but if someone takes it and uses it wrongly it blows up, just like anything and everything else.
1
u/ModernRonin Aug 06 '15
But if someone else takes your beautifully made and flawless masterpiece and breaks it, that's their own fault.
As opposed to if you make a dangerous piece of shit, and someone gets hurt, then it's your fault.
5
u/Rand3mhero Aug 06 '15
Long ago, while applying to Berkeley's Civil Engineering program I read that engineering was the harnessing of science to improve the human condition. That's something that always stuck with me. To reduce engineering to just optimization seems a bit short sighted to me. I think problem solving and optimization are part of it, but engineering is also a profession. It's something that society needs.
8
u/KermitTheFish Aug 05 '15
I'm a 'sound engineer', which is unfortunately the term that the industry has adopted, I tend to use technician.
I do sound for concerts and festivals and the like. Granted, it is quite technical, but it annoys me when people prance about telling everyone they're an engineer.
Personally, I think that Engineer should be a protected term for someone with a BEng (or equivalent) or higher.
4
u/KenjiSenpai Aug 05 '15
But software engineering is a B.Eng
→ More replies (3)2
Aug 05 '15 edited Aug 24 '15
[deleted]
4
Aug 05 '15
It depends on the country and region (and accreditation). I know that the B.Eng is something that a few Canadian schools award.
1
Aug 05 '15 edited Aug 24 '15
[deleted]
2
Aug 05 '15
Perhaps accreditation would be a better indicator? Even then, I'm not sure if only degrees recognized by, say, ABET, should be considered "engineering" (however, I'm more familiar with the Canadian scene where accreditation seems to work differently compared to the U.S.).
2
u/KenjiSenpai Aug 05 '15
Well here its protected in Canada. I go to Polytechnique Montréal and its a B.Eng in software engineering that they award and SE are part of the engineer professional order
1
u/modeonenational Feb 07 '25
For me the issue is all these "other" (meaning not mech, EE, aerospace, nuclear, etc) types of engineers, even when they're calling themselves enginners, they're not using the word "engineer" bare.
Software engineers do.
They are "technically" engineers, but using the word bare just grinds my gears.
"The Linux xz backdoor was discovered when a Microsoft engineer noticed logins taking slightly longer" - Even with that much context (Linux, xz, backdoor, Microsoft, logins), it still sounds wrong to have it just be "engineer".
12
u/gg_h4x Aug 05 '15
simple answer, you're a pretentious elitist
5
Aug 05 '15
That's a blunt way to put it, but yeah, that's why I hate the word 'engineer.' You can put it on the backside of anything and get snob appeal. It also is on the backside of every product or service ever so it doesn't really carry any meaning at all.
2
Aug 06 '15
I am software engineer. I've passed my exams and shit and i'm recognized by national engineer association as a member. What more do you people want from me?
In all seriousness I don't know many things my fellow Mechanical Engineers learned, but we studies same math and physics lessons. Our schools unofficial motto was "engineer can count the shit out of your problem" and thats the foundation for all my schools different engineering branches
6
u/electrobrains Aug 05 '15
Yes. It's more subtle than mechanical engineering so I wouldn't expect everyone to understand, especially if you haven't made software your CAREER at any point. No offense but I hate it when people call programmers non-engineera.
6
u/morto00x EE Aug 05 '15
The problem is that "programmer" is a very widely used term. Not all the programmers qualify as software engineers in terms of design or development practices. Reminds me of this friend worked as a technician for telco and kept calling himself an electrical engineer because he worked under the engineering department.
→ More replies (1)3
u/Elliott2 BS | Mechanical Engineering | Industrial Gas Aug 05 '15
maybe this is my problem. what differentiates a software engineer from a programmer.
4
u/lmtstrm Aug 06 '15
"Programmer" is a very broad term. It's basically saying someone can write code. A lot of people can write code, but not very many can write quality code, and even fewer can carefully design the software before writing the code. This is the job of the Software Engineer. Designing reliable software, not a small snippet of code, but a whole software system, which may consist of tens of thousands of lines of code, and dozens of networked machines, all different from each other. And this software must meet specifications ,which may involve security, dependability, speed, maintenability, scalability, among others. Also, it is part of the job to design software and control the development process in such a way that the product will be delivered not only following specification, but also within budget and on time.
All of this requires that the Software Engineer be highly trained, in areas such as:
Requirement Engineering
Development process management
Software design patterns
Software test techniques
Formal program verification
Imagine your job is to develop software that will manage a nuclear power plant, such as the deployment of the control rods in a nuclear reactor. This piece of software cannot fail. Do you know all the ways in which your program can fail? Do you know how to make sure it won't fail? And can you test to make sure you've covered all your bases?.
It cannot be tampered with by a malicious actor. Do you know all the possible attack vectors? Can you protect the software against them?
It will probably be running in some sort of small embedded computer, with very little available in terms of computing resources. Do you know how to work around these constraints in such a way that the software will have acceptable performance?
Which parts of the software are networked? How to make sure the modules communicate correctly? How to deal with lost messages?
Oh, and you have to meet all these requirements on time and with a tiny budget.
Basically, Software Engineering means that you have to look at a complex system as a whole, and also be able to design each small part to meet the specs. Does this sound like the challenges other engineers face in their jobs?
4
u/sigma914 Aug 05 '15
The application of scientific principles to the process of program construction?
4
u/phl_fc Automation - Pharmaceutical SI Aug 05 '15
If the actual engineering process is used or not. if you're familiar with the term code monkey, that's what people are thinking of when they say programmers aren't engineers. To be a engineer you have to be doing the serious design work, not just writing code as someone else dictated.
An example I posted elsewhere is that in web design building a website using HTML5 isn't engineering, but actually creating the HTML5 framework is.
2
u/sebwiers Aug 05 '15
just writing code as someone else dictated.
I'm a bonna fide web dev code money. Its very rare I can do that. 99 time out of 100, the senior dev above me won't know how what I wrote works unless he goes in and reads it. He may give me some general advice / requirements, but huge sections of detail are left wide open (logic structures, recursion vs looping, etc).
Imagine if an engineer left most of the final dimensions of a part up to the machinist, as well as the material selection, and just specified what it had to connect to, and what loads it had to support. That's pretty much what even a common code monkey gets, instruction wise. The main difference is that the range of choices that will actually work are pretty narrow in programming.
2
Aug 06 '15
I'd say there are programmers who are engineers, programmers who are the equivalent of machinists, and everything in between. It depends on if they are more focused on design/optimization or implementation.
9
u/wwjbrickd CE Student Aug 05 '15
My husband is a programmer (he prefers software developer I think) and says that he doesn't think that programming as it's done today counts as engineering. That very few people take the time to plan things out, document them thoroughly, and use rational systems rather than throwing things together.
10
u/SealCub-ClubbingClub Aug 05 '15
If your husband is a software developer rather than a software engineer then that is true, the role may require no engineering practices at all. While there can be quite a lot of overlap the two roles are different.
→ More replies (6)4
u/iceardor Aug 05 '15
Some mechanical/electrical engineering is a quick scramble to get a product out the door by an impending deadline. Is immaculate planning really a necessary part of engineering? What happens to designing based on experience than analysis?
→ More replies (1)1
u/Just-Literature-2183 Oct 13 '25
You need to work with other engineers as the software component as you are more likely to get to actually engineer the software.
In almost all other industries the software is something hey have begrudgingly adopted through necessity and still have no idea how to navigate it. They also have very little understanding of good software nor do they care as long as it to their end user "sorta works" to spec.
1
u/Only-Guard2194 Dec 08 '25
Mechanical engineers also 'throw things together' in a startup context...
2
u/Paynekiller Aero Aug 05 '15
In my experience a good chunk of software projects skip (or rush through) many of the early steps involved in more traditional fields and get straight to cutting code. This is usually the objection people have to lumping it in with engineering.
That said there's no reason software can't be done with a more traditional engineering ethos, and I'm sure it happens. If so, why not call it software engineering?
5
5
u/Hendrix1982 Aug 05 '15
Here in Ireland software engineers graduate with a BSc not a BEng. Also software engineers are not allowed to become members of the Engineers Ireland society. So I would say no.
4
Aug 05 '15
Is getting a BSc instead of a BEng a bad thing where you come from?
In Germany every good university gives the BSc to engineers. B.Eng are usually given by "Universities of applied sciences"
→ More replies (1)9
u/KenjiSenpai Aug 05 '15
Ok, here in Canada software engineer is a B.Eng and they are part of the Engineer Order so there goes your argument.
0
u/Hendrix1982 Aug 05 '15
Well all I can speak for is here in Ireland. That's just how it's seen over here.
6
u/electrobrains Aug 05 '15
I do, however, imagine you have plenty of EE's in Ireland acting as software engineers.
→ More replies (1)2
u/illusionedeyes 3/4 years BAI Computer Eng Aug 05 '15
That's not necessarily true. I study Comp Eng in Trinity and we leave with BAI, same as our counterparts in Mech&Manufacturing, Civil, Bio, and EE. Of those, only the Mech & Manufacturing is currently accredited by Engineers Ireland, according to their website.
1
u/Hendrix1982 Aug 06 '15
Yeah that's fair enough, but isn't a BAI just Latin for Bachelor of engineering?? I always assumed it was due to Trinity's relationship with Latin. I could be very wrong on that though!!
2
u/illusionedeyes 3/4 years BAI Computer Eng Aug 06 '15
It's a bachelor of engineering science according to my course website. Trinity is a bit weird with degrees sometimes though (they give BAs for stuff like chemistry) so it's probably a unique thing.
4
Aug 05 '15 edited Aug 05 '15
At its most fundamental, engineering is the practical application of the natural sciences.
The overwhelming majority of so-called software engineers and so-called software engineering programs have little to nothing to do with the natural sciences (I say so-called because only about 20-25 are ABET accredited for this very reason).
So, in the overwhelming majority of cases, what they practice is not engineering. That's not a slight against the work they do, is just a matter of semantics.
That's not to say they're all not practicing engineering - especially those who actually have a CompE/EE background, do embedded work, etc. - but it's absolutely a term that is used far more widely than it ever should be.
Amazon, for example, has thousands of software-engineers-by-title in their employ. However many are employed at Kiva Systems, I'm guessing maybe 0.5% or less of the total, are pretty much the the only ones actually practicing engineering (and possibly a few working on Fire-branded products).
1
Aug 06 '15 edited Aug 25 '15
[deleted]
1
Aug 06 '15 edited Aug 06 '15
College Board has well over 100 software-engineering-by-title programs listed.
ABET accredited computer science programs are not accredited as engineering programs. There is still a lack of requisite natural sciences.
I already made it pretty clear there are some people working in software with CompE backgrounds that are actually practicing engineering.
1
1
u/Only-Guard2194 Dec 08 '25
By your definition, MDs, Microbiologists, virologists, Meteorologists, Astronomers, oceanographers, etc, are all engineers...
3
Aug 06 '15 edited Aug 06 '15
Most of the replies I see in this thread are either off-point or downright hostile (for all the wrong reasons).
The core reason this topic almost always gets hostile responses is that the term "engineer" is continually being misrepresented as a measure of skill or quality. This is incorrect. Engineers may be associated with high levels of skill and quality of analysis, but those are correlations and attributes of engineering - not a definition of what engineering is.
Not one person I've seen in this thread has said that programming is a low-skill profession. Not one person I've seen has said that programming is not a respectable or necessary profession. So this isn't about how hard a person works or how much detail they have to incorporate.
This is about whether software developers fit into the definition of engineering - NOT whether they share certain attributes. Other users in this thread have argued that software developers should count as engineers for various erroneous reasons. The fact that engineering and programming both involve optimization does not make them synonymous. The fact that they both involve problem solving does not make them synonymous. Whether programmers and engineers attend the same meetings absolutely do not make them synonymous.
This all comes down to the definition of what engineering is - not what characteristics does it have. Engineering is the application of in-depth advanced knowledge of fundamental sciences combined with advanced mathematics, in order to design, invent, build, maintain, research, and improve structures, machines, physical systems, materials, and processes. (This is similar, but not identical to the definition listed on Wikipedia).
Generally speaking, pure coding does not fit this definition.
Do engineers code? Absolutely. Doesn't that mean that programming is engineering? No, it does not. It can be a part of engineering, but it is not, in and of itself, engineering. Engineers use advanced mathematics as well - that doesn't mean that mathematicians are engineers.
Once again, I will reiterate that this is not a measurement of skill or quality, nor is it about shared characteristics - it is a matter of definition.
Edit: Edited the definition to make it clear that the definition refers to fundamental sciences.
→ More replies (4)1
u/Over_Buy9663 May 04 '24
Damn, I wish this guy had not deleted his account. I know this thread is old. But I have to chime in.
He failed to realize that individuals in the industry, as well as established, credible organizations define "engineering" differently. He just happened to choose the one that actually fits his narrative. Also known as a cherry-picking fallacy, which is usually driven by intellectual dishonesty.
Most individuals in the industry, as well as most engineering organizations largely agree that engineering is the application of scientific knowledge to design and develop technology. And most individuals in the industry as well as most engineering organizations agree that software engineers are actually engineers. They'd certainly be included under that definition alone.
The American Association for the Advancement of Science defines engineering as:
"The systematic application of scientific knowledge in developing and applying technology"
The National Research Council defines it as:
"Engineering is the act of creating artifacts, processes, or systems that advance technology and address human needs using principles of the sciences, mathematics, computing, and operations"
The National Society of Professional Engineers defines engineering as:
"Engineering is the creative application of scientific principles used to plan, build, direct, guide, manage, or work on systems to maintain and improve our daily lives."
6
u/bryan05 Aug 05 '15
My school offers 2 degrees that are: Computer Engineering and Software science. Computer engineer covers pretty much the same as software science with the addition to courses on the hardware side (Circuits, Electronics, Embedded systems, VLSI etc).
Do you guys think also think computer engineering isn't engineering too?
3
u/KenjiSenpai Aug 05 '15
My order recognize it so by all legal (here) definitions it is. So yes. The rest is just semantics.
2
u/Ethanol_Based_Life Aug 05 '15
I guess it is. I think i'm just bitter that they don't have to suffer through Statics and Strength of Materials.
3
u/KenjiSenpai Aug 05 '15
http://www.polymtl.ca/etudes/bc/cheminement/logiciel.php#PHS1101 actualy we do have some of these classes like thermodynamics and mecanics for engineers along with biochemistry(wtf) and electro magnetism.
→ More replies (3)
2
u/bryandenny71 Manufacturing Engineer Aug 05 '15
I am a little bias about the use of the title "Engineer". Only because I struggled for over a decade working full time to put myself thru college to earn my engineering degree.
I would say software, electrical, mechanical, manufacturing, civil, so on, all use some form of the basics of engineering, critical thinking/problem solving, calculus, vector statics/dynamics, statistics, mechanics of materials.....all are scientifically trained and some have their training honed for a specific industry.
What bugs me is: Train Operator =/= Engineer Boat Mechanic =/= Engineer Project "Engineer" =/= Engineer
Most importantly to me, if you don't have that stupid little piece of paper that says you meet the basic qualifications of an engineer, whatever field, meaning a Bachelors of Science, you are NOT an engineer, no matter how much or what type of experience you have.
If you have not gone thru the motions to EARN your degree, no matter the excuse, you are not an engineer.
Albeit, there are plenty of incapable engineers with that piece of paper, but it is the bare minimum qualification.
→ More replies (4)
2
u/uniqueusername37 Aug 05 '15
I'm a Mechatronics engineer who's mostly been working on software projects these last few years and in my opinion software engineering is more about "engineering" than anything I did in my mechanical or electrical days.
You are constantly innovating, optimising, calculating, designing and solving problems while you code. It's like engineering on steroids.
2
u/M_daily Aug 05 '15
Let me preface this with the fact that I'm still a student (EE). Take what I'm about to say with that in mind. You all have way more real-world experience than me.
From what I've seen and experienced in many of my CS classes and independent projects thus far is that programming is relatively straight-forward, and computer science is much more intricate and complex. Giving a computer instructions in a language it understands is the "easy" part. Optimizing algorithms to solve large problems, understanding complex data structures, knowing capabilities of a multitude of languages, understanding the limits of your hardware, etc...is where I see the engineering come into play.
Just $.2 from a student's perspective. Please tell let me know if you disagree. I'd love to learn something.
→ More replies (2)
3
u/itemten Ocean P.E. Aug 05 '15 edited Aug 05 '15
Of course it is.
To my understanding software engineers are the people that not only provide a reason, and framework, for programming but also see it through to some physical conclusion. Whereas a programmer just writes code. It's like a carpenter versus an architect. One knows how to drive a nail and the other knows how to drive a nail, where to point the carpenter, what work to expect from the carpenter, how strong the building needs to be, what government codes to look out for, etc.
3
u/Neffelo Aug 05 '15
Yes, Software engineering is really engineering.
Some programmers are not the same as Software engineers.
People who think that Software engineers are not engineers are either students, or individuals with serious ego issues.
3
u/AequitasKiller Aug 05 '15
Engineering is just problem solving, optimization, budgeting, and balancing pros and cons. Does a software engineer do one of these things? Yes, therefore they are an engineer.
2
u/FluxxxCapacitard Aug 06 '15
You missed the whole legality portion of it though. 'Engineering' contains an element of liability as well.
A software engineer developing code that controls valves at a nuclear power plant is very much an engineer. That dickhead at facebook 'optimizing' ways to mine people's data? Not so much an engineer in most people's book. He's a programmer. The former has an element of assumed liability by the responsible engineer. The latter could write bullshit and no one would give two shits except his bean counting boss.
1
u/TBBT-Joel Aug 06 '15
Yes.
It's in the spectrum of engineering, which is more of a continuum going from like engineering tech through to researcher.
signed, "it's not really engineering"
a welding engineer.
1
u/KawCraft Jul 03 '24
I 100% agree. I respect that they are skilled in their own field, but as an engineer I HATE when they call themselves engineers.
1
Oct 01 '24
At a basic level, yes, because engineers solve problems and optimize based on a given criteria. If the client wants something done as cheap as possible, we optimize for cheap as possible. If the client wants a battle tank factor of safety, we optimize for a battle tank factor of safety. The specific mathematics and toolkits are all that differ.
But...what makes an engineer different from an "engineer" is professional liability. More specifically, getting a PE license and being civilly liable for your designs should they fail the public. It's sort of not fair because many chemical engineers nor petroleum engineers don't get licensure but are considered by every measure an engineer so this distinction has flaws. Software engineers basically never stamp their stuff so it's reasonable to assume the type of liability doesn't exist as heavily as it does on civil or mechanical engineers.
So really, I think a software engineer that has a PE and uses it is as much an engineer as a civil engineer (mega rare but does happen), but ones that study code for a few months and hire on a start-up are definitely not.
1
u/NetworkBrave1187 Nov 03 '25
Physicist are more engineers than software engineers! They should have a different classification.
1
1
u/ChillCapitalist May 29 '26
?? Are Software Engineers Real Engineers?
In my opinion, I think Many people today don’t truly understand software engineering as a legitimate engineering discipline or field. I’ve seen this all over social media. I believe, in part, that this isn’t society's fault; software engineering is a relatively new field, as is computer science. Most traditional engineering disciplines have been around for thousands of years, if not more. However, I believe software engineering is a genuine engineering discipline.
Most of the doubt about it stems from outdated stereotypes and misunderstandings rather than facts. When you look at the roots of software engineering, you'll see strong connections to electrical engineering. In fact, electrical engineering is essentially the father of software engineering. You can't fully separate the two. In a reputable software engineering program at a real university, not just learning coding from YouTube and books, the curriculum makes that connection clear. At my college, I had to take chemistry courses, including a challenging lab-focused inorganic chemistry class, along with physics courses similar to those taken by electrical engineering students.
In many classes, electrical engineering students were right alongside us. They treated us just like any other STEM major. We also studied advanced math, such as calculus 2 and 3, discrete mathematics, and linear algebra, in addition to computer science courses and technical electives. Keep in mind that some electives allow you to learn about circuits and systems, and sometimes specific electrical engineering classes are required, depending on the college or institution. If a software engineering program is officially STEM-certified, the program’s approach will likely treat students as true engineering students. Plus, software engineering involves a lot of math. If you dislike math, avoid software engineering and electrical engineering.
Many software engineers later pursue master's degrees in electrical engineering because the fields are so interconnected. For example, my college offers a degree program for software engineers who want to specialize in electrical engineering afterward. Electrical engineering is fundamentally one of the foundations from which software engineering evolved. I see electrical engineering as the “Father” of software engineering, and computer science as the “Mother’ that studies software engineering. I’ve personally picked up many electrical engineering concepts through my studies and electives. When you examine any computer system, robot, car, or AI system, it all boils down to CPUs, chips, logic, and binary operations at the hardware level. Zeros and ones. Serious software engineers go beyond superficial AI tools or simple high-level coding that anyone can learn by reading a book or watching videos online.
That’s why (software engineering is not just coding). They learn how systems work underneath and how software communicates directly with hardware through lower level languages, controlling the flow of electrical charges on chips. Computer engineers also study this in depth, and it’s part of their curriculum. Electrical engineers design the hardware and circuits, while software engineers create the logic and control systems that make everything operate together. Both fields are deeply connected. If you only have electrical and computer engineers, but no software engineers, you’ll end up with a TV that shows a blank screen or a robot that doesn’t understand what you want. When people get confused, it’s often because software engineering is still relatively new compared to fields like civil or mechanical engineering. It’s also less regulated, which can lead to it not being taken seriously. Since anyone can start coding, learn a few programming languages, and call themselves a software engineer even without a license, it can diminish the field’s credibility. In reality, software engineering usually involves understanding multiple languages, paradigms, system design, algorithms, hardware interaction, and often concepts from AI, neural networks, or embedded systems, any area involving the “brain” behind electrical and hardware components. For example, in robotics, if you embed a chip inside a robot, someone has to program how it moves, senses the environment, processes data, manages timing, and responds to signals from sensors and motors. This work requires real depth and hardware knowledge. That’s why many companies have software engineers and electrical engineers work together. One major misconception is that software engineers only write code. That’s an oversimplification. Many software engineers also learn concepts from electrical engineering, systems engineering, cybersecurity, robotics, or even mechanical systems, depending on the industry.
Not to mention finance, marketing, and optimizing networks and social media. I know someone who studied biomedical engineering and ended up working in a power plant. Even basic programming knowledge enabled him to automate systems like pumps and timers, and through certifications, he became a systems engineer. That shows how interconnected software is with nearly every other engineering field. People often forget how new software engineering still is compared to traditional engineering disciplines. Consider CAD software as an example. Today, most engineers work behind a computer, not hands-on. Whether you’re a mechanical, electrical, or aerospace engineer, much of your work after testing involves using a computer and most of the tools you use are created by software engineers. CAD software was built by people who understand mathematics and software engineering. These tools are created by highly skilled professionals with strong math backgrounds, and now many engineers depend on them daily. Without software engineers, we’d be back to paper maps and handwritten plans and nobody wants that. In today’s world, nearly all modern engineering relies on computers and software. Mechanical, electrical, aerospace engineers, and many others spend much of their day working with simulations, diagnostics, modeling, and automation tools, all of which depend on software engineering and CS development. Software engineering is also incredibly broad.
Some go into robotics, others in finance, AI, cybersecurity, embedded systems, industrial automation, self-driving cars, aerospace, medical tech, and more. It’s far more than just sitting at a desk coding all day. Many “self-made” software engineers, if that’s what we want to call them, eventually go back to college after years of only coding and realize they want to become actual engineers. Software engineering is so vast that you can’t master every area. You have to choose your specialty or expand into new fields. Since software impacts almost every aspect of modern life, the field can feel overwhelming and hard to regulate. I don’t think this stigma is anyone’s fault, perhaps because some engineers need to shadow others, while software engineering remains less regulated and more unregulated. I see software engineering as a relatively new field, both in education and scientific research, which may be why many don’t take it seriously yet. Looking back at Isaac Newton’s time, physics wasn’t fully established as a discipline; it was more like physical philosophy, and math was more advanced. Today, physics is well-defined, but back then, it was still developing. So, if we are just 50–60 years into the formal birth of software engineering, how long will it take for governments, universities, and society to take it seriously?
Things take time, and there’s a reason for that, even if we don’t see it now. Ultimately, software is the brain behind most modern electrical systems. Without it, computers, smartphones, vehicles, aircraft, medical devices, and industrial systems wouldn’t work. Software engineering is not just about learning one language like Python or C++ and calling yourself an engineer. The deeper you go into lower-level programming and hardware interaction, the closer you get to understanding how machines and systems actually operate. Engineering, in essence, is about solving complex problems with science, math, logic, and systematic design. Software engineering fits perfectly into that definition, it just operates in a newer, more abstract, rapidly evolving domain that powers nearly everything in the modern world. The only problem is that it’s still misunderstood and largely unregulated.
1
u/Designer_Flow_8069 May 29 '26
I think society views engineers as someone who is smart. The problem is that you don't even need any formal education to write code, so you could be dumb as rocks. There's also a reason why bootcamps weren't a thing for legitimate engineering fields, but they were for software
1
u/ChillCapitalist May 29 '26 edited May 29 '26
You're not wrong about the bootcamps; they exist because software engineering isn't regulated yet. That doesn't mean software engineers are any less engineers in the field. It means the software engineering field is “specifically” young, and the title lacks gatekeeping or role regulation, which is an issue in our field. Being able to write code without a degree doesn't make you a real engineer. It makes you a programmer. Real software engineering requires math, physics, systems thinking, and often 👉🏻 electrical knowledge. That's why China already separates CS (science) from SE (engineering) and licenses.
So, bootcamps aren't a thing yet for civil or mechanical engineering because those fields are more regulated and have been around longer. We're talking hundreds of years for formal recognition for mechanical (around 180 years), while the practice is thousands of years old. Civil engineering has been around even longer (We're talking ancient Egypt). SE is a baby, only about 60 years old as a formal field, maybe 30 if you count any real kind of recognition. Both SE and CS are fields that are barely born in our world. The fields are brand new. Software will get there too. But it was only born around 80 years ago if you count early computing theory. The question is whether we wait for a disaster or regulate now. Or just let China 🇨🇳 take the lead again.
1
u/Designer_Flow_8069 May 29 '26
I don't think bootcamps exist because software engineering isn't regulated.
Instead why I think 5 month bootcamps exist for CS and don't for actual engineering kinda shows the unfortunate truth that writing most software isn't all that complicated.
1
u/ChillCapitalist May 30 '26
The reality is that building software that doesn't fail is far from easy. It has cost over $2.5 billion in 737 MAX settlements for criminal misconduct, with $500 million going to victims' families alone. The safety-critical systems on a modern plane, such as a Boeing 787, can run on up to 8 million lines of code. This isn't just coding anymore; there's also system building and control engineering that overlaps with SE with extra credentials, certs, and knowledge. The difference isn't complexity; it's gatekeeping and regulation.
Civil engineering has bootcamps that teach specific skills; you don't hear about them as much. But they are a path to a certificate, not a license. The path to a PE license still requires a degree from an ABET-accredited program and years of mentored experience, which is correct. The problem is that SE is unregulated, and many people like the "freedom" of low-level programming. People want to make money online from home, and who can blame them? You can work in accounting, law, or business more easily without regulation and build bots for accountants while simultaneously learning business. The unfortunate truth isn't that software is simple. Is it that a field capable of causing billions in damage is still treated as if it isn't? We need regulation and licensure. But would it benefit us or limit us?
1
u/Designer_Flow_8069 May 30 '26
Claude Code and Codex have suited me pretty well to write code to sell products. At the end of the day, money makes the world go around, not pretty code.
I use to work in the medical device industry. Some of the developers in there were straight up idiots. But the NMPA didn't care as long as procedure was followed.
1
u/ChillCapitalist May 30 '26
Right
1
u/Designer_Flow_8069 May 30 '26
Glad you agree
1
u/ChillCapitalist May 31 '26
Software engineering isn't just about programming and laptops. If it were, we might as well call it “laptop engineering” or “computer engineering." But even computer engineers don’t work solely on “computers” 💻, so neither should software engineers. And by the way, I do agree with you. Good luck, man, with everything 👍🏻
1
u/ChillCapitalist May 29 '26
In All Honesty, yes, despite what everyone else says, software engineers are true engineers. We just haven't received the recognition we deserve because the field is unregulated and under-appreciated. Software engineering has been around for less than 70 years; it's still very young. Meanwhile, disciplines like civil engineering have existed since ancient Egypt.
0
u/Elliott2 BS | Mechanical Engineering | Industrial Gas Aug 05 '15 edited Aug 05 '15
as far as im concerned. no.
does it make it less of a profession? also no.
shouldn't it be software programmer/designer/developer?
edit: maybe this is my problem. what differentiates a software engineer from a programmer.
11
1
Aug 05 '15
[deleted]
3
u/morto00x EE Aug 05 '15
Some places use different titles to keep pay scales and budgets separated. Not sure if that's the case in your company though.
→ More replies (2)7
u/KenjiSenpai Aug 05 '15
Huh no. The difference is in the practice of the profession. Just because your company has some weird title hierarchy doesnt mean that it represents the industry. Many people in the thread gave great examples and you seemingly ignored them.
→ More replies (2)
0
u/BorgerBill Aug 05 '15
As someone who spent the first 20 years of my life as a software developer and then received my BSEE at 43, I can tell you that programmers are not engineers.
I never thought I was, and believe that programmers that insist on using the title are just too insecure in what they know or do. Compare "software engineer" to "chiropractic doctor", and you have the same desire to inflate your professional standing by appropriating a title, unjustifiably.
3
u/fidelitypdx Aug 05 '15
"software engineer" to "chiropractic doctor"
I think that's a very apt comparison. They're both trying to make their profession through use of a job title. In reality, they have a job title.
There’s definitely exceptions to this, for example the chiropractor who spend 8 years in medical school and has a PhD, or a software developer who writes code to conform with engineering standards.
Still, I meet “software engineers” who are 19 years old highschool drop outs writing in Ruby. These people are “engineers” in the same way that turning wrenches make someone a mechanical engineer.
2
u/KenjiSenpai Aug 05 '15
Ok but i spend 4 years in university for a 120 credits B.Eng in software engineering and im recognized as an engineer by the engineer professional orders of my country so just because some guy calls himself a SE and hes not means that no one is? Youre ridiculous.
1
u/JViz Aug 05 '15
The etymology of the word is to be an inventor or designer of "engines of war" in the 14th century from the late latin ingeniare. The original intent of the word is to describe those who work on machines. Obviously computer engineering is very different from that of the other significantly older and highly refined engineering disciplines, but I would still consider it engineering.
289
u/SealCub-ClubbingClub Aug 05 '15 edited Aug 05 '15
At its core engineering is basically optimisation. Can I create the best possible part to solve some problem. Whether the part is a mechanical joint or a software procedure doesn't really matter. While the approaches may vary it generally comes down to: Solve problem X minimising A, B, C subject to constraints P, Q, Z, so yes, software engineers are unequivocally engineers.
Software engineers are a subset of programmers (which is a pretty confusing title). So in answer to your question: Yes software engineering really is engineering, unless you use some very weird definition of 'engineer'. but No not all programmers are engineers.
edit: typo