Seções iMasters
Certificações + Java

Entenda a Certificação SCJD – Parte 01

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 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:

  1. Considerações Gerais [80 Pontos] – avalia os critérios relacionados com a facilidade de manutenção do código.
  2. Documentação [50 Pontos] – avalia os critérios relacionados com a qualidade dos documentos requisitados.
  3. Projeto OOP [50 Pontos] – avalia os critérios relacionados com a qualidade da estrutura do projeto de classes, métodos e variáveis.
  4. GUI [70 Pontos] – avalia os critérios relacionados com a qualidade e com a facilidade apresentada nas interfaces gráficas do usuário.
  5. Bloqueio [80 Pontos] – avalia os critérios relacionados com a qualidade do controle de bloqueios.
  6. 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:

  1. Na primeira, fase peça ajuda a outras pessoas mais experientes para revisarem e corrigirem os erros em todos os documentos submetidos.
  2. 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:

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!

Comente também

1 Comentário

Flavio

Excelente post. Raramente vejo conteúdo tão bem feito na Internet.

Qual a sua opinião?