Qualifikationsprofil Frank Caputo

Frank Caputo
Tech-Lea­der
Chief­ar­chi­tect
CTO
Ja­va-En­t­er­pri­se-Spe­cia­list
Ber­na­dot­te­stra­ße 150a, 22605 Ham­burg
Tel: 0177 6161813

Persönliche Daten

Ge­burts­da­tum 11. No­vem­ber 1973
Ge­burts­ort Bad Harz­burg
Na­tio­na­li­tät deutsch

Tätigkeitsschwerpunkte

Sprachkenntnisse

Deutsch Mut­ter­spra­che
Eng­lisch ver­hand­lungs­si­cher
Ita­lie­nisch Grund­kennt­nis­se

Arbeitsweise

Philosophie

Über­zeugt vom 'Ser­vant Lea­dership', bin ich Dienst­leis­ter für das Team als Men­tor und Coach. Die bes­ten Er­geb­nis­se wer­den er­zielt, wenn sich je­des Team­mit­glied ge­hört, ge­schätzt und er­mäch­tigt fühlt, sein vol­les Po­ten­zi­al zu ent­fal­ten. Ziel ist es, ein Um­feld zu schaf­fen, das von Ver­trau­en, Trans­pa­renz und of­fe­ner Kom­mu­ni­ka­ti­on ge­prägt ist. Ei­ne Kul­tur der Zu­sam­men­ar­beit wird ge­för­dert, in der Ide­en frei aus­ge­tauscht und In­no­va­tio­nen er­mög­licht wer­den.

Durch Em­power­ment je­des Team­mit­glie­des wird so­wohl die Er­rei­chung in­di­vi­du­el­ler als auch ge­mein­sa­mer Zie­le ge­för­dert. Re­gel­mä­ßi­ges Feed­back und Er­mu­ti­gung zur Selbst­re­fle­xi­on un­ter­stüt­zen die kon­ti­nu­ier­li­che be­ruf­li­che und per­sön­li­che Wei­ter­ent­wick­lung der Team­mit­glie­der.

Da schnel­le An­pas­sungs­fä­hig­keit un­er­läss­lich ist, ist mein An­satz von Agi­li­tät und Fle­xi­bi­li­tät ge­prägt. Durch ent­wick­lungs­för­dern­de Füh­rung und Un­ter­stüt­zung zur Selbst­or­ga­ni­sa­ti­on des Teams, för­de­re ich ei­ne dy­na­mi­sche und ef­fek­ti­ve Ar­beits­um­ge­bung.

Der Ein­satz von Tech­no­lo­gie und In­no­va­ti­on ist für mich von zen­tra­ler Be­deu­tung. Da­bei ist Tech­no­lo­gie für mich kein Selbst­zweck, son­dern muss im­mer die Un­ter­neh­mens­zie­le un­ter­stüt­zen. Un­ter­neh­men soll­ten vor al­lem ihr Kern­ge­schäft selbst ent­wi-ckeln und kon­trol­lie­ren. Pro­ble­me all­ge­mei­ner Na­tur kön­nen häu­fig durch den Ein­satz von Ma­na­ged Ser­vices ge­löst wer­den. Ma­ke or buy ist für mich ei­ne zen­tra­le Fra­ge, die ich stets im Sin­ne des Un­ter­neh­mens im Au­ge be­hal­te.

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:

De­sign-Pat­terns, Do­main-Dri­ven-De­sign, Mi­cro­ser­vices, Self Con­tai­ned Sys­tems, Ex­tre­me Pro­gramming, Scrum, Kan­ban, Pair Pro­gramming, De­v­Ops, No­Ops, Ge­nAI, Co­pi­lot, Cy­ber­se­cu­ri­ty, GD­PR, Da­ten­schutz, Da­ten­spar­sam­keit, Re­gu­lie­rung, in­ter­na­tio­na­le Ge­set­zes­tex­te, Ja­va/Ja­kar­ta EE, JSF, EJB, JPA, CDI, JMS, 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, Quar­kus, Serv­lets, JSP, JDBC, Spring, Swing, Web­ser­ver, Ap­p­li­ca­ti­on­ser­ver, ARC42, Plan­t­UML, AsciiDoc, Mark­down, AWS, Cloud­Fla­re, Cloud­Front, Ser­ver­less, Cloud, Do­cker, Ku­ber­ne­tes, Jenk­ins, Team­Ci­ty, Git­Lab, Git­Hub, Con­ti­nuous In­te­gra­ti­on, Con­ti­nuous De­ploy­ment, Ji­ra, Con­flu­ence, So­nar, Check­style, PMD, JMe­ter, Se­le­ni­um, TCP/IP, HTTP, HTML, CSS, Ajax, App­lets, XML, DOM, XSL, XSLT, SOAP, UML, Ja­va SE, We­bOb­jects, GIT, CVS, Sub­ver­si­on, Per­force, Cle­ar­Ca­se, JU­nit, HttpU­nit, Groo­vy, Spock frame­work, Pas­cal, POP, IMAP, SMTP, SQL, nginx, hapro­xy, Apa­che, CGI, Shell-Scrip­t­ing, App­le­Script, TDD, Ora­cle, Post­greS­QL, Apa­che Der­by, Eclip­se, Ma­ven, Ant, Xa­lan, Xe­r­ces, Net­Be­ans, In­tel­liJ IDEA

Relevante Tätigkeiten/Projekte (chronologisch absteigend)

  1. 06/2023 - heute

    Group Chief­ar­chi­tect On­line­gam­bling
  2. 07/2018 - 05/2023

    Chief­ar­chi­tect Lot­te­ry­plat­form
  3. 10/2015 - 06/2018

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

    Chief­ar­chi­tect/Team­auf­bau Lot­te­ry­plat­form
  5. 2013 - heute

    Durch­füh­rung tech­ni­scher Due Di­li­gen­ces für Ri­si­ko­ka­pi­tal­ge­ber
  6. 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“.
  7. 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
  8. 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.
  9. 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
  10. 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
  11. 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
  12. 08/2004 - 09/2004

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

    Re­launch ja­xx.de Pro­jekt­mit­ar­beit bei Flu­xx.com/Any­bet
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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)


Group Chiefarchitect Gambling Platform (2023 - heute)

Als Group Chief­ar­chi­tect bin ich da­für ver­ant­wort­lich, die ver­schie­de­nen tech­ni­schen Lö­sun­gen der ein­zel­nen Toch­ter­fir­men zu har­mo­ni­sie­ren und zu stan­dar­di­sie­ren. Da­bei geht es um ein ge­mein­sa­mes Ver­ständ­nis der Ar­chi­tek­tur und der Tech­no­lo­gi­en, die in den ver­schie­de­nen Fir­men ein­ge­setzt wer­den, und das Bes­te aus al­len Wel­ten zu ver­ei­nen. Da­bei ist es mir wich­tig, die Teams in den ein­zel­nen Fir­men zu er­mäch­ti­gen und ih­nen die Frei­heit zu las­sen, die Tech­no­lo­gi­en zu wäh­len, die am bes­ten zu ih­ren An­for­de­run­gen pas­sen. Da­bei soll­te das Rad nicht im­mer wie­der neu er­fun­den wer­den, son­dern be­währ­te Tech­no­lo­gi­en und Lö­sun­gen soll­ten über­nom­men wer­den. Die Grup­pe um­fasst 10 Platt­for­men, an de­nen mehr als 200 Ent­wick­ler auf der gan­zen Welt ar­bei­ten.

Chiefarchitect Lotteryplatform (2018 - 2023)

Als Chief­ar­chi­tect ha­be ich die "Ar­chi­tec­tu­re Vi­si­on" für die Lot­te­ry­plat­form ent­wi­ckelt und das Ar­chi­tek­ten-Team ent­spre­chend ge­schult. Ba­sie­rend auf dem Do­main-Dri­ven-De­sign-An­satz soll­te die exis­tie­ren­de Platt­form in klei­ne­re Boun­ded Con­texts zer­legt wer­den, die dann in Self Con­tai­ned Sys­tems ab­ge­bil­det wer­den soll­ten. Ich ha­be die exis­tie­ren­de Cloud-Agnostic Stra­te­gie auf­ge­ge­ben und ha­be mich für AWS ent­schie­den. Der Frame­work-Lock-In war er­heb­lich teu­rer als der Ven­dor-Lock-In.
Ich ha­be die Ar­chi­tek­ten im Ser­vant Lea­dership ge­schult und sie in die La­ge ver­setzt, die Mit­glie­der ih­rer Teams über sich hin­aus wach­sen zu las­sen.
Die Ent­wick­lungs­ab­tei­lung ist in der Zeit von ca. 30 auf über 120 Ent­wick­ler ge­wach­sen.

Chiefarchitect/Teamaufbau Carsharingplatform (2015 - 2018)

Als Chief­ar­chi­tect ha­be das Tech­nik­team für ei­ne Car­sha­ring­plat­form auf­ge­stellt. Ich ha­be den CTO so­wohl in den be­nö­tig­ten Hard- und Softs­kills ge­schult und ent­spre­chen­de Vor­ge­hens­wei­sen wei­ter­ge­ge­ben, 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 ver­folgt ei­nen No­Ops-An­satz und setzt kom­pro­miss­los auf AWS.

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 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 De­pen­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­ject­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 und Team­lea­der 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­ten Tech­no­lo­gi­en. Star­tUps-Teams be­nö­ti­gen ganz be­son­de­re Fä­hig­kei­ten, um Ska­lier­bar­keit und Wachs­tum zu er­mög­li­chen. Ho­he Fle­xi­bi­li­tät bzgl. der Tä­tig­kei­ten und Lö­sun­gen ist hier ge­fragt. Das Um­feld von Star­tUps kann sich in­ner­halb kur­zer Zeit dras­tisch än­dern.

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 und nun dau­er­haf­ter Be­stand­teil der Re­fe­renz­im­ple­men­tie­rung Mo­jar­ra.

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.