Der folgende Gastbeitrag stammt von Philip Walton (@philwalton). Philip hat kürzlich eine Reihe von Vorstellungsgesprächen für Frontend-Jobs bei Tech-Firmen in der Bay Area durchlaufen und festgestellt, dass sie nicht seinen Erwartungen entsprachen.
Vor ein paar Monaten begann ich, beiläufig nach Frontend-Jobs in der San Francisco Bay Area zu suchen. Ich mochte meinen aktuellen Job, aber ich hatte das Gefühl, der Tech-Szene in meiner Stadt zu entwachsen. Ich wollte meinen kleinen Teich verlassen und sehen, wie ich in einem großen, mit einigen der besten Entwickler der Welt, zurechtkommen würde.
Als ich anfing zu suchen, wusste ich, dass ich an einem Ort arbeiten wollte, an dem ich nicht der Experte sein würde, also bewarb ich mich nur bei großen, bekannten Unternehmen. Die ganze Erfahrung erwies sich als ziemlich wertvoll, und dabei bekam ich die Gelegenheit, einige meiner Helden zu treffen und die Büros einiger meiner Lieblingsfirmen zu besuchen.
Aber es war nicht alles gut. Tatsächlich kann ich, nachdem ich den Prozess rückblickend betrachtet habe, nicht umhin zu denken, dass mit der Art und Weise, wie Tech-Firmen ihre Frontend-Kandidaten interviewen, etwas grundlegend falsch ist.
Bevor ich fortfahre, möchte ich diesen Haftungsausschluss anbieten. Teile dieses Artikels werden kritisch sein, daher halte ich es für das Beste, die Namen dieser Unternehmen anonym zu halten. Schließlich ist es für meinen übergeordneten Punkt nicht relevant, wer sie sind.
Die einzigen Details, die ich teilen werde, sind, dass ich mich bei sechs Unternehmen beworben und Telefoninterviews hatte, von denen mich vier zu einem persönlichen Gespräch einluden. Insgesamt hatte ich 23 verschiedene Interviews, alle technisch.
Die andere Sache, die erwähnenswert ist, ist, dass dies alles bekannte Unternehmen waren. Unternehmen, von denen ich zu 100% sicher bin, dass Sie alle davon gehört haben, und ich erwähne das nicht, um zu prahlen, sondern um anzudeuten, dass, da sie diejenigen sind, die den Maßstab setzen, die Erfahrungen, die ich gemacht habe, wahrscheinlich ziemlich nah an der Norm waren.
Meine Erfahrung
Insgesamt war meine Erfahrung recht gut. Einige dieser Unternehmen sind bekannt für ihre quälenden Interviews, aber was ich durchgemacht habe, war bei weitem nicht so schlimm wie die Geschichten, die ich gehört hatte. Jeder war nett, jeder war professionell, und wenn ich die Antwort auf etwas nicht wusste, fühlte ich mich nie herabgesetzt. Meistens schien es nur ein einfaches Gespräch über Technologie zwischen zwei Leuten zu sein, die die beste Art und Weise besprachen, ein Problem zu lösen.
Aber es fehlte etwas Offensichtliches: Frontend-spezifische Fragen!
Nun, ich bin kein Interview-Experte. Und ich bin sicher, die meisten Personalchefs wären sich uneinig darüber, wie man die Effektivität eines bestimmten Satzes von Interviewfragen am besten misst. Aber in einer Sache sind sich, da bin ich sicher, alle einig: Die Fragen, die Sie stellen, sollten Fragen sein, die von den am besten qualifizierten Personen für die Stelle am besten beantwortet werden können.
Anders ausgedrückt: Wenn ein talentierter Informatik-Absolvent, frisch von der Universität, mit fast keiner Frontend-Erfahrung, einen großartigen Frontend-Ingenieur in Ihrem Interview in den Schatten stellen kann, stellen Sie wahrscheinlich die falschen Fragen.
Dies fasst meine Kritik im Wesentlichen zusammen. Die überwiegende Mehrheit meiner Interviewfragen waren Logikrätsel, allgemeine Codierungsherausforderungen und Algorithmus-Designprobleme – Dinge, die notwendig, aber bei weitem nicht ausreichend sind.
Was fehlte
Ich kenne mehrere Leute, die viele Interviews führen, und ich höre immer wieder den gleichen Satz von ihnen: Ich stelle lieber eine kluge Person ein und bringe ihr X bei, als jemanden einzustellen, der alles über X weiß, aber es an Kreativität, Logik und Urteilsvermögen mangelt.
Das verstehe ich. Das Problem ist, dass die Frontend-Entwicklung ein domänenspezifischer Fähigkeitsbereich ist. Es geht nicht nur um geistige Leistungsfähigkeit, sondern auch um Wissen und Erfahrung.
Frontend-Ingenieure sind auf ihrer grundlegendsten Ebene Entwickler, die Code schreiben, der im Browser des Benutzers ausgeführt wird. Heute bedeutet das, jemand, der HTML, CSS und JavaScript schreibt und die verschiedenen APIs kennt, die Browser bereitstellen. Der Unterschied zwischen dem allgemeinen Begriff „Programmierer“ und dem spezifischen Begriff „Frontend-Ingenieur“ liegt einfach in dem Bereich, in dem das Wissen existiert. Ein Superstar-Frontend-Ingenieur ist wahrscheinlich auch ein Superstar-Programmierer, aber das Gegenteil ist nicht unbedingt der Fall (oft nicht).
Wenn Sie dem zustimmen, was ich gerade gesagt habe, dann können Sie meine Überraschung über das Fehlen einiger der folgenden Themen in allen 23 meiner Interviews verstehen
- Mir wurde keine einzige Frage zu neuen oder kommenden HTML-APIs gestellt.
- Mir wurde keine einzige Frage zu den Unterschieden zwischen verschiedenen Browsern und Browserversionen oder wie man diese Unterschiede anspricht/behandelt, gestellt.
- Mir wurde keine einzige Frage zu den Unterschieden zwischen Desktop- und mobilen Browsern oder zu Techniken zum Erstellen von Webanwendungen für beide gestellt.
- Mir wurde nur eine CSS-Frage gestellt (nur eine!), und die lautete: „Nennen Sie mir den Unterschied zwischen Inline und Block“, eine Frage, die selbst die meisten Nicht-Frontend-Leute kennen.
- Mir wurde nur eine Frage gestellt, die etwas mit dem DOM, DOM-Events oder Event-Binding zu tun hatte.
Was mir stattdessen gefragt wurde, sind viele Fragen wie diese
- Schreibe eine Funktion, die zwei sortierte Listen von Zahlen entgegennimmt und sie zu einer einzigen sortierten Liste zusammenführt.
- Gegeben ein Array von ganzen Zahlen (positiv oder negativ), finde das Unter-Array mit der größten Summe.
- Bestimme, ob ein gegebener String ein Palindrom ist.
- Gegeben eine große Hash-Tabelle, deren Schlüssel Filmnamen und deren Werte eine Liste von Schauspielern in diesen Filmen sind, schreibe eine Funktion, um die Bacon-Zahl eines bestimmten Schauspielers zu bestimmen.
Auch hier möchte ich nicht andeuten, dass es keinen Wert hat, diese Fragen zu stellen. Das Problem ist, dass sie nichts mit der Frontend-Entwicklung zu tun haben. Wie ich bereits sagte, könnten die meisten intelligenten Entwickler mit einem starken Informatikhintergrund all diese Fragen beantworten, selbst wenn sie noch nie eine Website erstellt hätten.
Was ist also los?
Ich bin sicher, ein Teil des Problems ist die Neuheit des Bedarfs an reinen Frontend-Positionen sowie der Begriff „Frontend-Ingenieur“ selbst. Es ist kein klar definierter Begriff und könnte je nachdem, wer ihn verwendet, sehr unterschiedliche Dinge bedeuten. Ich bin bereit zuzugeben, dass meine Vorstellung von einer Frontend-Rolle sich von denen unterscheiden mag, die die Stelle ausgeschrieben haben, aber ich vermute, dass mehr dahinter steckt.
Eine weitere wahrscheinliche Ursache ist, dass die Mehrheit meiner Interviewer selbst keine Frontend-Ingenieure waren. Sie waren leitende Teammitglieder, Personalchefs, VPs, Gründer usw., aber sie waren normalerweise keine Frontend-Ingenieure. Infolgedessen blieben sie bei dem, was sie wussten, und stellten die gleichen Fragen, die sie immer stellen.
Meine Vorschläge
Aufgrund meiner jüngsten Erfahrung möchte ich jedem, der diesen Artikel liest und in naher Zukunft einen Frontend-Ingenieur interviewen könnte, die folgenden Ratschläge geben.
- Frontend-Kandidaten sollten von mindestens einem Frontend-Teammitglied (vorzugsweise mehr) interviewt werden. Wenn Sie kein Frontend-Teammitglied haben, finden Sie jemanden, den Sie kennen und dem Sie vertrauen, und bitten Sie ihn, es zu tun.
- Offensichtlich sind Themen wie Logik und Algorithmen wichtig, insbesondere für bestimmte Unternehmen, aber wenn Sie für eine Frontend-Position interviewen, sollte ein wesentlicher Teil der Fragen auf das Frontend abzielen.
- Wenn Sie wirklich Fragen zu Logik und Algorithmen stellen möchten, finden Sie einen Weg, dies so zu tun, dass Ihre Fragen mit spezifischem Frontend-Wissen kombiniert werden.
Um diesen letzten Punkt zu veranschaulichen, fragen Sie nicht nach der Komplexität von Mergesort, sondern nach der Komplexität dieses jQuery-Ausdrucks
$("#nav a")
.addClass("link")
.attr("data-initialized", true)
.on("click", doSomething)
Eine korrekte Antwort darauf zeigt sowohl ein Verständnis grundlegender Informatikprinzipien als auch ein tieferes Wissen darüber, was jQuery hinter den Kulissen tut.
Anstatt jemanden zu bitten, eine Funktion zu schreiben, die zwei Daten addiert, lassen Sie ihn ein einfaches Kalender-Widget dazu erstellen.
Anstatt sie mit CSS-Trivia zu testen, geben Sie ihnen zwei Textabsätze und lassen Sie sie überlegen, wie viele Möglichkeiten sie finden können, diese nebeneinander als Spalten anzuordnen. Fragen Sie sie dann, die Vor- und Nachteile jeder Methode zu beschreiben.
Schließlich neigen gute Frontend-Ingenieure dazu, sehr selbstmotiviert zu sein. Da Browser-Technologien normalerweise nicht in Schulen unterrichtet werden, haben die meisten Frontend-Ingenieure dieses Zeug selbst gelernt. Anstatt sie also zu fragen, was sie wissen (was von begrenztem Wert ist), fragen Sie sie, wie sie auf dem Laufenden bleiben und wie sie vermeiden, ins Hintertreffen zu geraten. Was tun sie, um sicherzustellen, dass sie in einem Jahr besser sein werden als heute?
Fazit
Interviews sind eine knifflige Sache, und selbst einige der innovativsten Unternehmen machen es manchmal falsch. Und ein Interview für eine Frontend-Position kann aufgrund der Mehrdeutigkeit des Begriffs und der damit verbundenen Erwartungen noch schwieriger sein.
Der Eindruck, den ich von vielen meiner Interviewer erhielt, war, dass die meisten dieser Unternehmen erst vor Kurzem begonnen haben, die Bedeutung spezialisierter Frontend-Mitarbeiter zu erkennen. Ihre Frontend-Codebasen werden massiv und wirklich schwer zu verwalten. Und ein Teil des Problems ist, dass die Leute, die sie verwalten, nicht gut mit Frontend-Best Practices vertraut sind.
Wenn Sie einen Frontend-Kandidaten einstellen möchten, sollten Sie Ihren Interviewprozess überprüfen. Wenn Sie einige der in diesem Artikel genannten Dinge tun, entgehen Ihnen möglicherweise einige großartige Leute.
Wenn Sie auf der Suche nach einem Job als Frontend-Ingenieur sind, könnten Sie keinen besseren Zeitpunkt wählen, aber wenn meine Erfahrung ein Hinweis ist, würde ich vorschlagen, einige Ihrer Grundlagen der Informatik aufzufrischen. Eine Ressource, die ich sehr empfehle, ist die Vorlesungsreihe MIT Open Courseware, insbesondere Einführung in Algorithmen.
Zuletzt hoffe ich, dass dieser Artikel nicht nur als Tirade von jemandem angesehen wird, dem seine Interviewfragen nicht gefielen. Das ist sicherlich nicht meine Absicht. Meine Hoffnung ist, dass ich meinen Teil dazu beitragen kann, den Standard für Frontend-Arbeit in unserer Branche zu erhöhen. Und ich glaube, einer der besten Wege, dies zu erreichen, ist, Unternehmen dabei zu helfen, die richtigen Leute für diese Jobs einzustellen.
Das ist eine großartige Einsicht und auch leicht beängstigend
Ich habe mir diese jQuery-Funktion 5 Minuten lang angesehen und sie scheint nicht so komplex zu sein? Abgesehen davon, dass es sich um einen angenommenen Selektor handelt, kann ich nicht viel daran falsch finden – entschuldigen Sie meine Ignoranz!
Zwei Dinge sind mir aufgefallen
Warum wird die Klasse „link“ per JavaScript hinzugefügt? Basierend auf diesem Code-Schnipsel scheint es nicht bedingt zu sein, also warum nicht einfach per HTML hinzufügen und diese DOM-Manipulation sparen.
Dito oben für das data-initialization Attribut.
Dennoch scheinen das ziemlich geringfügige Dinge zu sein, daher würde ich gerne vom Autor hören, was ich vielleicht übersehe.
Ich bezog mich hauptsächlich auf die algorithmische Komplexität, nicht auf Komplexität im allgemeinen Sinne. Algorithmische Komplexität wird verwendet, um die Effizienz eines Algorithmus zu bestimmen.
Aber Sie haben Recht, darauf hinzuweisen, dass an diesem Ausdruck nichts besonders „Komplexes“ ist.
Dein Kommentar ist lustig. Ich denke, mit „Komplexität“ meinte er „Zeitkomplexität“.
Das größte, was mir auffiel, ist, dass für jeden Anker in
#navein einzelner Klick-Handler gesetzt wird. Das wird Speicher proportional zur Anzahl der Anker belegen (lineare Komplexität).Stattdessen wäre es besser, den Klick-Handler an die Navigation zu delegieren, so dass nur ein einziger benötigt wird (konstante Zeitkomplexität).
@Benjamin Goering – Hast du weitere Informationen dazu? Ich schaffe es nicht, die richtigen Google-Suchbegriffe zu finden, um mehr herauszufinden. Ich würde gerne meinen Speicherverbrauch reduzieren, wenn möglich.
$(„#nav a“)
Ich denke, die Idee ist, zu erklären, was jQuery im Kontext der 3 Frontend-Technologien wirklich tun wird.
#nav könnte möglicherweise ein Navigations-Element sein
Das programmgesteuerte Hinzufügen der Klasse „link“ könnte wahrscheinlich ohne JS optimiert werden
data-initialized ist ein boolesches Attribut eines HTML5-Elements
Das Hinzufügen des Klick-Events verwendet das jQuery Event Management, das optional mit Namespaces versehen werden könnte
doSomething ist eine benannte Funktion innerhalb des aktuellen JS-Scopes, wird aber auch in einem anderen Scope ausgeführt („this“ wird sich ändern)
Aufgrund des Fehlens der Ereignisdelegation können Sie davon ausgehen, dass es sich um eine statische Navigation handelt (was Ihr Kommentar andeutet)
Code ist wie Sprache, nicht jeder, der die Sprache kennt, kann ein Buch schreiben.
Interviewpartner wollen sehen, ob Sie mit Ihren Sprachkenntnissen ein großartiges Buch schreiben können.
Mit anderen Worten: Können Sie mit Ihren Fähigkeiten die beste Lösung für das Problem liefern?
Großartige Einsicht, Philip, danke fürs Teilen.
Ich möchte jedoch etwas klarstellen, da Ihr Begriff „Front End Engineer“ für andere, wie mich, Front End Developer, die diesen Artikel lesen, verwirrend sein kann.
Ganz einfach ausgedrückt sind Sie eher ein Webentwickler, alias Front End Engineer, als ein „Front End“-Typ.
Sie haben jedoch etwas, das kein Webentwickler, den ich zuvor getroffen habe, hat: Sie kümmern sich um Frontend-Angelegenheiten, und das ist großartig :].
Nachdem ich Ihre Erfahrungen gelesen habe, sehe ich, dass HTML, CSS und JavaScript der Überschneidungsbereich sind, wo sich „Front End Developer“ und „Front End Engineer“ treffen, wobei ersterer mehr „Webdesign“-Einflüsse und letzterer mehr „Webentwicklung“ haben könnte.
Offensichtlich wird der Tanz der Jobtitel in der Webbranche noch komplexer…
Nochmals, vielen Dank für das Teilen Ihrer Erfahrungen.
PS. Wer würde Google verlassen wollen? o_O
Den Google-Job habe ich am Ende angenommen :)
Abgesehen davon, dass Leute Google für Pre-IPO Facebook, Twitter und Snap Chat verlassen, oder besser noch, um ihr eigenes Unternehmen zu gründen…
Aber ja, Google ist seit vielen Jahren in Folge der beste Arbeitsplatz. Viele glückliche Ingenieure, die erstaunliche Dinge tun.
Ricardo, ich stimme Ihrer Infragestellung der Semantik des Wortes „Ingenieur“ zu. Der Begriff ist leider überstrapaziert und hat seine Bedeutung verloren.
Meine Ausbildung war in Computer Engineering, in dem ich viele Facetten über die Physik, Mathematik, Systeme, Theorien und Modelle der digitalen und analogen Technologie (Komponenten sowie Elektromagnetik) lernte. Meine Kollegen und Mitbewohner waren in der Regel in einer Ingenieurdisziplin; Chemie, Elektrotechnik, Maschinenbau oder Bauwesen (und vielleicht Physik als Hauptfach).
Sicher, diese Dinge können in der Industrie spezifischer werden, und einige Schulen gehen sogar so weit, Programme dafür zu entwickeln, aber es gibt einen gemeinsamen Faden zwischen ihnen, der die Verwendung definierter Systeme mit entworfenem Verhalten, Physik, Gleichungen und Mathematik und einem Verständnis, wie alles zusammenpasst, um Dinge zu schaffen, beinhaltet. Es ist in meinem Kopf immer noch eine Debatte, ob man alles rein Software-bezogene als eine Form von „Engineering“ bezeichnen sollte, ohne den physischen Aspekt, und ich finde es angemessener, das Wort „Entwickler“ zu verwenden.
Ich bezeichne mich selbst als Frontend-Entwickler, bin aber natürlich gezwungen, jeden Titel anzunehmen, der mir vom Arbeitgeber verliehen wird. Auf Partys und in der Öffentlichkeit finde ich es einfacher, einfach zu sagen „Ich mache Websites“.
Ich wusste genau, worum es in diesem Artikel ging, nachdem ich den Einleitungssatz gelesen hatte. Jeder in diesen Top-Unternehmen sind Leute, die sich wirklich mit Informatik auskennen, und es wäre eine ziemlich große Umstellung, Leute einzustellen, die das nicht tun. Indem sie die Dinge so lassen, wie sie sind, verpassen diese Unternehmen definitiv einige ziemlich großartige Frontend-Entwickler auf Kosten der Sicherstellung, dass sie niemanden Schlechten einstellen.
Für mich ist das der Unterschied zwischen einem Frontend-Entwickler und einem Frontend-Ingenieur; Letzterer ist ein Software-Ingenieur, der problemlos an jeder Softwareentwicklungsaktivität teilnehmen kann, sich aber auf die Webentwicklung konzentriert.
Ich stimme definitiv zu, dass es Probleme gibt und vielleicht ein Gleichgewicht oder so etwas benötigt wird. Es ist irgendwie verblüffend zu denken, dass man nicht auf das getestet wird, was man tatsächlich tun wird.
Außerdem empfehle ich jedem, der es versuchen möchte, Steven Skienas „The Algorithm Design Manual“. Es behandelt Komplexität, Datenstrukturen, Algorithmen usw. mit sehr minimaler formaler Mathematik.
Netter Beitrag. Ich habe oft mit Personalvermittlern gesprochen, die sehr wenig über Entwicklung/Code wussten, aber irgendwie irgendwann im Einstellungsprozess verantwortlich waren. Frage mich, wie Philip über Darcy Clarkes „Front End Interview Questions“ (http://darcyclarke.me/development/front-end-job-interview-questions/) denkt. So oder so, das war ein ziemlich aufschlussreicher Beitrag. Sicherlich etwas, das man im Hinterkopf behalten und die Klinge scharf halten sollte. Danke.
@Henri Helvetica, die meisten Personalvermittler verstehen Entwicklung/Code auf einer Skala zwischen folgenden Werten:
Null • ——————— • Nichts
Selten (sehr) habe ich jemanden mit einer verschwommenen Vorstellung von Entwicklung/Code getroffen, und ich habe dies in den letzten Monaten sehr kürzlich mit mehreren Personalvermittlern erlebt.
Ich hatte eine ähnliche Erfahrung, die mich davon abhielt, Chancen in San Francisco zu verfolgen. Ich hatte Vorstellungsgespräche bei etwa drei ähnlich großen Unternehmen dort. Es gab Logikrätsel und Mini-Projekte, um meine Fähigkeiten in Theorie und Praxis zu testen, und ich hatte viele frontend-orientierte Pair-Coding-Sessions mit verschiedenen Leuten, und sie fragten viele der Dinge, die Sie skizzieren – besonders am Telefon. Aus irgendeinem Grund fühlten sich meine Telefoninterviews immer am stärksten an, obwohl ich ziemlich sicher bin, dass ich am Telefon und persönlich auf dem gleichen Niveau war.
Aber am Ende ging ich mit dem Gefühl, dass jedes Unternehmen in dieser Gegend viel Zeit und Energie für ein Vorstellungsgespräch in Anspruch nehmen würde, aber weniger wahrscheinlich ein Angebot machen würde, da die Waage zugunsten derer mit soliden Informatikhintergründen ausschlägt, während meiner im Design liegt.
Langfristig konnte ich mir nicht vorstellen, dass die Arbeit für eines dieser Unternehmen deutlich befriedigender wäre als die Arbeit für mich selbst. Ich beschloss, die Stunden meines Lebens zu sparen, die ich damit verbracht hätte, mich nach ihren Vorstellungen zu formen, und stattdessen Projekte zu machen, Kunden zu gewinnen und zu unterrichten, all das war weitaus befriedigender als ein Absagebrief nach Marathon-Interviews.
Worauf ich hinaus will, ist, dass man die Stunden seines Lebens nicht zurückkaufen kann. Wenn du WIRKLICH bei einem dieser Unternehmen arbeiten willst, wenn es dich WIRKLICH glücklich machen wird, dann geh unbedingt hin und forme dich nach ihrem Bild. Werbe um sie rigoros! Aber wenn du unsicher bist, ob die Arbeit für Tech Giant in SFO A dich glücklicher machen wird als die Arbeit für Medium-sized Startup in New York City B, dann ist es das vielleicht nicht wert, die zusätzliche Mühe. Das Leben ist zu kurz, um sich über die Erwartungen anderer Leute aufzuregen, wenn es wichtige, erfüllende Arbeit gibt, die du jetzt tun kannst.
Das ist der erste Kommentar, dem ich zugestimmt habe. „Man kann die Stunden seines Lebens nicht zurückkaufen.“ – So oft scheint es, als ob die Leute nicht merken, dass Zeit genauso wertvoll ist wie Geld. Ich habe einmal im Silicon Valley ein Vorstellungsgespräch gehabt und seitdem jede Gelegenheit, zurückzukehren, ausgeschlagen. So wie ich mich entschieden habe, keinen Doktortitel zu machen und Professor zu werden, habe ich entschieden, dass es zu viele Möglichkeiten auf der ganzen Welt gibt, um sich starr darauf zu konzentrieren, die Türen eines Unternehmens in einem winzigen Tal zu passieren, das von Stanford-Absolventen bewacht wird. Sicher, ich könnte wahrscheinlich ziemlich gut abschneiden, wenn ich mir die Mühe machen wollte – es ist nur so, dass die Belohnung kaum besser ist als das, was ich bereits habe.
Als Frontend-Entwickler bei Google sympathisiere ich mit Ihrem Standpunkt. Aber als jemand, der viele Interviews führt, kann ich Ihnen sagen, dass die Probleme, die Sie für „die meisten intelligenten Entwickler mit einem starken Informatikhintergrund“ für beantwortbar halten, alles andere als das sind. Sie wären erstaunt, wie viele Leute ich interviewe, die viele Jahre Erfahrung haben und dennoch bei den grundlegendsten CS-/Mathematikfragen komplett scheitern. Die Tatsache, dass Sie sie unkompliziert fanden, ist ein Beweis für Ihre eigenen Fähigkeiten und nichts, was Sie verallgemeinern sollten.
Andrew Shebanow: Genau das ist meiner Meinung nach mein Problem mit diesem Ansatz. Ich werde dies als Beispiel auf meine persönliche Erfahrung stützen, aber ich bin sicher, dass es da draußen tonnenweise solche Leute gibt.
Ich habe mein Studium vor etwa 8-9 Jahren abgeschlossen. Die meisten CS-Sachen, insbesondere algorithmische usw., sind nichts, was man täglich im Job verwenden muss (das liegt daran, dass diese Probleme normalerweise für einen gelöst und in den Tools oder Frameworks, die man verwendet, versteckt sind). Daher bin ich offensichtlich bei algorithmischen oder Rätselfragen eher eingerostet. Aber andererseits, da ich das Wissen habe, brauche ich nur ein wenig, um mich daran zu erinnern – wie eine schnelle Google-Suche – und ich kann es wieder aufgreifen. Wenn ich nun Interviews führe, hasse ich die Tatsache, dass ich tatsächlich algorithmisches Zeug wissen muss, das ich in meiner täglichen Arbeit nicht benutze, und ich sehe sie auch bis zu einem gewissen Grad nicht als relevant für meine Erfahrung und Fähigkeiten an. Ich habe über 10 Jahre Erfahrung, ich habe einen vielfältigen technischen Hintergrund, ich bin nicht furchtbar gut in Rätselfragen – aber ich erledige meine Arbeit immer, liefere gute Ergebnisse und habe nichts als großartiges Feedback erhalten. Und ich werde leicht für einen Kandidaten, der frisch von der Schule kommt, mit null realer Erfahrung, aber einem guten Verständnis von Algorithmen und sich frisch daran erinnert, beiseite geschoben. Ich persönlich sehe dies als Problem und ich habe auch nicht das Gefühl, dass Unternehmen wirklich versuchen, dies zu beheben. Für sie ist es einfacher, mit dem Verlust eines guten Kandidaten umzugehen, als jemanden einzustellen, der ihre Tests nicht besteht und diese Kosten verursacht. Ich meine, ich verstehe es, man muss etwas haben, um die Fähigkeiten eines Kandidaten zu messen, aber ich denke, dass die derzeit verwendeten Fragen nicht ideal sind.
Andrew,
Ich wäre einer dieser Entwickler, der bei CS-Fragen scheitern würde. Ich bin Autodidakt und seit etwa 15 Jahren Vollzeit-Full-Stack-Entwickler. Bisher bin ich noch nie auf ein CS-bezogenes Problem in meinem Job gestoßen. Bitte schauen Sie sich Ihre Arbeit der letzten paar Wochen an und stellen Sie Fragen dazu, nicht zu Ihren CS-Kursen.
Ich interviewe mehrmals pro Woche Leute für Full-Stack-Webentwicklerpositionen und es ist mir egal, ob sie Arrays, B-Bäume sortieren, Zufallsmischalgorithmen erstellen, eine verknüpfte Liste umkehren oder irgendetwas anderes aus diesem Bereich können. Es ist mir wichtig, ob Sie produktiv sein und zu unserem Team mit Aufgaben beitragen können, die wir täglich erledigen. Verstehen Sie JavaScript? Closures? Async? Was ist mit CSS? Mehrspaltiges Layout? Rendergeschwindigkeit? Haben Sie Erfahrung mit TDD? Wie würden Sie mit dem Testen von asynchronem Code umgehen? Das sind die Probleme, die wir lösen. Die Fähigkeit, CS-Lehrbuchwissen auswendig zu lernen, gehört nicht dazu.
Ich würde gerne hören, auf welche Art von Problemen Frontend-Ingenieure bei Google stoßen, die CS erfordern?
Auch ich würde bei dieser Art von Interview scheitern und habe 17 Jahre lang als Webentwickler gearbeitet, bei Unternehmen wie Dell, Intel und Microsoft. In all diesen Jahren musste ich kaum etwas Komplexeres als Schulmathematik bewältigen – testen Sie mich an den Aufgaben, die ich am Computer im Job erledigen werde, nicht an vagen Theorien, die mit nichts zu tun haben. Meine Lieblingsinterviews sind die, die einem eine kleine Hausaufgabe zum Abgeben geben – lassen Sie mich einfach zeigen, dass ich die Arbeit erledigen kann.
Und diejenigen, die bei grundlegenden CS-/Mathefragen versagen, werden sie am Ende gute oder schlechte Entwickler? Als Entwickler muss ich nie „Klassen in JS“ schreiben oder eine Closure-Definition als Monolog halten oder Sortieralgorithmen (typischer CS-Kurs, aber ich bin Autodidakt) usw. implementieren.
Ich kann also leicht erstarren, wenn ich danach gefragt werde. Nun, ich habe solche Dinge geübt, aber speziell für Interviews, nicht für den realen Gebrauch.
Auch ich muss allen zustimmen, die vor mir geantwortet haben. Ich war schon immer sehr gut in Theorie und Algorithmen, habe kürzlich wieder mit Mathematik angefangen (Fernstudium) nur zum Spaß (ich bezweifle, dass ich einen Abschluss machen werde – ich habe bereits einen in Informatik, ich möchte nur mein Gehirn testen).
In all meinen vielen Arbeitsjahren im Silicon Valley und jetzt (wieder) in Deutschland ist mir jedoch noch kein wirklich schwieriges „CS“-Problem begegnet, und wenn doch (einmal im Jahr oder seltener?), finde ich die Lösung in einer Minute über Google oder ich formuliere den Algorithmus selbst, wobei ich MEHR Zeit benötige.
Viel wichtiger sind, wie ich festgestellt habe, Menschen,
Bereit, jede Herausforderung anzunehmen, die sich nicht zurücklehnen und sagen: „Das kann ich nicht, ich überlasse das jemand anderem.“
Die es lieben, (Inline-)Dokumentation zu schreiben – wirklich zu beschreiben, WAS sie tun und WARUM und nicht, was passiert (jeder, der Code lesen kann, kann das sehen!).
Die entspannt sind, was bedeutet, dass es LEICHT fällt, zuzugeben, Dinge nicht zu wissen und Fehler, die man gemacht hat, anstatt sie unter den Teppich zu kehren.
Die am wenigsten notwendige Fähigkeit, die ich habe (oder hatte? sie hat wahrscheinlich nachgelassen), ist es, Algorithmen für die oben als Beispiele genannten Probleme zu entwickeln.
Leute, wir reden hier über grundlegende Dinge. Einen Algorithmus zur Palindromprüfung herauszufinden, ist keine Raketenwissenschaft. Man soll es nicht einmal auswendig wissen, man soll es spontan entwickeln können.
Diese Fragen sollen nicht Ihr Gedächtnis, sondern Ihre Kreativität, Ihr grundlegendes Wissen über den Kontrollfluss und Ihre grundlegende Fähigkeit zur Bewertung der Algorithmuskomplexität überprüfen.
Um hier klar zu sein, ich spreche von Frontend-Ingenieuren, nicht von reinen Webentwicklern. Google stellt viele reine Webentwickler ein, aber nicht, um an komplexen Webanwendungen zu arbeiten (z.B. Google Play Music, woran ich arbeite). Für solche Anwendungen muss man ernsthaft in Javascript programmieren können, genauso komplex und schwierig wie alles, was man im Server-Side-Java/C#/wasauchimmer findet. Die Fähigkeiten für die beiden Positionen überschneiden sich, sind aber letztendlich sehr unterschiedlich.
function palindrome(s) { var n=s.length-1; return n < 1 || s[0] == s[n] && palindrome(s.substring(1,n)); }Endrekursionsoptimierung in JS bitte :)
Sehr gute Punkte und eine gute Kritik am Interviewprozess, wie er sich offenbar entwickelt hat. Das größte Problem bei vielen der Interviewfragen, die Ihnen gestellt wurden, ist, dass sie nicht einmal „intelligente Leute“ identifizieren, wie einer Ihrer Probanden die Absicht bemerkte, sondern meistens jemanden identifizieren, der die Frage schon einmal gehört hat. Und natürlich spiegeln sie keine „realen“ Probleme wider, die normalerweise viel alltäglicher sind, und wenn sie auftauchten, zeigen die erwarteten Lösungen nicht, wie Sie sie wahrscheinlich lösen würden. Im wirklichen Leben würden Sie Bibliotheken und APIs verwenden und wahrscheinlich keine eigene Lösung „rollen“. Tatsächlich würde ich, wenn Sie es täten, sofort Ihre Fähigkeiten in Frage stellen.
„Another likely causes“ -> „Another likely cause“
Sie haben nicht erwähnt, wohin Sie zum Vorstellungsgespräch gegangen sind und welche Art von Fragen sie Ihnen gestellt haben, dass Sie deren Job ablehnten
Ich denke, der Grund für ein solches Auswahlverfahren hängt mit der Rolle zusammen, die der „Ingenieur“ spielen wird. Wenn Sie an Orten wie Google oder Github eingestellt werden, neigen sie dazu, Sie über den gesamten Stack und nicht nur in einem bestimmten Bereich arbeiten zu lassen. Tatsächlich ist es eine gute Sache für den neuen Mitarbeiter, da er im Gegenzug viel lernen wird.
Sie sind also bereit, ein Risiko mit jemandem einzugehen, der nicht unbedingt alle Nuancen des Frontends kennt, aber solide in der Informatik ist und sich bei Bedarf anpassen kann.
Ich denke, sie sollten wirklich zwei verschiedene Positionen haben. Eine sollte Front-End-Entwickler und Front-End-Ingenieur sein.
Das ist leider die Wahrheit über Vorstellungsgespräche. Ich hatte kürzlich eines über PHP-Syntax für Arrays, geschrieben im Jahr... 2005! So wurde die falsche Antwort [] wahr.
Sehr traurig.
Übrigens würde ich Ihren jQuery-Event-Handler optimieren. Habe ich Recht?
Ich habe kürzlich ein Vorstellungsgespräch verlassen, bei dem ich – und das auf Papier, nicht weniger – das HTML und CSS für ein JavaScript-freies Dropdown-Menü schreiben sollte, das in IE 6 funktionieren würde. Ich fragte, ob diese Aufgabe ein Hinweis auf die Art von Arbeit sei, die ich täglich erwarten müsste, und die beiden Männer, die mich interviewten, gaben unterschiedliche Antworten: Der eine sagte „nun, ähm, wahrscheinlich nicht“ (warum mache ich es dann im Interview?) und der andere sagte „ja, alle unsere Produkte müssen in IE 6 funktionieren“ (danke, ich habe vor 4 Jahren aufgehört, IE 6-Kompatibilität zu erstellen).
Kurz gesagt, da wurde mir klar, dass dieser Ort meine Zeit nicht wert war.
Vielleicht suchen sie wirklich nur nach mehr CS-orientierten Ingenieuren.
Ich arbeite derzeit an einem großen Projekt, und einige unserer Frontend-Entwickler berühren kaum HTML oder CSS. Ein Großteil ihrer Arbeit besteht darin, unser MVC-Framework (in diesem Fall Angular) zu erweitern, Unit-Tests zu schreiben oder APIs für unsere Junior-Entwickler (einschließlich mir) zu erstellen. Wenn wir sie bei dem Projekt ersetzen müssten, würde uns eine Interviewfrage zu jQuery nicht helfen, die richtigen Kandidaten zu finden.
Ich verstehe, dass der Begriff Frontend-Ingenieur weit genug gefasst ist, um jeden von Leuten, die Frameworks schreiben, bis hin zu Leuten, die nur HTML und CSS schreiben, zu umfassen, aber ich vermute, dass die größeren Unternehmen Schwierigkeiten haben könnten, die erstere Klasse von Entwicklern zu finden.
Ich glaube, ich habe einige der gleichen Orte interviewt (obwohl es schwer zu sagen ist, da die Fragen so bedeutungslos sind, dass sie buchstäblich für jeden Programmierjob überall sein könnten), und obwohl ich Ihnen größtenteils zustimme, denke ich, dass Sie zu großzügig sind. Sie erwähnen, dass diese Technik zum Interviewen von Frontend-Entwicklern vielleicht das Ergebnis ist, dass sie sie vorher nicht gebraucht haben, aber basierend auf Ihrer Beschreibung der Unternehmen, bei denen Sie interviewt haben, scheint es, dass sie Frontend-Entwickler gebraucht hätten, um den Punkt zu erreichen, an dem sie auf Ihrem Radar wären.
Meine Theorie ist, dass dies kein Problem von Unternehmen ist, die ihre erste Frontend-Person einstellen; diese Unternehmen brauchen einen Experten und werden, wenn sie jemanden für eine Nische suchen, meiner Erfahrung nach sehr sorgfältig sein, jemanden zu finden, der sie so gut wie möglich ausfüllt. Im Gegenteil, ich denke, es ist ein Problem, das auftritt, wenn Unternehmen anfangen, Ingenieure zu horten, keine Leute einstellen, um eine bestimmte Aufgabe zu erfüllen oder eine bestimmte Expertise zu bieten, und hauptsächlich nur mehr Arbeitskräfte für Projekte wünschen, die im Zuge ihrer Expansion auftauchen könnten. Aus diesem Grund würde ich argumentieren, dass Frontend-Leute ihre Algorithmen nicht aufbessern sollten, sondern stattdessen in die entgegengesetzte Richtung rennen sollten, wenn sie sich in einem Interview befinden, in dem alle Fragen generisch sind und keine speziellen Fähigkeiten betreffen, die sie weiterhin nutzen und verfeinern möchten. Wenn jemand Sie interviewt, als ob Sie eine Ware wären, ist Ware die Rolle, die Sie akzeptieren werden.
Großartige Punkte, Garann! Ich denke, Sie haben wahrscheinlich Recht mit der Ware-Perspektive und dem Ingenieur-Horten. Daran hatte ich vorher noch nicht gedacht.
Bei meinem letzten Job wurde ich als erster Frontend-Ingenieur eingestellt, und mir wurden viel mehr Frontend-Fragen gestellt. Insbesondere wurden mir die Fragen gestellt, denen sie kürzlich gegenüberstanden und auf die sie keine gute Antwort hatten.
Außerdem bin ich ein großer Fan von Frip Frap!
Dieses Gefühl gefällt mir.
Wenn das Interview lahm ist, wird es der Job wahrscheinlich auch sein.
Großartiger Beitrag. Nur um den Advokaten des Teufels zu spielen – ich vermute, dass Sie, als Sie sich für eine Frontend-Engineering-Position beworben haben, dem Arbeitgeber entweder ein Portfolio, Beispielseiten oder zumindest eine Liste früherer Projekte zur Verfügung gestellt haben, die er durchsuchen konnte, um ein Gefühl für Ihre Frontend-Arbeit zu bekommen. Dadurch konnte er wahrscheinlich feststellen, dass Sie ein geeigneter Kandidat waren.
Viele dieser „Rätsel“-ähnlichen Interviewfragen dienen dazu, Ihren Ansatz zu sehen. Ihre Fähigkeit, Ihren Ansatz zu demonstrieren, übertrifft Ihr Portfolio. Denken Sie daran, dass Programmierpositionen anders sind als Grafikdesign- oder Texterpositionen. Die Leute müssen Ihren Problemlösungsansatz mit eigenen Augen sehen. Sie können Ihrem Portfolio nicht einfach vertrauen. Code ist zu einfach zu kopieren, ohne ihn zu verstehen.
Ein kluger Interviewer hat Todesangst davor, einen Gedanken-Zauberer einzustellen, der einen negativen Wert „beitragen“ wird. Gedanken-Zauberer „lösen“ Probleme, indem sie Dinge „schnell“ herunterladen und zusammenfügen, bis etwas auf dem Bildschirm erscheint.
Ich halte es für riskant, zu viel darüber anzunehmen, was ein Unternehmen braucht und worüber es Sie fragen sollte. Sie werden im Allgemeinen für eine offene Stelle in einem bestimmten Team interviewt, und sie werden wissen, wonach sie suchen.
Warum zum Beispiel nach Web-Apps fragen, die auf mobilen und Desktop-Browsern laufen, wenn Sie keine haben oder wollen? Wenn ein Unternehmen Angular verwendet, warum nach jQuery fragen? Wenn die Rolle hauptsächlich auf die tägliche Produktentwicklung mit Node.js und React ausgerichtet ist, warum sich im Interview auf Fragen nach Low-Level-DOM-Problemen konzentrieren, die React erledigt? Wenn Sie bereits ein gutes UI-Framework haben, warum das Interview damit verbringen, einen Kandidaten zu fragen, wie man CSS im großen Maßstab schreibt?
Der Vorschlag, Fragen mit Frontend-spezifischem Wissen zu kombinieren, könnte eine nette Möglichkeit sein, jemanden in ein Interview einzuführen, aber man könnte auch argumentieren, dass ein starker Kandidat Probleme angehen können sollte, ohne dass sie in einer bekannten Box verpackt sind. Irgendwann werden Sie also sehen wollen, wie jemand über etwas ihm Unbekanntes denkt, wenn dies eine Situation ist, in der er sich bei der Arbeit häufig wiederfinden wird.
Nach alledem bin ich wirklich überrascht, wie wenige CSS-Fragen Ihnen gestellt wurden! Und herzlichen Glückwunsch zum Beitritt zum Google Developer Relations Team.
Ich stimme dem Geist dieses Kommentars zu, aber ich denke, er verfehlt den Punkt dessen, was Philip sagt.
Ich denke, Philips Argument geht eher dahin, dass, wenn sie wüssten, wonach sie suchen, es viel offensichtlicher wäre. Wenn dieselben Fragen in einem Interview für einen .NET-Entwickler gestellt werden können, dann mangelt es den Fragen eindeutig an Fokus.
Nun, was wollen sie denn? Ich denke, Philips Punkt ist, dass die Fragen spezifisch genug sein sollten, um genau das zu adressieren, woran gearbeitet wird.
Nochmal, ich glaube nicht, dass sein Punkt etwas mit spezifischen Technologien zu tun hat. Natürlich würden sie nicht nach jQuery fragen, wenn das nicht Teil der Stellenbeschreibung ist. Der Artikel besagt, dass sie nicht genug Frontend-spezifische Fragen zu den Technologien gestellt haben, an denen gearbeitet werden soll.
Derselbe Fall. Sie haben nicht nach React gefragt oder viel anderem. Das ist sein Punkt. Sie suchen nach intelligenten Leuten im Allgemeinen, nicht unbedingt nach intelligenten Frontend-Entwicklern (was auf Garanns ausgezeichneten Punkt zur Ware zurückführt).
Wenn der Job „Front-End-Ingenieur“ ist, warum sollten sie sich dann „häufig“ in unbekannten Situationen wiederfinden? Ja, natürlich tauchen in der Front-End-Entwicklung ständig neue und herausfordernde Probleme auf. Aber all diese Probleme liegen innerhalb eines bestimmten Technologierahmens. Mit anderen Worten, die Fragen können sehr spezifisch für die Technologien sein, aber unbekannt genug, um eine echte Herausforderung für die Fähigkeiten und Erfahrungen des Kandidaten darzustellen.
Ich denke, einer von Philips stärksten Punkten in diesem Artikel, und den Chris schön anspricht, ist, dass viele der Fragen effektiver von jemandem beantwortet werden können, der noch nie eine Webseite erstellt hat, geschweige denn die DOM-APIs verwendet hat.
Das Beängstigende ist, wenn diese Unternehmen genau wissen, was sie tun (wie Sie anzudeuten scheinen), dann hat Garann eindeutig Recht und sie betrachten Entwickler als nichts weiter als eine Ware.
Aus Ihrem Artikel lese ich, dass Sie sehr anspruchsvoll sind und sich selbst als etwas ganz Besonderes und Einzigartiges betrachten.
Beispiel
Das ist das lächerlichste, was ich je gelesen habe.
Nein, das ist es nicht.
Ich habe mich ein bisschen in SF und im Silicon Valley für Frontend-Positionen beworben, und ich war vom Interviewprozess nicht beeindruckt. Sie haben wirklich genau ins Schwarze getroffen. Wie Sie sagten, wurden viele Informatikfragen gestellt, die vielleicht nicht so relevant sind.
Eine Firma bat mich, den Levenshtein-Distanz-Algorithmus zu replizieren. Eine andere fragte mich nach Service-Orientierter Architektur. Obwohl es wichtig ist, diese Dinge zu wissen, sagt es nichts darüber aus, ob ich guten Frontend-Code schreiben kann.
Eine versierte Frontend-Person sollte wahrscheinlich etwas über gute CSS-Architektur wissen und, was noch wichtiger ist, warum sie wichtig ist (SMCSS, OOCSS, BEM). Auf der JS-Seite: das DOM und relevante APIs für das Unternehmen. Vielleicht, wie man mit asynchronen Dingen umgeht. Dann, um das zu wiederholen, was Sie sagten, wie sie lernen und auf dem Laufenden bleiben. Markup und Layout sind ziemlich grundlegend, obwohl ich sagen muss, dass ich es schon von einem „Frontend-Entwickler“ verhunzt gesehen habe. Eine einfache Code-Challenge im Voraus könnte sie jedoch wahrscheinlich aussortieren.
Ja! Bessere Interviews zu führen ist eine der offensichtlichsten Möglichkeiten, wie die meisten Unternehmen ihren Einstellungsprozess verbessern können.
Es ist jedoch nicht nur ein Frontend-Engineering-Problem; alle Arten von Mitarbeitern werden in Interviews geschickt, mit wenig Ahnung, welche Fragen sie stellen oder was genau sie bewerten sollen. Oft verbringen sie Zeit damit, den Kandidaten Fragen zu stellen, die bereits in früheren Interviews gestellt wurden, oder erfinden einfach spontan neue Fragen, um die Zeit zu füllen. Leute, wir können es besser machen!
Idealerweise hat jeder Interviewer vor jedem Interview einen Spielplan, so dass er weiß, welche Fragen er stellen und worauf er das Interview konzentrieren soll. Der Fokus jedes Interviews sollte von einem Satz von Kriterien für die Einstellung bestimmt werden, so dass die Kandidaten ganzheitlich bewertet werden – besondere technische Fähigkeiten, Wissen, wichtige Persönlichkeitsmerkmale und Motivationen, Passung zum Team/Unternehmen, Erfahrung usw.
Was mich frustriert ist, es muss nicht so sein! Die gute Nachricht ist, dass Unternehmen zunehmend die Idee annehmen, dass die Konzentration auf die Rekrutierung eine der effektivsten Möglichkeiten ist, wie sie Wert schaffen können, daher denke ich, dass es sich weiter verbessern wird, auch wenn noch ein langer Weg vor uns liegt.
Wenn Sie eine Liste von Unternehmen sehen möchten, die einen vernünftigeren, strukturierten Interviewprozess eingeführt haben, besuchen Sie meine Website http://www.greenhouse.io für eine Liste unserer Kunden.
Ich hatte kürzlich in New York eine ähnliche Erfahrung bei Vorstellungsgesprächen (obwohl mich am meisten erstaunte, wie viel Zeit einige große Unternehmen für Interviews aufwenden – Wochen!). Selbst einige Werbe-/Designagenturen suchten eher ernsthaftes institutionelles Wissen als autodidaktische Fähigkeiten.
Ich bin jedoch der Meinung, dass das die falsche Einstellung ist, und ich denke, Sie haben Recht, was den Grund für die Schwierigkeiten bei der Interviewführung im Frontend betrifft: Das Feld ändert sich so schnell, dass es schwer ist zu wissen, was einen guten Frontend-Kandidaten ausmacht. Die wichtigste Qualifikation ist die Fähigkeit, sich ständig neu zu erfinden und nicht an seinem Prozess festzuhalten, aber wie interviewt man das?
Und obwohl viele Frontend-Aufgaben viel mit geradliniger Programmierung gemeinsam haben, wie unglaublich wertvoll ist die Fähigkeit, das CSS eines Projekts zu organisieren und ein benutzerdefiniertes Framework zu erstellen? Keine Menge an Tests der Fähigkeit, binäre Suchalgorithmen zu konstruieren, wird Ihnen sagen, ob dieser spezielle Entwickler modulare und wiederverwendbare Elemente erstellen kann, die Ihr Projekt durch seine letzten Phasen fliegen lassen.
Vielleicht würde ich, wenn ich ein Interviewer wäre, meine Zeit damit verbringen, einen Entwickler zu bitten, seinen/ihren Entwicklungsprozess zu verteidigen. Wenn sie Grunt verwendet, würde ich sie bitten, mich davon zu überzeugen, dass die Verwendung von Grunt eine gute Idee ist. Dasselbe gilt für Sass, Less usw. Ich würde eine CSS-Organisationsphilosophie ansprechen: BEM, OOCSS, SMACSS, und nach potenziellen Vorteilen/Kosten der Verwendung fragen.
Für mich ist die Frontend-Entwicklung zunächst ein Vermittler zwischen sehr meinungsstarken Disziplinen. Sie muss pragmatisch und flexibel sein und immer nach einer anderen Möglichkeit suchen, eine Aufgabe zu erledigen, falls die erste bevorzugte Methode nicht funktioniert. Aber die Frontend-Entwicklung entwickelt sich auch außerhalb der Institutionen immer noch rasant, sie ist nicht für jeden etwas, und sie kann sowohl von einem Designer als auch von einem Programmierer bewertet werden.
Ich würde mir einen Folgebeitrag wünschen, der die Lösungen in JavaScript / jQuery für diese Logikrätsel-Fragen präsentiert…
Ein sehr aufschlussreicher Beitrag, der eine Freude zu lesen war.
Meine Erfahrung im Gespräch mit Google-Recruitern spiegelt Tanels Feedback wider. Nachdem ich mit einem Recruiter über verschiedene Möglichkeiten bei Google gesprochen hatte (alles ist möglich, aber der Recruiter kann nichts Spezifisches nennen, das für mich funktionieren würde) und deren Interviewprozess (beginnt mit einem Telefonanruf über grundlegende CS-Fragen, die sich völlig von dem unterscheiden, was ich im Alltag als Entwickler seit 10 Jahren verwende), beschloss ich, mich nicht einmal mit dem ersten technischen Interview zu befassen. Was noch entmutigender ist, ist, dass es seitdem jeden Monat oder alle zwei Monate einen neuen Recruiter zu geben scheint, der mir schreibt und versucht, mich wieder ins Boot zu holen, völlig ahnungslos über die Gründe, die ich in der Vergangenheit für die Nichtfortsetzung angegeben habe.
Ich bin heutzutage eher skeptisch, ich spreche nicht mit Personalvermittlern und schaue mir nur Unternehmen an, bei denen ich die Möglichkeit habe, mit jemandem in einer ähnlichen Rolle zu sprechen, für die sie einstellen. Googles Ansatz funktioniert wahrscheinlich für Neueinstellungen (wie er für mich funktionierte, als ich damals bei Microsoft anfing), aber ich denke, sie schränken sich ziemlich ein.
Ich halte es auch für unsinnig, dass Google Teams hat, die remote zusammenarbeiten, aber trotzdem erwartet, dass jeder ins Büro kommt. Aber das ist ein bisschen abwegig.
Übrigens, wenn Sie für ein Unternehmen arbeiten, das einen Entwickler mit viel Entwicklungserfahrung im Frontend- und .NET-Bereich sucht, vorzugsweise remote, füge ich mein GitHub-Profil im Website-Link ein (und eines meiner öffentlichen Repositories enthält meinen Lebenslauf).
Betrachten Sie vielleicht eine alternative Perspektive: Meiner Erfahrung nach sind die meisten guten Interviewer mehr an Ihren Soft Skills interessiert, da sie Ihre technischen Fähigkeiten bereits anhand Ihres Online-Profils (GitHub, Blogs usw.), Ihrer früheren Erfahrungen und Referenzen kennen würden. Wenn sie das nicht wissen und Sie technische Fragen stellen, darf ich vorschlagen, dass sie ihre Hausaufgaben nicht gemacht haben?
Mehr Frontend-Fragen (meiner bescheidenen Meinung nach) sind genau der falsche Weg, um die richtigen Leute einzustellen. Die meisten guten Interviewer werden viel mehr an Ihrem potenziellen Team- und Kulturfit, Ihrer Problemlösungsfähigkeit, Ihrem Selbstvertrauen und Ihrem Persönlichkeitstyp interessiert sein als daran, ob Sie bestimmte technische Fragen in einer Interview-Situation beantworten können.
Etwas zum Nachdenken.
„Superstar-Frontend-Ingenieur“
Bitte lernen Sie, was ein echter Ingenieur ist, damit Sie den Begriff nicht missbrauchen.
Möchtest du das auf eine nicht-arrogante Weise erklären?
Ich denke, der Jobtitel Frontend-Ingenieur ist absolut akzeptabel. Aber ich bin gerne bereit, ein Gegenargument zu hören.
Lustig, ich habe gerade etwas zu diesem spezifischen Thema geschrieben, als Antwort auf einen obigen Kommentar von Ricardo Zea ( #comment-927535 ), hoffentlich als nicht-arrogant empfunden. :P
Ein Kommentar zur Frage „Inline vs. Block“. Als ich Personalchef war, habe ich diese Frage oft gestellt, und es tut mir leid, Ihnen das sagen zu müssen, aber viele Leute mit CSS-Erfahrung in ihrem Lebenslauf kannten die Antwort nicht. Es ist nicht nur eine Aussiebefrage für Telefon-Screenings, sondern auch interessant, wie ein Kandidat diese Frage beantwortet. Von den Dutzenden von Kandidaten, mit denen ich gesprochen habe, beschrieb nur einer Details zu Padding, Breite usw., wenn er die beiden verglich. Manchmal geht es mehr darum, wie man antwortet, als darum, was man antwortet.
Insgesamt hatte ich eine ähnliche Erfahrung im Südosten. Ein Unternehmen insbesondere stellte ähnliche Fragen (es ging um „Frontend-Entwickler“) und am Ende des Interviews hatte ich das Gefühl, sowohl Frontend als auch Backend machen zu sollen. Kein Problem dabei, aber leider hat mich das Unternehmen nicht in der Rolle angenommen und jemand anderen gewählt. Ein paar Monate später scheint es, dass sie dieselbe Position wieder einstellen und dies bisher dreimal wiederholt haben (ohne Anzeichen einer Ausweitung der Einstellungen in anderen Bereichen). Vielleicht sollte ich ihrem HR-Mitarbeiter diesen Artikel per E-Mail schicken…
Ich bin bei Mo, ich arbeite derzeit für einen Kunden, der ganze Tage damit verbracht hat, Inline-CSS einzufügen, nur um ein Inline-Element wie einen Block aussehen zu lassen, oder umgekehrt. Als ich den Unterschied erklärte, erkannte sie, dass Frontend-Arbeit etwas anderes und spezialisiertes war.
Im Allgemeinen denke ich, dass dieses Thema eine perfekte Startrampe für die andere gefürchtete Interviewfrage ist: „Haben Sie Fragen an UNS?“. Das ist der Zeitpunkt, um sie festzunageln, ob sie WIRKLICH einen Frontend-Entwickler, einen Webdesigner oder einen Middle-Tier-Entwickler einstellen und wenn Sie ihnen helfen, den Unterschied zu verstehen. Typischerweise treffe ich auf Interviewer, die entweder mehr Backend- als Frontend-Code sehen wollen, oder sie wollen hübsche Bilder von Webseiten sehen, die leicht von Affen gemacht werden könnten.
Ich glaube, Sie hatten einfach Pech. Mir wurden schon alle Fragen gestellt, die Sie für solche Positionen erwartet hätten, aber es hängt vom Interviewer ab. Das ist ein typisches unsinniges Interview. Leider ist das Stellen spezifischer CSS- und HTML-Fragen, wie die von Ihnen aufgeführten, ungefähr so nützlich/nutzlos wie die allgemeinen Informatikfragen, die Sie bekommen haben.
Dies ist ein akutes Problem in unserer Branche. Als Frontend-Ingenieur habe ich dieses Problem oft gesehen und kann nachempfinden, wie frustrierend es manchmal sein kann.
Aber es liegt an uns, Menschen, die FE-Herausforderungen lieben und ihre Feinheiten kennen, das kulturelle Problem zu lösen. Ich versuche meinen Teil dazu beizutragen, indem ich nur Frontend-Engineering-Fragen stelle, wie zum Beispiel: Closures, Callback-Hölle, Promises, Async/Sync, verteilte XHR-Aufrufe, HTTP, MVC in JavaScript, Cross-Domain-Scripting etc. Was das Testen der algorithmischen Neigung angeht, gibt es viele lustige Probleme wie das Schreiben eines Tic-Tac-Toe-Spiels etc.
Ich neige nicht dazu, zu viele CSS-Fragen zu stellen, da ich stark das Gefühl habe, dass JavaScript das Herz der Frontend-Entwicklung ist. Ich versuche mein Bestes, um sicherzustellen, dass der Kandidat, der für eine FE-Rolle interviewt wird, keinen einzigen Moment das Gefühl hat, dass die Fragen nicht mit der Rolle zusammenhängen. Ich habe in meiner eigenen Karriere zu viel mit dieser Ärgerlichkeit zu kämpfen gehabt.
Meiner Erfahrung nach haben große Unternehmen Schwierigkeiten, kontextbezogene FE-Interviews zu führen. Es gibt jedoch einige Startups, die eine FE-Rolle sehr gut verstehen, und Sie werden glücklich herausgehen, egal ob Sie das Interview bestanden haben oder nicht.
Ich hatte genau die gleiche Erfahrung. Mir werden nie tatsächliche Frontend-spezifische Fragen gestellt, obwohl ich Jobs scheinbar problemlos lande. Ich habe keinen Hintergrund in Informatik und kenne nicht viele, wenn überhaupt, FE-Entwickler, die einen haben. Ich habe einen Artikel darüber geschrieben, was meiner Meinung nach die einzigartige Kombination von Ereignissen und Fähigkeiten ist, die man heute braucht, um ein Frontend-Entwickler zu werden, https://medium.com/p/d12bbb3ac785
Mir wurden in Interviews eine ganze Reihe von Algorithmusfragen gestellt, die für das, was ich tue, nicht relevant sind. Sie passen eher zu einem Spieleentwickler.
Ich habe vor ein paar Monaten auch eine ähnliche Erfahrung gemacht, als ich versuchte, einen Job in einem riesigen Unternehmen in Seattle zu bekommen. Auch wenn es sich eher um eine Backend-Softwareentwicklerposition handelte, hatte ich in meinen über 10 Jahren Geschäftsentwicklung noch nie die Gelegenheit, mich mit tatsächlichen Algorithmen zu befassen. Heutzutage macht das niemand mehr. Theoretisch muss man also die Big-O-Zahl verschiedener Algorithmen kennen, aber sie in einem Übersee-Telefoninterview implementieren zu lassen, ist meiner Meinung nach etwas zu viel.
Die Sache ist, dass sie Problemlöser suchen, und das ist großartig, aber welche Art von Problem kann man in ein 40-minütiges Interview quetschen? Ein kleines, das für die Erfahrung eines Kandidaten nicht relevant ist, oder ein Standardproblem, das die Implementierung eines Algorithmus ist.
Daher empfehle ich jedem, der heutzutage ein Vorstellungsgespräch in einem großen Technologieunternehmen hat, dieses Zeug auswendig zu lernen. Es gibt genügend Material im Internet. Widmen Sie 3 bis 5 Tage der Implementierung in Ihrer bevorzugten Sprache, und es wird Ihnen im Vorstellungsgespräch einen großen Vorteil verschaffen. Sobald Sie es hinter sich haben, können Sie alles getrost vergessen.
Die ganze Algorithmussache ist nicht so schwer, nur unerwartet. Aber Realität ist Realität, und man muss sich anpassen.
Wie auch immer, ich werde es in einem Monat oder so wieder versuchen :)
Glauben Sie wirklich, dass die Leute in schnelllebigen Silicon Valley Unternehmen Zeit haben, Interviews zu führen? Ich hatte selten welche. Die meisten werden in letzter Minute vom einstellenden Manager ein oder zwei Tage vorher geplant. Nur sehr wenige Ingenieure werden sich die Mühe machen, Fragen zu jeder Stellenbeschreibung im Team zu entwickeln. In großen Teams mit vielen Rollen ist das einfach nicht praktikabel, wenn man mitten in einem Projekt steckt, das letzte Woche fällig war…. Alle suchen nur danach, ob Sie an die Mission des Unternehmens glauben, sich für den Job begeistern, gut ins Team passen, hart arbeiten, spontan denken können und nicht viel Unterstützung bei Ihrer Arbeit benötigen. Jedes Silicon Valley Unternehmen hat eine Kultur. Ein Vorstellungsgespräch hier ist eine Gelegenheit, Sie kennenzulernen, was Sie können, nicht unbedingt, was Sie wissen. Denn wenn Sie alles wissen, bewerben Sie sich für den falschen Job und sollten stattdessen Ihr eigenes Unternehmertum betreiben.
Was für eine alberne, pompöse Antwort. Die Kultur Ihres Unternehmens war rückständig, wenn sie sich nicht genug um ihr Produkt oder ihre Interviews kümmerte, um sicherzustellen, dass die richtigen Fragen gestellt wurden, um niemanden einzustellen, der unweigerlich scheitern würde.
Wenn ein Unternehmen jemanden sucht, der sich für das Leitbild interessiert, kann es Bewerber nach dem Aufwand aussieben, den sie in ihre Anschreiben stecken, oder nach der Erfahrung, die sie in ihren Lebensläufen haben. Wenn ein Unternehmen jemanden sucht, der zur Kultur passt, kann es sich mit ihm in einem Café für über 30 Minuten zusammensetzen. Wenn ein Unternehmen wissen möchte, wozu jemand fähig ist, genügt ein kurzer Blick auf dessen Code-Repository oder Portfolio.
Ein Interview ist kein Kennenlerntreffen. Es ist ein Ort, um dem Kandidaten Fragen und Aufgaben zu stellen, die direkt auf die jeweilige Rolle zugeschnitten sind. Es dauert keine zwei Tage, um sich mit dem bestehenden Team zusammenzusetzen und zu sagen: „Okay, was sind die Dinge, die wir regelmäßig tun und die für diese Person wichtig sind zu wissen?“ Das kann man beim Mittagessen herausfinden.
Wenn doch nur jemand wirklich Prominentes in der Front-End-Entwicklerszene ein GitHub-Repo mit guten Interviewfragen erstellen würde…
Oh warte: „Front-end Job Interview Questions“, 61 Mitwirkende, darunter Paul Irish?
https://github.com/darcyclarke/Front-end-Developer-Interview-Questions
Jetzt das ans Silicon Valley faxen…
Einige Meinungsverschiedenheiten hier.
Ich bin der Meinung, dass Kernproduktentwicklungsunternehmen wie Amazon, Google, VMware usw. das Richtige tun, indem sie DS-Algorithmen, Rätsel und nicht das Frontend abfragen.
Ich habe etwa 30+ Vorstellungsgespräche für Top-Unternehmen in Indien geführt und arbeite bei Amazon als Webentwickler.
Die Idee ist, dass sie intelligente (und nicht nur kenntnisreiche) Leute einstellen wollen. Und deshalb ist das Gehalt unglaublich hoch.
Betrachtet man Ihre jQuery-Analogie, ist sie sehr einfach zu lernen und anzuwenden. Es ist nicht viel Intelligenz erforderlich, um herauszufinden, wie jQuery Chaining funktioniert und warum der Selektor „#nav a“ ein langsamer Selektor ist.
Aber ich stimme definitiv dem Kalender-Widget-Teil zu.
Mir wurde einmal aufgetragen, ein Bilderrätselspiel im Frontend mit CSS-Positionierung zu erstellen.
Aber Dinge wie Best Practices in JavaScript, modernste HTML5-Funktionen, CSS-Techniken usw. lassen sich ohne großen Aufwand finden und sind einfach zu verstehen und zu verwenden.
Dann kommt es darauf an, aktiv zu sein und den richtigen Leuten im Internet zu folgen. Das ist unfair, es sei denn, man weiß etwas wirklich sehr Seltenes, das anderen Entwicklern nicht bekannt ist.
Warum sollte dann ein Unternehmen wie Google so hohe Gehälter zahlen, bis zu 150.000 $ und mehr für einen Ingenieur wie mich? (Ich bekomme nicht so viel!!)
Warum nicht ein Buch mit allen Webinhalten schreiben, das jQuery/JavaScript/CSS/AMD/MVC/MVVM
/HTML5/WebRTC/SinglePage/ResponsiveDesign enthält, und alle Inhalte, die im Internet verfügbar sind, beginnend bei 100 $.
Google stellte frische Absolventen für die AngularJS-Entwicklung ein.
VMware bat mich, Sleep in JavaScript zu implementieren.
Amazon bat mich, eine JS-Klasse zur Implementierung einer verknüpften Liste zu erstellen,
auch eine Promise-basierte Schnittstelle zum Parsen von CSS-Eigenschaften verschachtelter DOM-Elemente.
Und ich finde es vollkommen logisch. Einzige Ausnahme ist, dass ich wirklich sehr wütend werde, wenn ein Interviewer mich nur wegen eines Algorithmus herabwürdigt, bei dem er nicht annähernd meine Frontend-Fähigkeiten besitzt. Es fühlt sich an, als würde ein Kind versuchen, mich zu reizen.
Ihre Punkte gelten nur für solche Unternehmen oder Webentwicklungsagenturen, die solche Arbeiten nicht tatsächlich ausführen und Leute auf der Grundlage von Fähigkeiten einstellen wollen, die sich völlig von dem unterscheiden, woran sie tatsächlich arbeiten würden.
Oder vielleicht für Startups, die gerade ein Team aufbauen. Da die Gründer, VPs usw. solcher Unternehmen selbst ehemalige F&E- oder Forschungsleute sind, wollen sie sicherstellen, dass die Person, die ein Team leitet, intelligent ist.
In einem solchen Fall glauben sie einfach, dass Ihre Frontend/UI- und Backend-Fähigkeiten gut sind, und Sie müssen nur beweisen, dass Sie intelligent sind.
Ich persönlich kenne einen C++-Entwickler, der nichts mit JavaScript zu tun hat, der innerhalb einer Woche gezwungen war, neue Canvas-APIs zu lernen, eine HTML5-Bildtransformations-App erstellt hat, die jetzt bei Amazon verwendet wird, um Filter anzuwenden, Hintergründe zu entfernen usw., was Sie sehen können, wenn Sie ein Verkäufer bei Amazon sind und ein Produkt mit Bildern hochladen.
Der Typ hat alle Algorithmen in JS geschrieben, unter Verwendung der HTML5 Canvas APIs. Und so hat Amazon die Aviary-Bildersuite aufgegeben, da wir nun unsere eigene Single Page App hatten.
Hey, es tut mir wirklich leid zu hören, dass der andere C++-Typ die Arbeit gemacht hat, für die Sie bestimmt waren.
Immerhin ist er ein Back-End-Entwickler und hat in einer Woche wirklich gute Front-End-Arbeit geleistet. Er muss ein ziemlich talentierter Mensch sein, um eine andere Technologie als sein Fachgebiet zu beherrschen.
Es tut noch mehr weh, wenn man eine selbstverliebte Person ist, die ständig sagt: „Google fragt mich“, „Amazon fragt mich“.
Ich glaube, Frontend ist heute nicht mehr nur auf das Entwerfen von Mockups und deren Umwandlung in HTML beschränkt.
Der Browser ist jetzt in der Lage, schwere logische Aufgaben auszuführen, daher ist die Unterscheidung zwischen Frontend-Entwicklern und Frontend-Designern notwendig.
Lassen Sie den Entwickler das ganze logische Denken übernehmen, wie das Spielen mit Daten und so weiter, und lassen Sie den Designer sich auf CSS und HTML und das Aussehen einer App konzentrieren.
Daher glaube ich, dass dem Entwickler alle logischen Denkaufgaben gestellt werden sollten und dem Designer Fragen zu HTML, CSS, Photoshop usw.
Die Fragen sind wirklich wichtig dafür, auf welche Stelle sich eine Person bewirbt.
Schließlich möchte man keine Person, die ein Alleskönner, aber kein Meister in nichts ist.
Hallo,
Die von Ihnen genannten Fragen, die die Unternehmen nicht gestellt haben, sind Fragen zum Testen Ihres Wissens in einem bestimmten Bereich, und alle können durch eine einfache Google-Suche beantwortet und sehr schnell gelernt werden.
Die Fragen, die Ihnen die Unternehmen gestellt haben, dienen nicht dazu, Ihr Wissen zu testen, sondern Ihre Logik und wie Sie Probleme lösen, wenn Sie damit konfrontiert werden, und das kann man nicht lernen. Es ist ein langer Prozess, seinen Geist zu einem Ingenieursgeist zu formen.
Die zweiten sind weitaus wertvoller als die ersten, denn wenn Sie sie beantworten können, dann können Sie die ersten leicht und schnell lernen.
Mit freundlichen Grüßen,
Risto
Super Artikel. Ich lebe in einem anderen Teil der Welt als Sie, aber das, was Sie erwähnt haben, ist genau das, was auch hier passiert, was die gestellten Fragen betrifft. Man sollte meinen, es sei etwas dumm, einfach ein Vorstellungsgespräch ohne relevante Fragen zu führen, und oft werden weit bessere Frontend-Entwickler abgelehnt, um Leute einzustellen, die die Grundlagen des Programmierens beherrschen, aber kein gutes Wissen für die spezielle Position haben. Der Hauptgrund, so empfand ich jedoch, ist, dass die leitenden Personen im Unternehmen nicht viel Wissen über die Frontend-Entwicklung haben (grundsätzlich, da sie ziemlich neu und extrem umfangreich ist) und daher am Ende Fragen zu Grundlagen oder dem, was sie wissen, stellen.
Die Anzahl der Fragen, die sich auf 1 (CSS) summierten, bestätigt diese Ansicht tatsächlich. Ich hoffe wirklich sehr, dass dieser Blogartikel auch in einigen Technologieblogs veröffentlicht wird, wo es eine Unternehmensantwort geben sollte.
P.S.: Herzlichen Glückwunsch zur Jobannahme bei Google. Ich kann mir nur vorstellen, wie fantastisch es dort ist. Hoffentlich bewerbe ich mich in ein paar Jahren und bekomme einen Rückruf, wer weiß, vielleicht sind Sie es, der die technische Runde übernimmt... :). Alles Gute noch einmal, Philip. Toller Artikel und danke an Chris, dass er ihn hier geteilt hat.
Grüße
Roy
Schöner Artikel, danke fürs Schreiben!
Was das für mich so verrückt macht, sind diese hier
Ich würde bei allen vier dieser Dinge absolut versagen, wenn ich sie spontan in einem Interview tun müsste.
Im „echten Leben“ – ich könnte sie wahrscheinlich alle lösen, aber langsam. Ich würde Sachen googeln. Ich würde ein starkes Verständnis dafür entwickeln, warum ich es tue, was die Motivation liefern würde, es zu erledigen. Ich würde einen Weg aufschreiben, es zu tun, der einfach mein langsames Durchdenken wäre, dann würde ich es jemandem zeigen, der in solchen Dingen schlauer ist, und es ihm erklären und wie ich vorgegangen bin, damit er mir helfen kann, es besser zu machen, und ich dann verstehen kann, was er tut.
Macht mich das zu einem miserablen Informatiker? Vielleicht. Ich verstehe, dass diese Dinge für den Hardcore-Programmierer einfach sein sollten. Macht mich das zu einem miserablen Frontend-Entwickler? Das glaube ich nicht. Ich habe als Frontend-Entwickler an ziemlich vielen Websites gearbeitet und ich finde, ich bin ziemlich gut darin. Ich denke, ich wäre in fast jedem Frontend-Team da draußen ziemlich nützlich. Dennoch würde ich bei vielen Unternehmen, die speziell dafür einstellen, die erste Interviewrunde vielleicht nicht bestehen. Ich bin sicher, ich bin hier nicht allein, also wie viele gute Frontend-Leute werden von Jobs ausgeschlossen, in denen sie gut wären?
Chris, es geht nicht darum, ob du die Antwort auf eine schwierige Frage in einem Interview richtig oder falsch beantwortest. Es geht mehr um die Hartnäckigkeit, mit der man versucht, sie zu lösen.
Im Job finden Menschen Lösungen auf verschiedene Weisen. Manche durch Recherche, durch das Internet, durch Feedback von anderen oder einfach durch die Erfahrung, es zu wissen. Google ist heutzutage jedermanns Ressource.
In Vorstellungsgesprächen geht es darum, zu beobachten, wie der Interviewte im Angesicht von Widrigkeiten kämpft. Zu beobachten, wie er Herausforderungen meistert, selbst wenn er Anleitung benötigt. Und wenn Anleitung gegeben wird, ob er gelernt und etwas zur Lösung beigetragen hat.
Mich interessiert mehr, ob die Person aufgegeben hat… stellen Sie diejenigen ein, die hartnäckig sind, die dranbleiben, Fragen stellen. Stellen Sie einfache Fragen, damit sich der Kandidat wohlfühlt. Dann schwierigere Fragen, um die Leistung in einer herausfordernden Situation zu sehen. Es war mir egal, ob Sie die schwierigeren Fragen richtig oder falsch beantwortet haben. Es ging mir um den Einsatz, den der Kandidat gezeigt hat, um mir einen Eindruck zu hinterlassen, den ich mit den anderen Kandidaten vergleichen konnte.
Es geht nicht darum, alles zu wissen, es geht um den wahren Mut des Kandidaten, wenn er mit schwierigen Herausforderungen konfrontiert wird. In der Bay Area/Silicon Valley ist die Atmosphäre sehr unternehmerisch. Es ging schon immer darum, neue Ideen zu liefern, nicht alte.
Chris, ich stimme zu… Ich musste das Wort Palindrom nachschlagen….. Aber als ich sah, was es bedeutet, dachte ich, wie ich die Antwort finden könnte. (Mein Kopf ist voller Code, nicht ein Wörterbuch.) Ich denke, Unternehmen konzentrieren sich viel zu sehr auf die Terminologie und erwarten, dass man jeden Begriff aus dem Stegreif kennt. Das ist meiner Meinung nach nicht die Realität. Aber ich kann mich natürlich irren..
Chris: Wie oft hast du dich bei den Dingen, die du baust, mit Datenstrukturen, Algorithmen und der O-Notation beschäftigt? Wahrscheinlich nicht oft... weil du ein UX/UI-orientierter Entwickler bist (und ich auch).
Viele in Führungspositionen suchen eigentlich nach „Software-Ingenieuren“, die JavaScript als Sprache beherrschen – und das nennen sie „Front-End-Ingenieure“. NICHT diejenigen, die neue HTML-APIs, CSS/RWD usw. beherrschen und traditionelle Webanwendungen entwickeln.
Ich auch... aber die Realität hier ist, was Google oder ähnliche Unternehmen beim Einstellungs-/Interviewprozess für den Titel "Front-End-Ingenieur" und ihre Personalmanager eher Python-/Java-/Server-Side-Entwicklern mit CS-Hintergrund zugeneigt sind, die JavaScript im Laufe der Zeit gelernt haben – selbst wenn ein UX/UI-zentrierter Entwickler wie Sie und ich in dieser Position gut (und erfolgreich) wären.
So oder so, vielleicht bin ich mir einfach nicht sicher, wie wichtig die Rolle traditioneller CS-Datenstrukturen und -Algorithmen in der Frontend-Entwicklung ist – es scheint, dass dies das primäre Wissen ist, nach dem sie in den oben genannten Interviewfragen suchen (und das war auch meine Erfahrung im Gespräch mit diesen Unternehmen und deren Bedürfnissen). Vielleicht rechtfertigt dies eine größere Diskussion… *Nicholas Zakas rufen*!
Ich bin ein großer Fan von "Heimtests", besonders vor einem persönlichen Vorstellungsgespräch, bei denen man gebeten wird, etwas von einem Mockup/PSD und einer Art funktionaler Spezifikation zu codieren. Auf diese Weise werden viele der technischen Fähigkeiten aus dem Weg geräumt und beim persönlichen Treffen geht es mehr um Persönlichkeit, kulturelle Passung und das Beantworten von Fragen. Außerdem ermöglicht es dem Entwickler, auf ähnliche Weise zu glänzen, wie er im Unternehmen arbeiten würde, anstatt durch die Unmittelbarkeit der Situation (und ohne angemessene Ressourcen – niemand weiß alles) gestresst zu sein.
Der Haken daran ist, dass der Kandidat andere dringende Dinge zu tun haben kann, daher muss es Kommunikation geben, wenn es eine Verzögerung bei der Rückgabe der Programmierübung gibt. Je länger ich das mache, desto mehr frage ich mich, warum ich nicht nebenberuflich Recruiter bin, haha. :P
Chris & Phillip haben zu 100 % Recht. Es wird viel zu viel Wert auf akademische Intelligenz (Wiedergabe von Informationen basierend auf akademischem Lernen und Erfahrung) gelegt, anstatt auf das, was ich gesunden Menschenverstand nennen würde (Anwendung von Erfahrung und Einfallsreichtum).
Fast NIEMAND interviewt Leute für Letzteres, wie Phillip sagte, sie wollen, dass man lächerlich unpassende Logikrätsel löst oder Algorithmen erklärt, die mich Seppuku begehen lassen wollten.
Ich bin erst seit 3 Jahren Webentwickler – 2 Jahre freiberuflich, 1 Jahr Vollzeit. Letztes Jahr habe ich 3/4 Monate nach meinem ersten Vollzeitjob (in und um London) als „Frontend-Entwickler“ gesucht, und mehr als 75 % der Fragen, die mir gestellt wurden, waren völlig irrelevant für das, was ich tun würde! Das ist keine Übertreibung, ich habe mich auf viele Stellen beworben, ich kann mich nicht erinnern, wie viele, aber es war ärgerlich und hat meine Geduld extrem auf die Probe gestellt!
Erst als ich einen Job als Frontend-Entwickler bei einem Nicht-Tech-Unternehmen fand, hatte ich ein großartiges Vorstellungsgespräch, das wirklich meinen gesunden Menschenverstand, meine Erfahrung und mein Wissen auf die Probe stellte. Es war erst das zweite persönliche Vorstellungsgespräch, das ich hatte, und mir wurde der Job noch am selben Tag angeboten.
Es ist traurig zu hören, dass die Mehrheit der großen Unternehmen in SF/Kalifornien usw. gleich sind. Das ist eine Verschwendung von Potenzial. Ich würde lieber 100 Jungs/Mädchen einstellen, die klug sind, gesunden Menschenverstand und Erfahrung haben, als 1000 der klügsten akademischen hirnlosen Zombies, die sich jeden Tag der Woche allem unterwerfen, was ihnen gesagt wird.
Zuerst, großartiger Artikel vom OP!
@Chris, es ist großartig, dass du dich hier zu der Diskrepanz zwischen Front-End-Entwicklung / UI-UX-Design und Informatik geäußert hast. Ich habe kürzlich einen Online-Fähigkeitstest für UI-UX-Front-End-Entwicklung gemacht, und der allererste Test war die Palindrom-Herausforderung.
In meinen Jahren der Erfahrung musste ich mich nie, wirklich nie, mit Palindromen befassen. Ich habe zwar spontan eine Lösung gefunden und meine CS- und Logikkenntnisse bewiesen, aber darum geht es nicht. Für die Position, auf die ich mich beworben habe, werde ich Daten nicht auf diese Weise durchsuchen, um sie zu analysieren und zu vergleichen. Sie möchten etwas analysieren? Stellen Sie mir eine Frage dazu, wie ich einen Traffic-Funnel in Google Analytics analysieren würde, um herauszufinden, warum eine bestimmte Absprungrate anormal hoch ist.
Als weiteres Beispiel muss ich ständig das DOM manipulieren, und keine einzige Testfrage hat das auch nur annähernd berührt. Keine `append childs`, keine CSS-Manipulation mit jQuery, nada.
Kurz gesagt, ich werde mutig sein und bei Ihrer Frage „Wie viele gute Frontend-Leute werden von Jobs ausgeschlossen, in denen sie gut wären?“ die Hand heben und antworten: „Ich bin einer von ihnen“.
Vielen Dank an den OP für den großartigen Artikel, und danke an Chris für all Ihre Arbeit.
Kerry Kobashi – Zunächst einmal: Hartnäckigkeit ist nicht die Art und Weise, wie man versucht, ein Problem zu lösen. Hartnäckigkeit ist die Eigenschaft, die einen antreibt, etwas (in diesem Fall eine Lösung) weiterhin zu verfolgen, auch wenn niemand zusieht oder auf das Ergebnis wartet. Ich stimme zu, dass es in einem Interview nicht nur darum geht, die richtigen Antworten zu bekommen, aber ich glaube nicht, dass man Hartnäckigkeit testen kann, indem man jemandem 4 schwierige Probleme gibt, die er vor einem lösen soll. Wenn ich in einem Interview etwas nicht richtig verstanden hätte, würde ich trotzdem nach Hause gehen und versuchen, es zu lösen, auch wenn es nicht mehr zählt. Hartnäckigkeit ist eine Eigenschaft, die über einen längeren Zeitraum beobachtet wird, eine Zeit, die man in einem Interview nicht hat. Ist das Nicht-Aufgeben für eine halbe Stunde Hartnäckigkeit, oder ist es eine Stunde oder zwei? Bleibt der Interviewer 2 Stunden bei Ihnen, während Sie nicht aufgeben? Wenn ich bei der Arbeit mit ähnlichen Problemen konfrontiert wäre, würde ich nicht aufgeben, bis ich die Probleme gelöst habe (alleine oder mit etwas Hilfe), aber ein Interviewer könnte dies in einem Interview-Setting nicht an mir beobachten. Man kann jedoch beobachten, wie jemand in einem Interview über Dinge nachdenkt und argumentiert, aber das ist keine Hartnäckigkeit. Wenn Hartnäckigkeit also das ist, wonach Sie suchen, wird Ihnen ein einziges Interview meiner Meinung nach nicht die Informationen liefern, die Sie benötigen, um zu entscheiden, ob der Kandidat diese besitzt oder nicht.
Chris, glaubst du nicht, dass "Google-Sachen, starkes Verständnis sammeln usw.", die du für diese 4 Dinge tun würdest, auch von den Informatikern für HTML, CSS und JavaScript getan werden können.
Wie gesagt, mein Freund bei Amazon, der ein C++-Entwickler war, hat Dinge gegoogelt und in nur einer Woche einen HTML5-basierten Bildeditor erstellt.
Amazon war Kunde von Aviary. Jetzt nicht mehr, weil der Typ alle Algorithmen geschrieben und ein fantastisches Produkt gebaut hat, das die meisten Dinge erledigt, alle Canvas-Transformationen, Filter usw. Amazon verwendet das für Verkäufer, die Bilder für ihre Produkte hochladen.
Ich stimme zu, dass die App optisch nicht ansprechend ist, aber wenn Amazon jemanden einstellen will, um dieses Produkt zu einer optisch ansprechenden Single-Page-App zu machen, sei es ein Frontend-Entwickler, wird Amazon sicherstellen, dass der Kandidat diese Algorithmen verstehen und erweitern kann.
Dies ist für alle Produktunternehmen gerechtfertigt.
Ich stimme zu 100 % zu, dass Unternehmen, die Apps (anstatt Websites) entwickeln, einen viel größeren Bedarf daran haben, Leute mit einer starken Programmiergrundlage einzustellen.
Mein Punkt ist jedoch, dass keine Menge an Gehirnleistung die Frontend-Erfahrung ersetzen kann, insbesondere da so viel der Frontend-Technologie nicht nach den Regeln der Logik spielt (z. B. Browser-Inkompatibilitäten, inkonsistente Spezifikationen usw.).
Lassen Sie mich Ihnen ein Beispiel geben
Vor einigen Monaten, während meines Urlaubs, entdeckte die QA einen Fehler in unserer App nur auf iOS Safari. Der Fehler bestand darin, dass, wenn die seitliche Navigationsleiste ausgeklappt war, die Benutzer die Leiste schließen konnten, ohne sie tatsächlich zu schließen (d.h. ohne den intern gespeicherten Zustand zu ändern).
Jedenfalls begann einer der klügsten Köpfe in meinem Unternehmen, an diesem Fehler zu arbeiten. Soweit er feststellen konnte, lag das Problem darin, dass der Benutzer horizontal ziehen konnte, also beschloss er, das horizontale Ziehen zu deaktivieren, wenn die Schublade geöffnet war. Er war nicht sehr vertraut mit Touch-Events, also recherchierte er viel und schrieb etwa hundert Zeilen Code, um das Zieh-Ereignis (nur in horizontaler Richtung) zu erkennen und in diesem Fall das Standardverhalten zu verhindern.
Er checkte den Code ein, und es funktionierte. Es war etwas klobig, aber es war gut genug für die QA, um den Fehler zu beheben.
Dann kam ich aus dem Urlaub zurück, warf einen Blick auf den Bug und dachte: "Oh, ich wette,
overflow-x: hiddenfehlt am<body>". Und tatsächlich war die Lösung so einfach.Die Sache ist die, dieser Entwickler ist viel klüger als ich, und er ist ein besserer Programmierer, aber meine Lösung war die richtige, und der Grund dafür ist, dass ich die Frontend-Erfahrung hatte, um zu wissen, welche Technologie ich verwenden musste.
Ich bezweifle nicht, dass ein großartiger Entwickler großartige Anwendungen erstellen kann, aber (anekdotisch) haben wir nicht schon gesehen, wie großartige Entwickler ohne Bootstrap oder eine Art Frontend-Framework verloren waren und wirklich unflexiblen Frontend-Code erstellten, der über eine Reihe von Gerätegrößen hinweg nicht gut reagiert und bei der geringsten Änderung kaputtgeht?
Die Frontend-Entwicklung, wo sie sich mit UX und Informationsarchitektur überschneidet, ist ein ganz anderes Kaliber als dort, wo sie sich mit Programmlogik und Backend-Strukturen überschneidet. Ich denke, die Hauptaussage des Artikels und der meisten dieser Kommentare ist nicht "Diese Unternehmen wissen nicht, wie man einen Frontend-Entwickler interviewt", sondern "Diese Unternehmen stellen möglicherweise nicht den besten Frontend-Entwickler ein". Das heißt, wenn sie nicht die richtigen Fragen stellen (und wie ich bereits sagte, bleibe ich dabei, dass der Arbeitsablauf und der Prozess eines Frontend-Entwicklers weitaus wertvoller zu untersuchen sind als sein gespeichertes Wissen).
Chris, mir ist gerade aufgefallen, dass dieses Forum wirklich einen „Gefällt mir“-Button oder so etwas wie das Bewertungssystem von Stack Overflow gebrauchen könnte.
+1
Faszinierender Artikel. Hat jemand schon bei SF-Firmen wie dieser für 'Front End Development' Interviews gehabt? Wo passen Front-End-Entwickler, die vom Design kommen, hin? Oder lehnen die Googles Kandidaten ohne Informatik-Abschluss ab?
Ich hatte ein Vorstellungsgespräch bei Microsoft und wurde gebeten, ein Array von Bytes in einem Durchgang in Echtzeit zu sortieren. Es war für eine Frontend-Position. Im Nachhinein wurde mir klar, dass es eine Hash-Map oder Ähnliches erforderte. Ich programmierte in JavaScript in der Online-Umgebung, die wir für das Interview teilten.
Viele Stellen, die ich online bei meiner Jobsuche sehe, wünschen 4+ Jahre Erfahrung in Java oder C# mit HTML/CSS/JavaScript-Kenntnissen als Pluspunkt!
Nach drei Jahrzehnten in diesem Spiel habe ich festgestellt, dass es wie in der Musik ist. Es ist nicht das, was sie von 9 bis 17 Uhr tun, es ist das, was sie tun, um abzuschalten.
Stellen Sie also den Musiker oder Toningenieur ein, der nach dem Schreiben von Werbe-Jingles in einer Band spielt. Oder stellen Sie die Jungs ein, die von 9 bis 17 Uhr Musik machen und nach Hause gehen, um etwas anderes zu tun.
Dasselbe mit Code – Stellen Sie den Code-Cutter ein, der es von 9 bis 17 Uhr macht, oder stellen Sie den Typen ein, der Code schneiden wird, egal ob Sie ihn einstellen oder nicht, egal ob er einen Job hat oder nicht, weil – nun ja, einfach so.
Man kann Code lernen, aber man kann keine Leidenschaft lernen – und die Leidenschaftlichen werden den Code immer besser lernen.
Einige der besten Frontend-Jungs/-Mädels, die ich kenne, beenden den Tag nach der Arbeit, es sei denn, sie arbeiten zu Hause an freiberuflichen Projekten. Meiner Meinung nach wird Leidenschaft nicht durch die Arbeitszeiten definiert, sondern eher durch das Gefühl, das man bei der Arbeit hat.
Seltsam, diese Fragen für eine spezifische Frontend-Rolle zu stellen.
Ein Teil der Herausforderung ist, dass die Rolle eines Frontend-Entwicklers oder, genauer gesagt, jeder Webentwickler-Rolle eine weitreichende Definition hat.
Früher bedeutete Frontend-Entwicklung HTML/CSS-Skinning und das Wissen um Browser-Rendering-Regeln. Jetzt liegt der Schwerpunkt mehr auf JS und dem Bau von Single Page Apps, wo Wissen in typischen Programmier-/Logikproblemen relevanter ist.
Nein, die "gute alte Zeit" war, als Design, HTML und CSS bedeuteten: Webdesigner, und PHP, Java, ASP, Python, Perl, JavaScript [fügen Sie hier andere Programmiersprachen ein] bedeuteten: Webentwickler.
Einfach.
@Philip, ich stimme zu. Ich habe lustigere Fälle gesehen, in denen Entwickler lange Codezeilen zur Lösung eines einfachen Problems vorgelegt haben, das mit einer einzigen JavaScript-Zeile, manchmal nur durch Neuanordnung der HTML-Elemente, hätte gelöst werden können.
Es stellt sich daher heraus, dass Erfahrung in der Frontend-Arbeit nicht durch Intelligenz und zeitgemäße harte Arbeit kompensiert werden kann.
Aber Erfahrung kann auch die grundlegende Intelligenz nicht ersetzen. Die perfekte Mischung wäre daher ein Entwickler, der intelligent ist und seine harte Arbeit und sein Interesse an Web & Frontend aufrechterhalten hat. Und ich glaube, die meisten guten FE-Entwickler fallen in diese Kategorie.
Wenn mich jemand nach einem Binärbaum oder dem Finden des mittleren Elements in einer verketteten Liste in JAVA für eine Frontend-Position fragt, sollte ich ihm definitiv Kaffee ins Gesicht spritzen. Aber wenn mich jemand bittet, eine Excel-ähnliche Anwendung im Browser zu erstellen, finde ich das interessant.
Auch einige knifflige Rätsel reizen mich.
Und die meisten guten Unternehmen wissen das. Ich habe FE-Interviews bei Atlassian und VMware geführt und war überrascht zu sehen, dass sie mich als Anti-JAVA identifizierten und sehr spezifisch nach meinen FE-Fähigkeiten fragten, obwohl das Produkt komplett in JAVA war.
Sie bohrten förmlich nach prototypischer Vererbung, AJAX, CSS-Positionierung, Layout usw. Außerdem ließen sie mich eine JS-Memoize-Funktion, eine Unique-Funktion, Call- &-Apply-Tricks und so weiter schreiben.
Eine der Fragen war die
requestAnimationFrame– das Übergeben eines JS-Callbacks, wenn der CSS-Übergang endete, was mich überraschte.Das Leid der Unternehmen, denen es an guten FE-Entwicklern mangelt, ist ebenfalls wahr.
Ich bin im Kern ein Frontend-Entwickler. Und ich würde niemals für ein Unternehmen arbeiten, das "Frontend-Entwickler mit Java-Hintergrund" sagt, obwohl mein Hintergrund Java war. Denn ich weiß, dass solche Unternehmen keine Möglichkeit haben, die Intelligenz eines FED zu erkennen oder seine Erfahrung zu würdigen, außer durch Java-Fragen oder lahme FE-Fragen.
Manchmal habe ich buchstäblich im Interview gelacht über dumme Frontend-Fragen von Java-Jungs, die behaupteten, gute FEDs zu sein. Ich bekam das Feedback "Kandidat ist zu aggressiv" :). Meistens habe ich versucht, ihnen zu beweisen, wie erbärmlich ihr Wissen auf der Client-Seite ist.
Einer der Jungs dachte, dass
.ajax()eine native JavaScript-Funktion ist.Nach einer langen Debatte sagte ich ihm schließlich – Herr, Sie müssen zurückgehen und sowohl jQuery als auch normales JavaScript überprüfen. Er nahm es schwer und beschwerte sich über mich!!
Wow! Du bist sooooo intelligent…. Lol ;)
Gute
Dies war ein großartiger Artikel mit einigen Einblicken, wie Unternehmen großartige Entwickler aussieben. Ich habe einmal ein Vorstellungsgespräch für eine Stelle in einem Unternehmen geführt, das SQL-Code schrieb und hauptsächlich grundlegende Datenbankentwicklung betrieb. Bei meinem Vorstellungsgespräch wurden mir Fragen zu meiner Militärzeit gestellt, wo ich gedient hatte, wie lange ich gedient hatte, wer mein Lieblingsschauspieler war usw. usw. Die einzige Frage, die mir auch nur annähernd technisch gestellt wurde, war, was Abschrägung bedeutet… Ich hatte damals nicht bemerkt, dass ich meinen kreativen Lebenslauf anstatt meines Entwickler-Lebenslaufs geschickt hatte. Ich war völlig überrascht, weil ich die Antwort wusste, aber mein Kopf war auf andere Teile des Interviews konzentriert, so dass ich nicht über 3D-Entwicklung oder Grafikdesign nachdachte… Es war mir peinlich, weil ich keine klare Beschreibung geben konnte… Obwohl ich das Tool Hunderte Male benutzt habe und Ihnen die Hotkeys dafür nennen kann… Interviewer haben eine Art, Sie aus dem Gleichgewicht zu bringen, um zu sehen, wie Sie unter Druck reagieren… Lektion gelernt. Für mich.
JA JA JA.. Dieser Artikel ist genau das, was ich durchgemacht habe, wörtlich.
Die Leute fragen, warum es so schwer ist, Jobs zu bekommen, die ich mache. DAS ist der Grund. Wir haben all dieses großartige Talent und großartige Unternehmen, aber es gibt eine Diskrepanz. Deshalb bin ich so viele Jahre unabhängig gewesen. Dies beweist also, dass es nicht darauf ankommt, WAS du weißt, sondern WEN du kennst. Danke fürs Schreiben. Ich hätte es selbst nicht besser sagen können.
Sehr aufschlussreicher Bericht. Irgendwie beängstigend – ich hätte gedacht, dass man, wenn man bei einem Unternehmen wie den von Ihnen beschriebenen interviewt wird, spezifischere Fragen gestellt bekäme. Ich schätze, sie gehen einfach davon aus, dass, wenn man die logischen / problemlösenden Fähigkeiten besitzt, sie einem den Rest beibringen können.
Danke für den Beitrag, Philip!
Ich verstehe das Argument der Hartnäckigkeit, aber das Problem ist, dass Hartnäckigkeit in der realen Welt nicht an dem gemessen wird, was man in einer Stunde tut, sondern oft an unbezahlten Wochenenden.
Toller Artikel. Klingt nach einer weiteren „Fusion“ von Technologiepositionen. Ich sehe das immer häufiger bei Agenturen, die Zeitarbeitskräfte und Zeitarbeitskräfte mit Übernahmeoption einstellen, wo sie nach einem Frontend-Webentwickler suchen, der sich gut mit ASP.net C#/VB, Java, JS, jQuery, PowerShell usw. auskennt. Und es ist eine Einstiegsposition, aber sie wollen 3-5 Jahre Erfahrung.
Was?!?
Und ich verstehe die ganze Sache mit Hartnäckigkeit und schnellem Denken, aber es gibt Frontend-Entwickler, die keine Informatik-/Mathematikabsolventen sind, die Frontend denken, schlafen und essen, die denselben Antrieb und Wunsch haben, die den ganzen Tag, jeden Tag, umwerfende Sachen erstellen. Wie der Typ, der diese Seite betreibt, Paul Irish, Nick Gallagher usw.
Einfach großartiger Artikel. Natürlich können einfache Fragen das wahre Talent zum Vorschein bringen.
Normalerweise führe ich die Frontend-Interviews in meiner Firma und ich folge Ihrer Logik – wenn Sie einen Frontend-Ingenieur wollen – stellen Sie Frontend-Fragen. Je nach der Position, für die die Person interviewt wird, habe ich eine Wiki-Seite mit allen möglichen Fragen – grundlegend, fortgeschritten und auf Senior-Level. Ich beginne mit den einfachen, nur um den Kandidaten zu "sondieren" und gehe dann weiter. Meistens brauche ich meine Liste nicht wirklich und stelle Fragen je nach den Antworten des potenziellen Kollegen. Meine Lieblingsfrage ist: "Wenn Sie eine Regel in der CSS-Welt ändern könnten, welche wäre das?" :)
height:100%aber gut, das kann jetzt mit Flexbox erreicht werden :)Ein Problem ist, dass die Stanford-Mafia die Leute sind, die Dinge wie JQuery erfinden, also neigen sie dazu, Fragen zu stellen, um einzuschätzen, ob man in der Lage ist, KQuery oder wie auch immer das Marketingteam es später nennen will, zu erfinden. Hey, jemand muss dieses Zeug erfinden, sonst würden wir alle in rohem Maschinencode programmieren.
Es ist etwas dran, Leute einzustellen, die genau die richtigen Fähigkeiten für den Job haben. Ein Frontend-Entwickler, der HTML, CSS und Javascript in- und auswendig kennt, kann ein Schatz sein, aber viele High-Tech-Unternehmen wollen Leute, die Alleskönner und vielleicht Meister in ein oder zwei Bereichen sind. Wenn es um Computersprachen geht, sind, wie Kipling es ausdrückte, „die Colonel's Lady und Judy O'Grady unter ihrer Haut Schwestern“. Die Aufgabe ist es, Leute zu finden, die das erkennen und von diesem Standpunkt aus arbeiten können, auch wenn sie für die Details etwas Google-Fu anwenden müssen.
Als ich Programmierer war, hatten wir alle möglichen Informatikprobleme. Ich kann mich nicht erinnern, wie oft wir auf Performance-Probleme stießen und es etwas Graphentheorie oder cleveres Umdenken brauchte, um die Dinge auf O(n log n) zu reduzieren. Vielleicht stoßen Frontend-Entwickler nie auf Ressourcenprobleme, aber ich vermute, dass jemand, der sich bewusst ist, was vor sich geht, doppelt so viel wert ist wie jemand, der es nicht ist. Selbst als pensionierter Hobbyist stoße ich ständig auf CS-Probleme. Heutzutage werden Dutzende von Sprachen verwendet, und das Verständnis der Beziehung zwischen Closures und Objekten und Ähnlichem erleichtert es erheblich, von einer zur anderen zu springen oder eine neue in einer angemessenen Zeit zu lernen.
JQuery wurde von John Resig, einem Alumni des Rochester Institute of Technology, erstellt. Er ist nicht von Stanford. Und die Informatik-Abteilung des RIT Colleges hat auch kein US News Ranking.
Schöne Diskussion trotzdem…..:)
Um auf mehrere Kommentare oben in nur einer Antwort einzugehen…
Ich stimme @Michael Whyte zu, einige Lösungen für die Logikfragen in Javascript wären großartig!
Hier ist meine Auffassung von „Gegeben ist ein Array von Ganzzahlen (positiv oder negativ), finden Sie das Unterarray mit der größten Summe.“
@Henri Helvetica Ich würde auch gerne hören, was Philip über Darcy Clarkes Front End Interview Questions denkt
Zuletzt, ich unterstütze @mmcgu1966, dieses Kommentarforum könnte wirklich ein Daumen-hoch-/Bewertungssystem gebrauchen. Das Tippen dieses speziellen Kommentars/Antworten wäre nicht notwendig gewesen.
Fehler oben… Ich wünschte, ich könnte bearbeiten
Das war eine wirklich gute Lektüre. Ich muss sagen, dass ich ziemlich überrascht bin, dass große "Big Boy"-Unternehmen irrelevante Fragen wie die im Artikel erwähnten stellen würden. Wie andere bereits erwähnt haben, scheint es ein großes Missverständnis darüber zu geben, was "Front-End"-Engineering beinhaltet. Wenn jemand ein Bubble-Sort-Algorithmus-Problem erfolgreich löst, bedeutet das nicht, dass er als guter Front-End-Ingenieur qualifiziert wäre. Es wäre besser, wenn der Arbeitgeber den Front-End-Interviewpartner fragt, wie er typischerweise Probleme zwischen Browsern löst, ihn nach seinen Build-Workflows (wie GruntJS) fragt oder ihn über die von ihm verwendeten Frameworks/Bibliotheken sprechen lässt und ihn fragt, warum sie nützlich sind.
Und ja, ein weiterer Frontend-Ingenieur sollte während des Interviews Fragen stellen.
Umgekehrt haben einige große Unternehmen, darunter auch solche in der Bay Area, einen Alleskönner gesucht oder verstehen einfach den Umfang nicht, der mit dem Titel impliziert wird.
Was ist mit "Middleware" passiert? Mann, heutzutage schreibe ich meine eigenen Webservices und kämpfe darum, MVC zu rechtfertigen, damit ich nicht alles mit JS und HTML machen muss, selbst in großen Unternehmen. Ich mache heutzutage VIEL ZU VIEL Java.
Das ist genau das, was ich gerade fühle.
Ich bin kürzlich in meinem Unternehmen von der Kreativabteilung – Grafikdesigner – zum Ingenieur – Frontend-Entwickler gewechselt. Ich habe den Wechsel gemacht, weil ich von einem der Führungskräfte gefragt wurde, ob ich an einer Frontend-Entwicklerposition interessiert wäre, weil sie nicht extern einstellen wollten. Ich dachte, es würde meiner Karriere zugutekommen, neben anderen Frontend-Entwicklern zu sein. Ich hoffte, ich könnte JavaScript lernen. Ich weiß, dass ich mit HTML, CSS und grundlegendem jQuery gut umgehen kann. Also nutzte ich die Chance, wechselte mit großen Hoffnungen, dass ich ein großartiger Frontend-Entwickler werden würde. Doch ich fühle mich in der Abteilung unter meinen Kollegen völlig verloren. In meiner ersten Woche sagte einer der oberen Manager der Ingenieurabteilung, dass ich C#, ASP.NET lernen sollte, weil wir hier nicht genug HTML- und CSS-Arbeit hätten. Nach ein paar Wochen fühle ich mich immer noch sehr unproduktiv. Ich kenne keine der Begriffe, die sie verwenden. Ich habe keinen CS-Abschluss wie alle hier in der Ingenieurabteilung, ich habe das Web von Freunden und Blogs wie diesem gelernt. Ich denke darüber nach, in die Kreativabteilung zurückzukehren. Was meint ihr?
Basierend auf Ihrer Darstellung ist es klar, dass Sie in die Irre geführt wurden.
Ein Frontend-Entwickler hat nichts (nicht unbedingt zumindest) mit C#, ASP.NET oder anderen Backend-Programmiersprachen zu tun. Sie wollen, dass Sie ein Backend-Entwickler werden, aber sie haben die ganze Sache als Front End Dev getarnt.
Die Person, die Ihnen gesagt hat, dass es dort nicht genug HTML- und CSS-Arbeit gibt, liegt daran, dass sie sicherlich keinen blassen Schimmer hat (Entschuldigung für mein Spanisch), was los ist. Ich wette, diese Person weiß von vornherein nicht viel über HTML und CSS. Halten Sie sich einfach von solchen Leuten fern, sie sind Ihre Mühe nicht wert.
Nun, wenn Sie sagen "zurückkehren" in die Kreativabteilung, sehe ich das persönlich nicht als "zurückkehren". Ich sehe es als "Fokussierung" Ihrer Energien auf das, was die Kreativabteilung tut und wie Sie mehr Wert hinzufügen können... und vielleicht lassen Sie andere den Wert schätzen, den Sie einbringen, da, nun ja, die "Engineering"-Abteilung es nicht getan hat.
Die Frage für Sie hier ist: Glauben Sie nach dieser Erfahrung immer noch, dass es sich lohnt, dort zu bleiben, da Sie bereits wissen, dass es keine Chance gibt, sich im Frontend-Bereich weiterzuentwickeln?
Viele Unternehmen bevorzugen es, Leute direkt von der Schule einzustellen, aus mehreren Gründen
1) Sie wollen sie in ihre Unternehmenskultur/Best Practices einführen
2) Sie sind kostengünstiger einzustellen – nicht nur wegen des Gehalts, sondern auch wegen anderer Kosten wie der Krankenversicherung.
3) Sie wollen, dass die Arbeit im Mittelpunkt Ihres Lebens steht.
Wenn Sie 40 sind und 2 Kinder haben, haben Sie viel eher andere Prioritäten und auch die Sichtweise, dass die Welt nicht untergehen wird, wenn etwas nicht SOFORT erledigt wird!
Ich habe 20 Jahre im Silicon Valley gearbeitet. Ich habe in großen Unternehmen und Start-ups gearbeitet. Ich habe einen EE-Abschluss – das Web gab es noch nicht, als ich zur Schule ging – daher musste ich nie Algorithmen entwickeln. Aber ich war Informationsarchitekt/UI-Designer/Frontend-Entwickler/Anforderungsanalyst/Projektmanager/QA-Ingenieur.
Ich war immer in der Lage herauszufinden, was zu tun war, wie es zu tun war und aus meinen Fehlern zu lernen. Ich habe eine großartige Arbeitsmoral – und ich bin ein verdammt guter Frontend-Entwickler.
Aber WENN mein Lebenslauf die Software, die Nicht-Informatik-Abschlüsse herausfiltert, passiert hätte und WENN ich es schaffen würde, die Tatsache zu verbergen, dass ich nicht unter 30 bin, würde ich die erste Interviewrunde nicht bestehen, wenn sie mich bitten würden, eine Funktion zu schreiben, um zwei sortierte Listen zu einer zusammenzuführen. Ich musste das vielleicht in CS101 mit Fortran machen, aber seitdem nicht mehr.
Aber das Leben IST zu kurz. Ich würde sowieso lieber nicht mit einem Haufen arroganter Stanford-Absolventen arbeiten müssen. :^)
Einer der interessantesten Artikel/Kommentarthreads, die ich seit geraumer Zeit mit Vergnügen gelesen habe. Ein großes Lob an alle oben Genannten :)
Guter Artikel. Habe einige interessante Gedanken aus der Personalabteilung gefunden, die hier von Interesse sein könnten: Interview mit Laszlo Bock bei Google
Nicht speziell Frontend-bezogen, aber trotzdem.
Sehr aufschlussreich :)
Ich könnte dem nicht mehr zustimmen
„Gute Frontend-Ingenieure sind in der Regel sehr eigeninitiativ. Da Browser-Technologien normalerweise nicht in Schulen gelehrt werden, haben die meisten Frontend-Ingenieure diese Dinge selbst gelernt.“
Prost!
Ich stimme Philips zu. Warum werden DS und Algorithmen in Frontend-Interviewfragen gestellt? Selbst ich wurde von Bay Area-Unternehmen interviewt und mit DS- und Algorithmusfragen konfrontiert. Sobald das Interview vorbei ist, frage ich sie: „Wo im Frontend verwenden Sie DS oder Algorithmen in Ihrer Firma?“ oder „Haben Sie es als Entwickler zu Entwickler irgendwo in der Frontend-Entwicklung verwendet?“, nach ihrer Antwort lautet meine folgende Frage: „Warum stellen Sie dann Fragen zu Algorithmen?“. Darauf ist die häufigste Antwort: „Sie sind ein Master-Student, das sollten Sie wissen?“. Das einzige Unternehmen, das sich nicht die Mühe gemacht hat, mich nach DS und Algorithmen zu fragen, ist LinkedIn. Der gesamte Interviewprozess konzentrierte sich auf HTML5, JavaScript und CSS3. Meistens reichten ihre Fragen von Schleifenoptimierung, Datenattributen, Event-Listenern, kurz gesagt, Optimierung und dem Herunterladen von Websites im Browser. Der Interviewprozess hat meine Perspektive auf LinkedIn wirklich verändert und ich habe begonnen, mehr Respekt vor ihnen zu haben als vor Amazon, als vor Google. Jetzt kann ich verstehen, warum Amazon in seiner UI so schlecht ist. CSS3 und HTML5 haben sich im kommenden Jahr so stark entwickelt, dass man tatsächlich knifflige Fragen dazu stellen kann. Das kann auch die Ladezeit verkürzen.
Dazu habe ich auf StackOverflow geantwortet: http://stackoverflow.com/questions/22022112/complexity-of-a-jquery-expression
Hier ist es, Zeile für Zeile
("#nav a")– das Finden passender Elemente ist im Allgemeinen eineO(N)-Aufgabe. Stellen Sie sich vor, dass#navdem Body-Element zugewiesen ist und alles, was Sie in Ihrem Dokument haben,<a>-Tags sind. Sie müssen alle gegen den Selektor "a" scannen..addClass("link")– das ist eineO(n)-Aufgabe, nur um die Liste zu durchlaufen. Aber es hat versteckte Kosten – indem Sie die Klasse eines Elements ändern, bitten Sie den Browser, den Stil des Elements und aller seiner Nachfahren neu zu berechnen. Im schlimmsten Fall sind also alle DOM-Elemente betroffen. Wenn man bedenkt, dass die Kosten der Stilneuberechnung eineO(N*S)-Aufgabe sind (N– Anzahl der DOM-Elemente,S– Anzahl der Stilregeln in allen Stylesheets), dann ist der GesamtpreisO(N*S)..attr("data-initialized", true)– das hat im Prinzip den gleichen Preis wie oben..on("click", doSomething)– das ist eineO(n)-Aufgabe (n – Anzahl der Elemente im Set) + es hat die Kosten für die Zuweisung von Speicher für Event-Bindungsstrukturen. Jedes Element im Set erhält eine neue Bindung und somit zusätzlich zugewiesenen Speicher.Die Gesamtanwort ist also
O(N*S)für die Rechenkomplexität undM(N)für den Speicherverbrauch.UAs führen normalerweise einige Optimierungen durch, aber der durch die CSS-Selektorstruktur vorgegebene Worst Case ist so.
Zwei Daten addieren? Hmm. Was bedeutet es überhaupt, zwei Daten zu addieren (11. Januar + 4. Juli)? Ich kann nachvollziehen, warum man ein Datum von einem anderen subtrahieren oder x Tage zu einem Datum addieren würde, aber zu welchem Zweck würde man zwei Daten addieren?! Was übersehe ich?
Und dann ein "einfaches" Kalender-Widget dazu bauen, wozu, zur Summe zweier Daten? Hä? Ich versuche immer noch herauszufinden, was die Summe zweier Daten darstellt, jetzt muss ich ein Kalender-"Widget" dazu schreiben?
Auch der Begriff "Widget" ist so überladen. Meinen Sie ein generisches Widget, ein jQuery UI Widget, ein WordPress Widget oder etwas anderes? Ich müsste je nachdem, was Sie mit "Widget" meinen, eine API kennen. Und gibt es in einem Vorstellungsgespräch wirklich Zeit, ein Kalender-"Widget" von Grund auf neu zu schreiben (wenn man ohnehin schon nervös ist), jetzt müssen Sie die Mathematik machen, um Schaltjahre (Jahre, die durch 4, aber nicht durch 400 teilbar sind) und die Sommerzeit (unter Berücksichtigung von Orten, an denen es keine Sommerzeit gibt, z. B.) usw. zu ermitteln, plus das Styling der Tabelle, in der die Kalenderdaten platziert werden sollen?
Ich stimme zu, dass Interviewfragen auf die Stellenposition zugeschnitten sein sollten, aber ich stimme nicht unbedingt zu, dass Ihre Ersatzfragen (mindestens 2 davon) nützlicher sind. Die oben genannte macht für mich keinen Sinn. Und die jQuery-Komplexitätsfrage – für mich wäre es jedenfalls einfacher, über die Komplexität (Big O) eines Merge-Sorts zu sprechen als über Ihren jQuery-Ausdruck. Zumindest ist ein Merge-Sort ein bekannter Algorithmus. Wie viele Leute wissen, welcher Algorithmus verwendet wurde, um einen jQuery-Ausdruck zu evaluieren? Sie müssten in den jQuery-Quellcode eintauchen und die möglichen "Schritte" zählen, die es dauern würde, einen bestimmten Ausdruck zu evaluieren, wenn das Markup unendlich groß wird, dies in einer Gleichung darstellen und dann Big O auf diese Gleichung anwenden. Oder vielleicht verstehe ich die Frage einfach nicht.
Weiß jemand, wo ich Frontend-Entwickler für eine unbefristete Vollzeitstelle in Ontario, Kanada, finden kann?
Das stimmt so. Ich denke, Interviewer sind eher darauf bedacht, ihr eigenes Wissen (auch wenn sie es nicht haben) vor dem Kandidaten hervorzuheben, anstatt sich über das Wissen des Kandidaten zu informieren.
Wow… froh zu sehen, dass ich nicht der Einzige bin, der die verwirrenden Tech-Interviews für Front-End-Entwicklerpositionen erlebt. Auch ich komme aus dem Design und bin seit über 14 Jahren dabei. Ich weiß, was ich weiß, und bin fasziniert von neuen Technologien. Ich habe es schwierig gefunden, eine Gruppe zu finden, in der ich nicht der einzige Front-End-Entwickler bin, entweder mit einem Hinterzimmer voller Java-Ingenieure oder einem Büro voller mittelmäßiger Manager und ich, der im Ausschuss entwickelt… Puh. Am meisten stelle ich fest, dass ich niemanden kenne, der in Begriffen spricht, die in diesen Interviews zur Sprache kommen. Ich sage dem Interviewer einfach, dass ich so nicht ticke und diejenigen, die es tun… mit denen würde ich sowieso nicht abhängen. Dennoch ist die Herausforderung real und drängt mich, mehr zu lernen und mich an die sich ändernden Anforderungen anzupassen. Ich habe das Gefühl, dass ich es zu meinen eigenen Bedingungen tun muss, die von den pompösen Stolzen vielleicht immer noch nicht verstanden werden. Abschließend möchte ich einen der Großen zitieren
„Ich hasse es, Drogen, Alkohol, Gewalt oder Wahnsinn jemandem zu empfehlen, aber bei mir haben sie immer funktioniert.“