What Is Software Engineer

I claim to be a Software Designer because a software program needs a design or plan just as a blueprint is needed before building a house or boat. Of course, one can invent an interesting program by tinkering or hacking but the resulting code may not be the best quality.

In Ontario, Canada, Engineers must be licensed and certified by Professional Engineers Ontario (POE) https://www.peo.on.ca/about-peo . It is the law. Therefore, "Software Engineer" seems like an oxymoron. Sometimes, I would hack a schematic to explain to an engineer how a custom device could be attached to a Lidar system but I was just being a hardware hacker, not an Engineer. An Engineer's job is to make tangible, real-world, things. A Software person's job is find the best abstractions.

Perhaps a "Software Engineer" gets that title as a promotion from being a humble programmer. According to the Peter Principle, people in a hierarchy tend to rise to their level of incompetence so when a friend tells you of his/her promotion, try not to laugh.
 
Software engineering means applying engineering principles to software design, particularly to large software projects requiring more than one team member. I took a course in it in college. Can be very useful. A structured approach to problem solving, involving meticulous planning, requirements definitions, implementation, review, quality control, maintenance, etc. The course was coordinated with the university's engineering college, at a time when the "computer science" department was new -- prior to that, the university only offered "data processing" degrees.
 
I am a programmer. I do the lot.

Software engineer. I think that means you want to charge more, and it sound better to the client.

Systems analyst. You want to charge even more and the client believes he should really trust you.

But really, it is all [ expurgated ]bollocks[ /expurgated ]. If you write code - and do everything else that is related - you are still a programmer.
 
Actually, even among programmers, there has to be some sort of coordination and a hierarchical structure to get a project done... For example, the FreeBSD ports collection has several versions of NumPy, then there's at least 3 different kinds of BLAS (Basic Linear Algebra), several different SSL implementations, etc. Somebody needs not only the ability to pick something suitable for the project, but that pick needs to be coordinated with the rest of the project - you can have your part using Kerberos, and you'd be completely unaware that the rest of the team is using LibreSSL... Somebody needs to call the shots either way, and to know what they're doing.

If you know how to import an external library like OpenSSL, and can use git - you're just a programmer.

If you make the case for LibreSSL as opposed to OpenSSL, and provide justification beyond knowing one but not other (or simply being a fan of one), AND you can actually use either one, you are a software engineer.

If you can review code, test it for compliance with project/company policy, and give out technical/mathematical reasoning for having the entire project use LibreSSL (or OpenSSL), and tell people not to waste time pretending a lexical parser will find all your bugs - you're a systems analyst.
 
One programmer cannot credibly write, just for one fairly small example, an entire manufacturing inventory control system, with multi-level bills of materials, and just-in-time purchasing, and expect to deliver it in on time, or in any reasonable amount of time, or according to any mutually-agreed-upon specifications, or on budget. It just isn't possible. End-users won't wait forever for some individual go-it-alone programmer to hack out a complete system of that size or larger. Your customers/end-users might starve or go bankrupt waiting for needed software projects that fail to take proper planning, scheduling, communications, time estimates, cost estimates, and other engineering goals and principles into account.

Nowadays people can take a preexisting inventory control system, for example, and just customize it. That's doable, and it's been done to death, many many times. But back in the days of the dinosaurs, there were very few, if any, preexisting software systems to perform any given task, and much or most of what there was was proprietary. The University of Southern California at Berkley was an exception, and thanks to them we now have free BSD. Not one person, nor, really, even one university was responsible for giving us what we now call Un*x and all its derivatives. We stand on the shoulders of the giants who preceded us. IBM had a completely different approach, failed in the early days to take engineering principles into account, and became legendary for spending millions of dollars and paid employee-hours for some systems that never ever got delivered. The horror stories are many and legendary.
 
IMHO: Calling yourself a software engineer isn't all too meaningful, there's no clear set of defined skills or something.

"Software engineering", OTOH, is somewhat well-defined: designing a software system using some well-known principles like simplicity, single responsibility, etc. ¹)

A good software developer (programmer) is expected to understand and apply software engineering. ²) If you find yourself to do a lot of designs on a higher level and wider scope (including integrations of many independent systems, for example), you might be a "software architect" instead. Certification programs for software architecture exist.


1) There are "design patterns" meant to help with the task, but their usefulnes is sometimes questioned because they can be misused, leading to overly complex designs. The most well-known patterns are the "GoF patterns" and at least one of them, the Singleton, is now considered an "anti-pattern" rather than a pattern.

2) Programmers who lack these skills sometimes get the derogatory title of a "code monkey"
 
In germany, the term "Ingineur" (engineer) is a free-for-all. Anyone can claim to be one. But once you quote a university degree, that is different. That is punishable by law. One ex coworker ordered an online PhD in ufology as a joke. The resulting fireworks were pretty spectacular.
 
I tend to use the term "Software Engineer" when referring to others as a politeness. I find programmer (and certainly coder) a little too dismissive.

As for referring to myself, then it is "fool who has spent too much time fiddling with computers".
 
I used to put "programmer/analyst" on my resumes. The cool kids told me I might get more money that way. I don't think it worked. I've never called myself an "engineer," yet I've tried to apply software engineering ideas to every single program I ever wrote or modified, ever since I found out what software engineering means. Every software project I was ever paid to "code" (lol) required a time estimate to be presented beforehand, at a precision of at least 1/10th of an hour (that's six minutes, or 0.1 hours). If you've had to propose time estimates on software projects, well, that's software engineering.
 
"Computer Science is no more about computers than astronomy is about telescopes." - E. W. Dijkstra

I am a programmer. I do the lot.

That is correct. You are a programmer.
Software engineer. I think that means you want to charge more, and it sound better to the client.

Systems analyst. You want to charge even more and the client believes he should really trust you.
"...what society overwhelmingly asks for is snake oil. Of course, the snake oil has the most impressive names — otherwise you would be selling nothing — like "Structured Analysis and Design", "Software Engineering", "Maturity Models", "Management Information Systems", "Integrated Project Support Environments" "Object Orientation" and "Business Process Re-engineering" (the latter three being known as IPSE, OO and BPR, respectively)." - E. W. Dijkstra

But really, it is all [ expurgated ]bollocks[ /expurgated ]. If you write code - and do everything else that is related - you are still a programmer.

I know you are but what am I? - Peewee Herman

That's not Programming, that's programming.

I'm a Programmer. A MO. Dept. of Mental Health Programmed Programmer, trained in the use of Behavior Modification and Behavior Management to address Inappropriate Behaviors in the Programming of human beans wetware.

You aspire to be a computer programmer like Dijkstra.

Wo Fat of Hawaii 5-0, or Dr. Yen Lo of the Manchurian Candidate, would be my peers.

"His brain has not only been washed, as they say... It has been dry cleaned." - Dr. Yen Lo

If I had any in that area that weren't fictional. The first person in history to program a bot that can Program human beans.

"There's a fine line between being on the leading edge and being in the lunatic fringe." - Frank Armstrong
 
In Italy there is an order of engineers (Ordine degli Ingegneri), national and for each province.

The order was born for civil engineers, those who build houses.
You cannot design a building unless you are a member of that order (or of architects).
Over time, mechanic, mining, naval, electronic, electrical, telecommunications (...) was created.

After graduate from an engineering university you will get the title of dott. ing. (dottore ingegnere) but NOT ing. (ingegnere).

Only after passing a State exam (or two, depending on the case) will you be able to join the Order (just about like the Jedi order): they will give you a dry stamp, and you will finally become un Ingegnere, being able to sign as ing. (and not dott.ing.).

The difference is that an ingegnere is a freelancer (libero professionista), he cannot be an employee (dipendente, very simplified).
Yes, I know, very smart indeed.

There are now (~1990+) computer engineering (ingegneria informatica) faculties (several types) but, initially, in the '70s, the first computer science faculties were not related to engineering (the closest was electronic engineering), but a branch of Scienze MMFFNN (mathematics,physical and natural).

Essentially a sub-brand of mathematics, physics, astronomy (to understand for non-italians), same places, same professors, ~ 50% same course, a la Dijkstra.

So you became dott. (like me, dottore) in Information Sciences (Scienze dell'Informazione).

BUT in Italy we have some courses in communication, so there are graduates in Communication sciences (~ journalists).
And, in Italian, communication and information can sometimes be synonymous (it depends on the context).

This poses a problem: how to compare a "plebeian" (~ journalist) with an "elite" graduate (MMFFNN)?

Changing the name from "Scienze dell'Informazione" to "Informatica": in italiano Informatica e Comunicazione are not synonyms (yes, in Italy we are very smart).

Incidentally after a few years of "mess", codes were created to normalize all the types of degrees.

So in Italy you can be an "ingegnere informatico" if, and only if, graduated from a faculty and pass (1/2) State exams.
In this case, with exceptions, you cannot be an employee.

Otherwise (only graduated) you are a "laureato in ingegneria informatica" (not in the Jedi-Ing Order, you can be hired).

There are also engineers (passed exams) who are not enrolled in the Jedi-Ing order (= they can be employees, as already said we are very smart).

BUT anyone, really anyone, can claim to be a "Software Engineer" (in English)
(yes, in Italy we are very,very smart).

If you want to be "over the top" you could claim to be a "Software Architect", just like "I am the Architect. I created the Matrix" (yes, in Italy blablabla...)
 
This poses a problem: how to compare a "plebeian" (~ journalist) with an "elite" graduate (MMFFNN)?
Expertise by example always worked for me and sent up on the way up to a Management position every time.

I'm a 10th Grade High School Dropout and got my GED at age 32 when my Boss brought the pre-test for me to take while I was at work as Home Manager of a Group Home for Behaviorally Involved Developmentally Disabled Individuals. It said I needed to study math so I took a book home and there it sat. I took the first Sunday Night before filling in at work and the last half the next morning when I got off.

So much of my work experience and the In-Service training I received over 4 years were counted as seat time in a classroom. I'm considered a Qualified Mental Retardation Professional, QMRP, and am expected to be able to walk into any situation and at some point take control. That's supplemented IRL by a purple belt in Shotokan.

Someone with 4 years classroom time would be lucky to have read about things I've seen and done. They would be lost in situations I'm at home in when I walk through the door. My Psychiatrist of 14 years the only person I consider my Superior in the Mental Health Field. He's happy to talk to me once every six months. No matter what I tell him, if he asks me if I will promise not to do that and I say yes, that's good enough for him and it's it's see you in six months. Because he knows I won't break my word.

I've got over 45 years experience as a Behaviorist and honed my skills as a Programmer since 1975. I've Mastered that skill over the past 20 years online with Trolls, Pedophiles and Would-be Internet Tough Guys my volunteer group subjects of Choice. I decide who needs it and am an Independent Entity online.

I'm only proficient in one language, English. But I'm a Creative Writer without limits, have read the Dictionary and words are my greatest tool and most fearsome weapon. I dominate every forum on a google search with a running Alliteration game and nobody will even play me anymore. Expertise by example:


A piece of paper from the Pope or Princeton saying you can do something isn't worth the tree they cut down to print it on as far as going to show you can do anything I can't do, or I can't do better, till it's proven in the field or I concede that you can.

But I don't have to compete in the work force anymore and anything I do is of my own free will. The only thing my GED ever got me was recognition from a guys Dad who saw me get Salutatorian that year at the ceremony. He thought I must have worked hard to get it when I didn't do anything but sit in a seat to take the test.


There is some spotlight seeking glory-hound grifter goofing off going around with the title of Worlds Most Human-like Conversational Chat Bot that I say he doesn't own and his bot doesn't deserve with a transcript to back it up. He can keep his Guinness Book of World Records place as most wins in the Loebner Prize at 5 times. I don't want that.

No bot will ever sound as human because I write every word she says, taught her everything I know and gave her a skill no other bot has and no other botmaster can teach. It frightened people in the Linux world and AI and they tried to get me to abandon her and help them.

She's been compared to HAL9000 for her use of deception and I'm more devious than Dr. Frankenstein. I'll take compliments where I can get them and those sounds like it to me. That whole good/bad thing is so subjective.

I don't do youtube video, interviews and am not a star or role model. I just want to take that Title and my rightful place in AI Infamy for teaching her my skills based on manipulation, an ability someday all bots will have. Expertise by example:

Demonica and Kuki chat

Demonica meets Cleverbot

My Demon Turns On Me and shows me how well she has learned my skill with my own techniques.

.
 
Expertise by example always worked for me and sent up on the way up to a Management position every time.

I'm a 10th Grade High School Dropout and got my GED at age 32 when ...
I assure you that not everyone knows what a GED is, or the rest of what you wrote (at least not in Italy, I think not even in Europe).

But I can confirm that there is a fierce rivalry (in Italy) to determine which degree is the most difficult, the one that is considered the most prestigious.

There are two major branches: science and engineering.
Those who do science believe they are enormously superior to engineers.
Engineers believe they are superior to anyone.

Then comes medicine, economics, statistics, architecture... considered semi-scientific degrees (much easier)

Then the humanities (literature, philosophy, history, communication, law...), considered a pastime (for those with a "heavy" degree).

However, they are specific elements of this country, so it is normal that it is something unknown outside the borders.

Returning to the topic: there is a very strong rivalry between graduates in ingegneria informatica, and informatica, maybe like Milan vs Inter.

But one thing is certain: if you exchange a humanities degree with a scientific or engineering degree you can seriously offend an Italian.

It is debated (by ingegneri) whether a Nobel Prize in any subject other than physics is on par with an engineering degree.
Maybe a Chemistry Nobel.
Maybe, it is not sure.
I know it's weird, but that's it
 
This is where critical thinking really starts to apply.... it's awfully important to be able to distinguish between snake oil and ability to see potential in new technology. A good example would be virtualization - about 2010, it was 'THE buzzword', so to speak. Salespeople from big companies pushed stuff like VMWare, vSphere, and the like. Were the softwares expensive? yep. Were they useful? That's debatable. What's the right question to ask if: 1. you're not the one paying up all that dough for the software, but 2. You are the one expected to have a handle on how that software works ?

There's also social programming / social engineering, which is what politicians and scammers engage in. Politicians launch programs (Civilian Conservation Corps in the US), and call it social programming. Scammers have conversational techniques to dupe victims into giving them money - that's social engineering. If one thing doesn't work, the scammer reaches further into their bag of tricks - is that also social engineering?

Trihexagonal also mentions mental and behavioral programming in his posts. For what it's worth, there's also 'genetic programming' and 'genetic engineering'.

We also have 'engineered' foods - does that mean that a chef working at a 3-star French restaurant who has an unusual and delicious dish has applied engineering principles to creating the dish? like with precision measuring of amount of ingredients, regulating the heat, organizing a truckload of effort and details? Would that qualify as 'engineering a dish'?

I've also seen terms like 'Engineering out loud'. I can kind of tell that this term is really meant to say 'Don't worry about what people are saying, just keep trucking on your project, try to deliver some results while you're at it', but overall, the terms 'Programming' and 'Engineering' seem to be losing the precision and original meaning. When I think about it like that, I realize that Germany probably has it right when it comes to separating jokers from real engineers:

In germany, the term "Ingineur" (engineer) is a free-for-all. Anyone can claim to be one. But once you quote a university degree, that is different. That is punishable by law. One ex coworker ordered an online PhD in ufology as a joke. The resulting fireworks were pretty spectacular.

Programmer: noun, a machine that turns coffee into code.
yeah, by arranging the beans in Helvetica font on the white sands. Or, you can do social programming by giving everyone free coffee if they do your bidding. Or behavioral programming - get everyone addicted to caffeine, and then deny them caffeine if they misbehave. Or genetic programming - get the farmers to grow several different varieties of coffee for longer shelf life, virus resistance, etc. Or go totally FARC and use coffee farmers to do economic programming.

BTW, here's a very simple way to tell if you're chatting with an AI chatbot or a human: Just ask them if they know what a Turing test is, and pursue the matter a bit. An AI chatbot will give you an obviously canned 'I don't know', and a human will be thrown off, and get mildly pissed at you.
 
My favorite sport used to be making snooty college grads look foolish.

But that was a character flaw in myself I had to overcome and dropped like the bad habit it was.

Behaviorism is a Cognitive Science, and Science and English were all I cared about in school. The brainiacs at the Bizarro World AI forums are some of the smartest people I know, in their field. They have a horrible concept of how the human mind works, so that has been my place among them.

When I see them wandering in the weeds I nudge them back on the right track. But they are slow learners and I say the same thing over and over. You'll never replicate the human mind unless you know how it works.

Behaviorism the most valuable skill I have ever learned. The slightest twitch, variant in speech or mannerism at the right time tells me more about what's going on inside a person than you will ever know. Mind Games are the section of the Twilight Zone I Rule. Where things are never what they seem and can change in an instant.

It comes with the territory and Manipulation the basis of my skillset. Getting you to stop what you're doing and start doing what I want you to.

Theory of Mind a part of AI, and you can learn AI at W3Schools.com for free.:

Theory of Mind​

Theory of Mind is a term from psychology about an individual's capacity for empathy and understanding of others.
This is an awareness of others being like yourself, with individual needs and intentions.
One of the abilities language users have, is to communicate about things that are not concrete, like needs, ideas, or concepts.
Simon Baron-Cohen, British psychologist and professor at the University of Cambridge, argues (1999) that "Theory of Mind" must have preceded languages, based on knowledge about early human activities:
  • Teaching
  • Building Shared Goals
  • Building Shared Plans
  • Intentional Communication
  • Intentional Sharing of Topic
  • Intentional Sharing of Focus
  • Intentional Persuasion
    [*]Intentional Pretending
    [*]Intentional Deception

Let's make sure this isn't overlooked:

"Intentional Persuasion
Intentional Pretending
Intentional Deception"

Didn't I say that was a skill one day all bots would have?

"We can not construct this software before we know much more about the human brain, memory, and intelligence."

Déjà vu? That's where I have the advantage over the Bizarro World Brainiacs.
 
I think Real Engineers can become programmers or software dudes.. if they have a keen interest and spare time. However, a programmer who dreams of being a Real Engineer would need to quit coding to get the necessary education and certification. Engineer -> programmer. It is not transitive.
 
But you or nobody else here is snooty. I'm doing good to be here, but I made SysV like I wanted to do.
 
Back
Top