Legacy Code and Now What?

Slide1

Slide3

Every day is a ground hog day. It is eight o’clock in the morning. You come into the office, look at the Scrum board of your current project and pick the next task of the user story with the highest priority. You sit fully motivated in front of your computer, open up your favorite IDE and start to implement the task. But wait! Something is wrong! First, you have to fully grasp the code you tend to put the feature into. But there is a lot of code in that area, which needs to be understood, analyzed and put into context with the feature you are implementing. You start drawing a sequence diagram of what is going on in that code but the more you dive into it the more confusing it gets. The motivation decreases, frustration chimes in. Maybe someone in your team can help you understand the code. You call your colleague, who immediately sits down with you trying to help understanding. Minutes later your friend has no clue either and tells you to “just freaking hack it into the code”. Despite feeling a bit dirty you have no other chance than to hack it. The feature has to be completed better yesterday than tomorrow! But you are a hero, aren’t you?! You can do it! The motivation comes back and finally you get the task done and the feature you are working on is ready to be demonstrated during the sprint review.

The sprint review starts, your product owner and your team members are gathered around the demo computer. You are first to show your new feature to the product owner. The feature works and fully impresses your product owner. Now, it’s your team mate’s turn to present the feature he has been working on. He starts presenting, but suddenly… BOOOM… the application crashes. Your colleague almost freaks out because he wanted to receive a pat on the back from the product owner, too. He blames you for killing his feature. The product owner gets angry and suddenly starts complaining about your team making more mistakes than pushing out new features. Your team mate finally says what your team always had in mind: He demands a rewrite of the whole software because you have reached a state where you cannot add any new features without severely damaging old ones. But guess what! Your product owner demands more features nonetheless. And he wants them now!

Do you recognize the situation? Let us analyze what happened here.

Continue reading

Posted in Agile, Clean Code, Presentation, Speeches, Test Driven Development | Tagged , , | Leave a comment

Clean Code Cheat Sheet

It took me about one and a half year to update my cheat sheet about clean code and TDD.

But now, it’s here.

The cheat sheet has grown quite a bit and now contains principles, patterns, smells and guidelines for

  • clean code
  • class and package design
  • TDD – Test Driven Development
  • ATDD – Acceptance Test Driven Development
  • Continuous Integration

I had to re-layout the sheets because maintenance became a nightmare (yes, very ironic).

Download: Clean Code V2.1

Feedback is highly welcome. Please write a comment below.

Clean Code
 

 

Posted in Clean Code | Tagged , , | Leave a comment

The fluent calculator kata – Rev 2

This is a cross-post from planetgeek.ch

In my last post I described the fluent calculator kata which we came up with for our coding dojo. When we started implementing the kata we decided to modify the initial set of  ”requirements” slightly in order to make it a bit more complex. Here is the changed requirement:

  • The calculator should never throw exceptions. When an overflow occurs the calculator should throw an InvalidOperationException with an inner ArithmeticException.

I’ll show you what design and tests we came up with.

Continue reading

Posted in .NET, Agile | Tagged | Leave a comment

The fluent calculator kata

This is a cross-post from planetgeek.ch

We are currently preparing for the next coding dojo in our team. A team mate and I came up with a nice kata which we are going to try out today. We didn’t check if there is already such a kata available on the internet. So please take no offense if you already came up with a similar solution ;)

  • All input values should be int.
  • The calculator should never throw exceptions.
  • The api should guide through the fluent interface, i.e. after the calc method you are never again able to call the calc method.
  • It is possible to get the result by implicitly casting it to int.
Posted in .NET, Agile | Tagged , | Leave a comment

Alain Ettlin berichtet direkt vom Scrum Gathering in Las Vegas

Das Scrum Gathering in Las Vegas stand gestern Abend ganz im Zeichen des Networkings. Bei feinem Essen und exotischen Drinks versammelte sich die Scrum Community im berühmten Jimmy Buffett’s Margaritaville. Zu den Klängen von Cliff Ericksons akustischer Gitarre wurden Bekanntschaften erneuert, neue Kontakte geknüpft und viele spannende Gespräche geführt.

Bilder findest Du unter https://www.facebook.com/bbvsoftware

Heute hat Alan im Track «Tools of the Future» seine interaktive Session «Get all players involved! Behaviour-Driven Development made easy» durchgeführt. Der Beitrag hat sich mit BDD aus einer Projektperspektive befasst und hat insbesondere aufgezeigt, wie diese Technik aktuell in der bbv weiterentwickelt wird um ihr volles Potenzial auszuschöpfen. Es wurde der Prototyp eines Werkzeugs vorgestellt, welches neue und effektivere Interaktionsmuster der verschiedenen Projektbeteiligten ermöglicht. Das Publikum hat grosses Interesse an diesem Ansatz gezeigt und hat engagiert zu dessen Weiterentwicklung beigetragen. Mit dieser Unterstützung der Scrum Community können wir nun in der bbv unser Konzept vorantreiben und – ganz im Sinne des Scrum Gatherings – ein Werkzeug für die Zukunft erstellen.

Posted in Agile, Announcement, Events, Presentation | Tagged , , , , , , , | Leave a comment

Ninject with NServiceBus confusions

This is a cross-post from planetgeek.ch

Every now and then people get confused when they try to use the NinjectObjectBuilder for NServiceBus. In this blog post I want to describe the purpose of the NinjectObjectBuilder for NServiceBus and highlight the difference between Ninject and Ninject together with NServiceBus.

Continue reading

Posted in .NET | Tagged , | 1 Comment

bbv @ Scrum Gathering

Dr. Alan Ettlin, Projektleiter und Berater bei bbv Software Services, spricht nächste Woche am Scrum Gathering in Las Vegas. Alan wird direkt aus Las Vegas vom Geschehen am Scrum Gathering bloggen.#sglasIn seinem Vortrag «Get all players involved! Behaviour-Driven Development made easy» stellt er BDD als zukunftsweisendes Werkzeug in der Softwareentwicklung vor. Das Scrum Gathering bietet einen idealen Rahmen, um dieses Konzept mit der Scrum Community zu diskutieren und weiterzuentwickeln.

Das Scrum Gathering bietet vom 6.-8. Mai in drei Tracks zahlreiche Vorträge und Workshops. Ein Highlight der Konferenz ist die Eröffnungsrede von Jeff Sutherland, einem der Urväter von Scrum.

Alan hat an der ETH in Zürich Informatik studiert und anschliessend an der EPF in Lausanne promoviert. Er ist als Projektleiter von Kundenprojekten mittendrin in der Praxis der Softwareentwicklung. Als Berater und Coach gibt er seine Erfahrung weiter und unterstützt Kunden in allen Belangen des Software-Entwicklungsmanagements.

Posted in Agile, Announcement, Events, Presentation, Scrum | Tagged , , , , , , | Leave a comment

Swiss Requirements Day 2013 in Zürich – Jetzt CHF 60,– Rabatt sichern

Nach der überaus erfolgreichen Durchführung im letzten Jahr mit mehr als 600 TeilnehmerInnen geht der Swiss Requirements Day am 19. Juni 2013 in die vierte Runde.

Die bbv unterstützt die Konferenz auch 2013 wieder als Gold-Partner. Und davon können Sie profitieren, mit einem Rabatt in Höhe von CHF 60,–: Geben Sie den Promo-Code «Promo_bbv» bei der Registrierung an. Der Code ist bis zum 31. Mai 2013 gültig.

Die Registrierung und weitere Informationen gibt es unter unter: www.SwissRequirementsDay.ch.

Neben zahlreichen Vorträgen zum Thema Requirements gibt es in diesem Jahr zwei interessante Keynotes: Zum einen von Jan Bosch, Chalmers University of Technology Gothenburg, welcher  über zwei Jahrzehnte Erfahrung als Ingenieur, Führungskraft, Wissenschaftler, Innovator und Berater in der Softwarebranche bringt. Er referiert zum Thema «Do As I Say; Not As I Do?». In der zweiten Keynote zeigt Jörg Dörr, der renommierte Redner und Forscher am Fraunhofer-Institut für experimentelles Software Engineering, wie Requirements Engineering fit für die Zukunft zu machen ist, um Chancen und Risiken neuer Techniken und Anwendungen erfolgreich zu begegnen.

Der Swiss Requirements Day ist eine neutrale und nicht-kommerzielle Konferenz über Requirements und deren Bedeutung für die gesamte IT-Industrie und eine bedeutende Netzwerk-Plattform für die Branche.

Besuchen Sie uns an unserem Stand und holen Sie sich unser Agile Requirements Engineering Poster.

mainimg_RE

Posted in Announcement, Events, Marketing, Requirement | Tagged , , , | Leave a comment

Folien und Source-Code zu Visual Studio Training

Wir von bbv Software Services haben gemeinsam mit Microsoft am 4. April unter dem Titel „Werden Sie Meister Ihres Faches“ ein Training zu Visual Studio 2012 durchgeführt. Mit diesem Training konnten die Teilnehmenden ihr Wissen zu Visual Studio vertiefen und neue Lösungen kennen lernen. Die Folien und der Source Code der Demo Applikation sind nun online:

Link zu den Folien
Link zum Source Code

Posted in .NET, ALM, Azure, Team Foundation Server | Leave a comment

Fumetto – Internationales Comix-Festival Luzern – auf dem iPhone, powered by bbv Software Services

fumettobbv Software Services erstellt und erneuert die Festival-App für das Fumetto. Das Fumetto ist eines der wichtigsten internationalen Comic-Festivals in Europa. Während neun Tagen präsentieren sich nationale und internationale Künstler in Luzern. Das Festival besteht aus 20 Haupt- und 50 Satellitenausstellungen, welche in der Stadt Luzern verteilt sind.

Mit der iPhone App wird den Besuchern ein digitaler Festival-Guide zur Verfügung gestellt werden. Die App informiert über die Künstler und die verschiedenen Ausstellungen. Eine Agenda stellt sicher, dass die Besucher ihre bevorzugten Events nicht verpassen. Zudem informiert die App laufend über Neuigkeiten rund ums Festival.

Die App steht per sofort im iTunes App Store zur Verfügung.

Die App basiert auf dem Mobile Application Framework (MAF) der bbv Software Services. Mit dem MAF lassen sich innert kurzer Zeit native iOS- und Android-Apps realisieren. Das MAF definiert eine Standardstruktur für Apps und kann je nach Bedarf erweitert werden.

Die Anbindung an den Server erfolgt über REST. Der Server basiert auf der Google App Engine, damit sich der Kunde nicht um zusätzliche Infrastruktur kümmern muss.
Alle Daten werden komfortabel in einer Google Docs Tabelle erfasst und in das Backend importiert. Werden Daten hinzugefügt oder verändert, synchronisiert sich die App automatisch und lädt die neuen Daten auf das iPhone.

Für die Entwicklung der App wurden folgende Technologien und Tools verwendet:
iOS, XCode, Objective-C, RestKit, PullTo-Refresh, MWFeedParser,
Google App Engine, Google Docs, Java, Eclipse

Posted in Announcement, Java, Mobile | Tagged , , , , , , , , | Leave a comment