aspose file tools*
The moose likes Developer Certification (SCJD/OCMJD) and the fly likes How much assistance should be provided? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Developer Certification (SCJD/OCMJD)
Bookmark "How much assistance should be provided?" Watch "How much assistance should be provided?" New topic
Author

How much assistance should be provided?

Sarah Archer
Greenhorn

Joined: Jul 25, 2010
Posts: 19
The assignment element of the OCMJD is the critical part of the qualification. I think it is therefore important to ask how much help and assistance can be given without making the exam meaningless.

When I worked on my submission I designed and coded it before heading over to the JavaRanch. I then checked the main themes of the discussions to see if I had missed any important issues. Based on the discussions I made some minor modifications but the overall design and code remained the same. The forum was most helpful in allowing me to understand unconscious design decisions. e.g. the 48 hour rule was background information, not a requirement, and hence I did not implement it - it never occurred to met that other people may choose to code it.
I also enjoyed the social aspect of it - other people working on the same challenge as myself.

A lot of people seem to take a different approach. They head over the forum, find that simplest approach that is known to pass is a thin client big hashmap and start implementing it. They struggle to write code that reads the file format, but example code is at hand to help them with that. They also struggle to write proper multi-threaded code, but an excellent test harness is available. They still struggle, so they ask questions - often many questions.

This forum has helped me to think more clearly about the assignment but it not likely to have made a material difference whether I pass or fail. However, I get the impression that many people would not get through the exam without this forum.

I like the forum, many people are giving their time for free, and doing a great job helping others - but I do wonder whether they are doing too good a job.
Oladeji Oluwasayo
Ranch Hand

Joined: Sep 10, 2010
Posts: 101

Nobody spoon-feeds any other on this forum with working code so I do not think the aim of the whole stuff is being defeated. If you don't have the know how, the suggestions made here still will not make you pass. If you say this forum is not doing too good a work, I wonder what you will say of preparatory books like that of Andrew Munkhouse and Terry Carmalengo. At a point, I was stuck with hard to trace problems too but I got help from here without being spoon fed. learning where the traps are on a journey is not a sign of weakness, its a sign of strength. But I must say, I'm not totally opposed to your opinion too.


OCPJP 6, OCMJD 6
Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 5543
    
  13

You certainly have a point. That's why posting actual code is disallowed and removed when it's spotted. Otherwise it would be nothing more than a copy/paste exercise and lose its value completely.
Every developer still has to code the application herself. So you can take the easiest approach possible, but you still need to implement it, preferrably without any bugs Roberto's test harness is indeed a great resource, one I used myself too to discover my program had a concurrency issue. And it's well-known (and already said multiple times) when the test program does not run to completion you have a (big) problem. But you still have to make an analysis of the output yourself to spot the cause of the problem. If you can't do that, you can't ask for help.
And of course sometimes I have my doubts about someone pursuing this certification. But that's a feeling I have with other certifications too. And what's the value of these certifications? When you are a consultant they look nice on your cv and customers happen to like them a lot, but in my opinion they don't have a lot of value, simply because it's easy to pass the certification illicitly. But I took these certifications (and will take them in the future) because they are each time a valuable and instructive experience to me. And of course it's an additional benefit that customers like them on a cv as a consultant, but that's certainly not the main reason why I pursue a certification.

SCJA, SCJP (1.4 | 5.0 | 6.0), SCJD
http://www.javaroe.be/
Sarah Archer
Greenhorn

Joined: Jul 25, 2010
Posts: 19
Monkhouse/Camerlengo - I have mixed feelings.

They sketch out a general solution which is helpful, but their scenario differs quite a bit from URLyBird so you still need to do a lot of work yourself.

They take a fat client approach but leave dealing with the possibility that the client will crash holding locks as an exercise for the reader.

I was planning to design a "zero cpu" lock manager, but before I had fully worked out the design I decided that it was overkill. They offer a really neat "zero cpu" lock manager - which would certainly have helped me if I had gone that route - but they have only coded half the class - anyone who can finish it does not need the book.

Their code is stuffed full of read/write locks, re-entrant locks, and conditionals - all quite unnecessary. And finally their example code is not thread-safe unless I have misunderstood it [e.g. DVDFileAccess line 360 no locks are held allowing a record to be deleted in the middle of being modified]

As to how much assistance should be provided? Having thought about it, I think it is up to the candidate. The candidate has to decide how much help they will accept and still feel they have done an honest job on the exam.

Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 5543
    
  13

Sarah Archer wrote:Having thought about it, I think it is up to the candidate. The candidate has to decide how much help they will accept and still feel they have done an honest job on the exam.

I agree.

And about the book: in one thread Andrew Monkhouse confirmed they broke 1 must requirement deliberately to prevent a copy/paste of their sources.
Sean Keane
Ranch Hand

Joined: Nov 03, 2010
Posts: 581

I think it is worth bearing in mind that everyone knows that this certification is unsupervised and there is nothing to stop someone getting assistance. Whether it be the tiniest amount of assistance up to getting someone to complete the entire assignment for you. Nothing we do or say here will change that.

So it's probably worth asking what does it actually mean to pass this certification and how much is it actually valued before questioning how much assistance should or should not be given.

At the end of the day it is just like an exam, in the respect that you have to display that you can do something. For an exam, you have a bunch of material you study, then you take the exam to show how much you have learnt. Should it be frowned upon that a teacher showed you how to solve an exam question in preparation? Of course not - the teacher showed you, you learnt, you showed in the exam that you understood and could do it yourself. So why any differently here?

Different people are coming at this from different background and different levels of expertise. Just like studying for an exam and getting assistance with answering exam questions in preparation. It is the same with this assignment, some people will discuss and seek out solutions to particular parts of the assignment as they are not sure how to arrive at the solution themselves.

Other people with more experience may see this as some form as cheating simply because they think "well, I didn't have to go and discuss or ask someone so why should they". But that is merely being blinded by the fact that they have already learned the particular piece of information in the past from another source, like a book, or another person. Very little in life is unique, most of it we learn from some other source and merely reuse. I would suggest that anyone that thinks that their solution to this assignment is completely unique and all their own ideas is a little bit misguided.

So lets take a concrete example as mentioned by the original poster - using a hashmap as a cache. Take two people. One person who thought up of this idea themselves. A second who came to the forum and read about the idea. They both implement it themselves. Which person is the more deserving of the certification? Neither, both are equally deserving. At the end of the certification both of them are aware of using a cache as a solution for a particular problem. The only difference is that the first person knew it in advance of the certification. But that, in my mind, is what the certification is all about. Learning. The fact that someone else knew it before the certification is immaterial.

I think the most important thing, as Roel has already mentioned, is that actual complete solutions are not given. So large chunks of code that people could just copy and paste are not given. The candidate still has to produce a solution, implement it, and test it.


SCJP (1.4 | 5.0), OCJP (6.0), OCMJD
Chris Zaremba
Ranch Hand

Joined: Nov 22, 2010
Posts: 54

You also need to understand and justify your solutions in the txt file and exam. Personally I didn't have much experience of using RMI or swing before doing the assignment as I don't use them in my day to day work. It was a great learning experience.

I have nothing against asking for help but do think you should try a little research and attempt to solve a problem first. At least then you have a better idea of what to ask and what not to ask. At work I've started pointing certain lazy individuals to Let Me Google That For You. The web is full of useful (and useless) information, why not make use of it.


SCJA, OCPJP, OCMJD
Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 5543
    
  13

Chris Zaremba wrote:You also need to understand and justify your solutions in the txt file and exam.

That's true, but someone could write that for you (and preferrably the guy who developed the assignment for you too ). You could submit the assignment, study the choices.txt like crazy and take the essay exam (and you'll pass without having done something). That's why this certification also has little value as a reference, but for me it was a great learning experience. And such an individual should be busted during a (good) job interview.
Ixus See
Ranch Hand

Joined: Jul 17, 2011
Posts: 160
personally I don't see the point making life difficult for people, if that person has no interest to learn, you can choose not to provide answers but for me I will still provide answers because I know the person will have more queries and from questions I improve myself... I think if I can provide answers that meet that person's requirement instantly, is actually a plus point to myself. Many times I notice software engineers likes to provide answers they think believe is easy to understand but they forgotten the other person don't have the same knowledge as them.

A good team lead IMO shares his knowledge generously and write codes that other people can understand properly. (apart from understanding requirements of customer and managing.. but before you do that you must be able to gain the respect and approval of others)

I don't see myself as a higher being just because I know answers, I share my knowledge so that someone can take over my position so I can seek higher grounds and learn new stuff. but that is me and that is how I lead my team.

anyway it did happen a few times people take credit for my work, I got very upset at first, then I realize is a flattery ;) people only copy the best right?

I urge all of you to take a strife in life to make things easier for others, remember when we first started coding.. we hope to create application that people will enjoy using and solve their problems.. never lose sight of that!

* See a need feed a need!

Ixus See
Ranch Hand

Joined: Jul 17, 2011
Posts: 160
with regards to this assignment...

I don't see much value in it.. because a large part of the assignment focus on data.java.. sadly this has been replace by databases, they handle all the concurrency issues, and whatsoever.. better time would be spend on designing database that is normalized to BCNF(now that is a SKILL) but sadly even for database oracle has already provided a lot of ready to use schema which requires a bit of customization.

even for military application there is C2IEMDB by NATO

for design patterns there is very little coverage, even in current times.. MVC is handle by spring framework but is a good start into design patterns like MVC, factory, observer, facade. I agree I have seen a lot of developers who code just to meet the requirement and forgotten about maintainability. remember what i say about coding in a way other people can understand your codes? :P Implementing design pattern helps a lot, I love design patterns and i always preach it but sadly i don't have much chance to apply them.

hmm RMI is new to me but sadly I notice the real world implementation is actually very limited partly because it requires both end to use Java.. I see a lot of potential for it in middleware between hardware and application but sadly for hardware people tend to use c or c++....

The UI part? laughter at it... with java reflection, jgoodies and other UI related API, there is not much to learn from... maybe thats why they only focus on a few functions...

I think this is a good start for people who are still in university.. I would certainly hire a grad with this certificate and pay them more.. but for people with experience, it won't make much different.

so why am I taking this certification? because my company sponsor it and is free .. but I starting to think is not worth it.. hahaha.. hope I pass =X

I find a good user application(use by humans) requires usability and design patterns.. the rest are secondary. focus on this 2 field and you will earn tons of money and get many good pats on your shoulder by your bosses and your customers.

Still need a lots of help from you guys, hope you don't mind being candid here.

Chris Zaremba
Ranch Hand

Joined: Nov 22, 2010
Posts: 54

Ixus See wrote:with regards to this assignment...

I don't see much value in it.. because a large part of the assignment focus on data.java..



I agree in part with your answer but the aim of this assignment is not to show you know how to persist data but that you can given a specification, develop a solution that is robust and easy to maintain (by the mentioned junior developer). Although databases handle a lot of the concurrency issues there are plenty of other problems in the real world that require solid concurrency implementations.

Ixus See
Ranch Hand

Joined: Jul 17, 2011
Posts: 160
Chris Zaremba wrote:
Ixus See wrote:with regards to this assignment...

I don't see much value in it.. because a large part of the assignment focus on data.java..



I agree in part with your answer but the aim of this assignment is not to show you know how to persist data but that you can given a specification, develop a solution that is robust and easy to maintain (by the mentioned junior developer). Although databases handle a lot of the concurrency issues there are plenty of other problems in the real world that require solid concurrency implementations.



example? Till now I haven't seen major issues with concurrency if you do proper synchronization.

my company uses http://www.yourkit.com/... so any deadlock and memory issue, it will be root out instantly after an over night run of the application.


too bad I don't have chance to bring my code to my company and run Jprofiler, parasoft JTest and many other cool paid software! heehee
Chris Zaremba
Ranch Hand

Joined: Nov 22, 2010
Posts: 54

Surely proper synchronization leads to improved concurrency. They are closely (inversely?) related.
Oladeji Oluwasayo
Ranch Hand

Joined: Sep 10, 2010
Posts: 101

Who even does GUI client/server database apps these days without touching Beans/third party APIs/special frameworks/IDEs/Commercial DBMS/XXXX?
Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 5543
    
  13

Ixus See wrote:too bad I don't have chance to bring my code to my company and run Jprofiler, parasoft JTest and many other cool paid software! heehee

Don't you think a developer should be able to find bugs, memory leaks,... in a small program (like this assignment) by testing and using a bit of brain power? For me that's just one of the skills a good developer needs. What will you be doing if you start working for another company which doesn't have (or want to invest) in all these profilers?
Ixus See
Ranch Hand

Joined: Jul 17, 2011
Posts: 160
honestly I won't be working for such a company..

they are usually cheapskate that won't invest in quality coding. If company don't even invest in their product, how can I trust they will invest in their employees(me) and let alone their customers?

People whom don't appreciate such tools, won't appreciate how well you code. They only care about result, as long you deliver the functions on time.. the rest doesn't matter..

even if it makes code change difficult, it doesn't matter because they can always charge the customer for code change and additional functionality and make it harder for other companies to take over their work ;)



Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 5543
    
  13

Ixus See wrote:People whom don't appreciate such tools, won't appreciate how well you code. They only care about result, as long you deliver the functions on time.. the rest doesn't matter.

That's an interesting point of view. My feeling tells me it could/would be just the opposite, but that's maybe because I have very little (even none) experience with such tools these days. A few years back I used a profiler once to search for a resource leak my application had (I was able to locate and solve the issue). Until now I never worked for a company which sells commercial products, most of the application I helped developing are just used internally, so that might be another approach. You don't want a product you sold to thousands of clients to absorb all memory, that would be bad publicity.

But I'm still wondering how these tools help you code well. Let's say you write an application where you used a bunch of integer constants (where using an enum would be the better option). Is there a tool which will warn you about this code? Because that would result in well-written code and if your code is well-written it will be easy to understand, easy to maintain, (most of the time) contains less lines of code,... How will these tools make your code adhere to design principles like "code to an interface, not an implementation", "closed for modification, open for extension",...
Ixus See
Ranch Hand

Joined: Jul 17, 2011
Posts: 160
Roel De Nijs wrote:
Ixus See wrote:People whom don't appreciate such tools, won't appreciate how well you code. They only care about result, as long you deliver the functions on time.. the rest doesn't matter.

That's an interesting point of view. My feeling tells me it could/would be just the opposite, but that's maybe because I have very little (even none) experience with such tools these days. A few years back I used a profiler once to search for a resource leak my application had (I was able to locate and solve the issue). Until now I never worked for a company which sells commercial products, most of the application I helped developing are just used internally, so that might be another approach. You don't want a product you sold to thousands of clients to absorb all memory, that would be bad publicity.

But I'm still wondering how these tools help you code well. Let's say you write an application where you used a bunch of integer constants (where using an enum would be the better option). Is there a tool which will warn you about this code? Because that would result in well-written code and if your code is well-written it will be easy to understand, easy to maintain, (most of the time) contains less lines of code,... How will these tools make your code adhere to design principles like "code to an interface, not an implementation", "closed for modification, open for extension",...


Oh for internal customers, heehee companies usually don't invest in them, partly because it is a COST CENTER! most company provide very lousy hardware and forget about profiling tool because it all about cutting cost.

I went to a cost center for HR and finance the other day and their developers are still using Intel Pentium M desktop for development, they aren't even dual core!!!

What you are talking about is static code analysis, I doubt they can detect group constant together but they can detect if a "string" if it is used in a few classes, they will prompt you to create a constant for that, it can detect possible bugs and unreachable codes too.

Read up on parasoft JTest. they offer them, in a lot of safety related industry, parasoft J Test is a requirement.
Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 5543
    
  13

Ixus See wrote:Read up on parasoft JTest. they offer them, in a lot of safety related industry, parasoft J Test is a requirement.

I'll certainly do that. It could be a great valuable add-on to our development environment. And it does what I already do: check the code of team members for possible bugs, not using the framework we developed,... So it would be nice if that nitpicking I do could be taken (partially) out of my hands.
Sean Keane
Ranch Hand

Joined: Nov 03, 2010
Posts: 581

Find Bugs can be useful at times. Code coverage tools like Clover are also useful (there's similar free versions available). I use both of these on my assignment.
Ixus See
Ranch Hand

Joined: Jul 17, 2011
Posts: 160
Roel De Nijs wrote:
Ixus See wrote:Read up on parasoft JTest. they offer them, in a lot of safety related industry, parasoft J Test is a requirement.

I'll certainly do that. It could be a great valuable add-on to our development environment. And it does what I already do: check the code of team members for possible bugs, not using the framework we developed,... So it would be nice if that nitpicking I do could be taken (partially) out of my hands.


is not worth it if you are in a cost center, Parasoft JTest has a license to create your own rules, so you can check for the stuff you really want to do so.

I think both of us have about the same job just that I am more junior than you.
Sean Keane
Ranch Hand

Joined: Nov 03, 2010
Posts: 581

Along with FindBugs and Clover mentioned in my previous post, I also use Checkstyle which is free. I run them all as part of my build. But all three also have Eclipse plugins. I just run Checkstyle as an Eclipse plugin.

Using these three together, along with Unit tests, should have your codebase in good shape.

I'm sure there's plenty more free tools available.
Oladeji Oluwasayo
Ranch Hand

Joined: Sep 10, 2010
Posts: 101

I also downloaded checkstyle when I started the project but since Netbeans have embedded stuffs that do the thing, I ditched CheckStyle.
Sean Keane
Ranch Hand

Joined: Nov 03, 2010
Posts: 581

Oladeji Oluwasayo wrote:I also downloaded checkstyle when I started the project but since Netbeans have embedded stuffs that do the thing, I ditched CheckStyle.


Eclipse has too.
 
jQuery in Action, 2nd edition
 
subject: How much assistance should be provided?