Wie kann ich Softwareentwicklungsjobs herausfiltern, bei denen ich gebeten werde, im Vorstellungsgespräch Algorithmen zu schreiben?

In meiner täglichen Arbeit trete ich selten als „Programmierer“ auf. Ich leite ein Team von Ingenieuren und betrachte mich als Ingenieur. Ich entwickle Funktionen, behebe Fehler, arbeite an APIs, DBs usw., aber ich muss selten Algorithmen schreiben ... und wenn ich das tue ... Ich google einfach nach dem besten Weg, etwas zu tun, und das hat für mich funktioniert das letzte Jahrzehnt.

Ich habe viel Zeit damit verschwendet, von Leuten interviewt zu werden, die wollten, dass ich Fragen im LeetCode- Stil löse, und ich habe einfach keine Lust, mich darauf einzulassen. Ich bin ein leitender Ingenieur mit einem guten Lebenslauf und einer guten Bezahlung, und ich möchte diese Art von Position während meiner gesamten Karriere beibehalten.

Wie sage ich Unternehmen, dass ich nicht daran interessiert bin, mit Algorithmen herumzuspielen, um sie zu interviewen?

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .

Antworten (13)

Erstens könnten Sie Ihre Terminologie falsch haben. Wie ich sehe, beschreiben die verwendeten Wörter "Programmierer" häufiger eine Position, in der einfacher Code gemäß vorhandenen Spezifikationen und APIs geschrieben wird, wo "Softwareingenieur" ein Job ist, der komplexe Algorithmen, Entwurfsmuster, Architektur und Systemdesign beinhaltet. Vielleicht möchten Sie nach Programmierjobs statt nach Softwareentwicklungsjobs suchen.

Ich bin ein leitender Ingenieur mit einem guten Lebenslauf und einer guten Bezahlung und möchte diese Art von Position während meiner gesamten Karriere beibehalten.

Ich denke, das ist die Ausnahme, und die meisten Unternehmen erwarten von einem leitenden Softwareentwickler, dass er in der Lage ist, einfache Variationen eines Diagrammproblems oder einer Listensuche zu lösen. Wenn Sie ein leitender Ingenieur werden möchten, sollten Sie sich meiner Meinung nach an die Idee des Lernens von Algorithmen gewöhnen. Nicht, dass von Ihnen erwartet wird, jeden Tag komplexe Algorithmen zu schreiben, aber wenn Sie den Unterschied zwischen einer O(N^2)-Lösung und einer O(N)-Lösung nicht sehen können, werden Sie ein Problem nicht erkennen können, wenn Sie es tun darüber stolpern, z. B. wenn Sie als leitender Ingenieur den Code von jüngeren Entwicklern überprüfen.

Wenn Sie sich also für eine Stelle als "Lead Software Engineer" bewerben, sind die Chancen hoch, dass Sie Ihre Zeit verschwenden. Haben Sie darüber nachgedacht, nach mehr Führungspositionen zu suchen, wie zum Beispiel Infrastrukturmanager oder Engineering Manager?

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .
Ich denke, das ist wirklich länderspezifisch. In den meisten europäischen Ländern ist es den meisten Unternehmen egal. Sie sind vielleicht in der Lage, erstaunlich effiziente Algorithmen zu schreiben, aber wenn Ihr Code scheiße aussieht und nicht wartbar ist, sollten Sie trotzdem nicht eingestellt werden. Viele Unternehmen geben Ihnen stattdessen einen Codierungsauftrag. Ein echtes Problem, das Sie in wenigen Tagen lösen müssen. Keine Notwendigkeit, es super effizient zu machen. Aber es muss wartbar sein und es muss richtig funktionieren
Ich kann ein bisschen aus persönlicher Erfahrung sprechen, dass die Google-Interviews zwar algorithmenlastig sind, aber basierend auf der Position angepasst werden sollen, und der Schwerpunkt mehr darauf liegt, einen guten Ansatz zu finden, als dass Sie dazu in der Lage sind löse es auf eine bestimmte richtige Art und Weise. Ja, manche Interviewer verstehen das natürlich nicht richtig.
Ich bin Software-Ingenieur und jetzt Software-Architekt. Ich habe für die größten Banken meines Landes gearbeitet, für mehrere Regierungsstellen, für Logistik-/Transportunternehmen – und ich musste in meiner gesamten Karriere nie einen einzigen „Algorithmus“ schreiben.
In den meisten Jobs, zumindest in meinen letzten 10 Jahren als SW-Ingenieur in Finnland, waren so ziemlich keine Algorithmen beteiligt. AWS-Implementierungen, Frontend/UI, Rest-APIs, Datenbankabfragen und Modellaktualisierungen und -migrationen, Integrationen, Protokolluntersuchung, Bereitstellung, Jenkins-Konfiguration, Einheiten- und Integrationstests usw. Eine Fülle von e2e-Softwarearbeiten, aber es gab nie die Notwendigkeit, Algorithmen zu erstellen Entwurf oder Implementierung eines Algorithmus von Grund auf neu.

Konzertpianisten können immer noch Tonleitern spielen. Algorithmen sind keine seltsame Sache, die nur Akademiker verwenden. Sie sind minimale, gekapselte Entwurfsmuster, die in fast allen Bereichen ziemlich oft verwendet werden. Ja, kein Kunde wird zu Ihnen kommen und sagen: „Bitte implementieren Sie eine binäre Suche in Ihrer nächsten Softwareversion“, aber er wird sagen: „Diese Seite ist viel zu langsam“, und eine binäre Suche wird zufällig der beste Weg sein etwas reparieren.

Wenn Sie ein „Das ist zu langsam“-Problem bekommen und Sie nicht wissen, dass Sie eine binäre Suche benötigen, und in der Lage sind, genau zu kommunizieren, was Sie brauchen, wird es einfach an jemand anderen im Unternehmen weitergegeben Wer kann. Als einer der Leute, denen die Bugs „Dieses andere Team kann keine Algorithmen machen“ zugewiesen werden, kann ich Ihnen sagen, wie ärgerlich es ist, mit Leuten zu arbeiten, die glauben, dass dies nicht zu ihrem Job gehört.

Ich denke, das ist die richtige Antwort. Früher HASSE ich Algorithmus-Interviews, aus dem gleichen Grund wie OP. Aber dann hatte ich einen Job, den ich WIRKLICH wollte, der eine sehr umfangreiche Algorithmusphase des Interviewprozesses hatte, also habe ich mich hingelegt und Probleme vom Typ „Leetcode“ studiert, und weißt du was? Es hat mich zu einem viel besseren Entwickler gemacht. Das Nachdenken über das Big-O eines Codestücks ist jetzt nur noch eine zweite Natur, und während Sie selten die gleichen Probleme in der realen Welt lösen werden (nur wenige Entwickler müssen jemals tatsächlich eine BST sortieren), werden die Tricks, die Sie aufgreifen, es sein anwendbar auf alle möglichen Probleme der realen Welt.
Dies ist eigentlich keine gute Antwort, da sie nicht versucht, die eigentliche Frage zu beantworten. wie man Interviews vermeidet, die Fragen im Einstiegsstil enthalten. Als Teamleiter geht es viel mehr um Menschen als um Algorithmen. Aus diesem Grund wird der Teamleiter an vielen Stellen von einem technischen Leiter flankiert.
Es gibt einen großen Unterschied zwischen dem Wissen über Komplexitätsklassen mit Erfahrung darüber, was wo verwendet werden soll, und dem Codieren von Quicksort von Hand. Ein guter leitender Ingenieur muss wissen, dass für dieses spezifische Problem eine binäre Suche die optimale Lösung ist. Aber ein guter leitender Ingenieur muss den Algorithmus nicht selbst implementieren. Grundsätzlich haben alle modernen Sprachen die Datenstrukturen und Algorithmen für solche Dinge, und diese wurden lange Zeit von vielen Experten entwickelt, getestet und verfeinert, die sich genau darauf konzentrieren . Fragen Sie in crypto.se nach Homebrew-Verschlüsselung und sehen Sie, wie sie reagieren
Was sind „Waagen“? [Dies bittet nicht so sehr um Klärung, sondern weist darauf hin, dass Ihre Metapher/Ihr Vergleich möglicherweise nicht ganz so allgemein verstanden wird, wie Sie denken.]
@Val, ein leitender Ingenieur muss jedoch möglicherweise entscheiden, dass die Bibliothek es für ihr Problem einfach nicht schneidet und dass es ein wenig geändert werden muss. Sie müssen kompetent genug sein, um das zu erkennen, und entweder selbst tun oder jemanden anleiten, um es richtig zu ändern . Sie müssen dies nicht ohne Recherche tun können, aber sie müssen es bei Bedarf mit einem angemessenen Aufwand an Recherche tun können.
@FrankHopkins: Das stimmt, aber eine Interviewfrage wie „Hier ist ein leeres Blatt Papier (oder eine leere Datei), implementieren Sie jetzt Quicksort in fünf Minuten, ohne externe Referenzen zu verwenden“, wird solche Kandidaten scheitern und Kandidaten auswählen, die gut darin waren ihre Hausaufgaben machen und sich Dinge perfekt merken können, auch wenn sie es nicht vollständig verstehen, aber nicht wirklich gut darin sind, gute Lösungen für Probleme im wirklichen Leben zu finden.
@Val ja, das könnte der Fall sein. Andererseits hatte ich noch nie eine solche Interviewfrage und würde sie nicht im allgemeinen Fall von Fragen zählen, auf die sich OP bezieht (ungefähr rezitieren, wie ein oder zwei beliebte Sortieralgorithmen im Allgemeinen funktionieren, und es erklären, hatte und würde ich im normalen Baseballstadion berücksichtigen ; aber dann wissen wir wieder, was wir anwenden sollen und warum - und keine einzelne Frage würde einen Kandidaten in einem guten Testaufbau sowieso durchfallen lassen). Vielleicht, wenn sie versuchen würden, "schlechte" algorithmische Fragen zu vermeiden ... ;)
@BernhardBarker Eigentlich habe ich als völlig unmusikalische Person eine gute Vorstellung davon, was Tonleitern sind. Darüber hinaus ist es jedoch schon aus dem Kontext ziemlich offensichtlich, dass es etwas ziemlich Einfaches ist, das man auf einem Klavier macht.
Ich liebe diese Antwort, aber ich denke, sie wirft die Frage auf: Wie werden Konzertpianisten interviewt?
Dies beantwortet die Frage nicht. Schlimmer noch, es verbreitet den Mythos, dass Whiteboard-Tests gut dazu geeignet sind, Software-Engineering-Fähigkeiten zu messen.
Algorithmen zu kennen und sich genau zu merken, wie man sie implementiert, sind zwei verschiedene Dinge. Nehmen Sie Vals Kommentar zu Quicksort. Sie sollten die Vor- und Nachteile kennen, aber es ist etwas, das heutzutage nur wenige Programmierer jemals implementieren müssen.

Wie sage ich Unternehmen, dass ich nicht daran interessiert bin, mit Algorithmen herumzuspielen, um sie zu interviewen?

Indem man auf eine Einladung zu solchen Tests mit „nein danke“ antwortet. Sie können versuchen, einen alternativen Prozess für das „Nein“ vorzuschlagen, aber das ist ein Ave Maria.

Wenn Sie gut sind, werden Sie irgendwann ein Unternehmen finden, das mit Ihrer Weltanschauung übereinstimmt. Wenn nicht, müssen Sie möglicherweise Kompromisse eingehen und die Algorithmusschreibtests durchführen oder mit Arbeitslosigkeit rechnen.

Dies ist wahrscheinlich die beste Antwort. Niemand kann Sie zwingen, etwas gegen Ihren Willen zu tun, also lehnen Sie einfach ab. Natürlich sind die Konsequenzen offensichtlich, aber wenn jemand so fest entschlossen ist, vielleicht 30 Minuten bis eine Stunde seiner Zeit damit zu verbringen, die Kernkompetenzen des Jobs zu demonstrieren, ist das wahrscheinlich das beste Ergebnis für alle Beteiligten.
Es ist immer noch Zeitverschwendung, zu einem Vorstellungsgespräch zu gehen, nein zu sagen und x% der Zeit rausgeschmissen zu werden.
@usr1234567 wie ist es? Es kann eine Reihe von Gründen geben, warum jemand ablehnt oder keine Stelle angeboten bekommt. „Ich werde nicht über Algorithmen sprechen. Ich muss einen Fensterplatz haben. Wenn ich nicht mindestens drei Monitore habe, bin ich raus. Ich erwarte jährliche Beförderungen.“ usw. usw. Wirst du ihnen eine Einkaufsliste geben, bevor du überhaupt zustimmst, sie zu treffen? Bei einem Vorstellungsgespräch geht es buchstäblich darum, herauszufinden, ob das Unternehmen Sie einstellen möchte und ob Sie für es arbeiten möchten. Herauszufinden, dass Sie es nicht tun (selbst aus einem dummen Grund wie dem OP), ist das, wofür das Interview buchstäblich da ist .
In der Frage werden Tests (in Ihrer eigenen Zeit) nicht ausdrücklich erwähnt. Würden Sie auch vorschlagen, „nein danke“ zu sagen, wenn Sie in einem Live-Interview danach gefragt werden? Wenn nein, was würden Sie vorschlagen?
@BernhardBarker ist eigentlich sehr spezifisch in Bezug auf leetcode.com . Aber ob live oder nicht, wenn Sie nicht glauben, dass dieser Test etwas ist, was Sie tun möchten, haben Sie das Recht, nein zu sagen und zu gehen. Es spielt keine Rolle, ob es offline oder online ist, sparen Sie so viel Zeit wie möglich.
@TymoteuszPaul Ob man sich weigert, eine Interviewfrage zu beantworten oder sich weigert, einen Test zu absolvieren, macht einen Unterschied in Bezug darauf, wie viel Zeit man wohl verschwendet hätte, wie unhöflich man angesehen würde und wie wahrscheinlich es ist, dass man Brücken abbricht. Nicht, dass ich empfehle, eine Frage zu beantworten, gegen die man sich stark wehrt, sondern ich möchte nur auf die Risiken hinweisen, die in diesem Fall auftreten, wenn man sich weigert, dies zu tun.
@BernhardBarker Ich dachte, mir wäre ziemlich klar, dass solches Hardlining zu Arbeitslosigkeit führen kann. Ob ich jetzt zustimme oder nicht, ich habe meine eigene Meinung, aber OP hat nicht gefragt, ob das Sinn macht oder nicht, sondern nur, wie er das erreichen kann, was er tun möchte.
@TymoteuszPaul Es schien, als wollten Sie einfach sagen, dass es möglicherweise nicht so viele Unternehmen gibt, die solche Fragen nicht stellen oder bereit sind, stattdessen etwas anderes zu fragen, was immer noch zu einer Einstellung führen kann, anstatt etwas über den Eindruck zu sagen, den Sie haben würden verlassen werden, indem Sie sich weigern zu antworten. Die ganze Sache, nicht eingestellt zu werden, sagt nicht viel darüber aus, was sie von Ihnen denken, vor allem wenn man bedenkt, dass die Antwort „Nein, danke“ darauf hindeuten könnte, dass Sie sich weigern, ihren Bewerbungsprozess fortzusetzen (im Wesentlichen zu sagen, dass Sie den Job nicht wollen). als dass sie dich ablehnen .
Vermisse ich die Wichtigkeit, wer wen ablehnt? Sie enden immer noch ohne Job und möglicherweise ohne Job überhaupt.

Lehnen Sie sie einfach ab, wenn sie präsentiert werden

Ob Unternehmen dies nutzen oder nicht, wäre aus der Anwendung schwer konsistent zu bestimmen. In meiner jetzigen Organisation wurden mir keine algorithmischen Fragen gestellt. Wir stellen den Interviewpartnern derzeit algorithmische Fragen, weil der Ingenieur, der die Interviews leitet, gewechselt hat.

Bei anderen Unternehmen, für die ich Vorstellungsgespräche geführt habe, müssen sie ein Vorstellungsgespräch im LeetCode-Stil führen, es sei denn, Sie werden empfohlen. Ich bin als Empfehlung direkt in die Endrunde gesprungen.

Bei einer weiteren Regierungsorganisation, die ich interviewt habe, haben sie LeetCode als eine von mehreren Optionen, die Sie als Kompetenznachweis verwenden können. Im Rahmen des Einstellungsverfahrens wurde dies nicht erwähnt, und es schien ungewöhnlich, dass die Regierung dies überhaupt tat.

Das kann man nicht wirklich vorhersagen.

Wenn Sie dieses Zeug wirklich vermeiden wollen, pflegen Sie Beziehungen zu den Personalvermittlern, die unweigerlich auf Ihrem LinkedIn landen. Ich habe festgestellt, dass sie dir verdammt viel darüber sagen können, wie die Dinge laufen werden.

Holen Sie sich einen Executive Recruiter und konzentrieren Sie sich auf Management-Jobs. Sagen Sie dem Personalvermittler, wonach Sie suchen.

Executive-Search-Beratungsfirmen werden in der Regel für leitende Positionen und Vorstandsmitglieder eingesetzt. Zuweisungen sind im Allgemeinen für Positionen vorgesehen, bei denen der beste Kandidat schwerer zu finden und schwerer zu überzeugen ist, einen Schritt zu tun, und wo die potenziellen Auswirkungen von Erfolg oder Misserfolg am größten sind. Kontingent-Recruiter werden am häufigsten für Positionen auf mittlerer Ebene oder Positionen mit einer großen Anzahl qualifizierter Kandidaten eingesetzt. Drei Dinge, die Kandidaten über Executive Recruiter wissen sollten, Forbes

Gehen Sie nicht davon aus, dass ein engagierter Personalberater Sie an mehrere Arbeitgeber vermarkten wird, um Ihnen das beste Angebot zu unterbreiten... Kein Kandidat, der einem Kundenunternehmen vorgestellt wurde, sollte an einen anderen Kunden verwiesen werden, bis der ursprüngliche Kunde den Kandidaten ausgeschlossen hat. Da Notfall-Recruiter nicht angestellt werden, vermarkten sie Kandidaten gleichzeitig an mehrere Arbeitgeber. Sie tun dies, um die Chancen auf eine Platzierung und Bezahlung zu maximieren. Sie vermarkten jedoch nur sogenannte MPCs – Most Placeable Candidates – und konzentrieren sich auf Rollen auf niedrigeren Ebenen. So lernen Sie einen Retained Executive Recruiter kennen

Es ist nicht einfach, einen Executive Recruiter zu bekommen, aber es könnte etwas sein, das Sie irgendwann anstreben möchten.

Richten Sie Ihre Karriere auf das Management aus.

Beim Lesen der Frage hatte ich den Eindruck, dass Sie kein großes Interesse an Softwareentwicklung haben (wobei Algorithmen einen wesentlichen Teil ausmachen), aber Berufsbezeichnung, Gehalt und Lebenslauf sind Ihnen wichtig. Zum Glück für Sie ist die Softwarebranche voll von Managementjobs, die vom technischen Hintergrund profitieren, aber keine eigentliche Programmierung beinhalten, wie z Rollen, und Sie konkurrieren nicht mit Personen, die ein tatsächliches Interesse an ihrem Beruf haben, das über das obligatorische hinausgeht. Ein weiterer Vorteil besteht darin, dass in Unternehmen, die keine ernsthafte Forschung und Entwicklung haben, Ingenieurkarrieren sehr begrenzt sind und das Management mehr Optionen bietet.

Beim Software Engineering geht es hauptsächlich um Komplexität, nicht um Algorithmen.
Okay, Wortlaut aktualisiert.
Jetzt, wo ich darüber nachdenke, ist Management nur eine Ebene höher im Spiel: Anstatt sich mit Komplexität zu befassen, geht es darum, andere zu organisieren, um mit Komplexität umzugehen. Aber ich bin mir nicht sicher, ob die Frage darauf abzielt.
@ojs Aber ich denke, es ist eine gute Antwort. Als Ingenieur habe ich kein Problem damit, wenn Manager nicht technisch sind. Die Fähigkeiten, die sie brauchen, um alle in die richtige Richtung zu lenken und zu versuchen, Meilensteine ​​​​zu erreichen, mit genau der richtigen Menge an Polsterung bei Schätzungen, aber nicht zu viel, sind definitiv nicht meine Fähigkeiten. Aber wenn ich jemanden treffe, der behauptet, ein „leitender Ingenieur“ in einem Softwareteam zu sein, der sagt: „Ich mache keine Algorithmen“, mache ich mir Sorgen. Als Ingenieur sind sie nicht kompetent, und sie schwelgen in ihrer Ignoranz, aber sie sind irgendwie in einer Position, in der sie für die technische Qualität verantwortlich sein sollten. Nö.
@PeterMortensen, es gibt beide Teile, und einige Jobs lehnen sich mehr in die eine und andere mehr in die andere Richtung, ein gut ausgebildeter Softwareentwickler kann mit beiden umgehen. Wenn Sie eine Seite komplett ausschließen möchten, müssen Sie gezielt nach passenden Jobs suchen. Manchmal funktioniert das über die Stellenbeschreibung, aber manche Unternehmen wollen einfach Ingenieure, die ein algorithmisches Problem erkennen, wenn sie darauf stoßen, und auch mit komplexen Abhängigkeiten und dergleichen umgehen können.
Solide Ratschläge, das Aufpeitschen von Binärbäumen und Glue-Code in Python oder das Fummeln der C++-Disassemblierung an einem regnerischen Wochenende sind in bestimmten Lebensphasen so ziemlich Sackgassen, Management ist nur der natürliche Fortschritt jeder Tech-Karriere.
Tatsächlich ist es eine Sackgasse, Zeit damit zu verbringen, "Binärbäume und Glue-Code in Python aufzupeitschen". Die Idee ist, dass ein fähiger Ingenieur in der Lage sein sollte, diese Dinge bei Bedarf mühelos zu erledigen und schwierigere Dinge zu erledigen, wenn er Zeit hat. Bei Vorstellungsgesprächen fehlt dem Gesprächspartner meist die Zeit.

Unter http://they.whiteboarded.me/ finden Sie eine Liste der Unternehmen mit Whiteboard-Interviews.

Das ist eine interessante Ressource (und vermutlich nützlich für diejenigen, die sich an solchen Dingen stören, obwohl die Chancen, ohne viele weitere Einreichungen dort eine bestimmte Firma zu finden, gering sind). Ich bin mir jedoch nicht sicher, ob es zu 100% für die Frage des OP geeignet ist, da sie nicht erwähnen, dass es sich um Whiteboarding handelt, gegen das sie als solches Einwände erheben. Aber sicherlich verwandt.
Ihre Liste der Whiteboarding-Unternehmen umfasst eine ganze Reihe guter Unternehmen. Vielleicht sollten die Kandidaten einfach zugeben, dass die Dinge so sind, und damit spielen.
@QuoraFeans ja, diese Liste gefällt mir, aber entgegen der Intention des Autors werte ich es als positives Signal, dass ein Unternehmen überhaupt Whiteboard-Tests durchführt . Sie können immer noch falsch gemacht werden, aber ich für meinen Teil finde sie hilfreich in Interviews, weil sie mir als Interviewpartner auch etwas über die Interviewer erzählen.

Wenn Sie ein Unternehmen finden, mit dem Sie ein Vorstellungsgespräch führen möchten, können Sie zu Glassdoor gehen und nach dem Unternehmen suchen. Auf der Unternehmensseite können Sie von Benutzern eingereichte Bewertungen, Gehälter und Interviewfragen sehen. Hier ist ein Beispiel für Google-Interviewfragen .

Wenn viele Interviewfragen von Benutzern für das Unternehmen eingereicht wurden, können Sie sich eine gute Vorstellung davon machen, welche Art von Fragen gestellt werden, einschließlich der Arten von Codierungsproblemen, die gelöst werden müssen. Wenn es sich um ein kleineres Unternehmen mit wenigen Benutzereingaben handelt, hilft Ihnen dies natürlich möglicherweise nicht weiter.

Ich stimme Helenas Antwort größtenteils zu und würde davon ausgehen, dass die meisten anständigen Unternehmen ein gewisses Maß an Erfahrung mit Algorithmen von Leuten erwarten, die eine führende Rolle in der Softwareentwicklung einnehmen möchten. Es kann jedoch einige Ausnahmen geben, bei denen das Projekt hauptsächlich die Behandlung der wesentlichen Details des Komponenten- und Abhängigkeitsmanagements erfordert, die Rolle in Richtung Management tendiert, das Geschäft auf sehr leichte Anwendungen ohne algorithmische Komplexität oder das Unternehmen ausgerichtet ist nicht "anständig" in dem Sinne, dass sie ihre Terminologie so falsch verstanden haben wie Ihre aktuelle ^^. Zumindest Ihrer Beschreibung nach scheinen Sie eher ein Teamleiter zu sein, der sich auch auf das Entwerfen von APIs und algorithmisch geradliniger Software konzentriert (nichts Schlimmes daran, die Auswahl der richtigen Technologie ist auch ein interessanter Teil des Jobs, nur nicht alles, was ich von einem leitenden Softwareentwickler erwarten würde). Für mich scheinen Sie also ein teamleitender Entwickler zu sein. Vielleicht sind Sie auch besonders gut darin, Frameworks auszuwählen oder APIs zu entwerfen, dann könnten Sie sich darauf konzentrieren.

Ein paar Dinge, auf die ich in Stellenbeschreibungen achten würde, um einen passenden Job zu finden und die Chance zu erhöhen, nicht mit (zu vielen) algorithmischen Fragen konfrontiert zu werden, wären diese:

  • ein Fokus auf Bibliotheken, Frameworks und Technologie-Buzzwords
  • eine Erwähnung der Teamleitungsverantwortung (Personalmanagement).
  • ein Fokus auf API-Design
  • ein Fokus auf leichtgewichtige Webanwendungen
  • Schwerpunkt Technologie/Infrastrukturarchitektur
  • eine Startup-, Selbstlernkultur*

Also im Prinzip für Jobs, die sich entweder „nach oben“ zum Design der äußeren Hülle von Anwendungen neigen und wie sie zusammenarbeiten, ohne die algorithmische Komplexität zu betrachten, oder für Jobs, die sich „seitwärts“ neigen, z. B. in die Geschäftsdomäne oder in Team oder Infrastruktur Management. Manchmal kann es Rollen geben, hauptsächlich für das Entwerfen von APIs oder „Spitzenreiter“, die mit Leuten diskutieren, die die Geschäftsdomäne kennen, wie eine Software auf Geschäfts- und API-Ebene funktionieren soll, die Details werden dann von Softwareingenieuren entworfen.

* Warum eine Startup-/Selbstlernkultur? Denn – Klischee, ja, aber ich habe es oft genug gesehen – diese wissen oft nicht genau, was sie tun (technisch), sie stellen oft ein, wen sie bekommen können und der Dinge schnell implementieren kann, ohne sich um die algorithmische Leistung zu kümmern. Manchmal scheitern sie nach einer Weile, manchmal sind sie erfolgreich und müssen dann möglicherweise das Chaos aufräumen, sobald sie exponentiell wachsen und ihre kleinen, algorithmisch naiven Lösungen nicht mehr skalieren, aber sie können immer noch jahrelang gute Arbeit leisten. Manchmal ist das überhaupt kein Problem, weil ihr Zielmarkt keine algorithmische Leistung braucht, sondern nur jemanden, der ein Programm mit einer netten Benutzeroberfläche für diesen Nischenbereich schreibt, um den sich noch niemand gekümmert hat.

Bewerben Sie sich nur auf Senior- , Principal- oder Lead -Positionen und geben Sie in Ihrem Lebenslauf an, wonach Sie suchen und so oft es wahr ist, drücken Sie Ihre Erfahrung im Lebenslauf und im Anschreiben und in der E-Mail-Korrespondenz als solche aus.

Zumindest in meinem Nacken des Waldes, Junior zu "No Prefix", bekommen diese Fragen. Senioren und darüber nicht.

Wie sage ich Unternehmen, dass ich nicht daran interessiert bin, mit Algorithmen herumzuspielen, um sie zu interviewen?

Eine Alternative ist ein eigenes Open-Source -Software-Portfolio auf Plattformen wie github oder gitlab (oder auf Ihrem gemieteten VPS). Beteiligen Sie sich an bestehenden Open-Source-Projekten (wie GCC oder FLTK oder RefPerSys oder Frama-C oder zsh oder Tausenden anderen). Sobald Sie so berühmt sind wie Linus Torvalds oder Guido Von Rossum oder Xavier Leroy , werden Sie gut bezahlt und haben Jobmöglichkeiten. Beachten Sie, dass die meisten Entwickler von GCC oder des Linux-Kernelsfür ihre Arbeit bezahlt werden (siehe dazu LWN , und vielleicht dort schreiben...). Sobald Sie eine Programmiersprache entworfen und implementiert haben, die nur wenige Benutzer hat (das ist wirklich schwierig , wie Simon Peyton-Jones erklärt), könnten Sie interessante Jobmöglichkeiten haben.

Eine andere Alternative ist zumindest ein öffentlicher Blog, in dem Sie einige Architekturansichten von Software erläutern , die Sie entwickelt (oder technisch geleitet) haben. Holen Sie dafür unbedingt vorher eine Genehmigung ein.

Eine dritte Möglichkeit ist ein Highscore auf Plattformen wie StackOverflow . Seien Sie dort über den oberen 1%.

Eine vierte Alternative besteht darin, ein technisches Buch zu Ihrem herausragenden Thema geschrieben und veröffentlicht zu haben (oder zumindest öffentliche Berichtsentwürfe wie diesen ).

Eine fünfte Alternative besteht darin, zu promovieren und/oder wissenschaftliche Arbeiten – mit Peer-Review – in zB ACM- Konferenzen zu veröffentlichen . Damit verbunden ist es, (Teilzeit) bezahlt zu werden, um etwas über Softwareentwicklung und -programmierung zu unterrichten und Praktikanten zu leiten und zu betreuen.

Eine andere Alternative sind freiwillige (und unbezahlte) Vorträge über Programmierung und Softwareentwicklung (wie diesen, den ich auf Französisch gehalten habe). Es können sogar Videos auf youtube über Programmierung und Softwareentwicklung sein (wenn sie einmal tausendfach angesehen wurden , zB dieses hier ).

Beachten Sie das Prinzip von Peter . Lesen Sie The Mythical Man-Month oder noch besser, schreiben Sie ein besseres Buch.

basile@starynkevitch.netFühlen Sie sich frei, mich per E-Mail an (zu Hause, in der Nähe von Paris in Frankreich) oder basile.starynkevitch@cea.fr(Arbeit, bei CEA, LIST ) zu kontaktieren.

+1, perfekter Rat für jemanden, dessen Ansatz war: "Ich google einfach, wie ich etwas am besten mache, und das hat für mich in den letzten zehn Jahren funktioniert."

Ich bin fast immer über einen Personalvermittler gegangen, und ein Personalvermittler weiß, wie die Vorstellungsgespräche ablaufen. Erstens wissen sie es aus Erfahrung, zweitens fragen sie den Personalchef und drittens besprechen sie alle anderen Interviewpartner, die sie geschickt haben. (Ich habe Personalvermittler buchstäblich versucht, mir die Testfragen zu geben, die sie gehört haben von Kandidaten, die sie zuvor eingeschickt haben.)

Sagen Sie dem Personalvermittler also einfach, dass er sich nicht die Mühe machen soll, Sie für solche Vorstellungsgespräche vorzuschlagen, wenn Sie sie wirklich nicht machen wollen.

Eine Alternative könnte ein sehr ausgefeilter Lebenslauf sein. Eine, die zeigt, wie gut du bist.

Wenn möglich, geben Sie ihnen auch genügend Code, damit sie eine Vorstellung davon haben, wie Sie Code schreiben, Fehler beheben, an APIs oder mit Datenbanken arbeiten (z. B.: ein persönliches Github-Repository, das nichts mit dem aktuellen Unternehmen zu tun hat ).

Und wenn Ihnen eine Frage im LeetCode-Stil präsentiert wird, stellen Sie sich ihr einfach als Teil der Korrektur eines Fehlers, den Sie gefunden haben und der behoben werden muss. Dies kann ihnen zeigen, dass Sie die Grundlagen kennen.

Bitte beachten Sie : Es ist nicht schlecht, Google zu verwenden, um einige Dinge aufzufrischen, die Sie vergessen haben! (Es sei denn, Ihr Code ist 100 % StackOverflow Copy-Paste-Glue.)
Ein Beispiel: Ich hatte ein Interview, in dem ich vergessen habe, wie man sich mit einer Datenbank in PHP verbindet (mein Herz raste und ich schlief an diesem Tag schlecht).
Ich habe nur ein paar Beispiele aufgefrischt und mein eigenes Ding geschrieben, ohne Copy-Paste .
Das Ziel war es, eine Datenbank + ein PHP-Skript zu schreiben, um die für ein Restaurant erforderlichen Informationen basierend auf einem schriftlichen Beschreibungstext zu speichern und abzurufen.


Aber wenn Sie wirklich nicht daran interessiert sind, diese "falschen" Probleme zu lösen, können Sie versuchen , eine alternative Methode auszuhandeln, mit der sie Ihre Fähigkeiten bewerten, und sehen, wie es läuft.

Denken Sie nur daran, dass dies der Person, die Sie interviewt, einen nicht optimalen Überblick über Ihre Programmierkenntnisse geben kann (ich hätte sicherlich meine Zweifel an Ihren Programmierkenntnissen).