Qualifikationsprofil Frank Caputo

Frank Caputo
Softwarearchitekt/Teamlead
Ja­va-EE-Spe­cia­list

JSF-Ex­pert-Group-Mem­ber

MVC-Ex­pert-Group-Mem­ber

Ja­va­Script-Spe­cia­list

Jo­hann-Mohr-Weg 24d, 22763 Ham­burg
Tel: 0177 6161813

Persönliche Daten

Ge­burts­da­tum 11. No­vem­ber 1973
Ge­burts­ort Bad Harz­burg
Fa­mi­li­en­stand 2 Kin­der
Na­tio­na­li­tät deutsch

Tätigkeitsschwerpunkte

Sprachkenntnisse

Deutsch Mut­ter­spra­che
Eng­lisch gut in Wort und Schrift
Ita­lie­nisch Grund­kennt­nis­se
La­tein gro­ßes La­ti­num

Alt­grie­chisch Gra­e­cum

Arbeitsweise

Philosophie

Trotz mei­ner jun­gend­li­chen Lei­den­schaft für das Pro­gram­mie­ren, ent­schied ich mich nach der Schu­le für das Stu­di­um der Fä­cher La­tein und Ma­the­ma­tik. Vor al­lem durch das La­tein­stu­di­um ent­wi­ckel­te ich mein Sprach­ge­fühl. Die­ses Sprach­ge­fühl präg­te nach­hal­tig mei­ne Art und Wei­se Soft­ware zu ent­wi­ckeln. So sind für mich De­sign Pat­terns rhe­to­ri­sche Stil­mit­tel, die mir hel­fen, mich im Code aus­zu­drü­cken. Over­en­gi­nee­ring ist für mich ein­fach nur in­halts­lee­res Ge­re­de, das oft die fach­li­chen An­for­de­run­gen ver­birgt. Aus mei­ner Sicht ist aber Code nur les­bar, wenn man die Do­mä­ne dar­in wie­der­fin­den kann. Da­her bin ich ein gro­ßer An­hän­ger des do­mä­nen­ge­trie­be­nen De­signs.

Ich bin über­zeugt, dass man nur mit ei­ner ganz­heit­li­chen Sicht auf ein Pro­jekt wirk­lich gu­te Soft­ware­ar­chi­tek­tur ab­lie­fern kann. Als Soft­ware­ar­chi­tekt in Web­pro­jek­ten ar­bei­te ich so­wohl im Ba­ckend als auch im Front­end und ge­he im Zwei­fel bis auf die Netz­werk­kar­te her­ab.

In den vie­len Jah­ren mei­ner Ent­wick­lungs­tä­tig­keit ha­ben mich auch zu­neh­mend die so­zia­len As­pek­te der Teams in­ter­es­siert. Da­her wen­de ich ger­ne mei­ne Kennt­nis­se in päd­ago­gi­scher Psy­cho­lo­gie, wie z.B. Lern- und Leis­tungs­mo­ti­va­ti­on, an.

Wich­ti­ge Punk­te sind für mich die Wirt­schaft­lich­keit und Zu­kunfts­si­cher­heit der Soft­ware. Ich be­trach­te im­mer auch den Be­trieb und die Ver­füg­bar­keit von mög­li­chen Mit­ar­bei­tern. So macht es für mich nur sel­ten Sinn, Auf­wän­de von der Ent­wick­lung in den Be­trieb zu ver­le­gen. Eben­so we­nig Sinn macht es, auf we­nig ver­brei­te­te Pro­gram­mier­spra­chen zu set­zen, wenn die Soft­ware dau­er­haft wei­ter­ent­wi­ckelt wer­den soll.

Es macht mir un­ge­heu­ren Spaß, mein Wis­sen wei­ter­zu­ge­ben. Auch des­we­gen bin ich ein gro­ßer Freund des Pair­pro­gramming und ge­be auch ger­ne Schu­lun­gen in mei­nen Spe­zi­al­ge­bie­ten.

Kernkompetenzen

Allgemeine Werkzeuge und Techniken

Die fol­gen­de Auf­lis­tung ent­hält ei­ni­ge Schlag­wör­ter, Soft­ware­sys­te­me und Tech­no­lo­gi­en, mit de­nen ich mich im Lau­fe der Zeit aus­ein­an­der ge­setzt ha­be. Sie ist we­der nach Qua­li­tät noch nach Quan­ti­tät sor­tiert:

Ja­va EE 7, JSF 2.2, EJB 3.2, JPA 2.1, Face­lets, Ja­va­Script, An­gu­lar­JS, jQue­ry, Zep­to, HTML5, noS­QL, Mon­goDB, mor­phia, REST, Glass­fish, Pa­ya­ra, Serv­lets, JSP, JDBC, Swing, Web­ser­ver, Ap­p­li­ca­ti­on­ser­ver, TCP/IP, HTTP, HTML, CSS, Ajax, App­lets, XML, DOM, XSL, XSLT, SOAP, UML, Ja­va SE 8, We­bOb­jects, EOF, GIT, CVS, Sub­ver­si­on, Per­force, Cle­ar­Ca­se, JU­nit, HttpU­nit, Pas­cal, POP, IMAP, SMTP, SQL, nginx, hapro­xy, Apa­che, CGI, Shell-Scrip­t­ing, App­le­Script, De­sign-Pat­terns, Ex­tre­me Pro­gramming, Scrum, Soft­ware­ent­wick­lung auf Zu­ruf, TDD, Ora­cle, Post­greS­QL, Apa­che Der­by, Eclip­se, WO­Lips, DOM4J, Ma­ven, Ant, Xa­lan, Xe­r­ces, Net­Be­ans, In­tel­liJ IDEA

Betriebssysteme

Mac OS X, Li­nux, So­la­ris, Win­dows, HP-UX

Programmiersprachen

seit 1996 Ja­va (App­let­ent­wick­lung, Desk­to­p­ap­pli­ka­tio­nen mit AWT und Swing, Kon­so­len­ap­pli­ka­tio­nen, Ser­ver­soft­ware, We­bOb­jects, Ja­va EE 6/7), Ja­va­Script, Tur­bo Pas­cal, x86 As­sem­bler, Del­phi, App­le­script, OGNL, HTML, XML, Ba­sic, Shell­skrip­te, XML, C-Kennt­nis­se

Netzwerke/Kommunikation

TCP/IP, UDP, IP, SMB, App­le­talk, HTTP, FTP, SOAP, POP, IMAP, SMTP, NIO

Relevante Tätigkeiten/Projekte (chronologisch absteigend)

  1. 10/2015 - heute

    Chief­ar­chi­tect/Team­auf­bau bei ei­nem Star­t­up im Car­sha­ring-Be­reich
  2. 06/2011 - 06/2016

    Chief­ar­chi­tect/Team­auf­bau Lot­te­ry­plat­form, Glass­fish, Mon­goDB, Ja­va EE, An­gu­lar­JS, jQue­ry, Zep­to, HTML5
  3. 2013 - heute

    Durch­füh­rung tech­ni­scher Due Di­li­gen­ces für Ri­si­ko­ka­pi­tal­ge­ber
  4. 2012 - heute

    JSF Ex­pert Group Mem­ber. z.B. Spe­zi­fi­ka­ti­on und Re­fe­renz­im­ple­men­tie­rung „JSF Re­sour­ce Li­bra­ry Contracts“ und Re­fe­renz­im­ple­men­tie­rung „Passth­rough Ele­ments“.
  5. 04/2012 - 12/2012

    Re­fac­to­ring und Per­for­man­ce­tu­ning Pro­duct Ca­ta­lo­gue für ei­ne gro­ße Ham­bur­ger Ree­de­rei
  6. 02/2011 - 05/2012

    Re­fac­to­ring und Per­for­man­ce­tu­ning CM-En­gi­ne für ei­ne gro­ße Ham­bur­ger Ree­de­rei; Be­ra­tung der Ar­chi­tek­ten bzgl. Ja­va EE.
  7. 
10/2008 - 12/2010

    Se­ni­or De­ve­l­oper Ba­ckend / Chef­ent­wick­ler bei edict: Ar­chi­tek­tur, Code-Re­views, Coa­ching, Trou­ble­shoo­ting, An­ha­cken, Kon­zep­ti­on
  8. 05/2005 - 09/2008

    fe­der­füh­ren­der Front­end­ent­wick­ler bei Any­bet, Auf­bau ver­schie­de­ner Man­dan­ten­platt­for­men. Kon­zep­ti­on und Ent­wick­lung des sog. Skin­nings (Man­dan­ten­fä­hig­keit), Per­for­man­ce­tu­ning, SEO, AJAX-ba­sier­tes Sport­wett­an­ge­bot
  9. 12/2004 - 05/2005

    Pro­jekt­mit­ar­beit bei Flu­xx.com/Any­bet: z.B. Kon­zep­ti­on und Im­ple­men­tie­rung der Mehr­spra­chen­fä­hig­keit, Auf­bau der Sport­wet­ten­platt­form ja­xx.com
  10. 08/2004 - 09/2004

    Pro­jekt SMM Deut­sche Te­le­kom: (NDA)
  11. 04/2004 - 08/2004

    Re­launch ja­xx.de Pro­jekt­mit­ar­beit bei Flu­xx.com/Any­bet
  12. 11/2003 - 03/2004

    Pro­jekt Bild­da­ten­bank und au­to­ma­ti­sier­te Ka­ta­log­pro­duk­ti­on für Zapf-Crea­ti­on: Im­ple­men­tie­rung des XSLT für das Front­end, HttpU­nit-Tests für das Front­end, Mit­ar­beit am Ba­ckend.
  13. 6/2003 - 06/2004

    Pro­jekt web­ba­sier­te Soft­ware für ver­netz­te Ar­beits­ver­mitt­lung für Job­Sync Göt-tin­gen: Kom­plett­ent­wick­lung des Pro­jekts auf Ba­sis von Frame­works von clus­ter9 und We­bOb­jects. Kun­den­be­treu­ung im ite­ra­ti­ven Ent­wick­lungs­pro­zess. Das Front­end lie­fert XML, das per XSLT in HTML trans­for­miert wird.
  14. 8/2002 - 3/2003

    Pro­jekt web­ba­sier­te Bild­da­ten­bank für Kraft-Foods Nor­way: Ent­wick­lung von Front­end­kom­po­nen­ten und Da­ten­bank­an­bin­dung mit EOF, Kun­den­be­treu­ung.
  15. 3/2002 - 8/2002

    Pro­jekt Tier­haus­ver­wal­tung für das Max-Planck-In­sti­tut für bio­phy­si­ka­li­sche Che­mie in Göt­tin­gen: Kom­plett­ent­wick­lung ei­ner web­ba­sier­ten An­wen­dung zur Ver­wal­tung der Tier­häu­ser des MPI.
  16. 10/2001 - 04/2002

    Pro­jekt Uni­fied Mes­sa­ging für die Deut­sche Te­le­kom: Trou­ble­shoo­ting, Mit-ar­bei­ter­schu­lung Ja­va/We­bOb­jects/CVS, Por­tie­rung der be­ste­hen­den Ap­pli­ka­ti­on auf We­bOb­jects 5, Er­set­zen ei­ner pro­prie­tä­ren Mail­schnitt­stel­le durch Ja­va­mail.
  17. 01/2001 - 03/2001

    Pro­jekt Ca­pa­ci­ty Plan­ner: Pro­jekt­pla­nung für Team­ma­na­ger über In­ter­net/In­tra­net. Ein­ge­setz­te Sys­te­me: We­bOb­jects (Ja­va, Ora­cle, Ja­va­script, HTML). Die Auf­ga­ben wa­ren Ba­ckend­ent­wick­lung, Tech­ni­sche Pro­jekt­lei­tung, Per­sis­tenz­schicht, in­te­gra­ti­ve Im­ple­men­tie­run­gen zur An­bin­dung an Kos­ten­rech­nungs­sys­te­me und Zeit­ma­nage­ment­sys­te­me so­wie Tech­ni­sches Con­sul­ting.
  18. 06/2000 - 09/2001

    Pro­jekt Ba­sis­tech­no­lo­gie bei INIS GmbH Kas­sel: Pro­jekt­lei­tung, Pro­gram­mie­rung, Kon­zep­ti­on und De­sign des ge­sam­ten Pro­jek­tes.
  19. 01/1998 - 05/2000

    
Pro­jekt mo­du­la­rer Chat­cli­ent inkl. GUI-Buil­der und Cli­ent für ein selbst­ent­wi­ckel­tes Mes­sa­ging­sys­tem in Ja­va/Swing. Die Auf­ga­ben wa­ren Kon­zept­ent­wick­lung, Pro­gram­mie­rung und die Er­stel­lung ei­nes Ge­schäfts­plans.

Ausgewählte Projekte/Tätigkeiten (chronologisch absteigend)

Chiefarchitect/Teamaufbau Carsharingplatform (2015 - heute)

Als Chief­ar­chi­tect baue ich ei­ne Car­sha­ring­plat­form und das Tech­nik­team auf. Ich schu­le den CTO so­wohl in den be­nö­tig­ten Hard- und Softs­kills und ge­be Vor­ge­hens­wei­sen wei­ter, die ein Star­t­up schnell aber den­noch nach­hal­tig ans Ziel brin­gen.
Das Ba­ckend ba­siert auf Ja­va EE 7 mit Mon­goDB und be­steht aus ver­schie­de­nen Self Con­tai­ned Sys­tems mit ei­nem Shared Ker­nel. Es gibt kein Web­front­end für die En­du­ser. Für die Smart­pho­ne-Apps steht ei­ne REST-API ba­sie­rend auf JAX-RS zur Ver­fü­gung. Die Platt­form kommt oh­ne klas­si­sche Ad­mins aus, da wir kom­pro­miss­los auf AWS set­zen.

Chiefarchitect/Teamaufbau Onlinelotteryplatform (2011 - 2016)

Als Chief­ar­chi­tect ha­be ich so­wohl die Soft­ware­ar­chi­tek­tur als auch das Ent­wick­lungs­team von Grund auf auf­ge­baut. Für das Kern­team ha­be ich den CTO, ein Ba­ckend­ge­nie und ei­nen Front­end­spe­zia­lis­ten aus­ge­sucht und ein­ge­stellt. Nach nur neun Mo­na­ten Ent­wick­lung sind wir on­line ge­gan­gen und nach wei­te­ren 3 Mo­na­ten hat­ten wir ei­nen po­si­ti­ven Cash­flow. Seit­dem ist das Tech­nik­team ist auf über zwan­zig Ent­wick­ler an­ge­wach­sen. Ich ha­be sämt­li­che Vor­stel­lungs­ge­sprä­che ge­führt und den Ein­stel­lungs­pro­zess eng be­glei­tet. Das Star­t­up ist ei­nes der am schnells­ten wach­sen­den in Eu­ro­pa. In sei­ner Bran­che ist es mitt­ler­wei­le Mark­füh­rer.
Als tech­ni­sche Grund­la­ge wähl­te ich hier die Ja­va-EE-6-Plat­form. Da das Pro­jekt auf Con­ti­nuous De­li­very aus­ge­legt war, ha­be ich mich ge­gen ei­ne re­la­tio­na­le Da­ten­bank und für die do­ku­men­ten­ba­sier­te Mon­goDB ent­schie­den.
Die Plat­form ist mehr­spra­chig, mehr­wäh­rungs­fä­hig, skin­bar und wur­de bis heu­te welt­weit in über 10 Län­dern mit den ent­spre­chen­den Spra­chen und Wäh­run­gen aus­ge­rollt.
Die Soft­ware wird do­mä­nen­ge­trie­ben wei­ter­ent­wi­ckelt und so­wohl auf der Kun­den- als auch auf Back­of­fice-Sei­te kommt JSF zum Ein­satz. CDI ist das Mit­tel der Wahl zu Depen­den­cy In­jec­tion, weil es ei­ne star­ke Kap­se­lung auf Pa­ket­ebe­ne zu­lässt und sich ex­zel­lent in die ob­jekt­ori­en­tier­te Ja­va­welt ein­fügt. Da Mon­goDB von den her­kömm­li­chen JPA-Pro­vi­dern nicht gut ge­nug un­ter­stützt wird, kom­men EJBs kaum zum Ein­satz. Als Ob­jekt­map­per ist mor­phia im Ein­satz.
Bei je­dem Build wer­den weit über 1000 Unit- und In­te­gra­ti­ons­tests aus­ge­führt. Die In­te­gra­ti­ons­tests lau­fen da­bei mit Se­le­ni­um und Phan­tom­JS um ei­ne ak­zep­ta­ble Aus­füh­rungs­zeit zu Er­rei­chen.
Bis heu­te be­treue ich das schnell wach­sen­de Ent­wick­lungs­team als Co­ding Ar­chi­tect im We­sent­li­chen durch Code-Re­views und Sup­port der Ent­wick­ler durch An­ha­cken und Coa­chings.

Technische Due Dilligences (2013 - heute)

Als er­fah­re­ner Soft­ware­ar­chi­tekt wer­de ich hin und wie­der von Ri­si­ko­ka­pi­tal­ge­bern be­auf­tragt Ent­wick­lungs­teams in Star­tUps zu prü­fen. Hier be­ur­tei­le ich im We­sent­li­chen die Softs­kills des Teams und we­ni­ger die ein­ge­setz­te Tech­nik, da Star­tUps ganz be­son­de­re An­for­de­run­gen an das Team ha­ben, ins­be­son­de­re in Hin­sicht auf Ska­lier­bar­keit und Wachs­tum.

JSF Resource Library Contracts (2012)

Als JSF Ex­pert Group Mem­ber ha­be ich das Kon­zept der Re­sour­ce Li­bra­ry Contracts er­fun­den, spe­zi­fi­ziert und in der Re­fe­renz­im­ple­men­tie­rung Mo­jar­ra im­ple­men­tiert. Re­sour­ce Li­bra­ry Contracts sind die kon­se­quen­te Fort­füh­rung mei­ner Er­fah­run­gen mit kom­po­nen­ten­ba­sier­ter Man­dan­ten­fä­hig­keit aus ver­schie­de­nen vor­an­ge­gan­ge­nen Pro­jek­ten.

JSF Passthrough Elements (2012)

Als JSF Ex­pert Group Mem­ber ha­be ich den Pro­to­ty­pen für den De­fault­Tag-De­co­ra­tor in der Re­fe­renz­im­ple­men­tie­rung Mo­jar­ra ge­baut. Der Pro­to­typ ist dann un­ver­än­dert li­ve ge­gan­gen.

Refactoring/Performancetuning ProductCatalogue (2012)

Als er­fah­re­ner Ent­wick­ler im Ja­va-EE-Um­feld wur­de ich be­auf­tragt, ei­ne Kom­po­nen­te in ei­nem zu­rück­ge­hol­ten Off­shore­pro­jekt zu re­fak­to­ri­sie­ren und da­bei die Per­for­mance zu op­ti­mie­ren, so dass die Kom­po­nen­te end­lich pro­duk­tiv ein­ge­setzt wer­den kann.

Refactoring/Performancetuning CMEngine (2011)

In ei­nem gro­ßen Off­shore­pro­jekt wur­de ich als Trou­ble­shoo­ter da­mit be­auf­tragt, ei­ne zen­tra­le Kom­po­nen­te zu re­fak­to­ri­sie­ren. Der Off­shore­dienst­leis­ter war nicht in der La­ge, die Per­for­man­ce­an­for­de­run­gen des Kun­den zu er­rei­chen. Ich ha­be die ent­spre­chen­de Kom­po­nen­te vom pro­ze­du­ra­len An­satz auf ei­nen ob­jekt­ori­en­tier­ten um­ge­baut und so die An­for­de­run­gen er­füllt. Dar­über hin­aus ha­be ich die Ar­chi­tek­ten bzgl. Per­sis­tenz im Ja­va-EE-Con­tai­ner be­ra­ten.

Neuentwicklung Testsonde Zufallszahlengenerator (2010)

Um die Ca­si­no­spie­le tes­ten zu kön­nen, muss der Tes­ter in der La­ge sein, dem Zu­falls­zah­len­ge­ne­ra­tor be­stimm­te Zah­len vor­ge­ben zu kön­nen. Die auf Swing und RMI ba­sie­ren­de Test­son­de war je­doch für au­to­ma­ti­sier­te Tests nicht zu ge­brau­chen.
Da­her ha­be ich ei­nen ein­fa­chen REST-Ser­vice ent­wi­ckelt und die Ober­flä­che da­zu mit HTML (JSF) und jQue­ry rea­li­siert, da man mit jQue­ry sehr ele­gant REST-Ser­vices an­spre­chen kann. Der REST-Ser­vice wur­de dann in den au­to­ma­ti­sier­ten Tests per Jme­ter an­ge­spro­chen.

Komponentenbasierte Mandantenfähigkeit (2009)

Ba­sie­rend auf der Re­fe­renz­im­ple­men­tie­rung von Sun wur­de in die­sem Pro­jekt JSF 2.0 so er­wei­tert, dass in der­sel­ben Ap­pli­ka­ti­on man­dan­ten­ab­hän­gig ein­zel­ne Kom­po­nen­ten aus­ge­tauscht wer­den kön­nen. Üb­li­cher­wei­se reicht es für ei­nen neu­en Man­dan­ten, die De­co­ra­tor­kom­po­nen­te aus­zu­tau­schen, wo­durch neue Man­dan­ten sehr schnell um­ge­setzt wer­den kön­nen. Ich war in die­sem Pro­jekt fe­der­füh­rend kon­zep­tio­nell tä­tig und ha­be die Ent­wick­ler ent­spre­chend an­ge­lei­tet.

Anhacken/Coaching (2008 - 2010)

Im Rah­men des Ent­wick­ler-Sup­ports und Coa­chings bei edict skiz­zie­re ich mei­ne Ide­en und Lö­sungs­an­sät­ze hin und wie­der di­rekt an der Tas­ta­tur des ent­spre­chen­den Ent­wick­lers. Hier­bei pro­gram­mie­re ich Code-Frag­men­te, die dem Ent­wick­ler das be­vor­zug­te Pat­tern vor­ge­ben. Nach dem An­ha­cken ist der Ent­wick­ler üb­li­cher­wei­se in der La­ge, die Lö­sung aus­zu­im­ple­men­tie­ren.

Code-Reviews (2008 - 2010)

In mei­ner Rol­le als Chef­ent­wick­ler bei edict füh­re ich re­gel­mä­ßig Code-Re­views durch. Im Be­reich der Code-Qua­li­tät kann vie­les durch Tools wie So­nar, Check­style oder PMD au­to­ma­ti­siert ab­ge­fan­gen wer­den. Da die­se Tools je­doch nicht be­ur­tei­len kön­nen, ob der Code ein Pro­blem an­ge­mes­sen be­han­delt, sind Code-Re­views durch ei­nen er­fah­re­nen Ent­wick­ler nö­tig. Hier­bei ach­te ich stets dar­auf, dass die Prin­zi­pi­en DRY und KISS ein­ge­hal­ten wer­den und Over­en­gi­nee­ring nicht vor­kommt.

Serverseitige Validierung mit JavaScript (2009)

Bei edict ha­ben wir uns bei der cli­ent­sei­ti­gen Va­li­die­rung für das jQue­ry va­li­da­ti­on plu­gin ent­schie­den. Um si­cher­zu­stel­len, dass auf dem Ser­ver die sel­ben Re­geln ver­wen­det wer­den, liegt es na­he, auch hier mit Ja­va­Script zu va­li­die­ren. Da­zu ha­be ich ein ser­ver­sei­ti­ges Ja­va­Script ent­wi­ckelt, das in der La­ge war, die­se Re­geln di­rekt auf die Ja­va-Ob­jek­te an­zu­wen­den. Das hat­te den char­man­ten Ne­ben­ef­fekt, dass die Re­geln für un­se­re Ob­jek­te in ei­nem gut les­ba­ren JSON zu­sam­men­ge­fasst wa­ren.

Systemarchitektur Edict Onlinecasino (2009)

Da im Ca­si­no qua­si je­der Klick Geld kos­tet, gibt es sehr vie­le Schrei­bope­ra­tio­nen in der Da­ten­bank. Um die Da­ten­bank nicht zu­sätz­lich mit un­nö­ti­gen Le­se­ope­ra­tio­nen zu be­las­ten, ha­be ich mich für ei­ne stark sta­tus­be­haf­te­te Ar­chi­tek­tur ent­schie­den. Da­durch ist es ge­lun­gen, wäh­rend des Spie­lens aus­schlie­ß­lich Schrei­bope­ra­tio­nen in der Da­ten­bank durch­zu­füh­ren.
Die An­wen­dung wird in Clouds de­ployt, die über ei­nen ver­teil­ten Ca­che mit­ein­an­der ih­re Da­ten ab­glei­chen. Auf die­se Wei­se ist die An­wen­dung li­ne­ar ska­lier­bar.

Softwarearchitektur Edict Onlinecasino (EJB 3 und JPA) (2009)

Um die Ent­wick­lungs­auf­wän­de so ge­ring wie mög­lich zu hal­ten und ei­ne star­ke Kap­se­lung der Ge­schäfts­lo­gik zu er­rei­chen, ha­be ich mich ent­schie­den, durch Do­main-Dri­ven-De­sign die Ob­jekt­ori­en­tie­rung wie­der in die Ent­wick­lung zu brin­gen. Die Do­main-Ob­jek­te sind nun in­tel­li­gen­te und mäch­ti­ge Ob­jek­te, die al­les kön­nen, was man von ih­nen er­war­tet. Da­durch kann auf in­fra­struk­tur­ori­en­tier­ten Code wie z.B. Ser­vices wei­test­ge­hend ver­zich­tet wer­den. Dies führt zu ei­ner dras­ti­schen Re­du­zie­rung des be­nö­tig­ten Codes und da­mit zu hö­he­rer Wart­bar­keit und Les­bar­keit. Im sta­tus­be­haf­te­ten Um­feld ist so die höchs­te Per­for­mance zu er­rei­chen.

Maven / NetBeans Integration (2009)

Da bei edict ein sehr mo­du­la­res Sys­tem ge­plant ist, ist ein Build­tool wie Ma­ven un­ab­ding­bar. Um Ma­ven mit Net­Be­ans zu ver­hei­ra­ten, muss­te al­so ein Tool ge­schaf­fen wer­den, das aus ei­nem POM ein Net­Be­ans-Pro­jekt er­zeugt. In die­sem Zu­ge, ha­be ich ein Ma­ven-Plu­gin ge­schrie­ben, das ge­nau das tut. (http://ke­nai.com/pro­jects/mvn-nb-plu­gin)

SEO jaxx.com (2008)

Um von Such­ma­schi­nen ver­nünf­tig in­di­ziert wer­den zu kön­nen, muss­ten die von der Ap­pli­ka­ti­on er­zeug­ten Urls ein­deu­tig und ma­schi­nen­les­bar ge­macht wer­den. Au­ßer­dem soll­ten im In­dex der Such­ma­schi­nen kei­ne ses­si­onba­sier­ten Sei­ten auf­tau­chen, die un­wei­ger­lich zu ei­nem Ses­si­ontime­out füh­ren wür­den, wenn der Su­cher sie an­klickt.
Die­se An­for­de­run­gen ha­be ich durch sehr tie­fe aber über­schau­ba­re Ein­grif­fe von we­ni­gen Zei­len Code in den Ap­p­li­ca­ti­on­ser­ver er­füllt.

Performancetuning jaxx.de/jaxx.com (2005 - 2008)

Da im­mer wie­der Per­for­mance-Pro­ble­me auf­tau­chen, ha­be ich die Ap­pli­ka­ti­on re­gel­mä­ßig mit ei­nem Pro­fi­ler un­ter­sucht und so ste­tig die Per­for­mance ver­bes­sert bis ja­xx.de zu Deutsch­lands sta­bils­ten Lot­to­an­ge­bo­ten ge­hör­te.
(http://open­pr.de/pdf/175664/Von-Glu­ecks­ja­e­gern-ue­ber­rannt-Lot­to-Hype-macht-Web­sei­ten-zu-schaf­fen.pdf)

AJAX-basiertes Pferdewettangebot jaxx.com (2008)

Auf­grund des Er­folgs des vor­an­ge­gan­ge­nen Pro­jekts (AJAX Sport­wet­ten) wird die­se Tech­no­lo­gie nun auch im Pfer­de­wet­ten­be­reich ein­ge­setzt. Um Le­se­ope­ra­tio­nen auf der Da­ten­bank zu ver­rin­gern (Pfer­de­wet­ten sind hoch­dy­na-misch), ha­be ich ei­nen all­ge­mein­gül­ti­gen Be­nach­rich­ti­gungs­me­cha­nis­mus zur Ca­che-In­va­li­die­rung auf Ba­sis von Da­ten­bank­trig­gern im­ple­men­tiert, der oh­ne Än­de­run­gen des Ba­ckend­codes ein­setz­bar war.

AJAX-basiertes Sportwettangebot jaxx.com (2007)

Um ei­ne stär­ke­re In­ter­ak­ti­vi­tät zu er­rei­chen, wur­de be­schlos­sen, das Sport-wett­an­ge­bot bei ja­xx.com in ei­ne Ajax-ba­sier­te Lö­sung zu über­füh­ren.
Der Ser­ver lie­fert im Sport­wet­ten­be­reich JSON aus, wel­ches dann im Cli­ent per Ja­va­Script in HTML ge­wan­delt wird. Mei­ne Auf­ga­be war es, die üb­li­chen Pro­ble­me der Asyn­chro­ni­tät oder des Back­trackings zu lö­sen und ei­ne ver­nünf­ti­ge Feh­ler­be­hand­lung zu im­ple­men­tie­ren.

Skinning jaxx.com (2007)

Ziel des Pro­jek­tes war es, ei­ne mög­lichst ein­fach zu ver­wen­den­de Man­dan­ten­fä­hig­keit der Platt­form her­zu­stel­len. Mei­ne Auf­ga­be war so­wohl die Kon­zep­ti­on als auch die Im­ple­men­tie­rung.
Durch ei­ne in­ten­si­ve Nut­zung des kom­po­nen­ten­ba­sier­ten Frame­works We­bOb­jects, ist es mir ge­lun­gen ei­ne hoch­fle­xi­ble aber ein­fa­che Mög­lich­keit der Man­dan­ten­fä­hig­keit im Front­end­be­reich zu er­rei­chen. Die so­ge­nann­ten Skins wur­den dar­auf­hin üb­li­cher­wei­se von den HTML-Ent­wick­lern im Al­lein­gang in­ner­halb we­ni­ger Ta­ge er­stellt. Auch auf­wän­di­ge­re Skins, die z.B. ei­nen Sin­gle-Sign-On bei ei­nem Part­ner be­inhal­te­ten, konn­ten in kür­zes­ter Zeit ab­ge­ar­bei­tet wer­den, er­for­der­ten al­ler­dings noch et­was Ar­beit ei­nes Ja­va-Ent­wick­lers.

FrontendSupport (2005 - 2008)

Bei Any­bet war ich da­für ver­ant­wort­lich, das we­nig ob­jekt­ori­en­tier­te Ba­ckend mit dem stark ob­jekt­ori­en­tier­ten Ap­p­li­ca­ti­on­ser­ver We­bOb­jects zu ver­ei­nen und den HTML-Ent­wick­lern das Le­ben so leicht wie mög­lich zu ma­chen. Hier­zu war ei­ne en­ge Zu­sam­men­ar­beit von Ba­ckend- und HTML-Ent­wick­lern und sehr gu­te Kennt­nis­se von Cli­ent-Tech­no­lo­gi­en wie HTML, CSS und Ja­va­Script mei­ner­seits not­wen­dig.
In die­sem Rah­men war ich für al­le Be­rei­che der Web­platt­form wie Re­gis­trie­rung, Be­zah­lung, Mar­ke­ting­in­stru­men­te, Af­fi­lia­te­ein­bin­dung, Zähl­pi­xel, SSO bei Part­nern und Ein­sprün­ge in die Ap­pli­ka­ti­on zu­stän­dig.

Mehrsprachenfähigkeit jaxx.com (2005)

Die be­ste­hen­de Platt­form ja­xx.de soll­te so er­wei­tert wer­den, dass über sie als ja­xx.com Sport­wet­ten in ver­schie­de­nen Spra­chen an­ge­bo­ten wer­den kön­nen. Mir wur­de die Ge­samt­kon­zep­ti­on und die Ent­wick­lung im Front­end­be­reich (Ser­ver) auf­ge­tra­gen.
Die zu über­set­zen­den Text­schnip­sel wur­den in ei­ner ein­fa­chen Ta­bel­le in der Da­ten­bank ab­ge­bil­det. Die­se ha­be ich über das so­ge­nann­te Key-Va­lue-Co­ding in der Tem­pla­te-En­gi­ne ver­füg­bar ge­macht, so dass sich die HTML-Ent­wick­ler kei­ne Ge­dan­ken über die Spra­che des Be­nut­zers ma­chen muss­ten. Über den­sel­ben Me­cha­nis­mus ha­be ich sprach­ab­hän­gi­ge For­mat­ter in der Tem­pla­te-En­gi­ne ver­füg­bar ge­macht.

SMM deutsche Telekom (2004)

Hier darf ich nicht all­zu viel sa­gen, da ich ein NDA un­ter­schrie­ben ha­be. Ich ha­be ei­ne Web­Ser­vices-Ser­ver-An­wen­dung und die ent­spre­chen­de Cli­ent-An­wen­dung ent­wi­ckelt.

Bilddatenbank und automatisierte Katalogproduktion (2003 - 2004)

Für ei­ne web­ba­sier­te Bild­da­ten­bank für Zapf-Crea­ti­on ha­be ich HttpU­nit-Tests für den ex­ter­nen Be­reich der Bild­da­ten­bank ent­wi­ckelt. Die­se au­to­ma­ti­schen Tests de­cken al­le Funk­tio­nen ab, die im ex­ter­nen Be­reich ver­füg­bar sind. Das be­inhal­tet auch die Tests der als Zip-Da­tei her­un­ter­ge­la­de­nen Shop­ping­carts und ver­schie­de­ner Ja­va­Script-Funk­tio­nen.
Für die au­to­ma­ti­sier­te Ka­ta­log­pro­duk­ti­on ha­be ich die als PDF an­ge­lie­fer­ten Lay­out-Vor­ga­ben in XML-Tem­pla­tes um­ge­setzt, so dass aus den Da­ten­bank­in­hal­ten ein druck­fä­hi­ges PDF er­zeugt wer­den konn­te.

Software für vernetzte Arbeitsvermittlung (2003 - 2004)

Für Job­Sync Göt­tin­gen ha­be ich ei­ne web­ba­sier­te Soft­ware für ver­netz­te Ar­beits­ver­mitt­lung ent­wi­ckelt. Ziel war es, bun­des­weit Ar­beits­ver­mitt­ler mit­ein­an­der zu ver­net­zen und ver­schie­de­ne Pools von Ar­beits­su­chen­den und of­fe­nen Stel­len an­hand von 5900 be­rufs­kund­li­chen Merk­ma­len mit­ein­an­der zu matchen.
Da das Kon­zept le­dig­lich aus ein paar Scribbles be­stand, ha­be ich zu­sam­men mit dem Kun­den das Pro­jekt ite­ra­tiv ent­wi­ckelt. Ich ha­be hier die Front­end-Kom­po­nen­ten so ent­wi­ckelt, dass Sie aus­schlie­ß­lich XML er­zeu­gen und an­schlie­ßend das ge­sam­te Do­ku­ment per XSLT in HTML um­ge­wan­delt wird. So war es mir mög­lich in­ner­halb kür­zes­ter Zeit, neue Funk­tio­na­li­tä­ten zu im­ple­men­tie­ren, oh­ne auf das De­sign an­ge­wie­sen zu sein. Es wur­de ein­mal ein Grund­de­sign ent­wi­ckelt, das dann mit ge­rin­gen Än­de­run­gen am XSLT auf je­de Sei­te an­ge­wen­det wer­den konn­te.

Tierhausverwaltung (2002)

Bei clus­ter9 ha­be ich ei­ne web­ba­sier­te Tier­haus­ver­wal­tung für das Max-Planck-In­sti­tut für bio­phy­si­ka­li­sche Che­mie in Göt­tin­gen rea­li­siert. Die Soft­ware soll­te ei­ne be­ste­hen­de ORA­Forms-An­wen­dung ab­lö­sen und per Touch­screen zu be­die­nen sein. Das Look And Feel des Front­ends war durch sta­ti­sche HTML-Sei­ten vor­ge­ge­ben. Im Zu­ge des­sen ha­be ich für clus­ter9 den WO­Dy­na­mi­zer ent­wi­ckelt, der ba­sie­rend auf JTidy aus sta­ti­schen HTML-Sei­ten dy­na­mi­sche We­bOb­jects-Kom­po­nen­ten er­zeugt. Zum Pro­jekt­ab­schluss ha­be ich den Mit­ar­bei­ter des MPI, der das Pro­jekt wei­ter­pfle­gen soll­te, in Ja­va/We­bOb­jects ge­schult.

Unified Messaging (2001 - 2002)

Ein Auf­trag­neh­mer der Te­le­kom ent­wi­ckel­te T-Net­box.de. Das Pro­jekt ist je­doch auf­grund tech­ni­scher Pro­ble­me ins Sto­cken ge­ra­ten. Im Auf­trag von clus­ter9 ha­be ich zu Be­ginn klei­ne­re Pro­ble­me, wie er­höh­ten Spei­cher­ver­brauch ge­löst. Dann ha­be ich die Mit­ar­bei­ter vor Ort in Ja­va/We­bOb­jects und CVS ge­schult (auf Eng­lisch). Spä­ter ha­be ich die kom­plet­te be­ste­hen­de An­wen­dung nach Pu­re-Ja­va por­tiert und auch die be­ste­hen­de pro­prie­tä­re na­ti­ve Mail-An­bin­dung durch Ja­va­Mail er­setzt. Wei­ter­hin ha­be ich ver­schie­de­ne En­co­ding-Pro­ble­me (Um­lau­te, etc.) ge­löst.

CapacityPlanner (2001)

Bei der INIS wur­de ein Ka­pa­zi­täts­pla­nungs­sys­tem für die COSS Sys­tem­tech­nik AG in Aa­len ent­wi­ckelt, wel­ches zur Pla­nung der Res­sour­cen in­ner­halb des Pro­jekt­ge­schäf­tes ver­wen­det wor­den ist. Die In­te­gra­ti­on in ei­ne ex­ter­ne Zeit­er­fas­sung so­wie in ein Kos­ten­rech­nungs­sys­tem war eben­falls Be­stand­teil der Im­ple­men­tie­rung. Das bei der INIS ent­wi­ckel­te Ba­sis­sys­tem da­für war das so­ge­nann­te Re­ques­ter-Frame­work, das ein um­fas­sen­des Sys­tem zum „res­sour­ce cons­trai­ned sche­du­ling“ dar­stell­te. An der Kon­zep­ti­on und Ent­wick­lung die­ses Sys­tems war ich in lei­ten­der Po­si­ti­on ma­ß­geb­lich be­tei­ligt.

Basistechnologie (2000 - 2001)

Bei der INIS ent­wi­ckel­te ich all­ge­mein­gül­ti­ge Ba­sis­tech­no­lo­gie. Die Ba­sis­tech­no­lo­gie hat­te als we­sent­li­che Vor­aus­set­zung oh­ne Dritt­an­bie­ter­klas­sen zu ar­bei­ten, es sei denn, sie er­he­ben kei­ne Li­zenz­ge­büh­ren und lie­gen im Quell­code vor. Zur Ba­sis­tech­no­lo­gie ge­hör­te u.a. ein Frame­work zum zen­tra­len Log­gen, das mit ver­schie­de­nen Fil­tern, Er­ror­le­vels und Log­ka­nä­len ar­bei­tet, so­wie ein man­dan­ten­fä­hi­ges Kon­fi­gu­ra­ti­ons­ma­nage­ment, das mit XML-Da­tei­en be­nut­zer­ab­hän­gi­ge Kon­fi­gu­ra­tio­nen ver­wal­tet. Wei­ter­hin be­inhal­tet die Ba­sis­tech­no­lo­gie sämt­li­che ak­tu­el­len Tech­no­lo­gi­en im Be­reich mo­bi­le Com­mu­ni­ca­ti­ons. Mei­ne Auf­ga­be hier be­stand so­wohl in der Lei­tung, Kon­zep­ti­on und Im­ple­men­tie­rung als auch in der Do­ku­men­ta­ti­on und der Mit­ar­bei­ter­schu­lung im Ein­satz der Ba­sis­tech­no­lo­gie.