quinta-feira, 5 de agosto de 2010

Entenda a Certificação SCJD

Pessoal;

Vejam o que a Wiki fala sobre Certificação:

Certificação é a declaração formal de "ser verdade", emitida por quem tenha credibilidade e tenha autoridade legal (...). Ela deve ser formal, (...) ser corporificada em um documento. A certificação deve declarar (...), explicitamente, que determinada coisa, status ou evento é verdadeiro. Deve também ser emitida por alguém, ou alguma instituição, que tenha fé pública, isto é, que tenha credibilidade perante a sociedade. Essa credibilidade pode ser instituida por lei ou decorrente de aceitação social.

Mais um artigo interessante do iMaster sobre Java. Certificações são super importantes na carreira de um programador, elas comprovam - para qualquer um ver - o quanto você conhece da linguagem.

A certificação Sun Certified Java Developer - SCJD oferece uma oportunidade única para os desenvolvedores Java colocarem toda a sua bagagem de conhecimento realmente em prática. Ela é destinada para aqueles já certificados na SCJP que desejam demonstrar proficiência avançadas utilizando os leques de tecnologias existentes no pacote JSE. Por isso, seu pré-requisito é possuir no mínimo a certificação oficial de programador.

O objetivo geral desta certificação é validar conhecimentos arquiteturais, combinados com importantes conceitos de engenharia de software, juntamente com uma grande porção das tecnologias encontradas no JSE: OOP, Exceptions, Logging, Collections, Threading, Socket, Serialization, File I/O, RMI e Swing.

O conteúdo da prova oferece um ótimo ambiente de aprendizado, no qual diferentes tecnologias podem ser combinadas com uma variedade de opções de soluções. A prova foi elaborada com o intuito de simular as circunstâncias do mundo real que um profissional pode encontrar no mercado de trabalho, por isso ela apresenta determinadas situações incompletas e duvidosas, fazendo com que cada candidato apresente atitude e dinâmica para encarar e resolver os problemas envolvidos na análise, no projeto e na implementação de um verdadeiro sistema.

A prova está divida em duas diferentes fases chamadas de Assignment e Essay, nas quais vale ressaltar a necessidade de efetuar dois pagamentos diferentes, uma para cada parte.

1. Assignment
Consiste em o candidato receber a documentação que descreve os requisitos e as situações de um sistema real, fazendo com que ele, então, tome as devidas decisões arquiteturais que resolvam, de forma coerente, o determinado contexto. Com isso, ele deve escrever um sistema relativamente pequeno, mas que seja suficiente para atender a todos os itens descritos no documento de especificação. Juntamente com o sistema, o candidato deve entregar três tipos de documentação:

Infra-estrutura - documentação de todo o código-fonte Java implementado, utilizando a tecnologia JavaDoc.
Usuário Final - documentação destinada para os usuários finais da aplicação, descrevendo: instalação, configurações, interfaces gráficas e funcionalidades.
Decisões - documentação das decisões significativas que o candidato teve que tomar relacionadas com dúvidas, incertezas e julgamentos envolvidos no projeto.
2. Essay
Consiste em o candidato prestar uma prova escrita de 90 minutos, na qual ele terá que responder algumas questões relacionadas com o desenvolvimento de seu projeto. Esta segunda fase tem dois objetivos. Um é questionar o candidato sobre a coerência do seu entendimento nas questões que o levaram a tomar as decisões descritas no documento de decisão. O segundo é provar sua autoria no código-fonte submetido na primeira parte do projeto.

Dicas Gerais
A filosofia desta certificação consiste no candidato entrar na prova já recebendo o numero máximo de pontos, que é 400. Cada tópico cobrado tem um peso de pontos pré-determinado:

Considerações Gerais [80 Pontos] - avalia os critérios relacionados com a facilidade de manutenção do código.
Documentação [50 Pontos] - avalia os critérios relacionados com a qualidade dos documentos requisitados.
Projeto OOP [50 Pontos] - avalia os critérios relacionados com a qualidade da estrutura do projeto de classes, métodos e variáveis.
GUI [70 Pontos] - avalia os critérios relacionados com a qualidade e com a facilidade apresentada nas interfaces gráficas do usuário.
Bloqueio [80 Pontos] - avalia os critérios relacionados com a qualidade do controle de bloqueios.
Fluência da Linguagem [70 Pontos] - avalia os critérios relacionados com a língua inglesa.
Durante as duas fases da certificação, os avaliadores descontarão pontos proporcionais naqueles tópicos nos quais o candidato não conseguiu cumprir os critérios adequadamente. O numero mínimo para ser aprovado é de 320 pontos. Seguem, então, algumas dicas que eu acho importantes relacionadas com o conteúdo básico que um provável candidato deve possuir:

Inglês
Diferentemente de outras certificações, nesta o candidato deverá entregar vários documentos na primeira fase e prestar uma prova contendo somente perguntas dissertativas, nas quais ele deverá possuir o básico do inglês. Qualquer erro pode colocar o entendimento do avaliador em dúvida, fazendo com que ele facilmente desconte pontos. A minha indicação é para os candidatos sem o inglês básico adiarem essa prova, deixando-a para quando estiverem melhor na língua. Aqueles com inglês regular podem até tentar, sabendo que as coisas podem não dar certo. De qualquer forma, seguem duas dicas:

Na primeira, fase peça ajuda a outras pessoas mais experientes para revisarem e corrigirem os erros em todos os documentos submetidos.
Na segunda fase, elabore e estude algumas frases "chavões" para que possa chegar bem preparado com o objetivo de encaixar as repostas nos contextos das questões. Alguns exemplos seriam:
I decided to create?
I decided to implement?
I decided to use (X) because?
I decided to use the following?
I decided not to use?
I decided to use (X) instead of (Y) because?
In my opinion, there was no need to?
I implemented a class called (p1.p2.Nome) that?
Arquitetura de Sistemas
O candidato necessitará definir e projetar uma arquitetura para a implementação do suposto sistema. A questão complicadora é que ele deverá justificar consistentemente no documento de decisões todas as motivações que o impulsionaram para isso. Qualquer discrepância que coloque em dúvida a integridade ou a autenticidade da solução poderá fazer o avaliador descontar pontos. A minha dica aqui é para que o candidato invista em estudar livros e materiais específicos no assunto. Leitura obrigatória do livro do Martin Fowler:

Princípios de OOP
Dentro do contexto da arquitetura, o candidato também estará sendo avaliado na qualidade da infra-estrutura de classes elaborada na solução entregue. Com isso, todo candidato tem que, obrigatoriamente, saber o mínimo dos velhos e já conhecidos princípios de OOP, denominados SOLID. A minha dica de livro aqui é o de análise e projeto OOP da Head First:

Padrões de Projeto
Continuando a pontuação na qualidade da infra-estrutura de classes, gostaria de acrescentar um ponto importante: um bom projeto de classes sempre está recheado de padrões de projetos em sua estrutura. Além da leitura do livro do Martin Fowler já indicado, seguem outras indicações de livros consagrados:

Java Code Convention
O projeto deve ser implementado usando os padrões formais de escrita da indústria Java, e o candidato deve estar totalmente familiarizado com eles. A dica aqui é o candidato estudar e aprender a escrever código Java 100% compatível com a convenção oficial.

Java Doc
O projeto de classes deve ser completamente documentado usando a tecnologia Java Doc. A dica aqui é o candidato aprender a escrever e a utilizar adequadamente os recursos do Java Doc.

Tecnologias JSE
O projeto precisará do domínio razoável de algumas tecnologias existentes dentro do JSE, como Logging, Threading, Socket, Serialization, File I/O, RMI e Swing. A minha dica aqui é para que cada candidato faça uma auto-análise realmente verdadeira e procure, assim, livros e tutoriais específicos sobre cada tópico. Um ótimo livro que faz um resumo razoável do conteúdo é o único existente específico para a prova SCJD:

Engenharia de Software
Durante a implementação do projeto, o candidato deve saber lidar com alguns conceitos básicos de engenharia de software para tomar determinadas decisões relacionadas com o contexto da solução requisitada. Alguns deles seriam: Bloqueio, Concorrência, Paginação, Ordenação, Classificação, Cacheamento etc. A dica aqui é: fica a cargo de cada candidato correr atrás de artigos, tutoriais e materiais de embasamento conceitual relacionados com eles, uma vez que não existe uma única literatura reunindo todos. Um bom começa seria o livro:

POJO In Action - Chris Richardson que não tem o foco da prova, mas que aborda com sucesso a maioria dos tópicos.
Algo que eu gostaria de deixar claro é que algumas certificações de TI possuem literaturas específicas que cobrem todo o conteúdo da prova, fazendo o candidato ficar bem cômodo no momento de estudar. A prova SCJD não é assim! Nela, o candidato inevitavelmente terá que investir bastante tempo de estudo em vários conteúdos diferentes com o objetivo de acumular uma série de informações correlacionadas.

Receita de Bolo
Para organizar as idéias, eu gostaria de ajudar os candidatos interessados passando uma receita de bolo. Aqui está ela:

1. Levante o que precisa ser aprendido - junte todas as dicas e faça uma listagem bem real daquilo que você acha que precisa aprender ou melhorar.

2. Plano de estudo - com base na listagem, faça um plano de estudo para cada tópico, investindo de acordo com seu tempo útil. Invista tempo estudando livros, tutoriais e fazendo exercícios isolados de cada tópico.

3. Livro SJCD Monkhouse - depois estudar cada tópico individualmente, agora é hora de linkar todo o conteúdo. Este é o momento ideal e propício para o candidato investir tempo estudando o livro específico da SCJD, que reúne e compila todo o material envolvido na prova.

4. Projetos exemplos - após entender o conteúdo no geral, é de grande ajuda o candidato brincar com algum projeto real da prova. O objetivo deste passo é fazer o candidato ter em mãos algum projeto no qual ele possa executar, depurar, visualizar e ter um entendimento da mecânica da coisa. Seguem algumas dicas:

No livro da SCJD indicado, há um projeto chamado de DennyDVD, que foi elaborado pelo autor justamente para ser usado para estudo. Ele contém os recursos necessários que contemplam o conteúdo da prova. Qualquer um pode fazer download do código-fonte no site oficial. Para todas as informações, consulte o próprio livro.
No revista Mundo Java edição 40 (agora conhecida como MundoJ), existe um ótimo artigo escrito pelo meu brow Roberto Perillo que aborda todos os detalhes da certificação. No artigo, é implementado um exemplo que também cobre aspectos da prova que também pode ser usado como material de estudo. Veja a revista para todas as informações.
Eu posso disponibilizar o código-fonte do projeto que eu fiz quando fui aprovado nesta certificação. Para todas as informações, entre em contato comigo.
5. Projeto Oficial - depois de todos os passos acima, o candidato pode respirar fundo, tomar coragem para pagar a primeira fase, baixar a especificação e começar o seu projeto.

Mesmo depois de tudo isso, muitas dúvidas podem aparecer durante a elaboração do projeto. Um ótimo lugar para resolver isso é o fórum do JavaRanch, que é ponto de encontro de todas as pessoas que já prestaram a prova com sucesso e daqueles candidatos que atualmente estão prestando. Minha dica é, antes de perguntar algo, procure se a questão já não foi discutida anteriormente. Faça boas amizades no fórum que várias pessoas te ajudarão nas mais diversas dificuldades.

Eu também me coloco à disposição para ajudar qualquer interessado em investir na prova. Quero te adiantar que não será fácil, mas você só saberá o quanto aprendeu depois que passar pelo processo. Este é o artigo 1 de vários que eu escreverei sobre outras dicas relacionadas com esta prova. Um grande abraço e nos vemos no próximo!

Nenhum comentário:

Postar um comentário