nodejs / education

A place to discover and contribute to education initiatives in Node.js
Other
417 stars 58 forks source link

Certification: What domains should be covered in the certification exam? #11

Closed hackygolucky closed 7 years ago

hackygolucky commented 7 years ago

With the premise that the certification will test an examinee on challenges you believe they should be able to accomplish after having worked for 1 year full time as a Node.js developer,

what domains/topics would you expect to see on this exam?

ex: event loops, callbacks, streams, buffer, closures, error handling, debugging, security, using Node.js with databases...

We will be supporting these environments for now: GNU/Linux | Tier 1 | kernel >= 2.6.18, glibc >= 2.5 | x86, x64, arm, arm64
macOS | Tier 1 | >= 10.10 | x64
Windows | Tier 1 | >= Windows 7 or >= Windows2008R2 | x86, x64

martinheidegger commented 7 years ago

A slightly random list of topics that I find important

(I should mention that most of those things should be studiable but are not usually studied.)

vdeturckheim commented 7 years ago

The hard part here is that Node.js is not very opinionated as a platform. How much the candidates will have to do this in 'a certain way' ?

Fishrock123 commented 7 years ago

While true, we could think about looking for certain things, e.g.:

No memory leaks, minimized indirection, traceable errors, as much non-blocking as possible for multi-connection applications, etc?

(keyword: pm2)

pm2 is pretty much a big advert for the service the makes provide, can we use typical OS process managers instead?

kristianjaeger commented 7 years ago

@Fishrock123 Yeah, there could easily be suggested "best practices" without getting religious about various subjects. Cheers.

vdeturckheim commented 7 years ago

@Fishrock123 it starts touching a specific point: Node.js culture It is unlikely that someone who have never come across pm2 would have a long experience with Node.js (this package is an example). Same thing for express for instance (and I hate people who mix nodejs with express).

So what part of "Node.js ecosystem knowledge" should be involved in the certification and how should this set be defined ?

pm2 is pretty much a big advert for the service the makes provide

I don't think so. A lot of people use pm2 without keymetrics. It is a very popular package on its own.

addaleax commented 7 years ago

It is unlikely that someone who have never come across pm2 would have a long experience with Node.js (this package is an example). Same thing for express for instance (and I hate people who mix nodejs with express).

Keep in mind that this is very perspective-based, and what you consider “unlikely” may be what people around you consider “unlikely”, but not necessarily everyone. For example, I have used express only once ever in a real-world project, and that was mostly to try it out and get familiar with it.

kristianjaeger commented 7 years ago

Yeah @addaleax I agree. Perhaps a simple action item would be to send an email survey link in the node weekly newsletter to find out from the community what subjects they would like to see covered??

vdeturckheim commented 7 years ago

@addaleax Agreed. That was my point, what proportion of "nodejs culture" should be involved ?

I am not an express user myself (hapi ftw), but I remeber large discussions regarding the importance of this specific project within the community and the ecosystem a few months ago...

martinheidegger commented 7 years ago

Ignoring that people build awesome systems(be it hapi, forever, gulp or johnnyfive) does not serve people who learn node. Fact is: building a system from scratch is hard and not necessary for most tasks. So: while I agree that the education material should be impartial. it should not ignore the awesome work of many people and explain why some popular systems like express exist and what they are useful for. (concrete problem domains). In any case: the conversation has drifted. Do you disagree that we should teach how to run a stable node process? What other topics are important to learn?

dgonzalez commented 7 years ago

@martinheidegger I agree with you. On my experience with other certifications (like Oracle) if you stick only to what it is inherent to the platform but forget about third parties (like express and so on) people won't give to the cert the value that it really has and it will become a paper, like badge to have, instead of a valuable title that shows that you know the platform.

Even more in Node.js, I don't picure a Node.js developer that does not know what Express or Hapi is.

Regarding the important topics to learn, I'd split it in few sections:

Obviously, every section would have different topics but that is what I'd like to see as the big picture in a Node.js certification.

One of the most valuable feedbacks I got when writing technical lessons for my book was to add them into sections so you can know how good or bad you are doing in a certain area.

Btw, I am new here. If you guys need anyone to work a limited time a week on educational materials, I am in. I have a bit of experience on int.

Cheers.

ryanmurakami commented 7 years ago

@dgonzalez @martinheidegger In regards to third-party packages, I feel like including those in the exam guarantee a certification won't have any lasting significance. Frameworks come and go very quickly, so testing on them will have little real value after a few years. In addition, I think we want to be careful to test an examinee's real knowledge of Node, rather than their familiarity with a framework. It really reminds me of the prevalence of jQuery developers or Angular developers and their typical lack of understanding of JavaScript. I think the certification should distinguish an examinee as having a deeper understanding of Node.js. I haven't taken an Oracle exam, but I would consider the current JavaScript ecosystem as very different from anything that a vendor like Oracle is producing.

I also think there are plenty of topics in the standard Node API that should be covered, so third-party approaches won't need to be included.

martinheidegger commented 7 years ago

@ryanmurakami I find it also very important to have a "solid base". And agree with a lot of your sentiment. However, if I would like to hire a Node.js engineer I would like her to be able to understand what is generally possible. jQuery might not be used that much anymore but It having learned it I think makes me a better dev.

ryanmurakami commented 7 years ago

@martinheidegger Yeah, I totally agree. I also wouldn't want to hire someone that's never heard of jQuery/Express/React, etc. The major point is whether that should be included as part of the certification. I don't think anyone would expect the certification to define the entirety of an engineer's experience, but really certify that "solid base." Ancillary libraries or knowledge would be understood as fluid and entirely dependent on the workplace and current trends.

I guess the real question is: should the certification exam be clearly designated as testing the "solid base" of Node.js, or is it testing the "solid base" and knowledge of the current ecosystem. The latter would likely require the exam to be updated at least annually.

There might be a happy place where there is some criteria for third-party inclusion. For one, I think npm should absolutely be included in the exam, even though it is technically not a real part of Node.js. Another possible criteria is to include those associated with the Node Foundation. For instance, with Express taking part in the Node Foundation incubator program, it might be included in the exam. One major argument against Express (or hapi/), however, is that most of the primary use cases are already covered by the http/https modules. If an engineer has been using Node.js for one year, they may be completely unfamiliar with Express (they might've used hapi for that year), but I would expect them to be familiar with the http/https API.

I still think the best approach for the certification is to focus on that "solid base" and let ecosystem be something employers would consider separately.

Just my two cents. :-)

martinheidegger commented 7 years ago

I referred above only to 3rd party tools where it concerns a topic crutial to get right: i.e. process management or logging.

ryanmurakami commented 7 years ago

@martinheidegger I totally agree that for those types of topics an actual Node engineer would use an existing tool. I think the difficulty is whether to include or how to decide which 3rd party tools to test on. The only real objective measures are github stars or npm downloads, but I don't think those make a good argument.

I would say even with those tools, it's going to be difficult to pick a specific 3rd party tool. With process management, do you test on pm2? N-solid? forever? Or with logging, should the test be on winston? bunyan? good? You could test if an engineer is aware of some of these, ie: What tool would you use for Node process management? A: pm2 B: jQuery c: Express. Does that question add value?

You could test common concepts between major tools. For instance, a common facet of loggers is logging levels. Or with process management, there could be a question on memory/cpu etc. Maybe that's what you're suggesting. I guess I'm just imagining a question like: What does the pm2 scale command do? In my opinion, that question is too specific and really doesn't have much to do with Node.

Also, with process management, that may be solved in some respects soon by the tracing working group. That would be an obvious inclusion for the exam.

dgonzalez commented 7 years ago

What about if the certification requires the student to create a project but not dictate the tech to use?

That will require once the student knows the content of Node.js, study the most popular libraries (for http, streams, promises...) and make an informed choice on the best around.

What do you thinl?

2016-10-12 15:39 GMT+01:00 Ryan Lewis notifications@github.com:

@martinheidegger https://github.com/martinheidegger I totally agree that for those types of topics an actual Node engineer would use an existing tool. I think the difficulty is whether to include or how to decide which 3rd party tools to test on. The only real objective measures are github stars or npm downloads, but I don't think those make a good argument.

I would say even with those tools, it's going to be difficult to pick a specific 3rd party tool. With process management, do you test on pm2? N-solid? forever? Or with logging, should the test be on winston? bunyan? good? You could test if an engineer is aware of some of these, ie: What tool would you use for Node process management? A: pm2 B: jQuery c: Express. Does that question add value?

You could test common concepts between major tools. For instance, a common facet of loggers is logging levels. Or with process management, there could be a question on memory/cpu etc. Maybe that's what you're suggesting. I guess I'm just imagining a question like: What does the pm2 scale command do? In my opinion, that question is too specific and really doesn't have much to do with Node.

Also, with process management, that may be solved in some respects soon by the tracing working group. That would be an obvious inclusion for the exam.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/nodejs/education/issues/11#issuecomment-253232073, or mute the thread https://github.com/notifications/unsubscribe-auth/AAHkOm-CIt4zhDr6X0jnKADkypAM5uYPks5qzPE_gaJpZM4KOFTM .

ryanmurakami commented 7 years ago

@dgonzalez Yeah, that is kind of the ideal test for a Node engineer, but I'm not sure if that could be automated. If there was a way to test it without human intervention, it would be a good way to test certain topics mentioned above (process management, logging, etc).

dgonzalez commented 7 years ago

Think about it... we can develop some sort of a automated test on core node.js (like questions with a) b) c) d)) and then the third party knowledge something similar to codility that runs a set of automated tests on a rest API and that's it.

That could be a solution... but requires more thinking.

ryanmurakami commented 7 years ago

@dgonzalez I love those in-browser editors too, but I don't think they're trivial to build at all. To add to that, I'm not so sure that one could be built to the stringent requirements expected from a certification exam. There is definitely a cool factor and if it could work, I think it would be pretty nice. But they seem to work best for learning or interview situations. I personally don't have much confidence in them for examination purposes.

Maybe someone has some experience with the backend of an in-browser coding editor that could speak to the security and stability of them?

kristianjaeger commented 7 years ago

Good day all, I think that these are good thoughts but might be a bit tangential to the scope of @hackygolucky 's post / issue "what domains/topics would you expect to see on this exam?". Cheers.

kevin2r commented 7 years ago

What about having two certifications, one oriented to the core Node.js, how it works, the event-loop, JavaScript engines, versions, standard libraries, etc. This one would be updated withe each Node.js LTS release. The other certification can be oriented to the ecosystem, i.e. frameworks, third party libraries, tools, etc.

galkin commented 7 years ago

Node.js topics:

Theory topics:

Everyday process and tools:

Protocols:

dgonzalez commented 7 years ago

@galk-in and everyone in general... should we add something about JavaScript? If I hire a certified node engineer I want him to also be proficient in the language not only the platform...

galkin commented 7 years ago

@dgonzalez, as I guessed this certification is JS/EcmaScript version agnostic. @hackygolucky, can you clarify this point? I hope, you know.

If we need JS part, then lets make a new issue for discussion. This issue has several points for discussion:

vdeturckheim commented 7 years ago

@galk-in

which EcmaScript version do we need to check?

We should focus on the what is supported by Node.js. It might make sense to focus on the language level of the current LTS at the time of the exam.

do we need to check CoffeeScript/typescript/etc.?

Those are just subset of JS which is already pretty complex.

dgonzalez commented 7 years ago

LTS Node JS version looks good to me.

galkin commented 7 years ago

es2015/es6 support for Node.js So lets uese es2015 features.

yasinaydinnet commented 7 years ago

I also think that there should be one or maybe two exams & certifications in the series which are not Node.js but for JavaScript and ES6.

I think LTS version should be the basis (like %90-95) with questions about ES6 and Latest version for the rest.

hackygolucky commented 7 years ago

We walked through these thoughtful suggestions and will be publishing the domains with descriptions from the Job Task Analysis workshop shortly.