Wie ich zu ThoughtWorks kam oder ein Beispielinterview

Wie ich zu ThoughtWorks kam oder ein Beispielinterview

Kommen Sie nicht auch ins Grübeln, wenn Sie die Stelle wechseln wollen und ein Vorstellungsgespräch ansteht? Zunächst denkt man: „Ich muss mich auf das Interview vorbereiten“. Man muss Aufgaben auf HackerRank bearbeiten, Crack the Coding Interview lesen, auswendig lernen, wie eine ArrayList funktioniert und was sie von einer LinkedList unterscheidet. Ach ja, und sie könnten auch nach Sortieralgorithmen fragen, und es wäre eindeutig unprofessionell, zu sagen, dass Quick Sort wahrscheinlich die beste Wahl ist.
Aber Moment mal, Sie programmieren doch 8 Stunden am Tag, lösen interessante und knifflige Aufgaben, und an Ihrem neuen Arbeitsplatz werden Sie mehr oder weniger dasselbe tun. Dennoch muss man sich irgendwie zusätzlich auf das Interview vorbereiten, nicht um die täglichen Fähigkeiten zu verfeinern, sondern um das zu lernen, was man an der aktuellen Stelle nicht benötigt hat und wahrscheinlich auch nicht am nächsten. Auf Ihre Einwände, dass Computerwissenschaft in unserem Blut liegt, und dass wir, wenn wir mitten in der Nacht geweckt werden, blind und mit geschlossenen Augen einen Breitensuchbaumalgorithmus auf ein Kissen schreiben sollten, werde ich antworten: Wenn ich mich für den Zirkus bewerben würde und mein Haupttrick genau das wäre – dann ja, würde ich zustimmen. Dieses Können muss man überprüfen.

Aber warum sollte man irrelevante Fähigkeiten für den aktuellen Job überprüfen? Nur weil es modern geworden ist? Weil Google das so macht? Oder weil Ihr zukünftiger Teamleiter alle Sortiermethoden auswendig lernen musste, bevor er ein Vorstellungsgespräch hatte, und jetzt glaubt, dass „jeder gute Programmierer den Algorithmus zur Erkennung von Palindromen im String auswendig kennen muss“?

Also, Sie sind nicht Google. Was sich Google leisten kann, können normale Unternehmen nicht. Google hat, nachdem sie die Daten ihrer Mitarbeiter analysiert haben, herausgefunden, dass genau bei ihnen Ingenieure mit olympischen Hintergründen am besten mit ihren spezifischen Aufgaben zurechtkommen. Darüber hinaus können sie, während sie den Auswahlprozess gestalten, das Risiko in Kauf nehmen, dass sie möglicherweise einige gute Ingenieure nicht einstellen, weil sie nicht so leicht mathematische Probleme lösen können. Aber für sie ist das kein Problem, es gibt viele, die bei Google arbeiten möchten, die Stelle wird besetzt werden.
Schauen wir jetzt aus dem Fenster, und falls vor Ihrem Büro immer noch Ingenieure stehen, die bei Ihnen arbeiten möchten und kein Zeltlager errichtet haben, und Ihre Entwickler öfter auf Stack Overflow nach dem nächsten Spring-Annotation suchen, anstatt sich mit den Feinheiten von Ranking-Algorithmen zu beschäftigen, dann ist es offensichtlich an der Zeit, sich zu fragen, ob es sinnvoll ist, Google zu kopieren.

Was tun, wenn Google beim ersten Mal versagt hat und keine Antwort gibt? Überprüfen Sie genau das, was der Entwickler bei der Arbeit tun wird. Was schätzen Sie an Entwicklern?
Legen Sie die Kriterien fest, wen Sie einstellen möchten, und entwickeln Sie Tests, die genau diese Fähigkeiten überprüfen.

ThoughtWorks

Und was hat ThoughtWorks damit zu tun? Hier habe ich für mich selbst ein Beispiel für ein hervorragendes Vorstellungsgespräch gefunden. Wer sind ThoughtWorks? Kurz gesagt, es ist eine High-End-Consulting-Firma mit Büros auf der ganzen Welt, von China und Singapur bis hin zu den amerikanischen Kontinenten, die seit etwa 25 Jahren in der Softwareentwicklung berät und eine eigene Wissenschaftsabteilung hat, die von Martin Fowler geleitet wird. Wenn Sie eine Liste von 10 Büchern suchen, die ein Software-Ingenieur unbedingt lesen sollte, dann werden wahrscheinlich 2-3 davon von Leuten aus ThoughtWorks geschrieben sein, wie zum Beispiel "Refactoring" von Martin Fowler und "Building Microservices: Designing Fine-Grained Systems" von Sam Newman oder "Building Evolutionary Architectures" von Patrick Kua, Rebecca Parsons, Neal Ford.
von Patrick Kua, Rebecca Parsons, Neal Ford.

Das Geschäftsmodell des Unternehmens basiert auf dem Angebot recht teurer Dienstleistungen, doch der Kunde bezahlt für die phänomenale Qualität, die sich aus Expertise, internen Standards und natürlich Menschen zusammensetzt. Daher ist es hier unerlässlich, die richtigen Leute einzustellen.
Wer sind also die richtigen Leute? Natürlich ist das für jeden anders. ThoughtWorks hat festgestellt, dass für ihr Geschäftsmodell die wichtigsten Kriterien für Entwickler sind:

  • Die Fähigkeit zum Pair Programming. Und zwar die Fähigkeit, nicht die Erfahrung oder das Können. Niemand erwartet, dass Leute kommen, die bereits seit 5 Jahren Pair Programming praktizieren. Aber empfänglich für die Meinungen anderer zu sein und zuhören zu können - das ist eine notwendige Fähigkeit.
  • Die Fähigkeit, Tests zu schreiben, idealerweise die Praktik von TDD zu praktizieren.
  • SOLID und OOP zu verstehen und anwenden zu können.
  • Seine Meinung zu präsentieren. Ein Berater muss mit den Entwicklern des Auftraggebers und anderen Beratern zusammenarbeiten, und es bringt wenig Nutzen, wenn eine Person etwas gut kann, aber völlig unfähig ist, dies den anderen Teammitgliedern zu vermitteln.

Es ist nun wichtig, genau diese Fähigkeiten des Kandidaten zu bewerten. Hier möchte ich von meiner Erfahrung bei einem Vorstellungsgespräch bei ThoughtWorks berichten. Ich werde gleich sagen, dass ich in Singapur war und das Gespräch bestanden habe, aber der Rekrutierungsprozess ist einheitlich und wird sich von Land zu Land nicht stark unterscheiden.

Phase 0. HR

Wie so oft gab es ein 20-minütiges Gespräch mit HR. Ich werde darauf nicht näher eingehen, nur sagen, dass ich noch nie zuvor einen HR getroffen habe, der 15 Minuten über die Entwicklungskultur im Unternehmen reden konnte, warum sie TDD anwenden, warum Paarprogrammierung. Normalerweise versinken die HRs an diesem Punkt und erzählen, dass ihr Prozess gewöhnlich ist: Entwickler entwickeln, Tester testen, Manager treiben an.

Phase 1. Wie gut bist du in OOP, TDD?

1,5 Stunden vor Beginn des Interviews erhielt ich die Aufgabe, einen Simulator für den Mars-Rover zu erstellen.

Aufgabe Mars RoverEin Team von robotergestützten Rovern soll von der NASA auf ein Plateau auf dem Mars gelandet werden. Dieses Plateau, das kurioserweise rechteckig ist, muss von den Rovern befahren werden, damit ihre Bordkameras eine vollständige Ansicht des umliegenden Geländes erhalten, um sie zur Erde zurückzusenden. Die Position und Lage eines Rovers wird durch eine Kombination aus x- und y-Koordinaten sowie einem Buchstaben dargestellt, der einen der vier Himmelsrichtungen entspricht. Das Plateau ist in ein Raster unterteilt, um die Navigation zu vereinfachen. Eine Beispielposition könnte 0, 0, N sein, was bedeutet, dass der Rover in der unteren linken Ecke steht und nach Norden schaut. Um einen Rover zu steuern, sendet die NASA eine einfache Buchstabenkette. Die möglichen Buchstaben sind 'L', 'R' und 'M'. 'L' und 'R' lassen den Rover 90 Grad nach links oder rechts drehen, ohne sich von seiner aktuellen Position zu bewegen. 'M' bedeutet, einen Rasterpunkt nach vorne zu bewegen und die gleiche Richtung beizubehalten.
Nehmen Sie an, dass das Quadrat direkt nördlich von (x, y) (x, y+1) ist.
EINGABE:
Die erste Zeile der Eingabe sind die oberen rechten Koordinaten des Plateaus, die unteren linken Koordinaten werden als 0,0 angenommen.
Der Rest der Eingabe enthält Informationen zu den eingesetzten Rovern. Jeder Rover hat zwei Zeilen Eingabe. Die erste Zeile gibt die Position des Rovers an, und die zweite Zeile ist eine Reihe von Anweisungen, die dem Rover sagen, wie er das Plateau erkunden soll. Die Position setzt sich aus zwei Ganzzahlen und einem Buchstaben zusammen, die durch Leerzeichen getrennt sind und den x- und y-Koordinaten sowie der Orientierung des Rovers entsprechen.
Jeder Rover wird nacheinander abgeschlossen, was bedeutet, dass der zweite Rover sich nicht bewegen kann, bevor der erste beendet hat.
AUSGABE:
Die Ausgabe für jeden Rover sollte seine endgültigen Koordinaten und die Richtung sein.
ANMERKUNGEN:
Setzen Sie einfach die oben genannten Anforderungen um und beweisen Sie, dass ein Staubsauger funktioniert, indem Sie Unit-Tests dafür schreiben.
Die Erstellung irgendeiner Form von Benutzeroberfläche ist nicht Teil des Auftrags.
Die Lösung des Problems unter Verwendung eines TDD-Ansatzes (Testgetriebene Entwicklung) wird bevorzugt.
In der kurzen zur Verfügung stehenden Zeit sind wir mehr an Qualität als an Vollständigkeit interessiert.
*Ich kann die Aufgabe, die mir geschickt wurde, nicht veröffentlichen, da es sich um eine alte Aufgabe handelt, die vor einigen Jahren vergeben wurde. Aber glauben Sie mir, prinzipiell ist alles gleich geblieben.

Besonders möchte ich auf die Bewertungskriterien hinweisen. Wie oft sind Sie schon in einer Situation gewesen, in der für den Kandidaten wichtige Dinge bei der Prüfung völlig unwichtig waren und umgekehrt? Nicht jeder denkt so wie Sie, aber viele können Ihre Werte annehmen und ihnen folgen, wenn sie klar formuliert sind. Daher ist aus den Bewertungskriterien sofort ersichtlich, dass die wichtigsten Fähigkeiten auf dieser Ebene sind

  • TDD;
  • Die Fähigkeit, OOP zu verwenden und wartbaren Code zu schreiben;
  • Fähigkeiten im Pair Programming

Also wurde ich gewarnt, diese 1,5 Stunden damit zu verbringen, darüber nachzudenken, wie ich die Aufgabe angehen will, und nicht mit dem Schreiben von Code. Den Code werden wir gemeinsam schreiben.

Als wir telefonierten, haben die Jungs kurz erzählt, wer sie sind und was sie machen, und haben vorgeschlagen, mit der Entwicklung zu beginnen.

Während des gesamten Interviews hatte ich nie das Gefühl, dass ich in einem Vorstellungsgespräch bin. Es fühlt sich an, als ob Sie im Team Code entwickeln. Wenn Sie irgendwo stecken bleiben — sie helfen, beraten, diskutieren, argumentieren sogar untereinander, wie es am besten zu machen ist. In dem Vorstellungsgespräch habe ich vergessen, wie man in JUnit 5 überprüft, ob eine Methode eine Exception auslöst — sie haben vorgeschlagen, weiterhin den Test zu schreiben, während einer von ihnen gegoogelt hat, wie das geht.

Schon wenige Stunden nach dem Interview erhielt ich konstruktives Feedback — was gut war und was nicht. In meinem Fall wurde ich für die Verwendung von Sealed-Klassen als Alternative zu null-Objekten gelobt; dafür, dass ich vor dem Schreiben von Code mit Pseudocode skizziert habe, wie ich den Rover steuern möchte, und so zumindest einen Entwurf der Klassen erhalten habe, die im API des Roboters verwendet werden.

Schritt 2. Erzähl uns

Eine Woche vor dem Vorstellungsgespräch wurde ich gebeten, eine Präsentation zu einem beliebigen Thema vorzubereiten, das mich interessiert. Das Format ist einfach und vertraut: 15 Minuten Präsentation, 15 Minuten Fragen.
Ich habe Clean Architecture von Uncle Bob gewählt. Und wieder wurde ich von ein paar Personen interviewt. Das war meine erste Erfahrung, eine Präsentation auf Englisch zu halten, und ich muss sagen, dass ich in einer stressigen Situation wahrscheinlich nicht zurechtgekommen wäre. Aber andererseits hatte ich nie das Gefühl, dass ich in einem Vorstellungsgespräch bin. Alles wie gewohnt – ich erzähle, sie hören aufmerksam zu. Selbst die traditionelle Frage-und-Antwort-Runde erinnerte nicht an ein Interview, es war offensichtlich, dass die gestellten Fragen nicht dazu dienten, mich „unterzutauchen“, sondern Interesse an meiner Präsentation zeigten.

Ein paar Stunden nach dem Vorstellungsgespräch erhielt ich Feedback – die Präsentation war sehr hilfreich und sie hatten von der Zuhörung aufrichtig Freude.

Phase 3. Produktionsqualität Code

Nachdem ich darauf hingewiesen wurde, dass dies die letzte Phase der technischen Interviews ist, wurde ich gebeten, den Code zu Hause auf einen produktionsreifen Zustand zu bringen, danach den Code zur Überprüfung einzureichen und Interviews zu planen, bei denen sich die Anforderungen an die Aufgabe ändern und der Code modifiziert werden muss. Um vorzugreifen, kann ich sagen, dass die Codeüberprüfung blind erfolgt, die Reviewer kennen weder die Position, auf die der Kandidat sich bewirbt, noch sehen sie seinen Lebenslauf, sie sehen nicht einmal seinen Namen.

Ein Anruf, und wieder mal ein paar Leute auf der anderen Seite des Bildschirms. Alles wie beim ersten Vorstellungsgespräch: wichtig ist, das TDD nicht zu vergessen, zu erzählen, was du machst und warum. Wenn du TDD vorher noch nicht praktiziert hast, empfehle ich dir dringend, sofort damit zu beginnen, nicht weil es in Unternehmen notwendig ist, sondern weil es dein Leben erheblich erleichtert und den Stress level senkt, wenn du so willst. Erinnerst du dich, wie du verzweifelt nach einem Bug gesucht hast, der nur im Browser auftritt und den du mit Tests nicht reproduzieren kannst? Stell dir jetzt vor, dass du so einen Bug während des Vorstellungsgesprächs finden musst – da kannst du dir sicher ein paar graue Haare sparen. Was haben wir mit TDD? Du hast den Code geändert und stellst überraschend fest, dass die Tests rot sind, aber du kannst beim ersten Mal nicht herausfinden, worin der Fehler liegt? Okay, du sagst den Interviewern „Ups“, drückst Ctrl-Z und beginnst, kleine Schritte nach vorne zu machen. Und ja, die Fähigkeit, mit TDD zu entwickeln, musst du dir aneignen, die Fähigkeit, auf ein Ziel hinzuarbeiten, sodass deine Tests dauerhaft grün sind und nicht den halben Tag rot, nur weil „du eine große Überarbeitung machst“. Das ist genau die gleiche Fähigkeit wie die Fähigkeit, wartbaren Code zu schreiben oder leistungsfähigen Code.

Wie gut dein Code für Änderungen geeignet ist, hängt davon ab, welches Design du ursprünglich festgelegt hast, wie einfach es ist und wie gut deine Tests sind.

Nach dem Vorstellungsgespräch erhielt ich nach ein paar Stunden ein Feedback. In diesem Stadium wurde mir klar, dass ich praktisch bestanden hatte und nur noch wenig bis zum „Treffen mit Fowler“ fehlte.

Schritt 4. Finale. Genügend technische Fragen. Wir möchten wissen, wer du bist!

Ehrlich gesagt hat mich diese Fragestellung etwas verwirrt. Wie kann man in einer Stunde Gespräch herausfinden, was für ein Mensch ich bin? Und schon gar nicht, wenn ich in einer mir fremden Sprache spreche, und, um es offen zu sagen, ziemlich schlecht und holprig. Bei vorherigen Interviews fiel es mir persönlich leichter, etwas zu erzählen, als Fragen zu beantworten, und das lag am Akzent. Jedenfalls war einer der Interviewer asiatisch — und ihr Akzent ist, sagen wir mal, ziemlich speziell für europäische Ohren. Deshalb habe ich beschlossen, einen proaktiven Ansatz zu verfolgen — eine Präsentation über mich vorzubereiten und zu Beginn des Interviews vorzuschlagen, diese über mich zu zeigen. Wenn sie zustimmen — dann gibt es zumindest weniger Fragen an mich, wenn sie das Angebot ablehnen — nun ja, 3 Stunden meines Lebens, die ich für die Präsentation aufgewendet habe — ist nicht so ein hoher Preis. Aber was soll ich in der Präsentation schreiben? Eine Biografie — Geboren hier und dort, dann zur Schule gegangen, Uni abgeschlossen — das interessiert doch niemanden?

Wenn man ein wenig über die Kultur von Thoughtworks googelt, findet man einen Artikel von Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html], in dem die 3 Säulen beschrieben werden: Nachhaltiges Geschäft, Software-Exzellenz und soziale Gerechtigkeit.

Angenommen, meine Software-Exzellenz wurde bereits überprüft. Ich muss noch Nachhaltiges Geschäft und soziale Gerechtigkeit zeigen.

Ich habe beschlossen, mich dabei besonders auf letzteres zu konzentrieren.

Zunächst habe ich erzählt, warum ThoughtWorks für mich wichtig ist — ich habe während des Studiums den Blog von Martin Fowler gelesen, daher meine Liebe zu Clean Code.

Projekte lassen sich auch aus verschiedenen Perspektiven präsentieren. Ich habe Software für das Gesundheitswesen entwickelt, die das Leben der Patienten erleichtert hat, und es gibt sogar Gerüchte, dass sie ein Leben gerettet hat. Ich habe auch Software für Banken entwickelt, die ebenfalls das Leben der Bürger erleichtert. Besonders, wenn diese Bank von etwa 70 % der Bevölkerung des Landes genutzt wird. Es geht nicht um Sberbank und auch nicht um Russland.

Möchten Sie mehr über mich erfahren? Okay. Mein Hobby ist Fotografie, ich halte seit etwa 10 Jahren eine Kamera in der Hand, ich habe Fotos, die ich nicht ganz so peinlich finde, um sie zu zeigen. Außerdem habe ich eine Zeit lang einem Tierheim für Katzen geholfen: Ich habe Fotos von Katzen gemacht, die ein dauerhaftes Zuhause brauchten. Mit guten Fotos ist es viel einfacher, eine Katze zu vermitteln. Ich habe wahrscheinlich rund 100 Katzen fotografiert 🙂

Letztendlich waren 80 % der Präsentation mit Katzen gefüllt.

Sofort nach der Präsentation hat mir die Personalabteilung geschrieben, dass sie die Ergebnisse des Interviews noch nicht kennt, aber das ganze Büro bereits von den Katzen beeindruckt ist.

Letztendlich habe ich das Feedback erhalten — ich habe alle als Person zufriedengestellt.

Aber die Personalabteilung hat im abschließenden Gespräch taktvoll erwähnt, dass soziale Gerechtigkeit sehr wichtig ist und notwendig, aber nicht alle Projekte so sind. Und sie fragte, ob mich das beängstigt. Insgesamt habe ich es ein wenig mit der sozialen Gerechtigkeit übertrieben, passiert 🙂

Fazit

Wie dem auch sei, ich arbeite seit mehreren Monaten in Singapur bei Thoughtworks, und ich sehe, dass hier viele Unternehmen auch die ‘besten Interviewpraktiken’ von Google übernehmen, indem sie Zettel und Whiteboards zum Programmieren verwenden, während in der Arbeit keine Kenntnisse über Spring, Symfony, RubyOnRails (was relevant ist, bitte unterstreichen) erforderlich sind. Ingenieure nehmen eine Woche Urlaub vor dem Interview, um sich “vorzubereiten”.

Bei Thoughtworks stehen neben angemessenen Anforderungen an den Kandidaten solche Prinzipien an erster Stelle:
Freude am Interviewen. Und zwar für beide Seiten. Tatsächlich, wenn Sie die besten Talente gewinnen möchten (und wer möchte das nicht?), dann ist ein Interview kein Markt, auf dem Sklaven ausgewählt werden, sondern ein Kennenlernen, bei dem sowohl der Arbeitgeber als auch der Kandidat sich gegenseitig bewerten. Und wenn der Kandidat mit dem Unternehmen angenehme Emotionen verbindet, ist es sehr wahrscheinlich, dass er genau dieses Unternehmen wählt.

Mehrere Interviewer zur Minderung von Vorurteilen. Bei Thoughtworks ist Pair Programming der De-facto-Standard. Und wenn diese Praxis in anderen Bereichen angewendet werden kann, versucht TW, dies zu tun. In jeder Phase des Interviews führen zwei Personen das Gespräch. Auf diese Weise wird jede Person von mindestens 8 Personen bewertet, und TW bemüht sich, Interviewer mit unterschiedlichem Hintergrund, aus verschiedenen Fachrichtungen (nicht nur Techniker) und Geschlechtern auszuwählen.

Letztendlich wird die Entscheidung über die Einstellung auf der Grundlage der Meinungen von mindestens 8 Personen getroffen, und niemand hat das Recht, das endgültige Urteil zu fällen.

Attributbasiertes Einstellen Anstatt die Entscheidung auf der Grundlage von „gefällt mir, gefällt mir nicht“ des Kandidaten zu treffen, wurde für jede Rolle und jede Phase ein Formular entwickelt, das die zu bewertenden Attribute umfasst. Dabei wird dringend empfohlen, nicht die Erfahrung in einer bestimmten Fähigkeit zu bewerten, sondern die Fähigkeit, sie anzuwenden. Wenn ein Kandidat also keine Möglichkeit hatte, Fähigkeiten wie TDD anzuwenden, aber dennoch versucht, sie anzuwenden und Ratschläge zur richtigen Nutzung befolgt, hat er alle Chancen, das Interview zu bestehen.

Bildungszertifikate nicht erforderlich TW verlangt von den Kandidaten keine zwingenden Zertifikate oder einen Abschluss in Informatik. Es werden nur Fähigkeiten bewertet.

Das ist das erste Interview, für das ich mich bei ausländischen Unternehmen nicht vorbereiten musste. Nach jeder Phase fühlte ich mich nicht wie eine ausgepresste Zitrone, sondern war im Gegenteil froh, dass ich die besten Praktiken anwenden konnte und dass die Menschen auf der anderen Seite des Monitors dies schätzen und ebenfalls täglich anwenden.

Nach einigen Monaten kann ich sagen, dass die Erwartungen vollständig erfüllt wurden. Was unterscheidet ThoughtWorks von einem gewöhnlichen Unternehmen? In einem gewöhnlichen Unternehmen finden Sie gute Entwickler und angenehme Menschen, aber bei TW ist ihre Dichte überwältigend.

Wenn Sie sich ThoughtWorks anschließen möchten, können Sie die offenen Stellenangebote einsehen. hier
Ich empfehle auch, auf interessante Stellenangebote zu achten:
Lead Software Engineer: Deutschland, London, Madrid, Singapur
Senior Software Engineer: Sydney, Deutschland, Manchester, Bangkok.
Software Engineer: Sydney, Barcelona, Mailand
Senior Data Engineer: Mailand
Quality Analyst: Deutschland China
Infrastruktur: Deutschland, London, Chile
(Ich möchte ehrlich warnen, dass der Link ein Referral-Link ist; wenn Sie bei TW eingestellt werden, erhalte ich ein nettes Bonus.) Wählen Sie das Büro, das Ihnen gefällt; es ist nicht nötig, sich nur auf Europa zu beschränken. Schließlich ist ThoughtWorks bereit, Sie alle zwei Jahre in ein anderes Land zu versetzen, da dies Teil der Unternehmenspolitik von ThoughtWorks ist, wodurch die Kultur verbreitet und nivelliert wird.

Zögern Sie nicht, Fragen in den Kommentaren zu stellen oder mich zu bitten, Sie zu empfehlen.
Wenn das Thema interessant erscheint, werde ich darüber schreiben, wie es ist, bei ThoughtWorks zu arbeiten und wie das Leben in Singapur ist.

Quelle: habr.com

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster