Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: What is a Software Engineer?
9 points by bennyg on March 27, 2013 | hide | past | favorite | 16 comments
As someone who doesn't have an Engineering degree (or even CS for that matter), when would it be acceptable to call myself a software engineer and not just a developer or programmer? I've architected a couple different systems for my own apps, design and code everything, but lack "formal training." I graduated with a degree in Art, but surely a piece of paper doesn't make you a great engineer. So what are your thoughts - what makes somebody a software engineer?


As an aside, in some jurisdictions you can't just call yourself a "Software Engineer". For example, here in Canada "engineer" is a professional designation. Anyone using the term in their job title could face actions from the professional licensing body in their province (http://www1.peo.on.ca/enforcement/callmeengineer.htm). It would be like inserting "Doctor" into your job title without a doctorate or an MD.

I completed my degree in an accredited engineering program, but have yet to complete the application for my professional designation (needs 4+ years of engineering experience and an ethics exam) and so my job title is "Software Developer" instead of "Software Engineer".

One notable difference is that as a professional engineer, in some instances, you assume liability for your work and are not necessarily protected by your employer against legal action resulting from a mistake you made.

That said, a lot of companies pay no attention this and use the engineer title without proper designation.


So in Canada say I have a B.S. in Computer Science and a Masters in Software Engineering- I can't call myself an Software Engineer? Talk about ridiculous...


No, you could, you would just have a more difficult path to the official title than most. If you didn't complete your undergraduate degree at an accredited engineering program, then you can take a series of technical proficiency exams to establish that you have the technical knowledge necessary (this is the same path for people with unrecognized foreign credentials). After that, you would still need to do the same as those who took an engineering undegraduate degree: get 4 years of experience in an engineering role (supervised by an engineer) and pass the ethics exam. Your Master's degree would likely count as some of that experience.

In the mean-time, you do the same type of work with a different title, like "Software Developer" or you can add "EIT" on the end (Engineer in Training).

Then again, you could most likely just call yourself a "Software Engineer" anyway and nobody would hassle you for it. My current employer is the only one that has ever cared, and that is because they have some governmental affiliations.


Unfortunately the term software engineer is used in Canada a lot.

The only places I know of that don't use are places that also hire 'Engineers' to do 'Engineer' stuff.


"Software Engineer" is a euphemism. People that wrote software didn't want to be called "programmers" or "coders" or "developers" because it made them seem less important than they actually are.


You do realize that you can get a Masters degree in Software Engineering, right?

This normally means broadening your C-S background (think of all the electives you didn't take as an undergrad) and learning skills like formal verification and analysis, project planning, managing quality assurance, formal documentation and designing complex and scalable systems.


Not all software engineers are equal. For example, a web developer wouldn't need to know about logic controllers, an important aspect of formal verification and analysis.

They also wouldn't need to know much about scalability or documentation, not yet anyways. Many of us here absorb knowledge like a sponge, and learning stuff not directly relevant to what I am focused on "right now" is a distraction.


The question is tricky, since "software engineer" does not have a universally agreed on definition. Regardless, the profession is not regulated in the same way that other things called "engineering" are, so (in the U.S., anyway) it is legal to call yourself a "software engineer". Of course, whether you have the relevant skills & knowledge is another matter.

In my experience, "programmer" refers to the relatively low-level aspects of software production/maintenance. Someone who deals with relatively high-level aspects is either a "software architect" or a "software engineer". S.A. is oriented toward the high-level aspects of the software itself: overall design, choice of platform, technical standards, etc. S.E. is more concerned with things like gathering and managing requirements, ensuring conformity of documentation and code, project management, etc.

So, obviously you have some S.E. experience, but I would have a hard time calling someone a "software engineer" if they had no experience with software projects involving more than one person.


I think that in the US, you can call yourself any kind of engineer, even civil, architectural, electrical, etc. That's not illegal. But regulations prevent you from calling a licensed professional engineer unless you have actually passed the licensing exams.


In some fields, like developing avionics or medical systems, "software engineers" deal with formal system requirements, intense software verification & certification, maintaining traceability and accountability... I do not see how this is not "real" engineering on level with building bridges and constructing skyscrapers. The artifacts may be digital, but the work involved is similar.

In my own bubble of reality, if you can point to a design document for your software project that explains what goals your project will meet, what implementation decisions you made and why, and enough architectural information for someone new to your project to have a good chance of jumping in and helping to carry the vision (and fix the bugs), I'd be inclined to think of that as software engineering. Whereas if you drank some Jolt and hammered out some code off the top of your head, I might not be inclined to think of that as software engineering. And of course, there's a whole spectrum of project styles in between.


Engineering is knowledge of understanding and building complex systems.

Software is a complex system and knowledge of building it is Software Engineering.

if you know how to avoid complexity in software (Software Crisis) you are doing Engineering. But the fact that you are building software doesn't make you a Software Engineer.

These are my understandings.


> So what are your thoughts - what makes somebody a software engineer?

A 2% raise instead of a 5% one?

I don't think I've met any "software engineers" since the early 2000s, when bosses started giving programmers the "engineer" title to make them feel better about themselves while simultaneously stiffing them on raises & perks.

People like voidlogic here have actual degrees in software engineering, and I wouldn't have a problem with someone like that using the title. They earned it. But that title has some baggage, at least in my eyes, and in your case you'd probably be better off with "developer". Also, be careful about putting adjectives in front of "developer", especially a particular language or framework because people will pigeonhole you based on that.



As someone who works under the title Software Engineer, I take it with a giant grain of salt until we're suddenly all taking the P.E. exam and getting our rings. Titles have the same problem all around the industry, people can call themselves whatever they want.


1. To me, abstractly, a software engineer is someone who can going into a new language/situation and the result would be the best possible outcome given the supplied circumstances.

2. I think it would be fair to call yourself a software engineer once you have verified your ability to master multiple languages, and finished multiple projects, as the concepts behind them are the same.

There is no rule that dictates when someone becomes a software engineer. It happens when you're confident enough that you know your stuff, which is subjective. To me, it's when you can learn any language/project, given a reasonable (subjective to other SEs) amount of time.


it's just a title. titles don't mean anything. I've known VPs who worked for directors and vice versa. if you work for someone and they give you the title software engineer, then i guess you're an engineer. If you work for yourself, you can give yourself whatever title you want. I like Czar of North America. Just get stuff done and/or make money. don't worry about titles or labels.




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

Search: