Monday, July 22, 2013

Introduction – Certification Steps

In the previous few posts, we took a high level look at what this SCJD certification is and the eligibility requirements. If you are reading this article it means that you are all geared up to embark on an ambitious journey towards this certification.

In this section you will be going through chapters that cover topics on the certification steps as well as a high level look at how your project submission will be graded.

To start with, unlike other Java certifications which are Q & A based, the SCJD exam is a hands-on scenario where you are expected to create and deliver a full-fledged software project. Remember, you cannot get this certification by just memorizing a few key concepts and remembering the answers. You need real life experience and capabilities to take your project through the full Software Development Life Cycle (SDLC) and deliver it.

The reason why 90% of the failed software projects fail is “Insufficient or Improper Planning”

If you want your certification attempt to succeed, I would suggest you think long and hard to decide how you will be approaching your project. I am not talking about designing the project solution. That will take many days to figure out and you will need that time to create a robust solution & design. I am talking about the high level project plan where “Design” too is one of the elements.

One of the key differences between Technical people and Managers is the fact that the techie guys are not interested in Management and are great at doing the design & coding part when a manager hands them the tasks and keeps them on track. Unfortunately, as part of this certification attempt, you need to take care of the project management part yourselves and hence if you are someone who doesn’t like management or aren’t comfortable doing it, it is high-time you came out of the non-manager closet and try your hands at it. I am not saying that you need to be a top-notch project manager in order to succeed in this certification attempt because that isn’t what is expected out of you. You are a technical expert and you are trying to prove that by attaining this certification. However, even the best technical experts need some basic management skills which will be essential and that is what is expected from you through the course of this certification attempt.

Your plan should be simple. You aren’t building the next super computer. You are just building a small software project for your certification. So, the plan must include details like when you will finalize the scope of the project, when you will start the design etc.

If you are tempted to think “I have enough experience, I can figure out things as we move on…” please stop. This is the biggest reason why people fail in this certification and why this certification is so elusive.

Being someone who moved over the project management stream of work after being a techie guy for many years, I can understand the temptation to start work without proper planning. The sad truth is, as long as I was just a techie guy I never realized the shortcomings of beginning work without proper planning. If I think back at my career and see what I could’ve done better, the first thing that comes up is I could’ve planned things better, it could’ve saved me loads of time I spent slogging…

Anyways, having good software development methodology and plan is what distinguishes Pro’s from junior developers.

Summary of this Chapter:

Do not start writing code for this project unless you have understood the project requirements and have formally created a requirements document. This applies to real life too but in real life you will have a project manager behind your back who will be running the show in terms of processes. But, in this case you are on your own. To ensure that you don’t miss anything that is required as part of the project, make sure to document the requirements and key deliverables. Once you document your requirements and deliverables you can at any point in time go back to it and double-check to confirm that you are making progress in the right direction for your project.

Prev: Are you Eligible for the SCJD/OCMJD certification?

Tuesday, May 14, 2013

Are You Eligible for the SCJD/OCMJD Certification?

If you are thinking about taking the OCMJD certification this article will help you arrive at a decision. If you have already decided to take it, I still would suggest you go through this article to double-confirm that you are indeed eligible for taking the exam.
The SCJD certification is designed for developers who are well versed in Java. Of course, you are expected to know the basic structure and syntax of the Java programming language. Beyond that, your ability to design and build a moderately challenging application that could be the basis for a production-level program will be tested.

You need to be aware of several aspects of the assignment. Although you can still pass without doing the activities mentioned in the following list, you'll do better if you use Unified Modeling Language (UML), plan a software development process, use object-oriented analysis and design, and meet the assignment requirements in the downloaded instructions. Generally, candidates who have passed this certification have used industry-standard practices, including object-oriented technology and software development methodologies: requirements gathering and analysis, system architecture and design, implementation, testing, and deployment.

I repeat, many of the articles about the practical exam part are not mandatory to be followed. These are the industry wide best practices which will significantly help you complete the project. However, it is entirely up to you if you want to follow it or not.

The following activities are the most helpful in trying to achieve this certification:
• Analyze the project requirements to define the problem domain and the requirement list.
• Design an application architecture that meets the assignment requirements within the stated constraints (for example, must use Swing and JTable components).
• Describe your solution clearly and accurately, including the key application features and the development methodologies and techniques you used.
If you have worked as a Lead or Manager for any IT Project, you will realize that the points mentioned above are some of the biggest pain points faced by us.
If you want to summarize the requirements or eligibility criteria for the exam, we can state that the candidate must have many years of Java Programming experience and can design/build a high quality, best performing system. However, this statement is ambiguous and can be interpreted in any way you feel.
To avoid such misinterpretations, the following are some of the key capabilities you must possess if you want to take up this exam. If you already have many of them, you are ready to tackle the certification project. You will learn the characteristics you don't have as you work through the assignment. If you have only a few of these characteristics, however, you should consider studying and practicing more before tackling the SCJD certification.

The certification tests your ability by expecting you to be capable of the following:
• Design Java programs using the tools in latest JDK Version (As per the Exam)
• Have a thorough understanding of programming in Java.
• Have experience in the systems development process.
• Explain the object-oriented software development process.
• Be able to model the software development process.
• Be proficient with a development methodology, such as the waterfall methodology, Extreme Programming, or Rational Unified Process (RUP). – Any one of the above would suffice.
• Use the wait, notify, and notifyAll methods in the appropriate places to avoid thread blocking.
• Understand how the Java Virtual Machine (JVM) starts and runs standalone and networked applications.
• Design strong error handling, including throwing and catching exceptions.
• Analyze the downloaded instructions to determine the assignment's functional requirements.
• Use Java's conditional and loop constructs and flow-control break and continue statements.
• Understand how to declare a class as an interface and then implement that interface in a concrete class.
• Understand how to use anonymous classes for Swing events.
• Be familiar with phases and documentation involved in requirements gathering, requirements analysis, architecture, design, implementation, testing, and deployment.
• Take advantage of the benefits of encapsulation and inheritance in Java's object-oriented design.
• Effectively use overloading and overriding methods in inheritance relationships.
• Handle multiple threads in your code with the synchronized keyword to avoid data corruption in a network-capable application.
• Understand how to implement Java I/O and graphical user interfaces (GUIs) that follow Human/Computer Interaction (HCI) principles.
• Properly package and document your solution to make it clear to the evaluator that you met all requirements.
• Use design patterns, such as Model-View-Controller and Adapter Patterns.
• Document code in a way that takes advantage of javadoc, which is required.

As you can see, many of the requirements above scream – Experience & Expertise blatantly. That is why it is mandatory that you pass the basic or beginner level SCJP or OCPJP exam before you take this up.

Prev: About the SCJD/OCMJD Certification

Next: Introduction - Certification Steps

Monday, May 13, 2013

About the SCJD/OCMJD Certification

If you are reading this article, it means that you are thinking or have decided about taking the OCMJD (formerly SCJD) Certification. Let me start off by congratulating you on this career altering decision.

The Java certification program consists of four certification exams:
Programmer exam — The Programmer exam tests the candidate's knowledge of the Java language and basic application programming interface (API) packages.
Developer exam — The Developer exam tests the candidate's ability to complete an extended programming assignment and answer questions about issues and trade-offs involved in completing the assignment. Programmer certification is a prerequisite to Developer certification.
Web Component Developer exam — The Web Component Developer exam tests the candidate's knowledge of developing Java Web applications using Java servlets and JavaServer Pages (JSP). The exam consists of 60 multiple-choice questions. Programmer certification is a prerequisite to Web Component Developer certification.
Architect exam — The Architect exam tests a candidate's familiarity with the technologies used to build Java-based enterprise applications and the candidate's ability to resolve issues in Java application design. This exam focuses on much higher-level software- and system-engineering skills than the other exams

Purpose of the OCMJD/SCJD Certification:

The purpose of this certification is to see whether you can do a full object-oriented analysis and design cycle. The assignment has many subtle aspects that are easy to overlook, including gathering requirements accurately from the instructions, making a decision about extending versus modifying, and implementing design patterns correctly.

Do you understand object-oriented development? Many people can theoretically explain what OOD is but if you ask them to practically use that in developing/designing a system, they will fail miserably. This certification assignment forces programmers to step up from coder to object-oriented analysis and design. During the course of this series on the SCJD Certification, we will use UML for design and also to describe software components.

I hope you are in the practice of doing the same because UML has become the lingua franca of software design artifacts these days. UML enables you to draw a picture of an application that everyone can understand. For example, it's easier to see a design pattern in your project if you depict it with UML before writing the code. You don't need special software; just paper will do for this assignment. Of course, creating UML diagrams is easier if you have Visio or the market-best software MagicDraw UML.

The assignment requires you to apply design patterns as required. These patterns dictate the best way to define your objects and their relationships. Patterns are more than just another requirement; their proper use facilitates your overall development effort.

What this certification can do For You?

One of the results of Java's popularity is the high demand for skilled Java programmers and developers. However, because of Java's brief existence, experienced Java programmers are hard to find. If you have had the fortune or should I say misfortune of trying to hire a senior Java programmer for your project, you would know that just by seeing the number of years someone has worked in Java does not qualify them as a Senior or Experienced Programmer. This is where the OCMJD/SCJD Certification comes into play.

Getting the OCMJD Certification validates your claim as a top-notch Java Professional who has solid experience in the industry. You can demand a higher pay level and a better role with the same no. of years of experience as compared to a guy who doesn’t have your certification credentials.

Next: Are You Eligible for the SCJD/OCMJD Certification?

© 2013 by All rights reserved. No part of this blog or its contents may be reproduced or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without prior written permission of the Author.


Google+ Followers