Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Professional Software Engineer Exam coming in April 2013 (ncees.org)
61 points by stephen on Oct 6, 2012 | hide | past | favorite | 58 comments


Looks like "How to do Waterfall" (62.5% of the test) with additional coverage of Security (15%), QA (7.5%), and Engineering process (7.5%), and Configuration Maintenance (7.5%). There are 80 multiple-choice questions spread across 2 sessions (4 hours each). Open book.

An overview of the exam: http://ncees.org/Documents/Public/Exam%20specifications/PE%2...

Not something I'd feel inclined to get unless this somehow became an industry requirement- which is unlikely - Agile and progressive Software Dev shops are probably throwing up a little bit in their mouths at this thing. Replace Agile with "Extreme Programming" and you've got something that looks like it came straight out of the 90s.


Yeah, not a big waterfall (or agile, or any other pyramid scheme) fan myself, but this kind of bullshit did get a man on the Moon and then a mixture of them got some kit on Mars, and generally they are doing OK.

Some of them can actually scan you or your friend's internal organs to see if they're alright too - that's not going to be php on a lamp stack. I'm guessing they are probably not moving fast and breaking things either. They may be taking it easy with your friends internal organs, just so they don't get sued by the growing legal community on HN.

There's also all that bizarre software that somehow delivers you to the airport of your choice. I wonder how that happens - do they have their Agile/Waterfall/Kanban/Nonsense boards on their office walls in order to get you there?


> Yeah, not a big waterfall (or agile, or any other pyramid scheme) fan myself, but this kind of bullshit did get a man on the Moon...

Agreed on the pyramid scheme. But the challenges listed strike me as mostly hardware, physics, and non-software science/engineering related. A Waterfall-like process is probably a good fit here since failure is far more costly than project budget/time overruns. Also, didn't the Apollo guidance computer suffer several failures? ;)

To me, software looks like the least-difficult part of the space program. Doesn't mean it's easy. But let's not overstate its importance.

Also, most developers aren't working on mission-critical stuff. I think it's fair to apply the 80/20 rule here.

> Some of them can actually scan you or your friend's internal organs to see if they're alright too - that's not going to be php on a lamp stack. I'm guessing they are probably not moving fast and breaking things either.

Funny you should bring up medical equipment. Recently, a laser caught fire inside a friend-of-a-friend during a bronchoscopy. Had to put him in an induced coma (Happy ending: he pulled through).

Just out of curiosity, does anyone here think there's anything inherit to either mainstream process (Agile, Waterfall) that puts direct controls in place to prevent complexity? Both talk about "Managing complexity" but very little on mitigating complexity. To me and prevention and elimination complexity is something our profession still struggles with.


There are writers who write novels, and there are writers who write textbooks. While the end results look a lot alike. Both have covers, both have words, both convey concepts, the purpose of the books is completely different. As such, the methodology for writing the book is different. There might even be some commonalities between the two. You might do fact checking between the two... but the facts matter a lot more in a textbook, then a novel. While you actually can use the same process a group of professors use to develop a textbook to write your novel, it doesn't make sense to use the same process a novel writer might use to develop a textbook. To do so would be potentially irresponsible to the students who consume the textbook.


Did you reply to the correct comment? If so, that went completely over my head. Care to explain?


Really? Just because its structured like waterfall doesn't mean its "how to do waterfall". I read the req spec and there isn't a thing on here that isn't valuable information for every engineer no matter what process they use.

Read what it actually covers and the topics they test and tell me there's something on there that is completely useless.


Couldn't disagree more. If it looks like a duck, and it quacks like a duck...

I've worked in waterfall shops. Sections I through V are very similar to what we aspired to do. Look, it's not like this knowledge is worthless. It's just that what is outlined in these sections is a very thorough but expensive ($$$ and labor) and time-consuming process that that when put into practice often insulates itself from the business problem at hand. Just because it looks good on paper does not mean it will look good when you start applying it to the real world with real people.

I'll say this: If you want to participate in an organization that is culturally waterfall and practices waterfall this certification will prove quite valuable. Anywhere else though, and you might give the impression you're not a good "culture fit" for the organization.


But "activities" are not "phases". You are always trying to get the requirements right, the difference is that some people get them while coding, and others before even start designing.


> Really? Just because its structured like waterfall doesn't mean its "how to do waterfall".

That's funny.


UML, unless you live in the land of too-tight blue ties.


UML is very useful to communicate ideas and designs to the rest of your team. It doesn't have to be 100% strict UML. It just has to get the point across. I use http://www.asciiflow.com/ to make simple UML diagrams that I add to my code when it helps clarify the code's structure. So I disagree that you have to "live in the land of too-tight blue ties" to find UML useful.


> It doesn't have to be 100% strict UML. It just has to get the point across.

So, not-UML?


When you write a text message without proper punctuation or capitalization, do you say that's not English because it doesn't follow strict grammar rules? No. It's less formal English, but it's still English.


Bad analogy. If I have

  <a><b>something</a></b>
I do say it's not XML.


What would you rather see on an exam then? Is the entire notion of requirements/design/etc. not "agile" enough, or what?


Process-agnostic (So it can be carried into any organization's culture) nuts-and-bolts approach to designing, building, and testing software. Not open book, and not 100% multiple choice. Require actual code to be written from scratch, in addition to an existing systems to be "maintained" by applying a security fix, adding a feature, or put under test.


It would be expensive to hire all the NPC performers to administer a practical exam on large group engineering.


And "Maintenance" is only 7.5%!


I hate it.

The content of that exam is like a list of everything that's wrong with industry. Those are problems to be fixed, not things to set in concrete as the way it shall be henceforth.


Yes, like requirements, prototyping, user interfaces, minimizing complexity, profiling and performance, unit-to-usability testing, metrics, refactoring, performance monitoring...

All that ugly stuff that's wrong with the industry.


Those are problems in the sense that software is a young industry, unlike other engineering disciplines (or "actual" engineering). We're likely to abstract away today's issues, whereas matter and physics are more direct, immediate limitations in engineering disciplines.

We don't have a "software physics".


Yes, because we have too many engineers. It's so hard to choose a good developer from the hundreds of applicants for each job so we need a 10 year old obsolete test to filter the good ones out. Talk about waste of money, this is something I hope is not paid by tax dollars...


Developers are fortunate that our field has not been swamped by credential inflation. In other words, we don't even need a degree to do what we do. It is enough to have a portfolio of solid work and some good references, and high-paying work can come your way.

The last thing I want to see is for some kind of guild to arise, which could ultimately lock down the industry (via government requiring licensing, for instance).


While I agree, I think that a large portion of developers want some way to set themselves apart from the masses - to be recognized as Uber 10X code ninjas. Those people will never rest till they create their own credentials, whether it be number of contributions to opensource projects on Github or Coderwall achievements or a standardized test.


Thinking that taking a multiple choice test will prevent you from causing a bug that will kill someone is as smart as learning to be a lifeguard from youtube tutorials.

Organizations that create weapons, spaceships, medical equipment and anything that can and will kill you if it has any bugs, needs to enforce quality not by certifying the engineers, but by certifying the organization to follow very rigid quality criteria. Some companies just have it naturally (perhaps Apple is a nice example) some companies need a structure (see things like http://www.sei.cmu.edu/cmmi/)

So if this is not for saving lives, then I don't see any purpose in taking or creating this test.

if you can code, you'll get a job, if your code is bad and has a lot of bugs, our software cycle is so fast you'll be forced to either improve or switch a profession. or work on non critical software.


A software engineering certification exam with no coding seems a little odd.


That's because in "high brow software engineering", coding is for "workers" (as in "construction workers").


Well, the exam for Electrical Engineers doesn't have them build a circuit either. I assume you're forgetting that you also have to apply to the State Board, documenting your entire Engineering career, which will be the most substantial part of the licensing process. I guarantee you that you'll have plenty of opportunity at this time to demonstrate your programming experiences.

When individuals ask me for a PE recommendation, I am often reminded in particular of one of the questions from the PPI2PASS FAQ [1]:

Q: I have been in supervision since graduation. I have never performed a single calculation.

A: Oops.

[1] https://ppi2pass.com/faqs/qualifying-to-take-the-licensing-e...


I'll always remember the words of one my professors when practicing for the EIT/FE. He said, "The EIT doesn't test to see if you know Engineering, it tests to see if you know how to read." I have found that statement to be quite true, and the difference between those who pass and those who don't are more a function of how well you read and comprehend exactly what the question is asking for more than anything else (e.g., the "closest answer" is often a different Engineering requirement than the "best answer").


So, which language should they use? Java? C#? Knuth's MIX?

What if the job requires a different language -- does the Engineer's professional certification suddenly become invalid, thus denying him work because of a technicality, even though he otherwise has tons of experience in that language?

Also - that would really fragment the hiring scene. But a bonanza for the testing company.


despite my disdain for accreditations and certifications, I approve of the content of the exam. It looks like it covers a lot of ground, in a variety of subjects.


What does this mean for people currently working as programmers? Will it be necessary to study up and get licensed to remain competitive?


> "Will it be necessary to study up and get licensed to remain competitive?"

Only if you intend to work for code sweatshops and "consultancies" that value credentialing above track record/experience.

In other words, if you're stuck at the bottom of the programming jobs barrel, it may behoove you to get this. For those of us lucky enough to avoid that fate, we'll spend more time laughing at it than studying it.


It could be necessary to be licensed for government jobs or jobs in large companies building real time critical systems (ie power grid control software, avionics, etc). I doubt it'll ever catch on for programming jobs in mobile/web/etc


I think it will become necessary for the areas you outline, particularly in industrial control. Although best practices and standards have been established for electrical systems and mechanical systems, my observations in factory control show that the programming components continue to be the most fragile and buggy. And currently the legislation here lags as well since software systems are typically __not__ certified, except in certain military cases.

This isn't something for Web 2.0 programmers, who can carry on as they have been doing. Instead, it's for folks like myself who have designed the clean-room door locking logic for the CDC when contamination is detected (see "Walking Dead" for a grossly exaggerated example of such a system).


You sound like someone I know. I agree with the above. This cert is definitely applicable for engineering tasks at my place of business and something I will probably pursue. It's very beneficial when proposing on harder tasks. Web dev, which I do as well, generally doesn't reach this level of rigor.


It's funny you should mention avionics. Because I remember writing test scripts for one such system merely because I had "basic" on my resume. I had no idea what a FADEC was. Granted, we ended up doing these many thousand line copy-paste jobs (i.e. figure out which of a few test functions to call for each of about 10,000 inputs)

I ended up learning VBScript for that job, automating some of the testing, and turning the scripting tool they gave us into a music player.


The new exam just gives states a way to evaluate applicants for licenses in software engineering. I haven’t heard that any state—not even Texas, which sponsored development of the exam—has changed its engineering practice laws or regulations.

If and when such changes are made, I expect the result would be something like the situation for electrical engineers now: a nominal requirement for licensure coupled with broad exemptions that make it practically irrelevant for most people working in the field.

In most states, only a licensed (registered) engineer may use the title “electrical engineer,” practice electrical engineering, or offer electrical engineering services to the public, but there is usually a so-called “industrial exemption” from these requirements; this section of the California Business and Professions Code is typical:

  6747.  (a) This chapter, except for those provisions
  that apply to civil engineers and civil engineering,
  shall not apply to the performance of engineering work
  by a manufacturing, mining, public utility, research
  and development, or other industrial corporation, or
  by employees of that corporation, provided that work
  is in connection with, or incidental to, the products,
  systems, or services of that corporation or its
  affiliates.
   (b) For purposes of this section, “employees” also
  includes consultants, temporary employees, contract
  employees, and those persons hired pursuant to third-
  party contracts.
As I understand it, this exemption exists because employers convinced the Legislature that corporate liability, including strict liability for product defects, would be an adequate substitute for licensure as a means to protect the public from professional incompetence.

Practically speaking, the only electrical engineers who must have licenses are those designing electric power systems for buildings or working for public utilities, which often choose to employ only licensed engineers in positions of responsibility, even when this is not legally required.

As a licensed engineer myself, I’m not sure this state of affairs is best for the public or for the engineering profession, but I’m also not convinced that software engineering, as a discipline, is sufficiently mature that even a nominal requirement for licensure would provide enough real benefits to justify the burden on practitioners.


Essentially all software we've ever produced has been grossly defective (yes, including mine) and I hesitate to even call it engineering. Doing this at the current stage of the profession is like doctors formally specifying best practice for bloodletting and leeches.


I wouldn't be surprised if state government and possibly federal government programming jobs required it for all but entry level jobs as they currently do with things like civil engineers.


Do you think it would have a significant impact in the private sector though?


I think ntkachov is probably right and that this will augment hiring practices by some companies as a key indicator for HR to bring someone in for an interview. There could also be a trend for companies working on critical infrastructure (power, water, transportation, etc), government contracts (Boeing, Lockheed Martin and hundreds of others) to start requiring you to have a PE to work on critical or real time systems.

I don't think the majority of companies hiring programmers will care at all about a PE or even require it. For most programming jobs the varied level of knowledge required to complete the exam probably isn't necessary.


I guess a more direct question would be how and if this will help a self-taught developer be more competitive. I'm self-taught. I've been studying and "practicing" programming since I was a kid but I never finished a BSCS and I often feel that hurts me. So recently I re-enrolled in school but I'm a long ways away from finishing and want to continue building iOS apps while going to school. This seems like it could be a quicker road to establishing credibility (other than experience) before earning my degree. Thoughts?


This may not be of any benefit for those that are self taught. If you look at current licensing requirements which vary by state some require that you have a BS from an accredited engineering program. It's likely this will also be the case for this new PE license. Of course it all depends on the state, in some states for some licenses only a high school diploma is required.


I think it might augment the private sector in that anyone with a licence is probably worth interviewing. I can't see it being required (not in this market) but I can see it being valued.


It could give the other way, though. I have never met a Java/Sun Certified whatever that was competent to develop software.


Probably nothing. But companies that either choose or are "forced" into this will probably start to differentiate "software engineers" from "programmers" (treating the latters as just a "technical labour").


I am guessing I could answer enough (how many is enough?) of these 80 multiple choice questions to pass the exam right now.

But it would be nice to have an idea of what other people think is the most important information in each topic they mention in that PDF (as far as passing the exam).

So maybe we should create a wiki where we enter in all of the information people should understand in order to pass the exam?

I created one on Wikia in case anyone is interested.

http://softwarepe.wikia.com

Also, question, would this PE exam be the last step in obtaining a Software Engineering license, or would it be the only step. If its the last step, exactly what are the other steps? What group would provide a software engineering license? Would there be any point in me passing this exam, since I don't even have a college degree?


It is the last step. The other steps vary by state, but in general, it requires that you have at least four years of documented and progressive experience under the direction of another licensed Engineer. You also need to have taken the EIT, which is a general Engineering exam that covers all disciplines, not just computers (brush up on your thermodynamics and concrete mixing!).

If you do not have an ABET degree, then it is still possible to obtain a PE, but the requirements generally go from four years to sixteen years of documented experience.

I may be wrong, I don't think this will be a route for Computer Science. It is more for those individuals who have been programming under other Engineering hats ("controls", "electrical", "mechanical") but now have a way to take an exam that satisfies their actual Engineering work. For instance, I might have fit more under the hat of Software Engineer (since I did a lot of embedded programming), but had to take the Electrical Engineering exam instead due to lack of selection.


Don't engineering licenses usually require a bunch of stuff like fluid mechanics and metal fatigue which are completely irrelevant for reliable software? I think we'd be better served with more statistics and denotational semantics....


The EIT does, because the first portion is a general Engineering exam. It is generally at the sophomore level of a four-year University. The PE exam, however, is related to your discipline, though sometimes tangential questions may appear (some analog circuits on a digital exam).


> I am guessing I could answer enough (how many is enough?) of these 80 multiple choice questions to pass the exam right now.

The cutoff scores vary by year, but roughly 70% is a good benchmark for passing. Unless you fail, your actual score is not revealed. You can see the pass rates here [1], but not the actual cutoffs.

[1] http://www.ncees.org/Exams/PE_exam.php


Many years ago when I thought I was going to go into patent law (egads) I ended up taking the Fundamentals of Engineering exam and passing it as an Engineer-In-Training. Does this mean I can do four years of software engineering and then certify as a PE?


Generally, the PE exam itself is considered one of the least difficult portions of the process, though it's still stressful for certain disciplines. The PE exam topics are also generally known to lag reality, regardless of discipline, and often by a decade. It's also open book and some people bring entire carts of books, though I find that not to be very effective since you basically only have six minutes per question.

The major part of the application process is that you will need to work under the direct supervision of a PE, and have increasing levels of documented responsibility, which is often harder to satisfy. Depending on the state, three of the five (minimum) of your recommendations must come from licensed PEs, who need to be able to certify more about you than simply your character.

Usually when threads like this appear, too much emphasis is placed on the exam rather than the requirements that allow you to sit for the exam in the first place. The PE license process is not like a Microsoft or Cisco certification. It took me a good six months to get all the paperwork ready to apply for the exam. I minimally studied for the exam itself. Consequently, four years ends up being more like five or six, in my case, due to less than stellar record keeping.


So this just makes it official, right? Or does this affect people currently employed as Software Engineers?


People on HN seem to be misunderstanding the purpose of this exam. This exam is not for web programmers, or game programmers, or any "startup"-type programmers. If what you do can be done iteratively without much problem, this exam is not for you.

This exam is for people who work on very difficult, very error-sensitive, very high-end stuff that needs to work from the very start: jet planes, medical devices, spacevessel systems, etc. You don't get second chances with these types of systems, so this exam is focused on making sure passers know the gold standard for how coding is currently done in these areas.


And for an (admittedly dated) example of what can go horribly, horribly wrong in some fields: http://en.wikipedia.org/wiki/Therac-25

It's ok if your Web app occasionally spits a 500 error or your game crashes once in a while. It's not ok if your radiation therapy machine occasionally flips out and kills people with a massive overdose.


This exam is just a scam. Engineers working in those areas you described are fully aware and do not need an exam to proove it. Engineers new to those areas will not get a job because of having done this exam. With just a so low percentage in QA passers know jack about testing very-whatever scenarios. They just get dipped into QA sauce like a hairless chicken breast. Same for all other areas described in the exam IMHO. There is a 'great' handbook from some US military on how to develop their software. It is a massive block of everything - but after working on every single item described in there you have in depth know edge about processes, code standards and test coverage.




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

Search: