Der richtige Technologie-Stack für mein Startup?
Wohl jeder Startup Gründer wird dem beipflichten können. Gerade in den Anfangsphasen eines Startup gilt es, eine Vielzahl an unterschiedlichsten Entscheidungen zu treffen und immer wieder andere Hürden zu überwinden. Erschwerend kommt die notorische Knappheit an Ressourcen (Zeit, Geld, Personal,..) hinzu. Trotzdem erlebt die Technologie-Branche im Moment eine absolute Blütezeit, was Startup’s anbelangt. Dank dem Internet ist es so einfach wie nie einen neuen Dienst zu starten, eine neue Plattform zu "launchen" oder Informationen auf neuen Wegen (zum Beispiel als API) anzubieten. Der Traum selber bald zu den Einhörnern des Wall Street Journals zu gehören ist also quasi zum Greifen nahe.
Genauso Hip wie die Startup-Idee soll natürlich auch die darunterliegende Technologie-Basis - der Technologie-Stack - sein, denn eines ist klar:
Der Aufbau von so einem Entwicklungsteam stellt jedoch vielfach ein Problem dar: In der Schweiz ist es beispielsweise zurzeit schwierig gute Software-Leute (Software Entwickler, Software Ingenieure, Software Architekten usw.) zu rekrutieren. Auf dem Markt herrscht eine Dürre an qualifiziertem Personal, was unweigerlich dazu führt, dass die grossen Firmen immer mehr mit fetten Lohntüten und sonstigen Annehmlichkeiten wie zum Beispiel General-Abonnements der SBB, Übernahme der Handykosten, Beteiligung an Fitness Abos etc. um die Talente buhlen.
Als Startup kannst du hier wahrscheinlich nicht mithalten und bist daher gezwungen, deinen Leuten andere Anreize zu bieten. Ein richtig cooler Technologie-Stack kann genau einen solchen Anreiz darstellen. Doch auch hier stellen sich wieder eine Vielzahl an Fragen:
- welche Technologie ist nicht nur Hip sondern auch die Richtige für meine Idee?
- Wie kann ich sicherstellen, dass die Balance zwischen "Time-To-Market" und “Leading Edge“ Technologie gelingt?
- Wer kann mir helfen die richtige Technologie auszuwählen?
- Wie finde ich die passenden Entwickler?
- usw
Wie so oft gibt es zu dieser Fülle an Fragen keine „one size fits it all“ Antworten und somit kann ich dir diese auch nicht im Rahmen von diesem Blogpost liefern. Gerne zeige ich dir aber, welche Fragen ich mir bei einer solchen Ausgangslage – unter anderem – stelle. Zudem lass dir gesagt sein: Falls du gerade sehr konkret vor Fragestellungen wie „Was ist,die richtige Technologie für mein Startup?“ stehst, darfst du sehr gerne hier mit uns in Kontakt treten! Wir würden uns freuen!
CopyCat - Wie machen es die Anderen?
Sehr naheliegend ist es natürlich mal zu schauen, was die Konkurrenz macht. Nun ja, sofern man denn seine direkte Konkurrenz bereits kennt. Eine interessante Plattform auf der die verschiedensten Unternehmen ihren Technologie-Stack publizieren ist stackshare.io. Stackshare bietet Informationen zu:
- Welche Technologien und Stacks sind gerade hoch im Kurs (siehe zum Beispiel http://stackshare.io/trending/tools ) ?
- Welcher Technologie-Stack verwendet zum Beispiel Zalando (siehe http://stackshare.io/zalando/zalando) ?
- Wer verwendet alles AngularJS (siehe http://stackshare.io/angularjs)?
Als weiterer Dienst kann builtwith.com Auskunft darüber geben mit welchen Technologien ein Online-Portal erstellt wurde. Anbei ein Screenshot des evaluierten Technologie-Stack von www.retschgi.com:
Zusätzlich bietet builtwith.com Trend-Grafiken zu konkreten Technologien. Siehe zum Beispiel hier die Auswertung von Composite C1:
Blindes Kopieren ist immer ein Fehler und sicherlich nicht die einzige geeignete Strategie. Inspiration und Bestätigung kann jedoch entscheiden sein bei der Auswahl des Technologie-Stacks.
Safety First - Wie sicher ist eine Technologie-Auswahl?
Technologien kommen und gehen. Egal ob Open Source mit einer Community oder Closed Source mit einem namhaften Unternehmen im Rücken: Man ist nie davor gefeit, dass die Technologie sich plötzlich als sterbendes Pferd herausstellt. Um den Super-GAU zu vermeiden, kann man im Vorfeld verschiedene Indizien zu Rat ziehen.
Open Source Technologie
Gerade wenn die Technologie Open Source zur Verfügung steht geht dies umso leichter. Interessant finde ich zu überprüfen wie viel Bewegung auf dem Repository vorhanden ist. Es spielt keine Rolle ob die Technologie auf github, bitbucket, codeplex oder anderswo gehostet wird. Sofern sie öffentlich zugänglich ist, kann das Beobachten des Repository spannende Indizien geben:
- Wie viele Entwickler partizipieren (Anzahl Contributers)?
- Wie oft wird pro Tag/Woche/Monat/Jahr daran gearbeitet?
- Wie schnell geht es bis eine meiner Anfrage von der Community beantwortet wird?
- Gibt es eine Roadmap?
Eine interessante Anlaufstelle kann zusätzlich openhub.net (ehemals Ohloh) sein. openhub.net analysiert in regelmässigen Abständen öffentlich verfügbare Projekte. Anbei ein Screenshot von Orckestra CMS auf OpenHub.net
Closed Source Technologie
Bei Technologien wo nicht Open Source verfügbar sind achte ich auf folgende Aspekte:
- Was für ein Unternehmen steht dahinter? (Grösse, Geschichte, Strategie usw..)
- Wie viele Technologie-Partner gibt es in der Schweiz resp. Weltweit?
- Was gibt es für Referenzen?
- Gibt es eine Roadmap?
Direkte Gespräche mit dem Technologie-Anbieter sind oftmals ebenso sehr Aufschlussreich.
GetReady for Scale - Kann ich mit diesem Technologie-Stack skalieren?
Jeder hofft natürlich, dass seine Idee bald so richtig durchstartet und die Nachfrage nach dem Produkt, Plattform, Service oder was auch immer so richtig tornadoartig ansteigt. Das Buch Inside the Tornado von Geofrey A. Moore beschreibt sehr schön was dann passiert und was man benötigt um „zu überleben“.
Oftmals bedeutet dies automatisch auch schnell skalieren zu können. Das kann sich unter Umständen bis in dein Entwicklungsteam durchschlagen: Im Extremfall brauchst du über Nacht neue Teammitglieder. Wichtig: Auch hier bedacht vorgehen. Der Medium-Artikel Don't destroy your DevTeam by Growing setzt sich auf eine spannende Art und Weise damit auseinander.
Durch den Aufbau von unterschiedlichen Entwicklungsteams habe ich gelernt, dass jedes neue Teammitglied (gilt nicht nur für Entwickler) eine oftmals unterschätzte Einarbeitungszeit brauch, bis es auf Vollspeed läuft. Dabei braucht auch ein absoluter Top-Crack schnell mal 3 Monate. Dies vor allem, weil jede Organisation ihre impliziten Regeln aufweist. Das heisst, dein Neuankömmling muss die impliziten Regeln von deinem Produkt/Service/Dienstleistung, der gewählten Architektur, deinen Coding-Rules, deiner Team-Organisation, deiner Zielmärkte, von deinem Verhalten als sein Vorgesetzten und noch vieles mehr verstehen, bis er dich bei deinen Zielen mit richtiger Power unterstützen kann. Wow, das ist eine ganze Menge! Kommt da noch ein komplett exotischer Technologie-Stack dazu, dann dauert es schnell mal noch 2-3 Monate zusätzlich.
Du bist also gut beraten bei der Wahl deines Technologie-Stacks auch von Anfang an die Skalierungsmöglichkeiten im Auge zu behalten. Folgende Tipps kann ich dir dazu geben:
1. Wähle eine etablierte Programmiersprache
Die etablierten Programmiersprachen haben den Vorteil, dass sie stärker verbreitet sind. Setzt du zum Beispiel auf Java, C#, Ruby usw. als Grundsprache legst du einen guten Grundstein um zu skalieren. Eine Interessante Statistik zu der Verbreitung der Programmiersprachen gibt es hier
Natürlich ist die Grundprogrammiersprache nur ein Aspekt in einem Technologie-Stack. Für mich ist er aber der zentralste, denn auf einem bekannten, soliden Fundament lässt sich einfacher etwas aufbauen.
2. Freelancer-Pools kontaktieren
Die bekannten Freelancer-Plattformen (z.B. https://www.elance.com/) geben dir sehr schnell einen Eindruck darüber wie viele Ressourcen du zu deinen Technologien in deinem Technologie-Stack findest. Auch die grossen Freelancer-Vermittler geben einen guten Einblick auf die verfügbaren Ressourcen in Ihren Datenbanken. Ein Beispiel dafür findest du bei Gulp: https://www.gulp.ch/spezialisten
3. Outsourcing-Partner evaluieren
Nebst dem hinzuziehen von Freelancern ist ein beliebtes Modell auch das Outsourcing. In Management-Kreisen ist dazu zurzeit „Shoring“ ein beliebtes Thema. Die Grundidee ist dabei das Outsourcing ins Ausland zu verlagern. Die Begriffsvielfalt ist auch hier gross: Nearshoring, Offshoring, Smartshoring, usw.
Je nach Destination versprechen die günstige Stundensätze vordergründig eine schnelle Reduktion der Kosten und eine schnelle Skalierung. Um ausführlicher darauf einzugehen würde es weitere BlogPosts brauchen.
Folgender Tipp kann ich dir aber geben: Im Internet findest du verschiedene Quellen wo dir über die Technologie-Kompetenzen in den jeweiligen Ländern erste Auskunft geben. Zum Beispiel die Java User Group von Sofia, lässt den Rückschluss zu, dass du den einen oder anderen Java Entwickler hier finden könntest ;-)
Abschliessend
Gleich wie du dein Geschäftsmodell am Anfang immer wieder hinterfragen und eventuell auch pivotieren musst, so musst du dich auch immer wieder mit den Technologie-Themen auseinandersetzen. Aus eigener Erfahrung kann ich dir mitgeben, dass du wahrscheinlich nie so richtig an einem Ende angelangen wirst. Darum gilt auch hierzu einmal mehr:
In dem Sinne: Viel Erfolg!