That doesn't mean software dev is any easier. And, it's great that CS has such a low barrier to entry, and hopefully open source keeps it that way. Unfortunately the same trait makes it sound like "something anyone could do". Anyone hiring in the industry knows this is not the case.
The same trait results in 80% of those calling themselves "developers" being radically incompetent. It's one thing if you're electrical engineer that works daily in Cadence doing LVS and DRC, your license alone could cost 100k a year. Contrast that with someone who's git cloned react-starter and setup a website on AWS. The barrier to entry is so low for comp sci that credentials and accomplishments mean little, and interviews are absolutely brutal as a result.
So we get to where we are now. Interviews mean everything because degrees, references, and personal accomplishments mean so little in CS. The interview is your gateway rather than a solid degree program for other engineers.
How do we fix it? Making programming less accessible is obviously not the right way. We need a solid accreditation program like longer established professions have. CS is very new relatively (the first programmers are largely still alive, which is astounding). God help you if you go to an unaccredited electrical or mechanical engineering program, but the large majority of CS programs aren't accredited at all. Employers need to know which schools are good beyond the top 20 so they can hire effectively, and engineers need to know the same to decide which program they want to attend.
It's going to be a vicious cycle until that happens. Endless "CS programs" that don't teach you anything. Borderline scam bootcamps (some are good, but who?). Shaky employers grilling the hell out of anyone that comes through the doors. It's going to suck for everyone in the space until we have some formal definition of someone thats been properly trained. Take the bar exam for instance; In most states you can take it without any schooling, but only those truly knowledgeable will pass.
Someone that passed the bar? A lawyer. Passed your boards? A doctor. Passed CS degree program at school X? Who knows.
CS degrees are math degrees. They don't address the needs of the millions of Web Dev jobs out there.
I am not a computer scientist. I am a web developer and proud.
And any web developer accreditation program needs to address the needs of web development and NOT address the needs of computer science.
That's how we end up with projects like Preact, Inferno, etc.
Now does that mean you need to read the latest papers, and be a proper computer scientist? Nope. I find that reading papers from the 70s and 80s will take you pretty far. Just rip and reapply to new circumstances.
I am a web developer.
A lot of code that I write is 'good', but its hardly clever or original---it's a simple reapplication of old practiced done 100 times in desktop GUI applications, now applied to the web.
I found that a lot of old-school GUI developers never really crossed over to the web, so a lot of that knowledge has been lost to the community at large. You can still find it in text books though :)
The fact that CS is based on mathematic principles does not make it a math degree (although that did make things challenging for me at times).
But in order for it to be a useful degree you need to have math as supporting subject. This is the same as if you want to be molecular biologist you need to know a few semesters worth of chemistry otherwise you'd be given endless hard time, which you seem to understand.
I studied math at uni but because I haven't studied enough it always is so much harder to grok all important things in programming and CS. I would argue that it is a huge roadblock for anyone wanting to become any good at CS, but then again there's programming and there's 'programming'.
My university allowed me to make a custom degree that did not include calculus and didn't take my discrete math grade into account. I'm not what you would call "well-versed" in anything math related. I understand the theory for a few things I've looked into but that's as far as it goes.
In all of my career (~10 years) I've never once found myself at a disadvantage because of it, and it's never held me back from doing or understanding something.
I'm sure there are some areas of the field I'll have difficulty with (low level graphics, etc..), but even then I find that with enough hard work and an alternative approach to understanding the problem I can get things done.
I think they'res enough basic skills in common with different flavors of development that there could be a common set of core skills and concentrations or special accreditation for the unusual stuff
This has almost nothing to do with "software engineering" in practice, except that in Canada we generally call the people who write software "developers" (or "coders" or "programmers"). If a given company calls their developers "engineers", it's code for "we're an American company (and we don't respect the law (until APEG sues us))".
Canada is not on the list so that's why I'm asking.
Look, in Canada, as in the U.S., and to the best of my knowledge in most jurisdictions, there is a concept of professional accreditation. There are "professional organizations" that have memberships, and obviously the ruling on who is and is not a member is determined by the organization, which is all pretty normal. What's interesting is that national law enshrines certain branding around that organization. For example, in most countries, calling yourself a "doctor", without any justification, is a crime. In particular, representing yourself as a medical doctor, in a way which might mislead lay people, is "practicing without a license". In Canada, representing yourself as an "engineer" has similar rules around it. Compare with e.g. the UK situation, in which the word "engineer" itself is not legally protected, but if you call yourself a "Chartered Engineer" without the permission of Engineering Council UK, that's a crime.
To learn about the education process of an engineer, perhaps read https://en.wikipedia.org/wiki/Regulation_and_licensure_in_en... , a much more useful article than what you linked.
Almost completely unrelatedly, most academic disciplines that have related professional programs, such as medicine or law, have more than one stream of post-graduation education. One stream is intended to be primary or supplementary education for working practitioners in the field, the other for academic study in the field. For example a LL.B. (a.k.a. a J.D., as title inflation is commonplace) is typically taken after some kind of bachelor's degree, but is really more like a second bachelor's degree than it is like an M.A. or M.Sc. or Ph.D. or any other academic master's degree. If you want to do such an academic track, you might take a B.A., then an LL.B./J.D., then perhaps an LL.M. or LL.D. or Ph.D. in law. That's one bachelor's degree, one professional degree, and two academic graduate degrees.
Back to Engineering, one might take a B.Sc. (or B.Ap.Sc. or whatever) in Engineering, perhaps certify to become a professional engineer, and then one might choose to take additional formal education. If one is professionally-oriented, some schools might offer a professionally-oriented Master's degree for you. That is different from an academically-oriented Master's, and each school that offers both will have some way of disambiguating them, which is probably not fully standardized from school to school, even within Canada (or any other jurisdiction). Perhaps call one a Master's of Engineering, and the other a Master's of Science in Engineering, whatever. That's what your article was alluding to. As for its list, it only (non-exhaustively) lists countries with equivalent degrees by other names.
All of this stuff about graduate degrees is irrelevant to jrm2k6's comment and my reply thereto. jrm2k6 was mentioning that regulation about the word "engineerig" is stricter in Canada, and my reply was that that's mostly not relevant to the practice of those who write software.
I don't understand fully why so many people think that about coding, but not about other fields, like cooking/building/who knows.
click is a modern Python library. argparse is not.
I also don't think you much chance, to become a good developer if you are not practicing it at a younger age. It's just like with sports and languages.
I don't know if it was substantially different in the US.
This isn't a comment about the author, as much as it's about something she said.
"Today you can take a lot of programming and Computer Sciences courses online. Everyone can be developer! There are also a lot of developer bootcamps: within 8–12 weeks you can become a developer."
This is a very dangerous line of thinking. Some people have convinced themselves that they are competent developers because they went to a bootcamp. And they might have just enough domain knowledge to convince a company with poor hiring practices that they're worth hiring.
I inherited a situation like that (this dev was hired a few weeks before me). After a few weeks it was painfully obvious that this guy was a detriment to the company because of his lack of coding ability. For reasons above my paygrade, we couldn't fire him immediately, and eventually we took all responsibilities away from him. We paid someone to come in and not do work for us.
I've interviewed dozens of developers since then. The one's coming from a bootcamp (or similar situation) have no computer science skills. They also have no problem solving skills; they're unable to break through the box that they were taught in. Most companies can't afford to hire a developer who knows one thing, and one thing only.
Now, we've had 4 year university graduates with experience in the field come in from top schools with degrees in CS. A (scarily) large percentage of them are incompetent as well, though not to the degree of the bootcampers. They're typically serviceable though.