top | item 12165866

Ask HN: Why isn't there a professional body for Computer Science?

40 points| o_safadinho | 9 years ago | reply

I know that people say that "interviewing is hard" and I've read lots of articles that say that people generally don't like doing long winded technical screens but it is the only way to judge whether or not a person is competent, etc.

What I want to know is why have other related areas of study such as Statistics, Economics, Actuarial Science and Operations Research been able to organize professional bodies that can determine competence. There are other professional bodies where they don't give credentials but they organize a central location for candidates and organizations to come together and they provide a standardized format to determine competence.

I find this especially baffling now that "data science" has become a buzzword. Lots of "data science" techniques such as:

- Generalized Linear Modeling

- Gradient Boosted Machines

- Support Vector Machines

- Random Forrests

- The Simplex Algorithm

- Anything with the word Bayes or Markov in the title

were developed by Statisticians/Mathematicians. Even though hospitals and insurance companies and the Fed and logistics companies are able to find statisticians/operations researchers/ predictive modelers/ etc. with out problems why do tech companies such as AirBnB(https://www.quora.com/How-does-Airbnb-hire-data-scientists) say they HAVE to give these multi-day long technical screens with multiple homework assignments?

What is it about applying the same techniques to tech that makes them special and some how harder to measure?

69 comments

order
[+] PaulHoule|9 years ago|reply
It's an interesting question.

There is

http://www.acm.org/

which supports the academic CS establishment but frankly has a "devil may care" attitude about practitioners. CACM is full of hand-wringing articles about the roller-coastering numbers of CS undergrads and they never once get a clue that the undergrads hear rumours about what happens to people in computing once the flush of youth wears off. (It's a general thing that engineers start out with good pay but hit a glass ceiling rapidly)

I used to be a member but I quit because of this. If I had to point to a particular issue it is that the ACM has unquestioning support of increasing H-1B visas.

I am a member of the IEEE Computer Society precisely because they take the opposite side.

Personally it is not a litmus test for me, I see there are two sides of the issue, but when you look at the ACM they are in lockstep with the industry which sees it as a one-sided issue and anybody who questions it is like one of those brits that likes to brawl at football matches.

Anti-professionalism (that is, active opposition and resistance to professionalism) is the dominant paradigm in IT and it creates "market for lemons" situations that has a number of negative impacts on the field, the worst of which is that once you do get the job (well paid or not) you will almost inevitably be forced into malpractice by management and not have anybody to support you.

If there was a simple explanation of the situation it is that computing came along in a time when unions were on the run. Had computers became widespread 20 or 30 years earlier, the situation might be very different.

[+] o_safadinho|9 years ago|reply
How does that explain INFORMS for Operations Research?

WWII was the catalyst for a lot of technical research. It spawned the birth of the modern computer with Turing and it also saw the birth or what is now considered modern Operations Research. For example, during WWII George Dantzig (the person that developed the Simplex Algorithm) served in the U.S. Air Force Office of Statistical Control. He only returned to finish his PhD at Berkeley after the was was over. Also a lot of work with Bayesian search started developing around this time to do things like help search for enemy subs.

However INFORMS is very involved in the OR/MS community and multiple times per year they host meetings where one of the goals is to connect grad students with companies.

[+] CM30|9 years ago|reply
Perhaps because they're worried that the law would start requiring 'professional' accreditation to work in computer science?

Because at the moment, anything computer related is something you can teach yourself through practice and experience rather than something that necessarily needs a degree or credentials. You can obvious get a degree or what not, but it's not required.

The worry however is that professionalism could lead to a situation like with doctors or lawyers, where you need to be part of some professional body or have certain credentials to work in the field at all. And that it could make getting work in the field more difficult for newcomers as a result.

[+] kazinator|9 years ago|reply
Worse, in order to belong to this body you might have some particular ideology shoved down your throat about how computers ought to be programmed.

We can't have a professional accreditation, because there is no right or wrong best practice in computing. Obviously, making programs that are buggy and incomplete w.r.t their specifications is wrong, but if you don't do that, there is no one right way.

[+] niels_olson|9 years ago|reply
> you can teach yourself...

Unfortunately, for this to work it requires informed leadership. I have seen senior leadership of many orgs grant essentially limitless power to "IT guys" who can't function outside the warm blanket of Microsoft services and are responsible for multi-billion $ enterprises without being able to recognize an SQL statement.

[+] CyberFonic|9 years ago|reply
We have ACM, IEEE, ACS, etc - so there are professional bodies, but ...

In my experience a very large proportion of programmers have not completed any formal training, which is typically the first step in the other professional accreditation processes.

The attempts to put real engineering into "software engineering" and real science into "computer science" is strongly resisted by many. ACM and IEEE deplore this state of affairs but are unable to bring about any widespread change in attitudes.

[+] ben_jones|9 years ago|reply
Well the fact is that the world needs software engineers and computer scientists, but it needs more software developers. Also software developers love calling themselves computer scientists and software engineers because money, and colleges don't want to teach software development because...
[+] eldavido|9 years ago|reply
I'm going to have to invoke the Munger test [1] on this: rather than imagining an ideal regulatory body that works perfectly, talk to people in regulated professional fields (law, architecture, medicine) and see what they think about the regulators they have.

You'll get a mixed bag. On one hand, it limits major acts of gross negligence where a practitioner really didn't know a thing about what they were doing. In trade, you get a hierarchical, rigid career path where the people at the top -- the professionals/partners -- extract economic rent from those below in trade for their exclusive ability to practice the trade as independent professionals, not under control of anyone else.

Be careful what you wish for. Professionalization would probably benefit the old at the expense of the young, because salaries wouldn't necessarily track performance (or perception thereof) as directly as they do now, in tech. As controversial as it might seem, I really think there is a limit of how much value one can add as an individual practitioner software developer, and don't think people should necessarily get, or expect, raises for doing the same job year in and year out, just for showing up. So you can either plateau salary quickly, which is what we have now, or hit the same peak, but take a lot longer to get there. It's a complex issue either way but I don't think the status quo is actually that bad.

[1] After economist Charlie Munger, invoked when people mention "the free market" or "regulation" to the solution to any problem. Think about the business leaders/regulators we have, not necessarily ideal ones of our imaginations.

[+] o_safadinho|9 years ago|reply
It doesn't even have to be regulated per se. For example, Economists aren't regulated the way that actuaries are, but they still have widely agreed upon format and process for how to get people from grad school to employment. It doesn't matter whether you want to work in the Econ department at Harvard, The World Bank or a consulting company like Deloitte.
[+] goalieca|9 years ago|reply
Engineering professional associations could potentially regulate "computer engineers" here in Canada but as a student going through school (10+ years ago), I felt like the software industry wasn't ready for the rigor doing real "engineering". Everyone was getting ready to jump on the agile bandwagon which is pretty much the exact opposite of a formal engineering process. No one took design and security too seriously. They still don't. The industry and the markets pretty much agreed that they don't want to pay or wait for products to be engineered. That they can accept problems.. even serious ones like heart bleed.
[+] jerf|9 years ago|reply
And this sort of thing is why I'm against the idea strongly. The first thing that people think when they think about this sort of thing is that we have to drag in extremely heavyweight "better engineering", blind to the major differences between programming and other engineering.

What if an architect could specify an entire skyscraper, push a button, and have it manifest in the real world in 30 seconds? What if they could slightly tweak something about the plumbing, push the button again, and have the old thing torn down and the new building put up? What if they could push another button to put 10 times the rated mass on every floor to see what happens? What if they could push another button to summon an 8.3 magnitude earthquake for ten minutes? What if they could write a for loop that did that for every .1 magnitude increment, ten times a day, until the building collapses, and gathered statistics on which buildings do the best?

Do you think maybe this would affect their design process a bit? Maybe just a little?

If you stop and seriously think about it, you should expect that programmers have a very different optimum design methodology. It would be crazy if we didn't!

Now, there are good practices and there are bad practices, and the bad practices are more widespread than they should be, and there are cowboys where there should be engineers. However, based on the prevalence of posts like this, I have little confidence in the ability of a "professional organization" to improve things. It seems based on the evidence far, far more likely to mandate counterproductive practices that make software more expensive, less reliable, and harder for the disadvantaged and underprivileged to get into.

Don't be envious of the other engineering disciplines. They envy us.

[+] neptunespear|9 years ago|reply
The title of "computer engineer" is already regulated in Canada. You're not allowed to call yourself a computer engineer unless you get an accredited BASc/BEng/whatever degree and get your Iron Ring. That only makes you an E.I.T., though. You have to shadow a PEng for two years and write qualification exams to become a PEng yourself. And CEAB requirements mean only PEngs can teach post-secondary courses in an accredited program.

Same deal with "software engineer". I know that PEO (Ontario), APEGA (Alberta) and OIQ (Quebec) are pretty strict on this; Google's devs at the K-W and Montreal offices are known as "software developers", as a result: https://www.google.com/about/careers/search#!t=jo&jid=324000...

Recently APEGBC has been cracking down as well. The main problem is that there are only 100 registered Professional Software Engineers here in BC, out of 50,000 registered Professional Engineers and Geoscientists. Because you can't get your PEng without working under another PEng first, the deck is stacked against "software engineers" using the Valley/Puget Sound definition. HootSuite now uses the term "software developer", but some of the more prolific companies in Vancouver (Amazon, Microsoft, Tableau, Mobify) still use the term "engineer" in positions, even for positions that don't exclusively need licensed engineers/geoscientists.

[+] qwertyuiop924|9 years ago|reply
Saying Agile-style development was responsible for Heartbleed is just wrong. Crappy code, along with C's "We'll aim the gun at your foot by default, just pull" attitude was responsible for that.

>No one took design and security too seriously. They still don't.

To some degree, but the whole idea of Agile is very test-based: Write something, see if it works, toss it if it doesn't. That's not a hard workflow to integrate security auditing and testing into: It's just another kind of testing, if a slower one.

Given, you are right about this kind of thing being highly anti-planning. As to whether that's a bad thing, I don't know.

However, I can safely say that it's better than some alternatives. There is no way epoll would have gotten through a proper testing in its present state.

So yes, I thing these are big problems, but casting the blame on agile is like saying that a large dog ate your bed: He might have wrecked it a bit, or maybe not, but he couldn't have eaten the entire thing.

[+] raverbashing|9 years ago|reply
You're saying this like major waterfall projects never failed spectacularly and never had serious problems.

Yes, you can have a good product if you have a very strict spec, written by true experts that really know what they're doing. Otherwise forget about it

[+] jacques_chester|9 years ago|reply
Engineering is the profession of solving business problems by justifiably selecting amongst alternatives in a technological solution space bounded by economic and ethical constraints.

I am a software engineer.

And as it happens I work for a famously, even notoriously, doctrinaire agile company: Pivotal. Which is the first place I've worked which actually felt like I'm engineering instead of coding.

[+] soham|9 years ago|reply
Because nobody saw the massive growth coming, and now it's too late.

Programming (which is different from CS, but is often mixed) is very accessible to learn (all you need is a computer and Internet), because of which it grew very fast and got democratized very quickly.

No professional body was able to catch up to the speed of growth and breadth of penetration. Before the talent crunch hit, it was too late.

I wish I could find some relevant numbers for growth, penetration and ubiquity of programming to support this claim. But for those of us in the industry for a while now (6 years of education + 15 years of working), there is a lot of anecdotal evidence. e.g. I was booed in 1996, for choosing CS as my major. And now every Taxi company out there needs software engineers.

[+] binarybyte01|9 years ago|reply
This industry doesn't need a union, but it does need a professional association to protect and help engineers. Some things a professional association could do:

1) Provide legal muscle to individual engineers - If there's a legal dispute between a company and engineer, the company can just outspend on lawyers. It doesn't matter if the law says the engineer is right, the engineer can't fight a long legal battle. This will help with issues such as non-competes, off-hours IP ownership, startup stock/options disputes, etc. It also provides a place for engineers to report issues such as H1B visa abuse.

2) Politcal lobbying - The voice of engineers is not heard in the H1B debate. This association could lobby and make sure the interests of engineers are represented in the debate.

3) Accreditation - No more stupid technical interviews.

I want to emphasize, this is NOT a union. It does not do strikes, set salary, or any of the things associated with unions. The primary power of an association like this is pooling resources for litigation power and political lobbying that serves the interests of engineers, not companies.

[+] im_down_w_otp|9 years ago|reply
There are a few, as people have pointed out, but why would they have any particular clout or influence in a marketplace dominated by the Church of MVP?

Practically every single piece of advice ever given about engineering and scientific practices on HN, or its cousin sites/forums, is that it's a pointless pre-mature optimization and should be avoided at all costs in favor of just hacking out and coughing up a piece of demoware that is loosely based on your slideware, both of which you're trying to sell to an audience that fundamentally doesn't care if it works or what its technical or scientific merits or risks are, and in that world I'm not sure where there's room for a vibrant and growing set of professional bodies because in that world the need for credibility benchmarks and verifiable rigor are almost entirely irrelevant.

[+] pjmorris|9 years ago|reply
Tom Demarco (one of the authors of Peopleware [0]) argues that certification is primarily about the political agenda of the certifier/de-certifier, for example in a letter to the editor [1] of the Cutter IT Journal, the end of which I've clipped:

" Before ending, I offer the following example of how certification/de-certification will work: I hereby de-certify Prins Ralston, Nancy Mead, Patricia Douglas and Ed Yourdon. They will forever after have to write their names with the letters RTSF (Relegated To Slinging Fries) after them. This demonstration shows us two things about the process: 1) those who do the certification are always effectively self-appointed, and 2) the basis for de-certification, no matter what the societal rationale, always works out to be the private agenda of the de-certifier. James Bach and Luke Hohmann came out against certification in their article, arguing along the same lines I have used above. But I am going to de-certify them as well. This shows a third fundamental fact about certification: 3) it is inherently capricious, subject to all kinds of mischief. I vote that we let poor old Citicorp and poor old Aetna and poor old Microsoft figure out for themselves who they should hire. I suggest that we have a perfectly fine selection mechanism at work today; it's called the market. Some people get hired as software developers and some people don't. It is a lot more competent than any appointed elite would be and a lot more ethical."

[0] 'Peopleware: Productive Projects and Teams', Tom Demarco, Timothy Lister

[1] http://www.systemsguild.com/certification.htm

[+] wrong_variable|9 years ago|reply
THIS.SO.MUCH

Lets look at the salary of Actuaries shall we ?

£ 222,936 - Chief actuary, senior partner

£ 140,814 - Senior function head, practice director

£ 117,343 - Function head, practice head

£ 89,442 - Department manager, managing consultant

£ 80,664 - Section manager, senior consultant

£ 73,043 - Section leader, consultant

£ 66,118 - Senior actuary, junior consultant

£ 52,067 - Actuary

£ 36,241 - Student actuary

£ 33,130 - Recent graduate

Each level is incremental - X amount of work increases your salary by Y amount.

All you need to do pass the exams and you can work in USA + Canada + Europe + India + Australia !

Now being a Chief Actuary is quite improbable - but look at the salary ! how probable is it that a programmer is going to earn that much after 25 years of experience ? we have all heard stories of unemployed experience engineers.

Coming from a maths background I really want some answers as to why I choose software engineering

To me the rampant unprofessionalism, the lack of structure, the insane amount of discrimination that is normal due to age, race, gender.

I really want to rage quit and go back and became an actuary due to lack of options for career progression.

[+] Kluny|9 years ago|reply
I just tried to look up what is an actuary. The first two results were the same forum thread from a forum for actuaries, where the actuaries were complaining that people don't know what actuaries are. The third result was a page of jokes about actuaries. https://actuarialjokes.com/

I'm no closer to understanding.

edit: I took the swear words out of my query and got a better answer.

"a person who compiles and analyzes statistics and uses them to calculate insurance risks and premiums."

[+] aianus|9 years ago|reply
Move to the US, seriously.

For reference, starting compensation for a 22-year-old fresh CS graduate in the Bay Area is $120k+ (higher than department manager in your list). 5 years in as an individual contributor or tech lead you'd be doing $150-$200k. My roommate was in actuarial and got the hell out when he saw the difference. Now he's a 'data scientist' and doesn't need standardized exams or accreditation to get a job.

[+] analog31|9 years ago|reply
I'm not sure that accreditation is so widespread. Most engineers don't get licensed. Most math majors (myself included) don't take the actuarial exams. Many people doing math and engineering related work (and programming) have degrees in the physical sciences (again, myself included).

Engineers have an "industrial exemption," where they can work without a license, if they do engineering for an employer. Rather than having things designed by licensed engineers, the work is completed, and then a licensed engineer signs off on it. Design review is often outsourced. For instance when we're ready to ship a product (an electronic measurement instrument), we hire a testing firm to approve the design.

Better watch what you ask for: If you look at the actual work that licensed engineers do, most of us would say that it's incredibly repetitious and boring -- basically poring over someone else's work all day long. I'd go nuts. I also couldn't be a patent lawyer for that reason. On the other hand, it's well paid and secure. A relative of mine had a long and rewarding career as a licensed nuclear power plant operator. In practical terms, he was a project manager.

New things are developed and become widespread before professional bodies can even react. I learned about microcomputers under the mentorship of my physics professors, while the CS department at my college was 100% mainframe focused. The CS majors laughed at my "toy computer." The early pioneers of Embedded Systems were a hodgepodge of scientists, engineers, hackers, and so forth. How long would industry have waited for a certification in Embedded Systems?

I think the multi-day-long technical screens are a separate issue. Tech companies have gotten themselves utterly freaked out about the terror of hiring the wrong person. Other industries don't have the same problem because they don't follow the same trends, and it could change overnight if tech companies get sick of it.

[+] o_safadinho|9 years ago|reply
You obviously wouldn't take an actuarial exam if you don't plan on working in Insurance. However, if you do plan doing something like predictive modeling for an insurance company then it would have to do it.

Both the SOA and the CAS recently changed their exam process to include things like various predictive modeling and clustering techniques. The SOA decided to extend the number of exams and the CAS decided to make it a separate certification.

[+] tpetricek|9 years ago|reply
The book "Computer Boys Take Over" by Nathan Ensmenger (https://mitpress.mit.edu/books/computer-boys-take-over) is a useful reference here. It goes through the early history of computing discipline and discusses how computing turned into a discipline, including professional organizations (including ACM, but also more "data processing" - think COBOL - oriented organizations). It also makes some fun points on interview process (tldr - it was broken even in 1950s :-)).

There are too many points in the book to summarize in a comment, but anyone who wants to read some - at least to some point - serious historical work on the topic should probably have a look at the book.

[+] kazinator|9 years ago|reply
There can't be a professional body for Computer Science because Computer Science is a mixture of religions, divided by such boundaries as programming languages and operating systems.

Any sort of test to determine professional membership eligibility will either have to be pure theory (useless) or else sectarian (favoring practitioners who develop under a particular platform, or using particular approaches).

[+] 11thEarlOfMar|9 years ago|reply
Perhaps it has to do with the myriad sub-specialties in Computer Science. They are distinct enough that the specific knowledge and experience of one is typically not transferable to another. I am thinking about such distinct specialties as electro-mechanical control systems vs. A.I. You wouldn't expect the controls pro with no A.I. experience to pass an A.I. interview simply on the basis of his general computer science experience. Same for a CICS programmer with no mobile experience interviewing for a Swift programming position.

This fragmentation implies that Computer Science really is too broad an umbrella. For sure, there is a lot of process related general software development knowledge that all of the above should possess. But most projects won't suffer an experienced developer's learning curve on a new sub-specialty, even if it only means a few months.

Do Statistics, Economics, Actuarial Science and Operations Research have a similar attribute?

[+] o_safadinho|9 years ago|reply
All of the above do have various sub-specialties. The problem is that even the CS specialties (A.I./Machine Learning/Data Mining) still don't really conform with the other fields that I mentioned. Generalized Linear Modeling is Generalized Linear Modeling; it really doesn't matter whether you are classifying risks for an insurance company or classifying text documents at some tech start up. The math works the same.

In addition to that all of the other fields that I mentioned have sub-specialties as well. An actuary can be a life, health or P&C actuary. They can work in reinsurance or predictive modeling. An economist can work in Financial Economics or Labor markets or Econometrics/Quatitative Methods.

Yet the SOA/CAS are able to come up with and evaluate a set of minimum competencies that insurance companies in most English speaking countries are able to agree on. The American Economics Association is able to bring together major international banks (Various branches of the Fed, The World Bank, Various National Banks, Consulting Companies, Law firms that specialize in Financial/Economics issues) and grad students and it gives them a common format to get to know each other and evaluate job offers regardless of a candidate's/company's specialty.

[+] flukus|9 years ago|reply
Aside from the individualist attitude that's prevalent, it's because we are still grouping too many things under the banner of computer science or engineering.

Neither of those disciplines has much correlation to general software development, so they fail from the start.

[+] wyager|9 years ago|reply
Because the guild system is outdated. I don't want to be encumbered by a social environment of forced "professionalism", where professionalism means ponying up for some pointless self-inflicted bureaucracy.
[+] serge2k|9 years ago|reply
> Because the guild system is outdated

Evidence?

[+] gariany|9 years ago|reply
I've been interviewing for the past month in SF. The only thing bad about my interviewing processes experience is BAD INTERVIEWERS with no sensibility to HUMAN SKILL (i.e. not technical skills).

Team fit is what makes people shine in their jobs and no one is asking about it... The industry is well developed now for us to stop asking about reversing binary trees and start asking about how many friends you one had in high school

[+] marblar|9 years ago|reply
> The industry is well developed now for us to stop asking about reversing binary trees and start asking about how many friends you one had in high school

Could you explain?

[+] bllguo|9 years ago|reply
Is this satire? If not you've ruined any point you're trying to make with that example.
[+] GFK_of_xmaspast|9 years ago|reply
There is a strong streak of libertarianism, if not outright objectivism, in this industry which recoils at the mere thought of collective action.
[+] ADanFromCanada|9 years ago|reply
And rightfully so. Who the hell are "they" to judge "my" competency?

Isn't that the job of my employer, anyway?