Don't call yourself a programmer (2011)
kalzumeus.com
kalzumeus.com
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.
(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.
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.
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...
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.
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
But going back to the OT, I think Patrick is really talking about mindset. Basically don't sell yourself short.
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.
"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.
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.
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 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.
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.
In many countries, it's a protected title. So yes, then you will need to have an engineering degree.
Having said that, this is a hacker/cracker debate; the ship has sailed on calling developers (and tech employees) "engineers".
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.
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.
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".
I agree with you though. It's like holding on to "literally" being used solely for the opposite of "figuratively." It's pointless.
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?
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?
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.
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.
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.
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.
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.
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
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
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.
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.
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.
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.
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.
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.
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.
http://ncees.org/about-ncees/news/ncees-introduces-pe-exam-f...