We published a collection of our completed mobile app projects - what do you think? (mr)

11 Jahre!

eQuadriga feiert heute seinen elften Firmengeburtstag!

New Team Member!

Jan Theofel has joined our team as Business Development Manager South Germany. I am very happy that we have him on board! There are three of us in Germany now: Magdalena Böttger and myself, Martin Röll, in Berlin and Jan Theofel in Stuttgart. —mr

Erfahrungen und Tipps zur Zusammenarbeit in Remote Developer Teams

Mitschrift der Talk-Session von Stefan Peter Roos @spr2 auf dem Barcamp Stuttgart #bcs4.

Wie findet man eine passende Offshore-Agentur, oder einen Offshore-Freelancer?

Freelancer-Plattformen – Es gibt sehr viele. Sie unterscheiden sich danach, welche Technologien da stark vertreten sind, wie die Community ist und welche Art Auftraggeber dort aktiv ist. Such dir die zuerst die richtige Plattform aus.

Liste von Plattformen folgt von spr.

Je anspruchsvoller und neuer die Technologie, (zb RoR), desto schwieriger ist die Personalsuche. Egal ob vor Ort oder Offshore.

Verschiedene Regionen bieten verschiedene Technologieschwerpunkte / Skills.

Bei Suche nach Agentur: Unterschied kleine oder große Firma. Man sollte eine Firma finden, die ungefähr genauso groß ist, wie man selber.

Bei Suche nach Freelancern: Vorher überlegen: Welche Skills brauche ich (Designer, Projektmanager, Programmierer, Tester…)? Wie viele Leute will ich und wie heterogen soll mein Team werden?  Brauche ich Leute, die Vollzeit für mich da sein können (schnellere time-to-market), oder reicht Teilzeit (abends und Wochenende)?

Wenn man Vollzeitleute sucht, sollte man den Job in lokaler Zeit vormittags posten, wenn man Teilzeitleute sucht, abends posten.

Du bekommst 50 Antworten auf deine Freelancer-Ausschreibung:

Ist es ein Standard-Coverletter mit Lebenslauf oder eine individuelle Antwort, auf die Sache bezogen?

Test: Kommt der Freelancer auf Anfrage hin schnell in Skype online? Installiert er sich ein Tool, was du brauchst? -> Wie schnell reagiert er auch in Zukunft?

Kommunikations-Skills sind wichtig: Kann er flüssig Probleme formulieren? Kann er Anforderungen nochmal in eigenen Worten formulieren? Kann er zuverlässig zu einer bestimmten Zeit liefern?

Kommunikationsverhalten ist unterschiedlich je nach Alter: Freelancer sind meist zw. 25 und 40 Jahre alt. Frische Uniabsolventen sind viel besser ausgebildet, als Leute die vor 10 Jahren studiert haben, weil die Studiengänge in den letzten Jahren viel besser geworden sind.  Wenn man also Programmierer sucht, die aktuelle Methodenskills haben, sind jüngere Leute besser. Sie haben allerdings meist weniger interkulturelle Erfahrung, auch wenn sie allgemein westlicher orientiert sind („Man kann mit ihnen TED-Videos gucken.“). Ältere Offshore-Mitarbeiter sind gut für Projektmanagement und Orga.

Wie die Leute weitermotivieren im laufenden Projekt?

Immer mal kleine Forschungsprojekte geben, zur eigenständigen Arbeit. Z.B. Technologie evaluieren (inkl. eigenen Kriterienkatalog erstellen usw.). Das baut auch Wissen auf, und vermittelt im Prozess deine Werte und Prioritäten.

Kanban funktioniert gut, vor allem bei langfristigen Projekten. (Es motiviert, wenn man sich Tickets selber ziehen kann.)

Gegenseitig voneinander Lernen ermöglichen ist wichtig. Persistenter Gruppenchat (z.B. Campfire, Yammer) ist gut, weil alle sehen, was gerade passiert, und eingebunden werden, auch wenn sie mit dem jeweiligen Thema nichts zu tun haben. Interne Kommunikation sollte per default intern public sein. Sharing-Kultur bauen im Team, muss man selber vorleben. Tipp für Yammer: Tickets als Hashtags aggregieren.

Emails sofort beantworten, auch wenn drin steht, dass du grad keine Zeit hast, sondern erst später richtig antworten kannst. Sonst fühlt sich der andere ignoriert.

Es sollte immer eine Direct Line (Telefon oder Skype) zwischen Entwicklern geben- Zwischen lokal und remote, aber auch untereinander, wenn es mehrere Remote Locations sind.

Wie macht man Reviews / Qualitätssicherung?
Erfahrungsbericht von Andreas Wolf aus dem Open-Source-Projekt Typo3.

Es gibt einen Community Manager, der „eingeschlafene“ Teams wieder aufweckt, Leute motiviert.

Viel passiert spontan durch geografische Nähe, es bilden sich Subteams.

Insgesamt etwa 30 Entwickler, die in ihrer Freizeit an Typo3 arbeiten. Leute sind unterschiedlich stark engagiert.

Big Blue Button funktioniert gut für Chat, Desktop Sharing und Voice Conference (besser als Skype in Gruppe).

Etherpad läuft immer parallel bei Team-Meetings (die wöchentlich oder zweiwöchentlich stattfinden).

Alle 6 Tage zu wechselnden Uhrzeiten (damit man alle Leute mit einbeziehen kann) gibt es ein Meeting von Entwicklern und Interessierten.  Da geht es um allgemeine Updates und Probleme.

Es gab mal regelmäßigen Bug-Meetings, aber da gab es zu wenig Teilnahme.

Wichtig: direkte Kommunikation in offenen Kanälen. Kernteam sollte gut erreichbar sein.

Neue Leute freundlich einführen und an die Hand nehmen. Feedback geben.

Gerrit (Code Review Tool für Git) zusammen mit Git hat sich bewährt, aber es ist ein hoher Einführungsaufwand.

—mb

Welche IT-Projekte nicht nach Offshore gehen sollten. Und welche sofort.

Ich vermittle seit über einem Jahr Programmierprojekte an eine indische IT-Firma, die etwa 50 Programmierer festangestellt hat. Dabei habe ich ein ganz gutes Gefühl entwickelt, welche Projekte sich für die Kunden in Deutschland tatsächlich finanziell lohnen, und bei welchen die Schwierigkeiten von vorneherein absehbar sind.

Anlässlich des Barcamp Stuttgart #bcs4 habe ich die aus meiner Sicht wichtigsten „Show-Stopper“ und „No-Brainer“ (Verkäufersprache) zusammengefasst.

Typische Gründe für IT-Outsourcing: Du…

…hast keine Zeit, es selber zu tun.

…hast kein Geld, einen teuren Festangestellten/Freelancer/Agentur vor Ort zu bezahlen.

…findest keinen Studenten, der es gut und billig macht.

…hast jemanden auf dem Barcamp getroffen, der dir erzählt hat, dass Outsourcing super ist.

Hier sind 6 Situationen, in denen Outsourcing trotzdem eine schlechte Idee ist.

1) Das Ziel ist (ungefähr) klar, aber nicht der Weg dahin.

Du weißt, warum das Projekt für dein Geschäft wichtig ist und was das Ergebnis sein soll. Du weißt aber nicht, was der kostengünstigste, effizienteste und zukunftssicherste Weg ist, das Ziel zu erreichen.

Warum Outsourcen in dieser Situation nicht funktioniert: Offshore-Programmierer kennen viel zu wenig von deinem Systemkontext, deinen internen Kompetenzen, Best Practices aus vergleichbaren Projekten und unausgesprochenen Anforderungen, um dir beim Finden des besten Weges zu helfen. Unausgereifte Requirements führen zu höheren Entwicklungszeiten, der Offshore-Kostenvorteil wird nicht ausgenutzt.

Mein Rat: Nimm dir einen lokalen IT-Berater oder bring deinen eigenen CTO dazu, das Projekt richtig zu durchdenken. Erst wenn die Anforderungen auch technisch klar definiert sind, dann kannst du wieder über Outsourcing der Umsetzung nachdenken.

2) Keine Zeit für das Projekt

Du hast keine Zeit, das Projekt selbst umzusetzen, oder auch nur richtig darüber nachzudenken. Du willst es eigentlich nur aus dem Weg haben.

Warum Outsourcen in dieser Situation nicht funktioniert: Offshore-Programmierer brauchen Informationen und Feedback. Beispielsweise bei einem Projekt mit 2 Externen Vollzeit, mindestens einen Tag in der Woche von dir. Anfangs deutlich mehr. Wenn du dir dafür keine Zeit nehmen kannst, wird die Qualität der Arbeitsergebnisse nicht zufriedenstellend sein.

Mein Rat: Schieb es lieber ganz auf, oder erhöhe die Priorität / nimm dir die Zeit.

3) Die Zeit drängt

Du hast eine feste Deadline, die immer näher rückt. Es wäre schon knapp, wenn du es jetzt noch selbst umsetzen wolltest. Du willst schnelle Unterstützung von außerhalb.

Warum Outsourcen in dieser Situation nicht funktioniert: Zusammenarbeit mit Offshore-Programmierern dauert immer deutlich länger als mit internen, weil die Kommunikation Zeit braucht. Bei einer neuen Kooperation kommt außerdem der Einarbeitungsaufwand dazu. Rechne bei der Umsetzung mit bereits eingearbeiteten Offshore-Programmierern immer noch mit doppelter Projektdauer insgesamt.

Mein Rat: Kippe die Deadline oder arbeite die Nächte selbst durch. Oder beauftrage doch einen indischen Dienstleister, dem du dann deinem Management gegenüber die Schuld an der Verzögerung geben kannst.

3) Teilprojekt an einem komplexen System

Du hast ein großes, komplexes Produkt, das von mehreren Entwicklern kontinuierlich weiterentwickelt wird. Du willst einen Teil der Programmieraufgaben auslagern.

Warum Outsourcen in dieser Situation schwierig ist: Es muss sehr viel abgestimmt werden - von Programmierstandards über Schnittstellen bis zu voneinander abhängigen Anforderungen. Der Kommunikationsaufwand wird die Kosteneinsparung wahrscheinlich übersteigen. Oder mangelnde Kommunikation führt zu Fehlern.

Mein Rat: Identifiziere einen einigermaßen isolierten Teilaspekt des Produkts. Baue langsam ein festes Offshore-Team dafür auf. Lass deine Mitarbeiter in beide Richtungen regelmäßig reisen.

5) Echte technische Innovation

Dein Geschäftsmodell dreht sich um eine anspruchsvolle, technische Innovation. Beispielsweise eine neue Art von Software. Du erfindest diese Technologie gerade erst.

Warum Outsourcen in dieser Situation nicht funktioniert: Technische Machbarkeit und innovative Anwendung sollen sich spontan gegenseitig befruchten können. Die Entwickler finden eine neue technische Lösung, das Produktmanagement findet eine innovative Anwendung dafür und der Vertrieb weiß, welcher Kunde ein Pilotprojekt damit macht. Diese gegenseitige Inspiration ist (meiner Meinung nach) essentiell für Entwicklung on the cutting edge. Diese Dynamik kommt mit geografischer und kultureller Distanz kaum zustande.

Mein Rat: Hab das ganze Team bei dir vor Ort. Alle Beteiligten sollten sich täglich sehen.

6) Jemand ist dagegen

Dein Management und/oder deine IT sieht in dem Outsourcing-Projekt eine Gefahr für die eigene Machtposition. Nicht für das Projekt an sich, sondern für die eigene Kontrolle und Einflussmöglichkeiten.

Warum Outsourcen in dieser Situation nicht funktioniert: Es werden so lange Steine in den Weg gelegt, bis das Projekt begraben ist. Am Ende schiebt man es bestenfalls auf kulturelle Unterschiede.

Mein Rat: Nicht outsourcen. Erstmal grundsätzlichere, interne Konflikte lösen. Oder die Firma wechseln.

In den folgenden Projektsituationen ist es dagegen sehr wahrscheinlich, dass Outsourcing die richtige Entscheidung ist:

Es gibt Projektbeschreibungen, bei denen ich von Anfang an sagen kann: Ja, das wird sicher Offshore gut klappen und dem Kunden Geld sparen.

1) Etwas portieren

Du hast eine iOS App bereits im App-Store und willst sie auch für Android und WP7 rausbringen.

Oder du hast eine Software, die auf einer alten Servertechnologie basiert, und willst sie komplett neu schreiben. Die Funktionalität bleibt ungefähr gleich und ist in einer Nutzerdokumentation beschrieben.

Warum es Offshore funktioniert: Der Kommunikationsaufwand ist überschaubar. Die Offshore-Programmierer können im eigenen Tempo arbeiten und sich am Vorbild der vorhanden Software orientieren.

2) Etwas klonen

Dein geplantes Business ist ein Copycat einer bestehenden App, Software oder Webseite.

Oder du willst eine normale Firmen-Präsentations-Webseite, wie es schon tausende gibt. Du kannst dein Briefing formulieren, indem du den Offshore-Entwicklern lebende Beispiele gibst und sagst, welche Teile du von welcher Vorlage übernehmen möchtest.

Warum es Offshore funktioniert: Technische und funktionale Anforderungen sind leicht zu verstehen und zu kommunizieren. Auftretende Komplexitäten und mögliche Lösungen können auch in Zukunft bei den Originalen abgeschaut werden.

3) Kontinuierliche, sich wiederholende Aufgaben

Du hast eine Softwareprodukt, das du als White-Label verkaufst und immer wieder für Lizenznehmer konfigurieren musst. Oder du implementierst für Kunden ein bestimmtes Shopsystem, CMS oder anderes komplexes System, das nach dem Launch regelmäßig gewartet und aktualisiert werden muss.

Warum es Offshore funktioniert: Du kannst ein kleines Spezialistenteam aufbauen und trainieren, das Routineaufgaben effizient und kostengünstig umsetzt. Die laufenden Kosten sind planbar und deutlich geringer als vor Ort.

4) Research & Development

Du brauchst für dein Vorhaben einen technischen Proof of Concept oder eine Demo für deinen Kunden. Ein definiertes mathematisches Problem braucht eine Lösung. Oder du willst evaluieren, welche Technologie für eine Neuentwicklung am besten geeignet ist.

Warum es Offshore funktioniert: Die Offshore-Mitarbeiter können eigenständig arbeiten und sind bei R&D-Aufgaben meist sehr motiviert. Intelligenz und gute Ausbildung (oft bei indischen Entwicklern vorhanden) werden optimal eingesetzt.

—mb

hello, World

This is eQuadriga’s Tumblr. We are an Indian-based offshore software development company, working mostly for clients in Germany.

This shall be our collection of links, our blog, our place of sharing, discussion and learning. We look forward to hearing from you! —mr