• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Thoughts regarding exam objectives for NIO 2

 
Paul Anilprem
Enthuware Software Support
Ranch Hand
Posts: 3752
10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The following are the official exam objectives related to NIO:

Java File I/O (NIO.2)
[ ] Use the Path class to operate on file and directory paths
[ ] Use the Files class to check, delete, copy, or move a file or directory
[ ] Read and change file and directory attributes
[ ] Recursively access a directory tree
[ ] Find a file by using the PathMatcher class
[ ] Watch a directory for changes by using WatchService


Do you believe that these objectives make any sense for this exam? Instead of testing a candidate on the conceptual underpinnings of Non blocking IO, they are testing on API stuff that is not even used that often. Things like recursively accessing a directory tree, finding a File using Path Matcher, complicated Path manipulation are so niche that most applications almost never need to perform these activities and even when they do, it is a very small part and can be done by easily by looking up the API. It is not something that a developer needs to "learn by heart".

On the other hand, the really important stuff like the non-blocking aspect of NIO, is missing. So you can be a good java developer if you know how to traverse a directory structure recursively but have no idea about how to handle thousands of simultaneous requests on a socket or even if you don't know when to use regular IO and when to use NIO!!

What were they thinking?
 
saloni jhanwar
Ranch Hand
Posts: 583
Firefox Browser Notepad Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Paul Anilprem wrote:The following are the official exam objectives related to NIO:

Java File I/O (NIO.2)
[ ] Use the Path class to operate on file and directory paths
[ ] Use the Files class to check, delete, copy, or move a file or directory
[ ] Read and change file and directory attributes
[ ] Recursively access a directory tree
[ ] Find a file by using the PathMatcher class
[ ] Watch a directory for changes by using WatchService


Do you believe that these objectives make any sense for this exam? Instead of testing a candidate on the conceptual underpinnings of Non blocking IO, they are testing on API stuff that is not even used that often. Things like recursively accessing a directory tree, finding a File using Path Matcher, complicated Path manipulation are so niche that most applications almost never need to perform these activities and even when they do, it is a very small part and can be done by easily by looking up the API. It is not something that a developer needs to "learn by heart".

On the other hand, the really important stuff like the non-blocking aspect of NIO, is missing. So you can be a good java developer if you know how to traverse a directory structure recursively but have no idea about how to handle thousands of simultaneous requests on a socket or even if you don't know when to use regular IO and when to use NIO!!

What were they thinking?


Always be ready to learn anything, surely it will benefit you one day.
 
Jeanne Boyarsky
author & internet detective
Marshal
Posts: 34669
366
Eclipse IDE Java VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hmm. I see plenty of edge cases in that list. Just like they say you need to "know arrays" but they really mean you need to know subtleties.

Examples of such from that list:
  • What is a path vs a file. What can you do on each? (conceptual vs physical file)
  • What happens if you pass relative vs absolute paths to resolve and relativize
  • What happens if you move/copy a non-empty directory
  • What types of attributes you can now update
  • Globbing match patterns - I can think of a bunch of edge cases in here just like with reg exps .
  •  
    Paul Anilprem
    Enthuware Software Support
    Ranch Hand
    Posts: 3752
    10
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Jeanne Boyarsky wrote:Hmm. I see plenty of edge cases in that list. Just like they say you need to "know arrays" but they really mean you need to know subtleties.

    Examples of such from that list:
  • What is a path vs a file. What can you do on each? (conceptual vs physical file)
  • What happens if you pass relative vs absolute paths to resolve and relativize
  • What happens if you move/copy a non-empty directory
  • What types of attributes you can now update
  • Globbing match patterns - I can think of a bunch of edge cases in here just like with reg exps .


  • Thanks for replying. Yes, they really do mean that you need to know subtleties. But I think the situation here is different from arrays. Arrays are a fundamental language detail and a programmer must know because these are everywhere. Path vs File. Absolute path vs Relative Path, and all others that you've mentioned above are usually one time things. While dealing with this kind of stuff, you take a look at the API, write the code, and move on. I do not consider them fundamental to the understanding of NIO. It is not something that I would remember "by heart". Do you think it is as or more important than the stuff they left out?

    I am curious to know what do you think a certified programmer should know - what happens when you move/copy a non-empty directory or how or when to make use of the "non-blocking" aspect of NIO? I know, both would be nice. But what if you need to choose one.
     
    Jeanne Boyarsky
    author & internet detective
    Marshal
    Posts: 34669
    366
    Eclipse IDE Java VI Editor
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Paul Anilprem wrote:I am curious to know what do you think a certified programmer should know - what happens when you move/copy a non-empty directory or how or when to make use of the "non-blocking" aspect of NIO? I know, both would be nice. But what if you need to choose one.

    If I had to choose one, it would be non-blocking IO. However, the sprit of the the exam to date has been on knowing the basic APIs well so I can understand why they chose it.

    Although on second thought, I'd want them to know they could copy/etc files and not waste time inventing the wheel too.) I had to tell a teammate to refactor his sort algorithm to a one liner.
     
    Paul Anilprem
    Enthuware Software Support
    Ranch Hand
    Posts: 3752
    10
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Jeanne Boyarsky wrote:
    Paul Anilprem wrote:I am curious to know what do you think a certified programmer should know - what happens when you move/copy a non-empty directory or how or when to make use of the "non-blocking" aspect of NIO? I know, both would be nice. But what if you need to choose one.

    If I had to choose one, it would be non-blocking IO. However, the sprit of the the exam to date has been on knowing the basic APIs well so I can understand why they chose it.

    Although on second thought, I'd want them to know they could copy/etc files and not waste time inventing the wheel too.) I had to tell a teammate to refactor his sort algorithm to a one liner.

    You are right. I was only ranting I just felt that they went too deep into how these methods work. If you see the questions they had on path search, you will know what I mean. I would have preferred if they gave a cursory treatment to these API calls and include some details on the Non-blocking aspect. But I am sure they had their reasons.
     
    • Post Reply
    • Bookmark Topic Watch Topic
    • New Topic