
Kommt es Ihnen nicht seltsam vor, dass Sie, wenn Sie Ihren Arbeitsplatz wechseln und ein Vorstellungsgespräch führen müssen, zunächst denken, Sie müssten sich auf das Vorstellungsgespräch vorbereiten. Lösen Sie Probleme im HackerRank, lesen Sie das Interview mit Crack, und merken Sie sich, wie ArrayList funktioniert und wie es sich von LinkedList unterscheidet. Oh ja, sie können immer noch nach Sortierungen fragen, und es wird offensichtlich unprofessionell sein zu sagen, dass eine schnelle Sortierung wahrscheinlich die beste Wahl ist.
Aber warten Sie, Sie programmieren 8 Stunden am Tag, lösen interessante und nicht triviale Aufgaben und am neuen Arbeitsplatz erledigen Sie das Plus oder Minus. Um das Vorstellungsgespräch dennoch zu bestehen, müssen Sie sich zusätzlich irgendwie vorbereiten, nicht einmal Ihre täglichen Fähigkeiten verbessern, sondern lernen, was Sie an Ihrem derzeitigen Arbeitsplatz nicht brauchten, oder es ist unwahrscheinlich, dass es beim nächsten Mal benötigt wird. Gegen Ihre Einwände, dass die Informatik in unserem Blut liegt und uns mitten in der Nacht weckt, müssen wir mit geschlossenen Augen auf einen Kissenbezug einen Spaziergang um einen Baum schreiben, ohne auch nur das Bewusstsein wiederzugewinnen Das ist der Trick - vielleicht stimme ich zu. Sie müssen diese Fähigkeit überprüfen.
Aber warum sollten Sie Fähigkeiten testen, die für Ihren aktuellen Job irrelevant sind? Nur weil es in Mode gekommen ist? Weil Google das macht? Oder weil Ihr zukünftiger Teamleiter vor einem Interview alle Sortiermethoden erlernen musste und jetzt glaubt, dass „jeder gute Programmierer die Implementierung des Findens eines Palindroms in einer Zeile auswendig kennen muss“.
Ente, du bist nicht Google (s). Was sich Google leisten kann, können normale Unternehmen nicht. Nachdem Google die Daten seiner Mitarbeiter analysiert hatte, kam es zu dem Schluss, dass dies speziell für ihn und seine Aufgaben gilt. Es ist gut, wenn sich Ingenieure mit einer olympischen Vergangenheit damit auseinandersetzen. Darüber hinaus können sie es sich leisten, durch die Erstellung des Auswahlverfahrens das Risiko einzugehen, dass sie möglicherweise nicht mehrere gute Ingenieure einstellen, da sie nicht wissen, wie sie mathematische Probleme so einfach lösen können. Aber für sie ist es egal, es gibt viele Leute, die bei Google arbeiten wollen, die Stelle wird geschlossen.
Schauen wir jetzt aus dem Fenster, und wenn sich noch mehr Camper vor Ihrem Büro befinden, die nicht für Sie arbeiten wollten, und Ihre Entwickler eher nach der nächsten Spring-Annotation im Stackoverflow suchen als nach den Feinheiten der Ranking-Algorithmen. Sie sollten überlegen, ob Sie Google kopieren möchten.
Was soll ich tun, wenn Google diesmal fehlschlägt und keine Antwort gibt? Überprüfen Sie genau, was der Entwickler bei der Arbeit tun wird. Was schätzen Sie an Entwicklern?
Legen Sie Kriterien für die Mitarbeiter fest und entwickeln Sie Tests, die diese besonderen Fähigkeiten testen.
Nachdenken
Was hat ThoughtWorks damit zu tun? Hier fand ich ein Beispiel für ein Modellinterview für mich. Wer ist ThoughtWorks? Kurz gesagt, es handelt sich um ein High-End-Beratungsunternehmen mit Niederlassungen auf der ganzen Welt von China über Singapur bis nach Amerika. Das Unternehmen berät seit rund 25 Jahren in der Entwicklung und unterhält eine eigene Abteilung für Wissenschaft, die von Martin Fowler geleitet wird. Wenn Sie nach einer Liste von 10 Büchern suchen, die für Software Engineer gelesen werden müssen, werden vielleicht 2-3 von ihnen von ThoughtWorks-Mitarbeitern geschrieben, wie Refactoring von Martin Fowler und Building Microservices: Design von feinkörnigen Systemen von Sam Newman oder Building Evolutionsarchitekturen
von Patrick Kua, Rebecca Parsons, Neal Ford.
Das Geschäft des Unternehmens basiert auf der Erbringung ziemlich teurer Dienstleistungen, aber der Kunde zahlt für die phänomenale Qualität, die aus Fachwissen, internen Standards und natürlich Menschen besteht. Daher ist es von entscheidender Bedeutung, die richtigen Mitarbeiter einzustellen.
Was für Leute haben Recht? Natürlich für jeden etwas dabei. ThoughtWorks stellte fest, dass für sein Geschäftsmodell für Entwickler die wichtigsten Kriterien sind:
- Fähigkeit, die Entwicklung zu paaren. Es ist Fähigkeit, nicht Erfahrung oder Können. Niemand erwartet, dass Menschen, die seit ungefähr 5 Jahren Pair-Programmierung praktizieren, in naher Zukunft aufgeschlossen gegenüber den Meinungen anderer sind, dass sie in der Lage sind, zuzuhören, ist eine notwendige Fähigkeit.
- Fähigkeit, Tests zu schreiben und im Idealfall TDD zu üben
- Verstehen Sie SOLID und OOP und können Sie diese anwenden.
- Präsentieren Sie Ihre Meinung. Der Berater muss mit den Entwicklern des Kunden und mit anderen Beratern zusammenarbeiten, und es hat keinen großen Vorteil, wenn die Person weiß, wie man etwas gut macht, dies aber dem Rest des Teams nicht vermitteln kann.
Jetzt ist es wichtig, genau diese Fähigkeiten des Kandidaten zu bewerten. Und hier möchte ich über meine Erfahrungen mit Vorstellungsgesprächen bei ThoughtWorks sprechen. Ich werde gleich sagen, dass ich nach Singapur gegangen bin und dort bestanden habe, aber der Einstellungsprozess ist einheitlich und wird von Land zu Land nicht sehr unterschiedlich sein.
Stufe 0. HR
Wie so oft, ein 20-minütiges Interview mit der Personalabteilung. Ich werde nicht näher darauf eingehen, ich kann nur sagen, dass ich noch nie eine Personalabteilung getroffen habe, die 15 Minuten lang über die Entwicklungskultur im Unternehmen sprechen konnte, warum sie TDD verwenden, warum Pair Programming. Normalerweise sprechen HR-Mitarbeiter über diese Frage und sagen, dass sie einen normalen Prozess haben: Entwickler entwickeln, Tester testen, Manager fahren.
Stufe 1. Wie gut bist du in OOP, TDD?
1,5 Stunden vor dem Interview schickten sie mir die Aufgabe, einen Mars-Rover-Simulator zu bauen.
Quest Mars RoverEin Trupp Roboter-Rover soll von der NASA auf einem Plateau auf dem Mars landen. Dieses Plateau, das seltsamerweise rechteckig ist, muss von den Rovern navigiert werden, damit ihre Kameras an Bord einen vollständigen Blick auf das umliegende Gelände haben und zur Erde zurückkehren können. Die Position und Position eines Rovers wird durch eine Kombination aus x- und y-Koordinaten und einem Buchstaben dargestellt, der einen der vier Himmelskompasspunkte darstellt. Das Plateau ist in ein Raster unterteilt, um die Navigation zu vereinfachen. Eine Beispielposition könnte 0, 0, N sein, was bedeutet, dass sich der Rover in der unteren linken Ecke befindet und nach Norden zeigt. Um einen Rover zu steuern, sendet die NASA eine einfache Buchstabenfolge. Die möglichen Buchstaben sind 'L', 'R' und 'M'. 'L' und 'R' lassen den Rover um 90 Grad nach links oder rechts drehen, ohne sich von seinem aktuellen Punkt zu bewegen. 'M' bedeutet, dass Sie sich um einen Rasterpunkt nach vorne bewegen und dieselbe Überschrift beibehalten.
Angenommen, das Quadrat direkt nördlich von (x, y) ist (x, y + 1).
EINGABE:
Die erste Eingabezeile sind die oberen rechten Koordinaten des Plateaus, die unteren linken Koordinaten werden mit 0,0 angenommen.
Der Rest der Eingabe besteht aus Informationen, die sich auf die eingesetzten Rover beziehen. Jeder Rover verfügt über zwei Eingabezeilen. Die erste Zeile gibt die Position des Rovers an, und die zweite Zeile enthält eine Reihe von Anweisungen, die dem Rover mitteilen, wie er das Plateau erkunden soll. Die Position besteht aus zwei Ganzzahlen und einem durch Leerzeichen getrennten Buchstaben, der den x- und y-Koordinaten und der Ausrichtung des Rovers entspricht.
Jeder Rover wird nacheinander beendet, was bedeutet, dass sich der zweite Rover erst dann bewegt, wenn der erste fertig ist.
AUSGABE:
Die Ausgabe für jeden Rover sollte seine endgültigen Koordinaten und Überschriften sein.
ANMERKUNGEN:
Setzen Sie einfach die oben genannten Anforderungen um und beweisen Sie, dass ein Staubsauger funktioniert, indem Sie Einheitentests für ihn schreiben.
Das Erstellen von Benutzeroberflächen ist nicht zulässig.
Die Lösung des Problems mithilfe eines TDD-Ansatzes (Test Driven Development) wird bevorzugt.
In der kurzen verfügbaren Zeit geht es uns mehr um Qualität als um Vollständigkeit.
* Ich kann die gesendete Aufgabe nicht posten. Dies ist eine alte Aufgabe, die vor einigen Jahren gegeben wurde. Aber glauben Sie mir, im Grunde bleibt alles beim Alten.
Separat möchte ich auf die Bewertungskriterien eingehen. Wie oft waren Sie mit einer Situation konfrontiert, in der Dinge, die für den Kandidaten wichtig sind, bei der Prüfung völlig irrelevant sind und umgekehrt. Nicht jeder denkt so wie Sie, aber viele können Ihre Werte akzeptieren und ihnen folgen, wenn dies klar formuliert ist. Aus dem Bewertungskriterium geht also sofort hervor, dass die wichtigsten Fähigkeiten in dieser Phase sind
- TDD
- Möglichkeit, OOP zu verwenden und unterstützten Code zu schreiben;
- Paar Programmierfähigkeiten
Daher wurde ich gewarnt, diese 1,5 Stunden damit zu verbringen, darüber nachzudenken, wie ich die Aufgabe ausführen würde, anstatt Code zu schreiben. Wir werden den Code zusammen schreiben.
Als wir anriefen, erzählten die Jungs kurz, wer sie waren und was sie taten und boten an, mit der Entwicklung zu beginnen.
Während des gesamten Interviews hatte ich nie das Gefühl, in einem Interview zu sein. Es besteht das Gefühl, dass Sie Code in einem Team entwickeln. Wenn Sie irgendwo stecken bleiben - sie helfen, beraten, diskutieren und diskutieren sogar untereinander, wie dies am besten geht. Während des Interviews vergaß ich, in JUnit 5 zu überprüfen, ob die Methode eine Ausnahme auslöst. Sie schlugen vor, den Test weiter zu schreiben, während einer von ihnen googelte, wie das geht.
Bereits wenige Stunden nach dem Interview erhielt ich ein konstruktives Feedback - was mir gefiel und was nicht. In meinem Fall gelobt für die Verwendung von Sealed-Klassen als Alternative zum \ null-Objekt. weil ich vor dem Schreiben von Code Pseudocode geschrieben habe, als wollte ich den Rover steuern, und so eine Skizze der Klassen erhalten habe, zumindest derjenigen, die an der Roboter-API beteiligt sind.
Stufe 2. Sagen Sie es uns
Eine Woche vor dem Interview wurde ich gebeten, einen Vortrag zu einem Thema zu halten, das mich interessiert. Das Format ist einfach und vertraut: 15 Minuten Präsentation, 15 Minuten Antworten auf Fragen.
Ich habe mich für Clean Architecture von Onkel Bob entschieden. Und wieder haben mich ein paar Leute interviewt. Dies war meine erste Erfahrung mit dem Präsentieren auf Englisch, und wenn ich mich in einer stressigen Situation befunden hätte, hätte ich es vielleicht nicht geschafft. Aber auch hier hatte ich nie das Gefühl, in einem Interview zu sein. Alles ist wie immer - ich sage dir, sie hören genau zu. Sogar die traditionelle Q & A-Sitzung war nicht wie ein Interview, es war klar, dass die Fragen nicht "versinken" sollten, sondern diejenigen, die mich wirklich an meinem Vortrag interessierten.
Ein paar Stunden nach dem Interview erhielt ich ein Feedback - die Präsentation war sehr nützlich und sie hörten sehr gerne zu.
Stufe 3. Produktionsqualitätscode
Nachdem ich gewarnt hatte, dass dies die letzte Phase von technischen Interviews ist, wurde ich gebeten, den Code zu Hause in den produktionsbereiten Zustand zu versetzen, dann den Code an eine Überprüfung zu senden und Interviews zu planen, bei denen sich die Anforderungen für die Aufgabe ändern und der Code geändert werden muss. Mit Blick auf die Zukunft kann ich sagen, dass die Codeüberprüfung blind durchgeführt wird, die Prüfer die Position, für die sich der Kandidat bewirbt, nicht kennen, seinen Lebenslauf nicht sehen, nicht einmal seinen Namen sehen.
Ich habe angerufen und wieder ein paar Leute auf der anderen Seite des Monitors. Alles ist wie beim ersten Interview: Hauptsache, TDD nicht vergessen, sagen, was Sie tun und warum. Wenn Sie TDD noch nicht praktiziert haben, dann empfehle ich Ihnen, sofort damit zu beginnen, nicht weil es in Unternehmen notwendig ist, sondern weil es Ihr Leben stark vereinfacht und Stress reduziert, wenn Sie möchten. Erinnern Sie sich, wie Sie hektisch mit einem Debugger nach einem Fehler suchen mussten, der nur über den Browser reproduziert wird, aber Sie können ihn nicht mit Tests reproduzieren? Stellen Sie sich nun vor, Sie müssten während des Interviews einen solchen Fehler feststellen - ein paar graue Haare werden Ihnen zur Verfügung gestellt. Was wird uns mit TDD zur Verfügung gestellt? Wir haben den Code geändert und unerwartet festgestellt, dass die Tests jetzt rot sind. Was ist der Fehler, der beim ersten Mal nicht verstanden werden kann? Okay, wir sagen den Interviewern „Ups“, drücken Strg-Z und gehen in kleinen Schritten vorwärts. Und ja, die Fähigkeit, mit TDD zu entwickeln, müssen Sie selbst entwickeln, die Fähigkeit, zum Ziel zu gelangen, damit Ihre Tests einen halben Tag lang dauerhaft grün und nicht rot sind, weil "Sie viel umgestalten müssen". Dies entspricht genau der Fähigkeit, unterstützten oder produktiven Code zu schreiben.
Wie gut sich Ihr Code ändern lässt, hängt davon ab, welches Design Sie ursprünglich festgelegt haben, wie einfach es ist und wie gut Ihre Tests sind.
Nach dem Interview erhielt ich innerhalb weniger Stunden eine Rückmeldung. Zu diesem Zeitpunkt wurde mir klar, dass ich praktisch bestanden hatte und bis zum „Treffen mit Fowler“ nur noch sehr wenig übrig war.
Stufe 4. Finale. Genug technische Fragen. Wir möchten wissen, wer Sie sind!
Ehrlich gesagt war ich etwas verwirrt über eine solche Formulierung der Frage. Wie kann ich verstehen, welche Art von Person ich in einer Stunde Gespräch bin? Und noch mehr, wie kann ich das verstehen, wenn ich eine Sprache spreche, die für mich nicht typisch ist, und ehrlich gesagt ist sie sehr mies und sprachgebunden. In früheren Interviews war es für mich einfacher, persönlich zu sprechen, als Fragen zu beantworten, und der Schwerpunkt lag auf der Schuld. Zumindest einer der Interviewer war Asiate - und ihre Betonung ist, sagen wir, etwas spezifisch für das europäische Ohr. Aus diesem Grund habe ich mich für einen proaktiven Ansatz entschieden - eine Präsentation über mich selbst vorzubereiten und zu Beginn des Interviews anzubieten, mit dieser Präsentation etwas über mich selbst zu erzählen. Wenn sie einverstanden sind, gibt es zumindest weniger Fragen für mich, wenn sie das Angebot ablehnen - na ja, dann sind 3 Stunden meines Lebens, die ich für die Präsentation aufgewendet habe, kein so hoher Preis. Aber was ist in der Präsentation zu schreiben? Biografie - Er wurde dort geboren, ging zur Schule, absolvierte die Universität - aber wen interessiert das?
Wenn Sie ein wenig über die Thoughtworks-Kultur nachdenken, finden Sie einen Artikel von Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html], in dem drei Säulen beschrieben werden: Nachhaltiges Geschäft, hervorragende Software und soziale Gerechtigkeit.
Angenommen, ich habe bereits Software Excellence überprüft. Es bleibt zu zeigen, Nachhaltige Wirtschaft und soziale Gerechtigkeit.
Außerdem habe ich beschlossen, mich auf Letzteres zu konzentrieren.
Zunächst erzählte ich Ihnen, warum ThoughtWorks - als ich noch am Institut war - den Blog von Martin Fowler las, daher die Liebe zu Clean-Code.
Projekte können auch aus verschiedenen Blickwinkeln präsentiert werden. Er entwickelte auch eine Software für die Medizin, die den Patienten das Leben leichter machte und sogar das Gerücht, ein Leben gerettet zu haben. Er entwickelte auch Software für Banken, auch eine Art Vereinfachung des Lebens für die Bürger. Vor allem, wenn 70% der Bevölkerung des Landes diese Bank nutzen. Es geht nicht um die Sberbank und nicht einmal um Russland.
Willst du etwas über mich wissen? Ok Mein Hobby ist Fotografie, auf die eine oder andere Weise habe ich die Kamera seit ungefähr 10 Jahren in der Hand, es gibt Fotos, die nicht sehr peinlich zu zeigen sind. Ich half auch einmal einem Katzenhaus: Ich fotografierte Katzen, die ein dauerhaftes Zuhause brauchen. Und mit guten Fotos ist es viel einfacher, eine Katze anzubringen. Wahrscheinlich mit hundert Katzen gefilmt :)Letztendlich waren 80% meiner Präsentation mit Katzen gefüllt.
Unmittelbar nach der Präsentation schrieb mir HR, dass er die Ergebnisse des Interviews noch nicht kenne, aber das gesamte Büro war bereits von Katzen beeindruckt.
Am Ende habe ich auf Feedback gewartet - ich habe alle als Person zufrieden gestellt.
Aber die Personalabteilung sagte im abschließenden Gespräch taktvoll, dass soziale Gerechtigkeit sehr gut und notwendig ist, aber nicht alle Projekte sind so. Und gefragt, ob mir das Angst macht. Im Allgemeinen bin ich mit sozialer Gerechtigkeit zu weit gegangen, es passiert :)
Zusammenfassung
Infolgedessen arbeite ich seit einigen Monaten bei Thoughtworks in Singapur. Ich sehe, dass auch hier viele Unternehmen die „Best Interview Practices“ von Google anwenden und für die Codierung Flugblätter und Whiteboards verwenden, obwohl das Wissen weiter reicht als Spring, Symfony, RubyOnRails ( unterstrichen) ist in der Arbeit nicht erforderlich. Ingenieure nehmen sich eine Woche frei, bevor sie ein Interview führen, um sich "fertig zu machen".
In Thoughtworks stehen neben den angemessenen Anforderungen an einen Kandidaten die folgenden Grundsätze im Vordergrund:
Freude am Interviewen. Darüber hinaus für beide Seiten. In der Tat, wenn Sie das beste Personal haben möchten (und wer nicht?), Dann ist das Interview kein Markt, in dem Sklaven ausgewählt werden, sondern Bräutigame, in denen sowohl der Arbeitgeber als auch der Kandidat sich gegenseitig bewerten. Und wenn ein Kandidat mit einem Unternehmen angenehme Gefühle verbindet, wird er sich wahrscheinlich für dieses Unternehmen entscheiden.
Mehrere Interviewer, um Vorurteile abzumildern. In Thoughtworks ist die Paarprogrammierung de facto der Standard. Und wenn diese Praxis in anderen Bereichen angewendet werden kann, versucht TW dies zu tun. In jeder Phase führen 2 Personen ein Interview. Somit bewerten mindestens 8 Personen jede Person, und TW versucht, Interviewer mit unterschiedlichem Hintergrund, unterschiedlichen Richtungen (nicht nur Technikfreaks) und unterschiedlichem Geschlecht auszuwählen.
Letztendlich wird eine Entscheidung über die Einstellung auf der Grundlage der Meinung von mindestens 8 Personen getroffen, und niemand hat eine ausschlaggebende Stimme.
Attributbasierte Einstellung Anstatt Entscheidungen auf der Grundlage der Vorlieben / Abneigungen des Kandidaten zu treffen, wurde für jede Rolle und für jede Phase ein Formular entwickelt, einschließlich der zu bewertenden Attribute. Gleichzeitig ist es bei der Bewertung sehr ratsam, nicht die Erfahrung in einer bestimmten Fertigkeit zu bewerten, sondern die Fähigkeit, sie anzuwenden. Wenn der Kandidat also keine Fähigkeiten wie TDD anwenden konnte, aber dennoch versucht, sie anzuwenden, hört er sich Tipps für den richtigen Gebrauch an - er hat jede Chance, ein Interview zu bekommen.
Bildungszertifikate nicht erforderlich Für TW ist es nicht erforderlich, dass Bewerber ein Pflichtzertifikat oder eine Ausbildung in Informatik erwerben. Es werden nur Fähigkeiten bewertet.
Dies ist das erste Interview, das ich mit ausländischen Unternehmen geführt habe, auf die ich mich nicht vorbereiten musste. Nach jeder Phase fühlte ich mich nicht wie eine Zitrone gedrückt, aber im Gegenteil, ich war froh, dass ich die Best Practices anwenden kann, die die Leute auf der anderen Seite des Monitors zu schätzen wissen, und sie auch jeden Tag anwenden.
Nach einigen Monaten kann ich sagen, dass die Erwartungen voll erfüllt wurden. Was unterscheidet ThoughtWorks von einem normalen Unternehmen? In einem regulären Unternehmen kann man gute Entwickler und nette Leute finden, aber in TW geht ihre Konzentration über das Maß hinaus.
Wenn Sie ThoughtWorks beitreten möchten, können Sie offene Jobs
hier anzeigen
.Ich schlage auch vor, auf interessante Stellenangebote zu achten:
Leitender Software-Ingenieur: Deutschland ,
London ,
Madrid ,
SingapurSenior Software Engineer: Sydney ,
Deutschland ,
Manchester ,
BangkokSoftware-Ingenieur: Sydney ,
Barcelona ,
MailandLeitender Dateningenieur: MailandQualitätsanalytiker: Deutschland ChinaInfrastacture: Deutschland ,
London ,
Chile(Ich möchte ehrlich warnen, dass es sich bei dem Link um eine Empfehlung handelt. Wenn Sie zu TW gehen, bekomme ich einen schönen Bonus.) Wählen Sie ein Büro nach Ihren Wünschen, es ist nicht notwendig, sich nur auf Europa zu beschränken, am Ende wird TW Sie alle 2 Jahre gerne in ein anderes Land transportieren, denn Es ist Teil der ThoughtWorks-Richtlinie, sodass sich die Kultur ausbreitet und Durchschnittswerte ermittelt.
Fühlen Sie sich frei, Fragen in den Kommentaren zu stellen oder mich zu bitten, Sie zu empfehlen.
Wenn das Thema interessant erschien, werde ich darüber schreiben, wie es in ThoughtWorks funktioniert und wie es in Singapur lebt.