Why is it becoming so common for senior software engineers to intentionally drop out of hiring processes that require coding tests?
Es ergibt keinen Sinn, einen Test zu machen, bei dem ich durchfallen werde. Hör zu. Ich programmiere seit über 15 (verdammten) Jahren. Ich kenne PHP, Python, Javascript, SQL (verschiedene Varianten), unzählige Frameworks, ORMS-Vorlagensysteme usw., zusätzlich zu Architektur-Tools, Deployment-Tools, Code-Verwaltung/Versionskontrolle, Ticketing-Systeme, ein halbes Dutzend anderer Sprachen, die ich nicht so oft benutze, Server-Konfigurations-Zeug... bla, bla, bla...
Wenn du erwartest, dass ich in der Lage bin, auf ein Whiteboard oder in irgendeine IDE irgendeine Form von Code zu kotzen, der für dich Sinn ergibt, dann hast du etwas falsch verstanden. Es gibt nur eine gewisse Anzahl von Dingen, die ich gleichzeitig in meinem Kopf behalten kann, ganz zu schweigen davon, dass ich persönlich nie studiert habe, um all den Unsinn zu lernen, den ihr alle gelernt habt, wie die Big-O-Little-O-Notation und 15 verschiedene Sortier- und binäre Suchalgorithmen, die NIEMAND in der realen Welt benutzt!
Wenn das die Kriterien sind, nach denen du entscheidest, ob du Leute in deinem Team haben willst, dann will ich nicht in diesem Team sein. Ich habe Besseres mit meiner Zeit anzufangen.
Solange du keine bessere Methode zur Beurteilung der Fähigkeiten eines Softwareentwicklers gefunden hast, bin ich nicht daran interessiert, in deinem Team mitzuarbeiten, denn es ist sehr wahrscheinlich, dass es große Probleme geben wird, und ich habe gelernt, große Probleme in meinem Leben zu vermeiden.
==== Nachtrag ====
Diese Antwort scheint die Aufmerksamkeit von mehr als nur ein paar Leuten erregt zu haben, also möchte ich einige der oben genannten Dinge etwas näher erläutern.
Als ich sagte, dass "NIEMAND JEMALS in der realen Welt benutzt", war dies eine Übertreibung und sollte nicht als tatsächliche Wahrheit verstanden werden. Was ich hätte sagen sollen, ist, dass die große Mehrheit der Entwickler diese Fähigkeiten nicht braucht.
Sicher, es gibt Leute, deren Aufgabe es ist, mit neuen (oder bestehenden) Tools wie Warteschlangenverarbeitungssystemen wie RabbitMQ, ActiveMQ usw. zu arbeiten. Für diese Leute würde ich mir wünschen, dass sie die Details von Big-O verstehen, aber der Rest von uns installiert es einfach und benutzt es und vertraut darauf, dass klügere Leute als wir gute Entscheidungen über den zugrunde liegenden Code getroffen haben.
Zweitens: Danke für all die Erklärungen, was Big-O ist, aber ich brauche sie nicht. Glaubst du nicht, dass ich das in meiner Karriere schon unzählige Male nachgeschlagen habe? Das habe ich, und es ergibt sogar Sinn, wenn ich es lese. Dann, zwei Monate später, nachdem ich den Artikel gelesen habe, habe ich es praktisch vergessen, weil ich bei meiner Arbeit (in der Vergangenheit) nie eine Verwendung dafür gefunden habe. Wissen, das nicht genutzt wird, wird schnell durch Dinge ersetzt, die wichtiger sind.
Ich will damit nur sagen, dass du dir genau überlegen solltest, was wirklich wichtig ist für die Stelle, die du besetzen willst. Wenn du dir vorstellen kannst, dass die Person in dieser Rolle rekursive Algorithmen schreibt, die täglich optimiert werden müssen, und/oder binäre Baumsuchen durchführt, dann solltest du sie unbedingt auf diese Fähigkeiten testen. Wenn aber die Realität so aussieht, dass diese Personen tagtäglich nur API-Endpunkte erstellen oder einfache Angular-Komponenten verdrahten oder was auch immer, dann verschwendet man nicht die Zeit mit solchen sinnlosen Tests.