Skip to main content

SCJD - Sun Certified Java Developer zdobyty!

Bez zbędnych wstępów, chciałem pochwalić się zdanym certyfikatem Sun Certified Java Developer (SCJD, CX-310-027), którego przyjemność zdawania umożliwiła mi moja ulubiona firma :-). Przyjemność tym większa, że wynik bardzo pozytywnie mnie zaskoczył (dodam, że próg wynosi 320/400):







SectionMaxActual
General Considerations:10090
Documentation:7070
Object-Oriented Design:3030
GUI:4031
Locking:8080
Data Store:4040
Network Server:4040
Total:400381

Ale nie o wynikach chciałem napisać, a podzielić się wrażeniami. Ponieważ szczegóły zadanie są tajne/poufne :-) - raczej ogólnymi.

Przede wszystkim certyfikat, złożony z zadania projektowego i eseju, raczej nie nauczy Was super-nowego-frameworku, biblioteki czy technologii. Swing + RMI i zakaz korzystania z jakichkolwiek zewnętrznych bibliotek.

Ale chyba nie o to chodzi - ten certyfikat to głównie szlifowanie i sprawdzanie "miękkich" umiejętności programistycznych. Kod musi być dobrze napisany, udokumentowany, korzystać z całej palety wzorców projektowych. Trzeba wykazać się znajomością podstawowego API (strumienie, wątki, sieć), ale żadnego EJB, serwletów, JPA. I w tej materii wypada bardzo dobrze - sporo się nauczyłem na płaszczyźnie projektowania (z głównym naciskiem na czytelność, nawet kosztem wydajności), pisanie Javadoków weszło mi w krew (w projekcie każdy publiczny element kodu musi być udokumentowany).

Jeśli zatem chcecie sprawdzić umięjętności programistyczne jako takie, a nie znajomość takiego czy innego API, SCJD jest bardzo dobrym wyborem. Napisanie projektu sprawdzonego czujnym okiem egzaminatorów z Suna (jedyny obok SCEA certyfikat wymagający pisania żywego kodu) daje wiele satysfakcji, zwłaszcza przy pozytywnym wyniku. Sam temat projektu też jest dość ciekawy - z reguły nierelacyjna baza danych na wielodostępnym serwerze i klient w Swingu komunikujący się po RMI lub socketach.

Na koniec kilka uwag technicznych:
  • maven sprawdził się znakomicie w tym dość specyficznym projekcie. Budował JAR, generował Javadoki, uruchamiał testy, zarządzał zależnościami testowymi (innych mieć nie można) i budował za pomocą assembly wynikowy artefakt ze spakowanym programem, dokumentacją i źródłami.
  • Dokumentację użytkownika dostarczyłem w formacie HTML generując ją również mavenem z DocBooka za pomocą docbkx-maven-plugin.
  • Formatowanie kodu w Eclipse Ganymede poradziło sobie z momentami zakręconymi standardami Suna (np. "Four spaces should be used as the unit of indentation. The exact construction of the indentation (spaces vs. tabs) is unspecified. Tabs must be set exactly every 8 spaces (not 4)").
  • Przed napisaniem projektu przeczytałem (czasem kartkując) SCJD Exam with J2SE 5 (autorstwa Andrew Monkhouse i Terry Camerlengo). Raczej warto.
  • Całość (od pierwszej linijki kodu do ostatniej linijki docbookowego XMLa) zajęła mi miesiąc, w sumie ponad 10 KLOC.
To tyle, szczerze mogę polecić ten certyfikat, chociaż do najłatwiejszych (ani najtańszych) nie należy.

Comments

  1. Gratulacje! Nie słyszałem o osobach, które podchodziły do SCJD, co tym bardziej podnosi rangę Twojego certyfikatu. Skąd w ogóle pomysł na ten certyfikat?! Zawsze zastanawiałem się, czym różni się SCJP oraz SCJD i teraz już mam - więcej projektowania. Samemu też muszę spróbować! (a nuż będę lepszy?! :P)

    ReplyDelete
  2. Cóż, nie czułem się specjalnie dobrze ani z serwletów, ani z EJB, stąd nie wybrałem SCWCD czy SCBCD (ale planuję podejść do obu w tym roku). Ponadto powyższe wymagają raczej wiedzy encyklopedycznej (testy, podobnie jak SCJP), natomiast SCJD wymaga napisania normalnego kodu, który będzie podlegał ocenie.

    O czym zapomniałem - drugim etapem jest esej, czyli kilka otwartych pytań w centrum certyfikacyjnym. Jeśli znamy dobrze swój własny kod i jesteśmy świadomi podjętych decyzji projektowych, nie powinien nastręczyć problemów.

    Jeśli masz chwilkę czasu - spróbuj, może będziesz lepszy z GUI :-).

    ReplyDelete
  3. Mnie nie ciągnie za bardzo akurat do scjd. Właśnie z powodu bazowania na swingu i rmi. mam inne priorytety :P

    a tak przy okazji - każdy element publicznego kodu udokumentowany, czyli pojadą po punktach, jak nie udokumentujesz getera i setera i domyslnego konstruktora? :P

    ReplyDelete
  4. SCJD nie jest certyfikatem sprawdzającym znajomość Swinga czy RMI - które to technologie na poziomie certyfikatu powinny być znane każdemu programiście Java. Chodzi raczej o sprawdzenie umiejętności programowania jako takiego - projektowania, dokumentowania, przejrzystości kodu i interfejsu użytkownika.

    Co do Javadoków - tak stanowi instrukcja, "każdy publiczny element". Instrukcja mówi też coś o automacie sprawdzającym kod w pierwszej kolejności, dopiero potem jest człowiek. Dlatego dla świętego spokoju lepiej pozwolić IDE wygenerować komentarze do getterów, setterów i tym podobnych konstrukcji :-(.

    ReplyDelete

Post a Comment