Live data from Hacker News

Programmers: Stop Calling Yourselves Engineers

theatln.tc

41–50 of 55 posts

Re: Programmers: Stop Calling Yourselves Engineers

#41
Why Programmers are NOT Engineers (and that's a good thing) ===========================================================

1. Engineers design and build the same types of things over and over again, from principles that have been developed, tested and put into practice over, literally, thousands of years. These principles are rarely expanded upon, and only after careful testing and proven performance. Programmers on the other hand consider building the same thing over and over again to fall in one of three categories (1) stupidity (2) ignorance or (3) market failure.

2. If an engineer builds two bridges of exactly the same specification, the cost of building the second bridge will be reasonably close to the cost of building the first one (technological advances and inflation not withstanding). If a programmer writes a useful program, and wants to share it with his friends and family, the cost of each additional copy of the program is fairly close to zero. Unlike the engineer building a second or third bridge, there is no need or reason for the programmer to create another copy of the software by designing, writing the code and compiling a second or third time.

3. Following on from (1) and (2) above, an engineer designs blueprints that describe _exactly_ how the structure is to be built, but a programmer usually has no idea how the program is to be built, because if s/he did know, then it means someone has built this before, and therefore there is no reason to build it again, because the marginal cost of copying a previous design is zero. This tends to make the best programmers experimentalists (because the risk is small) and plagiarists (because the cost of copying existing designs is zero), and the worst programmers are those that think like engineers. Conversely, experimentation in engineering is discouraged, especially on things like bridges, because it is costly and dangerous.

4. But what about the domain known as computer security? Shouldn't security be 'engineered'? Yeah, good luck with that. People who crack computer security are nimble experimentalists. Because the cost of experimentation is so low, security cracking tends to be a never ending series of probes until a weakness is found. Protecting against that approach cannot be 'engineered', because the engineering process is one in which you plan for every known contingency. But if you knew every possible contingency, there would be no security issues, because they would all be covered off.

Sorry, the above is a bit rough. I'm still refining my ideas on the topic. Feedback welcomed.

Re: Programmers: Stop Calling Yourselves Engineers

#42
post #2

First of all, most titles --but by no means all-- are bullshit. I prefer titles like {Junior, Senior, Lead, Chief} Programmer or Member of Technical Staff (I, II, III, ...}. Although I have been assigned titles like DevOps, Engineer, Developer and so on, my Linked In profile reads 'Programmer'.

To me, saying "programmer" implies that one has no understanding of the crucial mathematics underlying the nature if computation. A programmer only knows how to slap together JS with the latest framework, throw it on top of RoR with code copied from a dozen SO posts, and say "job's done." An engineer uses mathematical reasoning and scientific knowledge to solve the problem. This is certainly a subtle difference. But…

Well, I think that you would be wrong in that assessment.

Jack Dorsey calls himself a computer programmer and so does Douglas Englebart. Mark Zuckerberg, Richard Stallman and James Gosling all call themselves computer programmers and not one of the people I have mentioned calls themselves an engineer. I think that if you are a lowly computer programmer then you find yourself in some good company.

Re: Programmers: Stop Calling Yourselves Engineers

#44

Google and Facebook, amongst others, have shown that the quick iteration strategy works, even for complex, critical systems. The key to success in that strategy is in good tooling--something that allows people to move quickly without breaking critical systems. With that, understanding your goals is important in deriving strategy. Developing software for NASA space shuttles is going to be inevitably slower and more sc…

Google and Facebook, amongst others, have shown that the quick iteration strategy works, even for complex, critical systems.

Complex systems, yes. Critical... well that depends on how you define critical.

The whole "quick iteration strategy" idea depends, largely, on the idea of "fail fast" or "move fast and break things". This necessarily makes iterative software development into an exploratory discipline, poking at something that doesn't work with a stick so that you understand it better and then creating something that does work off the back of that.

You simply cannot "move fast and break things" in a field where your created artifacts are expected to last a long time; we'd live in a fragile world of prototypes and conservatism were that the case.

In pretty much every other field populated by people who call themselves engineers, there's a whole lot more thought and maths going into the design of constructed artifacts, fed by a whole lot more science, before doing the actual construction. This approach is not just passé, but anathema in the software world. We just don't do engineering the way the rest of the world does.

Re: Programmers: Stop Calling Yourselves Engineers

#45
post #2

First of all, most titles --but by no means all-- are bullshit. I prefer titles like {Junior, Senior, Lead, Chief} Programmer or Member of Technical Staff (I, II, III, ...}. Although I have been assigned titles like DevOps, Engineer, Developer and so on, my Linked In profile reads 'Programmer'.

Agree, although junior vs senior is mostly bullshit too.

Agreed, I had a designer work with me on a contract who was inqusitive. I showed him that git can undo all his mistakes without affecting the team, taught him a good JavaScript foundation, and pointed him to some good resources. In a month he was proficient, in 6 you could not tell him from any other senior. He is out in the valley now doing well.

Moral of the story is inquisitiveness and problem solving are the two big skills to look for. Anyone can learn syntax.

Re: Programmers: Stop Calling Yourselves Engineers

#46

I consider my work (more debugging/analysis than anything else) more related to plumbing than programming. Can I call myself a digital plumber?

When I did rotations on production support I used to introduce myself as the software janitor. At the time I was the CTO but never used the title.

Re: Programmers: Stop Calling Yourselves Engineers

#47
post #7

Earlier quoted context omitted.

As they point out in the article, Engineer as a title is often regulated. I'm in Ontario and it's actually written in law that one the Professional Engineers Ontario regulates the use of the word. Microsoft was actually taken to court for the use of Engineer in MCSE (they lost and were fined). So, they dropped the actual words and left it as just the letters. Before them, Novell had the same issue. Individual people…

What do Canadians call train drivers and the people who keep ships running?

Those are defined exceptions in the law. There's also a kind of engineer that deals with physical plants for big buildings, I think they're called Stationary Engineers. Those are also an exception.

Re: Programmers: Stop Calling Yourselves Engineers

#48
post #16
post #7

Earlier quoted context omitted.

As they point out in the article, Engineer as a title is often regulated. I'm in Ontario and it's actually written in law that one the Professional Engineers Ontario regulates the use of the word. Microsoft was actually taken to court for the use of Engineer in MCSE (they lost and were fined). So, they dropped the actual words and left it as just the letters. Before them, Novell had the same issue. Individual people…

The issue is, it depends on the country. It might be regulated in Canada (and in my country, France, a developer can't call himself engineer unless he has the diploma) , but in some countries engineer is not a title, it's related to the task the worker needs to do. In most western countries, the title of doctor is regulated, that's just not always the case for the engineer title. The "technician" title is also a regu…

True, but it's regulated in many western countries. I think it's regulated in the UK, much of the US (including I think California where many of these companies are), Canada, and apparently France.

A self-taught developer might apply for a software engineering job, but they won't be able to apply for a mechanical or electrical engineering job. My degree isn't meaningless. It's just annoying because people refer to hiring engineers when they're looking for "software engineers". I have training over and above simple technical skills that a developer wouldn't normally have (e.g., ethics and law).

Re: Programmers: Stop Calling Yourselves Engineers

#49
post #2

First of all, most titles --but by no means all-- are bullshit. I prefer titles like {Junior, Senior, Lead, Chief} Programmer or Member of Technical Staff (I, II, III, ...}. Although I have been assigned titles like DevOps, Engineer, Developer and so on, my Linked In profile reads 'Programmer'.

Titles are important for immigration purposes, e.g. for Canada's work-to-residence Express Entry visa. Software engineer: 3-4 years work experience required, maybe Masters degree, professional certification. http://www5.hrsdc.gc.ca/NOC/English/NOC/2011/ProfileQuickSea... Computer programmer: Bachelors degree required, no work experience. http://www5.hrsdc.gc.ca/NOC/English/NOC/2011/ProfileQuickSea... "Progression to…

The reason why professional certification is needed for the visa is because the title of engineer is regulated in Canada.

Re: Programmers: Stop Calling Yourselves Engineers

#50
There's a wide spectrum of capabilities within the set of People Who Can Command Technology. Similarly, there's a wide spectrum of need in various industries for those people. When a company says they want "software engineers," what do they mean? Do they just want coders? People who convert a diagram into code? Do they want someone who can design and implement every layer in their system? There's no "software architect" degree. Nor a "data[base] architect" degree. Yet these are titles that individuals call themselves when they have certain skills.

Maybe instead of simply labeling the skills or the needs, we could spell out our experience (résumé) or requirements (job description.) But we still need a label to get the proverbial ball rolling, to pique the interest of employers and employees; something that says "I know how to tell a computer to do what you want done."

"Software Engineer" sounds like a fine phrase for that.

Post reply on HN