

Ask HN: What is a Software Engineer? - bennyg

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?
======
kohanz
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.

~~~
voidlogic
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...

~~~
kohanz
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.

------
YuriNiyazov
"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.

~~~
voidlogic
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.

~~~
smartwater
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.

------
ggchappell
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.

~~~
RougeFemme
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.

------
tjr
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.

------
msoad
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.

------
csixty4
> 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.

~~~
iends
[http://www.computer.org/portal/web/pressroom/New-Software-
En...](http://www.computer.org/portal/web/pressroom/New-Software-Engineering-
Exam-Approved-for-
Licensure?mkt_tok=3RkMMJWWfF9wsRonv6XNZKXonjHpfsX86%2b4lULHr08Yy0EZ5VunJEUWy2YsAWoEnZ9mMBAQZC81izwFID/SQbg==)

------
Jacquass12321
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.

------
ed56
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.

------
real4real
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.

