Hacker News new | past | comments | ask | show | jobs | submit login

The subject of what constitutes an engineer or what entitles a professional to the "engineer" title has been discussed ad nauseum here on HN.

Spoiler: "engineer" as a title for someone who does computer programming and software development without a license is perfectly fine and acceptable in the USA. In Canada, however, it's probably not.

You say the USA as a whole, but IIRC there are a couple states that do require it to be able to use the title "Software Engineer".

Those states you mention do require it, but what I was getting at is that in general terms Americans don't blink when someone refers to an engineer without reference to licensing.


On what basis are you claiming software engineers are not engineers? What constitutes being an "engineer"?

For the record, the National Counsel of Examiners for Engineering and Surveying, which is the US body that regulates engineering licensure and "Professional Engineering", recognizes Software Engineering as a branch of the engineering disciplines:


"Professional (Licensed) Engineer" is not typically used in software development, but if you care about having this credential, you can become a credentialed Professional Engineer in Software Engineering.

Google defines engineering as "the branch of science and technology concerned with the design, building, and use of engines, machines, and structures". An engineer is "a person who designs, builds, or maintains engines, machines, or public works". Software engineers certainly fit that definition from my perspective, because software is a type of virtual or abstract machine.

Software engineering certainly qualitatively feels like other branches of engineering to practice, such as electrical engineering or computer (hardware) engineering. I've never designed a structure, but I imagine the principles are the same: understand the requirements of the customer or sponsor; devise a design that accomplishes those goals within the constraints of the medium you're working with, using principles of scientific reasoning to evaluate what is possible and whether a design will meet your needs.

Last but not least, software can be just as critical to human life and safety as the artifacts designed in other kinds of engineering. (But being critical to health or safety is not a prerequisite for something to be engineering. It's still engineering if you're building a rocket that only robots will fly on, after all)

There may be people whose work on computers does not constitute software engineering. Running some calculations in Excel is probably not engineering. But I think there are plenty of us who build large scale systems that need to operate with high availability under demanding requirements, the properties of which need to be painstakingly planned and analyzed and sometimes mathematically proven -- we who are trained as scientists and engineers, and who apply these principles in our work -- many of us consider our work to be engineering, and consider ourselves engineers. I certainly do.

An engineer gathers requirements through a formally defined process and writes a formal engineering specification which translates those requirements into actionable norms. For example: "server operating temperature shall be between -40 and +70 Celsius at 400 m above sea level and the power supply shall operate at Voltage between 110 to 240 Volts at either 50 or 60 Hz with peak load of 35 Amperes". Or: "the program shall support following options", with a detailed specification on what those options do and how they will do it. Or: "the software shall respond within 25 ms of receiving the request on port 4096. The protocol used shall be TCP". RFC documents are often good examples of system engineering and architecture.

Simply knocking in a program as a code monkey or hacking haphazardly on a program until it works in some way which isn't formally defined isn't an application of scientific theories in computer science into a practical product, which is what defines engineering.

Most programmers I know aren’t simple code mnkeys, they solve actual problems based on the constraints of the problem domain. They model the data and devise algorithms to best process it. Sure, sometimes you haphazardly hack on a program to get it to do what you want, but a lot of the time you have to think critically about it, what you are trying to accomplish and how to do it within the constraints you are given. That sounds like engineering to me and sinse “engineer” isn’t a regulated concept where I am, I have no problem calling myself an engineer. I don’t see how its lying.

You have a very narrow definition of the term.

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