90 comments

[ 2.9 ms ] story [ 174 ms ] thread
[2011] would be appropriate in the title.
Honest question: Why do people care so much about or like having the year in the title? In some situations I can see it being needed to prevent big confusions, but many times I see people put the year in the title when it doesn't really seem to matter. In this particular case for instance, I don't see why it would be needed.
Not the parent but the reason I like to see the year in the title in cases like this is because I've seen it previously. I looked at the title and thought, "I think I've read that before" but as it was here on HN which is mostly comprised of new content I thought it might be something new clicked through. If the year was in the title I would have immediately known I had read it before and not had to click through and read some of it to find out.
Please don't call yourself an engineer unless you've got the ring.
I wasn't given a ring because my school doesn't do the ceremony :(

Actually, I had this conversation with someone in Italy, who said I couldn't put "engineer" on my business card because of some certification or another that was missing. What I did was give him a quick lab tour, with emphasis on the battlebots. It worked.

While I understand the sentiment, this is pretty insulting to a lot of people who bear the title "engineer" without having completed an engineering degree. You're not going to be able to win this, it's like being upset that the definition of "literally" has changed. Many people without degrees are employed by companies like Google and Microsoft with the title "engineer."

Some of my friends don't have college degrees at all, and they demonstrably understand computer science fundamentals, algorithm design and software development better than many or even most college graduates.

Maybe it's like that in the USA, but it isn't like that in most of the world. 'Engineer' means something.
I can respect that. But to pose devil's advocate - why do you believe the education is special?

If we begin with a formal analysis, this sentiment begins with "Is it possible for an individual to learn everything required to be a fully competant software engineer without going to university?"

If you agree this is possible, that there is at least one human being capable of this, then the "special" meaning of engineer becomes limited to title and investment paid in a college education. It no longer is an absolute determination of skillset or intelligence.

There is data in favor of that statement. Google conducted a study that showed an extremely weak correlation between degree and hiring results, at least within its own company. And there are numerous examples of people who have accomplished quite a bit in the realm of legitimate software engineering without a degree.

Engineer is a description of what someone does, not what qualifications they have.
(comment deleted)
But what _does_ it mean?
I don't see how what the rest of the world does is relevant to what people in the US call themselves. We don't expect you to follow our cultural norms. Don't expect us to follow yours.
Why? Do you think there's something exceptional about being an "Engineer"?
(comment deleted)
In some countries there is, and it's a legal thing. It'd be like calling yourself a doctor when you're not.
It's like this in the USA, too. The only reason why people aren't penalized for calling themselves engineers when they are not licensed is because they work under the umbrella of a corporation that grants them an exception to the rule.
In many countries, there is: you can't be an engineer without ... an actual engineering degree.
In Canada everyone with an engineering degree gets a ring. I do find it funny that I work with several Chemical and Mechanical engineers who hold the title Software Engineer, but myself with a Comp Sci degree get the title Software Developer.
(comment deleted)
Software engineering-the only Engineering field I know of where people professionally represent themselves as such without a four year degree with the word "engineering" in the title-hacking Linux and PHP since you were 15 seems to suffice.
I dislike the use of engineer for the IT industry. It was a title that was picked because it made you seem like more than you are, riding on the actual engineering disciplines that have to work for that title.
It's not the only industry that does that. "Audio engineers" don't always have formal education
I'm an electrical engineer and despise the entire usage of this title by non-engineers.

Most engineers live and die by standardization, rules and responsibility that most so-called software engineers would hate.

What does standardization, rules and responsibility have to do with being an engineer? Yes engineering does often involve a great deal of those things, but that is not the defining quality of being an engineer. Fundamentally, an engineer is a person who applies scientific and mathematical knowledge to solving problems.

Also, to say that software engineers care nothing for standardization, rules and responsibility is unfair. Software engineers use standardized languages such as C and Java. We often use standards from the IEEE, IETF, and ISO. Depending upon the industry we support, we are often bound by very strict rules and regulations. Examples include software engineers in the defense, aerospace, banking, and health industries.

Bottomline is software engineering is just as valid as any other form of engineering.

> What does standardization, rules and responsibility have to do with being an engineer?

What do they mean to a Medical Doctor? They are basically the reason you trust a MD instead of just someone who learned all the same stuff.

> software engineering is just as valid as any other form of engineering.

Little e engineering the process perhaps, but this is big E 'I'm an Engineer and you can trust me' the title.

Face it, developers call themselves Engineers because of the work that goes into obtaining the title in other fields. They are riding the coat tails of the process to get the title of Engineer without doing the work themselves.

Everybody is responsible for their work, what I get from all_your_gold's comment is that it is the personal liability that professional engineers take on for their work that makes the difference between professional engineers and all other people calling themselves <various other adjectives> engineers.

If I were a P. Eng and had to stamp the PLC programs I write I would be in a much different boat when bad things inevitably happen. I could be sued and held liable for lost revenue.

There are much different risks and liabilities in embedded software where lives are at stake, and in machine or process control where physical damage to property and equipment could be a result than in any other business where the worst thing that can happen is lost revenue.

I have never heard of anybody stamping a program, no matter what the risks and liabilities are it does not seem to be a requirement, but I think someone calling themselves a Professional Software Engineer should be stamping their work and taking on liability for it the same way professional civil, mechanical, electrical, etc engineers do, if they are going to call themselves Engineers.

Does anyone have examples or anecdotes of a program being "sealed" by a professional engineer?

I think the line between "software engineers" and all other titles is that "software engineers" should be using physics and hard sciences the same way civil, mechanical and electrical engineers do, but it so happens that they are using hard sciences in programs. Software Engineers may also have to apply computer science to solve their problems, but everyone applying computer science isn't necessarily doing engineering. defence, health, aerospace = software engineering to me, banking not so much, unless you stamp your program and are ready to be sued for everything you got if the customer has any excuse.

> Most engineers live and die by standardization, rules and responsibility that most so-called software engineers would hate.

And why would they hate that? Because now they would only be responsible for things they actually agreed to before? Or because they would have a guideline they could cite "sorry, standard foo says this and this and we have to use it" without the customer crying that they want their new software to do something which is simply not possible? Or the same with rules?

You seem to have the strange misconception that "software developers"/"software engineers"/"problem solver who uses software to get the job done" (The last one is my favorite, but somehow people don't want it on their cards ..) don't have the same responsibility as other engineers. This may be correct for some and is completely wrong for others. We lack the safety nets provided for other professions, not the responsibility. For examples look at all the times something exploded/didn't reach the right star/killed a few people when some software was buggy.

What do you suggest someone be called if her job title is "Software Engineer", she fairly received the job offer because she was qualified and she has no formal education?

Should we segregate people like because they don't have a formal education? What if she develops an algorithm superior to every other one in the field for a specific use case? Is she not an engineer, despite using the same skills as anyone else?

Software developer, computer programmer, system designer, software researcher.

Engineer has a specific connotation to the outside world, developed over centuries. We'd like to use it because we tinker with programs, and invent new things, but it's misleading to the general public. Should I call my self a Software Surgeon because I fix up bugs?

That's not a fair comparison. You can demonstrably learn every skill integral to software engineering outside of a traditional university.

You cannot do that with surgery. Or, well, you theoretically can, but it's much more hands on and almost certainly requires in-person mentorship.

But I take it your answer is "yes", then - if someone is a better software engineer and an accomplished luminary in the field, who progresses engineering itself forward, we shouldn't call her an engineer without a degree. Is that your position?

At the risk of being accused of developing a strawman - I'm not. I'm developing a baseline. Calling someone an engineer without a formal education is binary. If it can be done under any reasonably achievable circumstance, it's fair to say that you can be an engineer without a degree.

(comment deleted)
> Engineer has a specific connotation to the outside world, developed over centuries.

Words change over time, like "gay" (happy -> homosexual), "chaperone" (a type of hat -> someone who looks after others), "clue" (a ball of yarn -> a piece of evidence). I hope you're not arguing that words shouldn't change.

Traditional engineers built fortifications and siege weapons, but now we have "chemical process researchers" or "chemical process designers" calling themselves "chemical engineers". What gives? Like other engineers, software engineers design real-world systems in such a way as to minimize cost while meeting objective requirements. Similar to mechanical engineers, software engineers build real, physical machines that perform quantifiable tasks--the major difference is that the software engineers are designing the non-tangible parts of the machine.

I'm not saying that tinkering with programs makes you a software engineer. Kids (or adults, more likely these days) playing with erector sets aren't engineers either.

"traditional engineers" used the science of physics to solve a problem, Chemical Engineers are using the science of chemistry to solve different problems.

As you say software engineers build real physical machines, building a crud app doesn't make you a software engineer, but many people call themselves software engineers without applying any hard sciences.

Mathematics and computer sciences are hard sciences. However, people don't often see them that way because they're not "natural sciences", they are instead "formal sciences", so empirical work is not required. As a software engineer, you might use formal semantics to verify code, or you might need relational algebra to design your databases, or you might need statistics to understand the performance of the systems you work with, et cetera. Computer programs have even grown to the level of complexity where we use empirical models to study them, and design them using simplified, scientific models. For example, memory usage. The way software engineers model memory usage seems broadly similar to the way a civil engineer would model loading.

The fact that carpenters build houses does not diminish the accomplishment of engineers who build skyscrapers; the fact that novice programmers can build CRUD applications does not diminish the accomplishment of software engineers. The only reason that this is an issue today is because most people are old enough to remember when "software engineering" was not a thing.

On the flipside, Software Engineering, the actual degree, didn't exist at the school I went to even 10 years ago. It's pretty damn new. I'm curious what you want to call all these people who do more software engineering work, and have more software engineering knowledge, than someone with a Software Engineering degree.
I worked as a hardware and software engineer in my post-undergraduate pre-PhD job. I had a bachelors degree in physics, but not engineering, so did that count?
The problem is that the industry doesn't value formal education. If they did, companies would hire engineers coming from school based on their academic accomplishments, not on having hacked something on the side.
School has very little to do with why software developers shouldn't call themselves engineers. Virtually nobody in our industry actually practices "engineering", in part because the industry is structured around staffing and scheduling incompatible with "engineering".

Having said that, this is a hacker/cracker debate; the ship has sailed on calling developers (and tech employees) "engineers".

That's actually a far more interesting argument against calling people "engineers" than accusing them of not having skills netted from a formal education.

I agree with you though. It's like holding on to "literally" being used solely for the opposite of "figuratively." It's pointless.

Hmm remind me again which university Brunel went to - he actually did an apprenticeship with a clock maker and learnt on the Job :-)
How much is this misnaming the fault of companies, how much is this the fault of schools, and how much of this is the fault of society in general?

From my recollection, Software Engineering became A Thing at schools long before companies started calling their employees Software Engineers.

My general thinking is that engineering is a more practical application of science. Colleges don't have a Department of Development. They have a Department of Engineering. So even though it doesn't quite fit, maybe we can just stick the degree in the engineering department and obviously call it Software Engineering.

So schools do this - they create this "engineering" discipline that doesn't quite fit engineering. It seems obvious that companies and people are going to then follow.

Curious when your recollection starts.

I remember when I was looking at schools (~1990) many schools didn't even have a separate computer science degree, much less software engineering. Often it was a sub-degree in the math department. OTOH I'm pretty sure 'software engineer' as a title was already well under way by then.

Around 2003, when I graduated. For what its worth, our computer science department was a part of the math department when I first went there, but got moved to the science department halfway through.

Maybe it was just the jobs I was looking at. They all had "programmer" or "developer" in the title. But it was around when programmer started becoming bad, and over the next 4 or so years they all started morphing into "engineer".

When I started undergrad in 1996 CS was pretty common.
Actually I think its very central-its almost a badge of honor to brag that you didn't waste so much money on college, and that you self taught yourself at a young age on Assembly/Basic/Perl/PHP/C/Slackware/etc. There's definitely a lot of pride in being called an engineer without a BS (much less a BS in CS).
I have a B.S. in Software Engineering and I do in fact practice engineering on software systems. However, admittedly, I may be in the minority in terms of both education and practical application.
I rarely refer to myself as a software engineer (except on things like LinkedIn where I'm putting my actual job title) and try to use terms like software developer when describing the job in general.

I understand where terms like software engineer and software architect come from but they seem silly to me.

Still, not as silly as things like ninja, rock star, jedi, etc

Probably because most schools don't have 4-year software engineering degrees. I don't think I've ever ever heard of a school offering a degree like that.
I think they should. Computer Science should have gone away a long time ago, but with lack of anything else relevant people are forced into it when they want to be software engineers, web developers, database administrators, etc.

I am highly biased though, I think education of this type should be something like 90% hands on 10% theory, as apposed to the opposite of what it is. I think its more important to have set up a website while working with several others using some sort of source control, and then load tested it with a million hits than to be able to write a formal proof on why some algorithm you can look up on wikipedia is NP complete. - if that person wanted to be a web developer

Not so much. Early in my career I worked with plenty of electrical engineers who started out as technicians with two-year degrees who were promoted to engineer after 10+ years of experience working closely with engineers. That used to be a common path for engineers, before all this elitist credentialism started.

I also worked with several systems engineers who did not have engineering degrees. I don't know of any universities who have systems engineering bachelors programs, but masters programs are semi-common.

wasn't it posted 4 years ago ?
Or, you know, don't play their game. You don't need to babble in politics, work in adversarial environments where 'someone is looking to get you fired', and deal with all the bullshit in OP. Find a small (10-20 people) software shop/consultancy, work on interesting problems, write good code, be free of all that shit.
I call myself a certified web ninja.
Has anyone ever asked to see your certificate?
Only my mom. But she accepted my crayon drawing certificate.
I would recommend against this in Canada, as it's illegal.
In what sense is it illegal in Canada?
"Engineer" is legally protected title in some jurisdictions.
Most of what Patrick (the writer) says is decent advice, and yes, it is important to publish your hobby junk, get feedback, go to meetups, and generally involve oneself into the community as it is not only helpful to one's career, but also fun.

That being said, I don't particularly agree on the "don't be modest" comment. Rather, it really should be "don't be ashamed of what you build" (with the caveat of no matter how shameful it is), that is, openly show people (both online and in real life) what you've built, the problems you're encountering, the solutions you've come up with, etc.

That is, proudly say to them "Hey, check this out, I built X, it's a Y, and I think it's great... but let me know what you think and don't be afraid of hurting my feelings."

And whether they reply with "Hey, you're right, it's great! Here's Z dollars for your startup", or (if you're testing on 4chan as I do) they say "OP, you suck, why does your site need this much JS? Go die in a fire, you worthless cuck", be modest and meek with your reply. Thank them for their input, actually consider the merit of what they're saying, don't get emotionally flustered or discouraged, and continue bumping your thread / iterating.

So I guess it's this really weird and almost conflicting mindset one has to be to have a good career experience; one needs to be proud and shameless about one's self and work, yet modest and meek when it comes to its reception and feedback.

The word that you're looking for is balance.
Welp, guess I'll go be a professor.
Surprised at the elitism evident in many comments here. It's a title. Nothing more. A lot of people seem to be saying you must complete an engineering degree to call yourself an engineer - what if I learnt the same skills without paying extortionate fees and wasting a lot of my time for four years? It almost seems like people are trying to justify their time and money spent at University by claiming exclusivity on the engineering title.

At the the end of the day it doesn't matter. The only people who really care about titles are hiring managers and people trying to get hired. Once you're in the job, as long as you have the skills nothing else matters.

It seems like the debates around the use of the word hacker or startup. A waste of time.

"The only people who really care about titles are hiring managers and people trying to get hired"

One thing I've been trying to change in my company's culture is caring about the titles of applicants. IMO titles are only meaningful within the same company and can't be compare outside. For instance, I've worked in companies where "Senior Software Engineer" meant "you didn't just graduate from college" and I've worked at places where that meant you had 10+ years of experience and showed serious technical skills.

> A lot of people seem to be saying you must complete an engineering degree to call yourself an engineer

In many countries, it's a protected title. So yes, then you will need to have an engineering degree.

I'm not in any of those countries, so no, I don't.
Thanks for your contribution to the discussion.
What if I read WebMD a lot and have the same skills without paying extortionate amounts of money for medical school?

"Engineer" is a protected title much like "Medical Doctor," and for good reason. Outside of web development, when things break people die. No matter what way you spin it, it's impossible to apply that same level of gravity to apps and websites. Engineering is serious business and the amount of rigorous preparation and training that engineers must go through to earn their title matches that. Please think about that next time you're at 50,000 feet on a transatlantic flight.

You're conflating software engineering with mechanical engineering.

It's not the same as mechanical engineering, or even medical school. You can absolutely learn all of software engineering, inside and out, without a formal education.

All the gravity applied to software that peoples' lives depend on? It can be designed, developed and debugged with or without a formal education.

Almost every argument in this thread bears a similarity to yours, but software engineering is not the same as traditional engineering. Comparing it to trades or crafts which demand physical inspection of a skillset and an in person mentorship is not valid.

EDIT: Upon closer inspection of your comment, it seems as though your position is that software engineering should not be called engineering at all, because it does not require the same rigor as the other disciplines you mentioned during training. If that's the case, I agree with you.

I take issue with people demanding that a title be tied to education when education is not demonstrably required for the skillset...but I also think "engineer" isn't necessarily an appropriate term for what "software engineers" do.

Except that in the US, where many, perhaps even most, of the people on this site work, it is not a protected title. You can not claim to be a "Professional Engineer" or to be a supplier of "engineering services", but there are no restrictions on calling yourself an "Engineer".
>>A lot of people seem to be saying you must complete an engineering degree to call yourself an engineer - what if I learnt the same skills without paying extortionate fees and wasting a lot of my time for four years?

A lot of people seem to be saying you must complete med school to call yourself an M.D. What if i learned the same skills by taking some online courses and reading books on medical best practices?

>>The only people who really care about titles are hiring managers and people trying to get hired. Once you're in the job, as long as you have the skills nothing else matters.

Wrong. Tons of people care about titles. At my previous job, my title had the word "engineer" attached to it, even though what I did was mostly technical consulting. Guess what though: when we were in meetings with customers, they absolutely loved the fact that the company had allocated an engineer to their project/problem, rather than a consultant. The prestige that came with the title went a long way with establishing our credibility and bought a lot of good will.

If you could reasonably expect to learn all the skills required to perform legitimate and rigorous surgery from a book, I would have no problem calling you a doctor if you didn't have a degree, provided you could demonstrate these skills. Just like degree-less applicants do in a coding interview.

The difference, of course, is that medical school is not at all the same deal where you can learn everything by sitting in front of a computer with an internet connection. Everyone is jumping to use medical school as an analogy, and it's frankly a false comparison.

I agree with you about people caring about titles and the perception they bring, however.

Personally, I prefer to call myself a developer around my computing peers. To the average layperson I call myself a programmer. But when I apply to a new company, I bust out all the fancy engineering titles my past employers have given me.

But going back to the OT, I think Patrick is really talking about mindset. Basically don't sell yourself short.

Discussion around the use of the word "engineer" is unfortunate, and seems to be missing the point. FWIW, I am an electrical engineer (degree, ring, the whole enchilada) and have the same conditioned reflex toward hearing the word "engineer" applied casually, but:

(a) My school didn't offer a software engineering degree. Very few in Canada do.

(b) The first electrical engineers (and mechanical engineers, and civil engineers) did not have degrees in that field--they invented it. The field of software engineering is still very new (especially compared to mech and civil), so it's not reasonable to expect everyone who practices it to have formal credentials.

(c) Being a stickler about credentials is a stupid way to behave. Obviously, engineering credentials are important safeguards in many fields (someone needs to approve the bridge, airplane part, etc) but software doesn't have the same safeguards. (Whether it should or not is a completely different discussion.)

(d) None of this is really what the article is about. It's simply saying that how we describe our profession is important. I work in software full-time nowadays, and although I still wear the ring I usually describe myself as a "software developer" when people ask. It doesn't matter though, because the next question is "what kind of software" and then I focus on the value of what my software does, relative to the person asking.

Computer engineer here, with the US equivalent of the ring.

I'm also a software developer, but my resume says software engineer, because that's the name of the position I hold at work.

I'm always a little confused why people are so touchy about the word "engineer". Here, at least, there is a very clear distinction between the word "engineer" and engineers who sign off on projects. It's not like there are thousands of resumes out there purporting to have a Software PE license.

I'd appreciate if someone can clear up any misconceptions I have about PE licensing, especially as it applies to other countries.

In Canada, as I understand it, it's illegal to refer to yourself as an engineer / a position as an engineering position unless you have Real Engineering Credentials. So a lot of the touchiness is just the usual sensitivity you find around a legal issue.
it is the term "Professional Engineer" that is protected, <any other adjective> engineer is fair game. Similarly anyone can call themselves an accountant, but you can't call yourself a Chartered Accountant unless you are accredited by that organization.
Actually the rules around the P.Eng. titles are provincially regulated as opposed to federally, meaning the rules in Ontario (where apparently the term "Engineer" is protected) is different than in Alberta (where the protected term is "Professional Engineer").

That's why in Alberta, Raymond Merhej was sued for using the title "systems engineer" (as an Apple Canada-certified systems engineer) but the suit was dismissed in late 2003. In response, the Association of Professional Engineers, Geologists and Geophysicists of Alberta (APEGGA) said basically they'll lobby the government to amend the laws to prevent that in the future. [1] I don't know if such an amendment was ever completed though.

And some people seem to forget that military engineers are also "engineers", and they've apparently been around since the early 1600s [2]. And locomotive engineers are also "engineers", and it looks like they don't even need post-secondary schooling [3].

[1] http://www.itbusiness.ca/news/it-industry-wins-round-in-engi...

[2] http://cmea-agmc.ca/our-heritage-and-our-stories

[3] http://www5.hrsdc.gc.ca/noc/english/noc/2011/Profile.aspx?va...

(comment deleted)
I really enjoyed a couple of Patrick's posts on career advice, despite myself not working directly in the software industry. I was wondering, are any of you aware of similar bloggers/websites/books/whatever that have similar information, but more oriented towards other engineers?
If people who wrote code stopped calling themselves "artisans" as well, I'd be quite happy.
>Engineers in particular are usually very highly paid Cost Centers, which sets MBA’s optimization antennae to twitching.

How?! They delivered the product in the first place! There's a million idea guys looking for a Woz to their Jobs on Craigslist. How many Woz's do you see looking for their Jobs? CEOs are the damn cost center with their exobitant benefit package that still gets handed out even if they sink the company. Engineers add features and improve the workflow to make it easier to use. Engineers give Sales its ammo. Because it's not the actual engineer that's fired from the cannon means they're now a cost center?

I don't understand this shit and from what I've seen on the business side (especially with how the south does business), I think I'd rather shoot myself with a cannon before spending 20 years doing what I'm doing now.

How?! They delivered the product in the first place

Yes, at Microsoft, where programmers are profit centers [1]. At GEICO, JP Morgan, Disney, Pfizer, Alcoa, etc, they are cost centers, on a level with accountants and HR.

(What is the profit center at GEICO? Actuaries? Salesmen? Warren Buffet's kindly pig face? Talking lizards?)

[1] Hence this: https://www.youtube.com/watch?v=Vhh_GeBPOhs

(comment deleted)
GEICO's profit center is the return on the equity they hold as collateral for insurance policies.