Samstag, 1. März 2014

Über Freud und Leid des Redens und AngularJS

Angekommen?


Im letzten Blogpost hab ich noch geschrieben, dass ich jetzt endlich im Scout angekommen bin. Jetzt, wo der beste in unserem Team für zwei Wochen in Urlaub ist und wir uns um einige Fehler wie ein vollgelaufenes SAN plus danach inkonsistenten Daten selber kümmern mussten und jetzt beinahe den Sprint gerissen haben, weil die Vorarbeit von unserem urlaubenden Teamkollegen nicht 100% funktioniert hat und wir noch diverse Anpassungen machen mussten, mache ich mir doch wieder ein paar Sorgen darüber, ob ich denn nun angekommen bin ... gerade auch deshalb, weil ich bei vielem davon immer noch wie ein Schwein vorm Uhrwerk dastehe und noch nicht ganz verstehe, was da nun wirklich vor sich geht. Zumindest verstehe ich mittlerweile, wie unsere Applikation funtioniert und durch welche Schritte sie läuft und wie es im Einzelnen umgesetzt wurde.

Allerdings strengt das ständige reden, 8 Stunden konzentriert sein und im Paar programmieren auf die Dauer doch ziemlich an, und am Ende von einem Tag fühle ich mich meistens ziemlich fertig. Der Code, der dabei raus kommt, ist zwar dafür auch deutlich besser, auch weil jeder ihn mal gesehen hat, aber es ist schon enorm anstrengend, auch weil wir uns zwar vier Stories vorgenommen haben, davon aber bis vorgestern noch zwei offen waren, und schon 2/3 des Sprints vorbei war. Dafür hab ich am Donnerstag eine Story alleine gewuppt, was für mein Selbstvertrauen doch ein guter Boost war :). Gestern war dafür wieder nicht viel los, vor allem deshalb weil 15:00 die Entwicklungsdatenbanken und die Testsysteme herunter gefahren wurden über das Wochenende. Lokal haben wir nur die Applikation aufgesetzt, und es wäre vermutlich auch möglich gewesen die Datenbank lokal aufzusetzen, aber dann hätte ich den Rest der Zeit nur damit zugebracht und das hätte auch nicht wirklich viel gebracht - es sei denn ich hätte am Wochenende arbeiten wollen (aber dafür fehlt mir im Moment die Energie).


AngularJS

An zwei Stellen in unserem Code benutzen wir mittlerweile AngularJS statt wie bisher JSP. Das hat sehr große Vorteile, vor allem weil man dann im Frontend sortieren und filtern kann und nicht extra dafür noch Anfragen an den Server stellen muss. Außerdem kann man mit 2-3 Zeilen Angular-Code Sachen umsetzen, die sonst mehrere Zeilen Code und einiges an Gehirnschmalz erfordern würde.

Dafür gibt es aber auch einige sehr seltsame Bugs, die interessanterweise schon seit langem bekannt sind, aber trotzdem noch nicht gefixt wurden. Zum Beispiel ist AngularJS zwar kompatibel mit dem IE8, aber sobald man HTML5 Elemente benutzt (und sie mithilfe von z.B. Modernizr.js auch für den IE8 erkennbar macht) baut AngularJS nachgeladenen HTML-Code, der diese HTML5-Elemente beinhaltet, falsch um. Z.B. wird aus <section> dann ein <:section>, und alle Stylings und Javascript-Code, der darauf zugreift, läuft ins Leere. Außerdem erkennt AngularJS dann nicht mehr die eigenen Attribute wie ng-repeat auf diesen HTML5-Elementen.

Alles in allem würde ich AngularJS ab jetzt bei jedem Projekt einsetzen, das irgendwie eine Webseite darstellen soll, aber diese Hürden sollte man kennen und darauf auch reagieren.

Samstag, 8. Februar 2014

Angekommen im Scout

Angekommen

In der letzten Zeit wurde mir oft gesagt, ich solle "gut ankommen" in meiner neuen Firma - nun weiß ich, dass damit ein Zeitpunkt gemeint ist, an dem ich mich an alles gewöhnt habe, inklusive Daily Standup Meeting um 10:00 und die diversen Meetings, die eingesetzten Technologien, an meine Teammitglieder und dass ich lerne, meine Ideen durchzusetzen. So 100% erreicht hab ich den Punkt noch nicht, aber ich bin auf einem guten Weg. Es ist tatsächlich eine andere Erfahrung, in einem Team seine Ideen einzubringen und mehrere Lösungswege zu diskutieren um am Ende den besten zu wählen - das kann gleichzeitig aber auch ziemlich anstrengend sein, wenn man gerne gleich loslegen will und etwas runter programmieren will, aber die anderen mich davon überzeugen, dass eine andere Lösung besser ist. Da werde ich mich aber bestimmt noch reinfinden, und in die geregelten Arbeitszeiten auch - irgendwann schaff ich das bestimmt auch zu 09:00 da aufzukreuzen ^^.

CSS Vortrag

Jetzt hab ich meinen Vortrag also gehalten und die Kollegen fanden ihn gut. Nachdem ich einige Abende und ein ganzes Wochenende reingesteckt habe um 30 Folien vorzubereiten und meiner Mutter den Vortrag auch nochmal zu halten (was dann am Ende zwei Stunden gedauert hat mit Zwischenerklärungen), war der Vortrag live gar nicht mehr so schlimm. Da ich meine Folien von anfänglichen Walls of Text zu einzelnen Screenshots und kurzen Beispielen umgeändert habe, war es auch einfacher die ganzen Nasen im Konferenzraum anzugucken und nicht ständig den Text von den Folien abzulesen.

Inhaltlich war der Vortrag in drei Teile aufgeteilt:
  • CSS allgemein (Regeln, wie bindet man CSS ein, Vererbung)
  • CSS bei der Immobilienbewertungen (mein Team bei ImmoScout)
  • LESS
  • CSS3
CSS allgemein kam ganz gut an, denke ich. Es war zwar nur trockene Theorie, untermauert mit ein paar Beispielen, aber es erklärt ja ganz gut wie CSS so in sich funktioniert. Es ist auch interessant die unterschiedlichen Reaktionen auf so ein Frontend-Thema von überwiegend Backend-Leuten zu sehen - das mit dem DOM und der Baumstruktur war noch am ehesten verständlich.

Bei dem Teil, wo ich über das CSS in unserem Team erzählt habe, hat sich gleich eine kleine Diskussion darüber entwickelt, wie wir das machen und wie die anderen Teams das machen und warum es jeweils anders gemacht wurde. Das war auf jeden Fall spannend und hat vermutlich jedem ein bisschen den Blick über den Tellerrand verschafft, aber hat am Ende doch einen guten Teil von meiner Stunde Vortragszeit in Anspruch genommen. Insbesondere, weil bei der Vorstellung,was LESS so kann, sich wieder eine Grundsatzdiskussion zwischen lesbarem Code in LESS (schön verschachtelt) versus performance/kurzen Selektoren im End-CSS entwickelt hat. Ein wirkliches Ergebnis gab es zwar nicht, aber meiner Meinung nach ist Performance an der Stelle wichtiger als dass der Code überall super lesbar ist, aber da hat eh jeder Programmierer eine andere Meinung.

CSS3 ist natürlich der interessanteste Teil für die gewesen, die sowieso schon CSS und LESS kennen. Leider war für den CSS3-Teil am Ende gerade mal 5 Minuten übrig, weshalb ich die 4 Beispiele ziemlich schnell durch klicken musste. Aber es war ja sowieso nur als "guckt mal, was CSS3 so alles kann" am Schluss gedacht. Wenn man es denn wirklich braucht, dann sucht man sich schon die richtigen Befehle und Beispiele raus und muss sich dann eh noch um Abwärtskompatibilität kümmern.

Review

Dieser Vortrag war eigentlich auch nur ein Testballon für die sogenannte Review, die alle zwei Wochen gehalten wird. Da wird dann nochmal in bis zu einer Stunde alles zusammen gefasst, was so passiert ist. Das lief auch sehr gut, auch wenn ich das Wort zwischendurch immer wieder an die anderen abgegeben habe, weil sie sich mit den jeweiligen Tickets besser auskennen. Aber jetzt lief die Review gut, ich hatte ein paar nette Folien mit ein, zwei lustigen Katzenbildern für unsere P.O. mit eingebaut, damit es nicht zu trocken wird, und der nächste Sprint steht schon in den Startlöchern. Wir sprinten mittlerweile so schnell, dass wir innerhalb der ersten Woche schon fast alles umgesetzt haben, was wir uns so vorgenommen haben - aber meistens kommt dann doch noch irgendeine Kleinigkeit dazsichen, weshalb wir doch noch mehr Zeit brauchen, zum Beispiel weil wir mit ein paar anderen Teams reden müssen.

Die Mittagessen mit den Kollegen sind auf jeden Fall auch ein Grund, weiterhin bei Immobilienscout zu bleiben :-P.

Freitag, 24. Januar 2014

Wieder da

Reaktivierung meines Blogs

Nachdem ich nun seit über anderthalb Jahren nichts in diesem Blog geschrieben habe und mein einziger öffentlicher Blog-Post ein Rant über die damalige Projektleitungssituation war und mein eigentlich geplanter Blog-Post über die BJC 2012 nichts wurde, ist es wohl eine gute Gelegenheit nach 2 Monaten bei meinem neuen Job, Immobilienscout, mit dem Bloggen wieder anzufangen.

Zuerst einmal: Es hat sich eine Menge getan in der Zwischenzeit. Ich habe jede Menge neue Leute kennen gelernt, habe zwei Spiele angefangen zu programmieren (und in einem Alpha-Status belassen), viele Konzerte besucht, mit dem Kiffen angefangen und meiner Spielsucht mit Diablo 3 wieder Futter gegeben (zugegeben, es war auch sehr sozial, da ich immer mit anderen zusammen gespielt habe und wir als Viererteam uns abgestimmt haben, wann wir zocken und wie wir nun Diablo - mal wieder - besiegen können). Das hab ich zwar nicht in der Reihenfolge gemacht und die negativen Dinge wie kiffen und Spielsucht mittlerweile auch wieder gekickt aus meinem Leben, aber die Erfahrungen waren es doch wert gemacht zu werden.

Es ist schon erstaunlich, was sich persönlich so alles verändern kann. Wo ich vor anderthalb Jahren noch souverän mit dem Kunden geklärt habe, was warum gemacht werden soll und Projekte geplant habe, ist jetzt von diesem Wissen nur wenig übrig geblieben. Nachdem ich zuerst keine neuen Projekte mehr geplant und geleitet habe und eher Support gemacht habe, wurde dann nach einiger Zeit auch gesagt dass ich 100% nur an einem Projekt arbeiten soll, das mir persönlich wenig Spaß gemacht hat und mich überhaupt nicht weiter gebracht hat. Auch zwischendurch mal mit den Kollegen zu reden, was früher gang und gäbe war, war plötzlich schlecht. Wissensaustausch - warum? Soll doch jeder selber klar kommen. Die Azubis sollen schon sehen, wie sie in dem Code zurecht kommen. Und so ein neuer Azubi kann ruhig ein großes Projekt planen und leiten, kein Problem.

Als dann zwei Kollegen gegangen sind - die ich beide sowohl privat als auch beruflich sehr schätze - und mit ihnen auch das Wissen über eines der am längsten laufenden Projekte, TheLabelFinder, wurde plötzlich offensichtlich, dass man doch etwas dafür tun sollte, dass das Wissen irgendwie ausgetauscht wird. Es wurde zwa nur wenig dafür getan, dass gute Entwickler wie die beiden gehalten werden, aber dieser Wissenverlust wurde ihnen plötzlich sehr schmerzhaft bewusst. Leider nicht bewusst genug, wie es scheint, denn nach den beiden bin ich nun auch gegangen. Zwar nicht ebenfalls in die gleiche Firma wie sie, aber auch in eine große Firma. Und ich muss sagen, es ist völlig anders, als ich es mir am Anfang vorgestellt hätte.

Das Leben in einer großen Firma

Zum einen ist das agile Arbeiten an sich für mich relativ neu. Früher haben wir zwar in einem Modus gearbeitet, den wir agil genannt haben, aber ein echt agiler Prozess, bei dem sich mehrere Entwickler abstrakt über eine Aufgabe unterhalten und was wohl alles noch dadran hängt und sich die Köpfe darüber einschlagen, wie man die Aufgabe am besten löst und was alles noch da dran hängt, ist für mich eine völlig neue Erfahrung. Das Daily Meeting um 10:00 erfordert auch eine Konzentration, die ich vorher verlernt habe - zumal ich vorher nie wirklich darüber nachdenken musste, was ich den Tag vorher so gemacht habe. Ganz abgesehen davon, dass es für mich immer noch eine Herausforderung ist, pünktlich um 10:00 auf der Matte zu stehen (ja, andere halten das sicher für Luxus, und halten diese Programmierer für ein faules Pack - aber dafür sitzen wir manchmal auch noch bis 20:00 und länger dran ^^).

Auf der anderen Seite ist es aber auch entspannter, weil man zusammen mit anderen den Code schreibt und sich darüber abstimmt, was geschrieben wird. Zwischendurch gibt es Meetings, bei denen entweder über zukünftige sogenannte Technical Tasks abgestimmt wird oder Stories geschätzt werden (die dann von unserer P.O. eingestellt werden), oder es gibt technische Talks über interessante Themen wie Javascript-Tests mit Karma oder wie man mit Scala programmiert oder dergleichen.

An dieser Stelle gibt es gleich die größte private Veränderung für mich: Ich werde das erste Mal einen Vortrag halten. Und zwar gleich einen einstündigen Vortrag über CSS bei Immobilienscout, SASS und LESS. Zum Glück nur vor ein paar Kollegen, die ich mittlerweile auch recht gut kenne und vor denen ich keine allzu große Scheu haben muss. Ich habe zwar schonmal einen Vortrag mit einem Kollegen über Solr gehalten, der über zwei Stunden ging, aber da war zum einen mein Kollege deutlich stärker in der Planung aktiv und hat den roten Faden gut durch gezogen, und zum anderen kannte ich die Kollegen und das Thema schon deutlich länger und besser. Warum halte ich diesen Vortrag dann? Nun. meine Motivation in der neuen Firma war am Anfang nicht allzu überschwenglich, weil ich eigentlich eher in die Spielebranche wollte. Da ich dafür aber nicht alles getan habe, um da wirklich rein zu kommen, bin ich bei Immobilienscout gelandet. Und ich bereue es im Moment nicht einen Moment lang, obwohl es stressiger ist, ich die früheren Kollegen mehr mochte und ich immer noch so meine Probleme habe, im Team zu arbeiten und zum Teil das eigene Ego doch deutlich zurück zu fahren. Aber meine mangelnde Motivation ist nach einer Weile durchgekommen, und nachdem ich nun einige Male nach 10:00 da war und auch ein, zwei Krankheitstage hatte, ist meine Stellung nicht allzu hoch. Ich muss nun also einiges dafür tun, dass meine Stellung wieder besser wird, auch weil meine fachlichen Kompetenzen zwar gut sind, an mancher Stelle aber das abgebrochene Studium sich doch bemerkbar macht (siehe: Designpatterns).

Also werde ich mich morgen auf den Hosenboden setzen und mal ein paar Slides vorbereiten, mich in das CSS von dem Immobilienscout einarbeiten, gucken was es so für Klassen bei denen gibt und - sehr wichtig - reden üben.

Alles in allem bleibt meine Zukunft spannend, und ab sofort werde ich in mehr oder weniger regelmäßigen Abständen hier davon berichten.