Wie kann man herausfinden, ob ein Unternehmen Best Practices in der Entwicklung befolgt? [Duplikat]

Ich bin seit einiger Zeit bei Stack Overflow und Code Review und bewundere Leute, die dort helfen und erstaunliche Code-Reviews liefern. Ich selbst habe auch einiges an Erfahrung. Leider ist es fast unmöglich, solche Menschen im wirklichen Leben zu treffen und mit ihnen zu arbeiten.

Jedes einzelne Unternehmen, für das ich gearbeitet habe (bisher ca. 8-12, auch als Auftragnehmer) war so unprofessionell, dass ich mich frage, wie es überhaupt noch funktioniert. Die Leute dort hatten keine Ahnung von den grundlegendsten Konzepten. Überall Zauberketten, Namensräume namens Klassen, Klassen mit mehreren Verantwortlichkeiten, alles, was man falsch machen kann, haben sie auf diese Weise geschafft.

Was noch schlimmer ist, sie strebten nicht danach, sich zu verbessern. Sie brauchten enorm viel Zeit, um einfachste Änderungen zu implementieren, weil ihr Code so schlecht war.

Ich habe mich entschieden, einen neuen Job zu finden, bei dem ich mit echten Profis zusammenarbeiten kann, also habe ich dieses neue Konto erstellt, um diese Frage zu stellen (weil ich das andere für Lebensläufe verwende).

Die Frage ist: Wie findet man heraus, ob die Mitarbeiter eines Unternehmens gut sind in dem, was sie tun?

Würden Sie sagen, dass es eine gute Idee ist, um ein Beispiel ihres Codes zu bitten? Wenn sie überprüfen wollen, was ich kann, würde ich auch gerne sehen, ob sie meine Zeit wert sind. Ich möchte nicht fast meine gesamte Arbeitszeit damit verschwenden, alten Code zu debuggen, in dem jede Variable ein tmp1, str1, lst3 bis tmp23 ist.

Ich möchte nicht nur ein Programmierer, sondern ein Ingenieur sein und Software erstellen, die aufgrund ihres Designs robust und erweiterbar ist und nicht wegen des Versuchs, überall zu fangen und Hunderte von Wenns, um einige dumme Fehler oder einige Hundert Zeilen Code in einem zu beheben Ereignishandler.

Ich habe linkedin und xing ausprobiert, aber beide Konten geschlossen, nachdem ich bemerkte, dass die meisten Leute nur gefälschte Bestätigungen über ihre Fähigkeiten haben.

Was soll ich tun, um nicht nur interviewt zu werden, sondern auch das potenzielle Unternehmen zu interviewen? Habt ihr damit Erfahrungen und könnt mir Tipps geben?

Soll ich um eine Probearbeit bitten?

Soll ich meine eigenen Fragen zum Vorstellungsgespräch mitbringen?

Sehr verwandte Frage - vielleicht sogar ein Duplikat? arbeitsplatz.stackexchange.com/q/4259/2322
"Soll ich meine eigenen Fragen zum Vorstellungsgespräch mitbringen?" - Ja, unabhängig von der Position.
Schauen Sie sich die Job-Ressource von Stack Overflow an: careers.stackoverflow.com/jobs
Fragen Sie unbedingt nach Codebeispielen. Dies wäre eine gute Möglichkeit, die Qualität ihrer Arbeit zu beurteilen und Ihnen vielleicht sogar eine Vorstellung von ihrem Grad an Professionalität zu geben.
@ DavidK - Auch wenn die Frage nicht ganz dieselbe ist; Die Antwort dort ist definitiv das, wonach das OP sucht.
Ja, es gibt Unternehmen mit professionellen Kodexpraktiken. Sie sind wählerisch und neigen dazu, Mitarbeiter zu halten. Soweit professionell - Ihre Frage ist mehr Geschwätz als Frage.
Fragen Sie nach ihrem Joel-Testergebnis www.joelonsoftware.com/articles/fog0000000043.html
„Best Practices“ ist selbst ein eigensinniger Begriff. Wenn jemand andere beschuldigt, unprofessionell zu sein, gibt es normalerweise Schuld auf beiden Seiten. Diese Frage ist eher eine Beschwerde als eine Bitte um Hilfe bei der Navigation.
@eckes Ich habe einmal versucht, ein Vorstellungsgespräch mit einem Unternehmen zu führen, das auf Careers.SE als Erfüllung aller Joel-Metriken aufgeführt ist. Das Interview hat nie stattgefunden, weil ihr E-Mail-Dienst, der mir das Codeproblem senden sollte, fehlgeschlagen ist und sich niemand die Mühe gemacht hat, es zu überprüfen oder 4 Stunden lang auf meine E-Mails zu antworten. Ein guter Joel-Score ist in Ordnung, aber er sagt nicht alles aus, was Sie über ein Unternehmen wissen möchten.

Antworten (8)

Es geht nicht darum, das Thema im Vorstellungsgespräch anzusprechen oder um Probearbeit zu bitten, sondern schon vorher: Sie müssen Ihre Hausaufgaben machen, bevor Sie sich für eine bestimmte Stelle/ein bestimmtes Unternehmen bewerben und verstehen, ob es das bietet, wonach Sie suchen.

Sie haben angegeben, dass Sie ein Auftragnehmer sind. Es ist wahrscheinlich, dass Sie eingestellt wurden, um Probleme zu beheben und/oder Lösungen für Nicht-IT-Unternehmen zu entwickeln (Unternehmen, deren Kerngeschäft etwas ist, das nichts mit IT zu tun hat).

Mir ist klar, wenn man sich zB bei einem Handelsunternehmen bewirbt, findet man bestenfalls eine interne IT-Abteilung mit begrenztem Wissen über seine Fähigkeiten. Sie werden einige Mitarbeiter beschäftigen, um die grundlegende Wartung der Systeme, die sie haben, durchzuführen, und für größere Projekte werden sie es wahrscheinlich auslagern.

An Ihrer Stelle würde ich mich entweder bei einem IT-Beratungsunternehmen (Beratungsunternehmen werden mehr von Ihnen verlangen, aber Sie werden in der Regel mit sehr qualifizierten Fachleuten arbeiten und an die Grenzen gehen) oder bei einem Softwarehaus mit einer relativ großen Marktpräsenz bewerben. Ganz zu schweigen von großen Technologieunternehmen wie Google oder Microsoft, für die ich noch nie gearbeitet habe, deren Mitarbeiter aber wahrscheinlich zu den besten gehören, die es gibt.

Viel Glück

Erstens viel Glück, sie dazu zu bringen, einem Kandidaten Produktionscode zu geben.

Ich habe einen Vorschlag, der Ihnen gefallen könnte oder auch nicht. Vielleicht sollten Sie versuchen, sich für ein Start-up zu bewerben. Wenn das Unternehmen keine bestehenden Produkte hat und Sie Teil eines sehr kleinen Teams sind, können Sie die Codierungspraktiken gestalten und hoffentlich mit dem Unternehmen wachsen, dh Einfluss auf seine Einstellungsentscheidungen nehmen.

Wie @User012876768 vorschlägt, besteht die Alternative darin, sich bei den Marquee-IT-Unternehmen zu bewerben, da diese oft ihre Auswahl an Absolventen haben. Ich habe noch nie für ein solches Unternehmen gearbeitet, aber Sie können sich vorstellen, dass sie ziemlich strenge Codierungsstandards haben.

Nicht immer selbstverständlich. Jede große Organisation wird viele Orte bieten, an denen sich schlechte Programmierer aufhalten können. Kleine Startups sind ein guter Punkt, es ist viel weniger wahrscheinlich, dass sie schlechte Gewohnheiten haben und viel wahrscheinlicher, dass Sie sie beeinflussen können.

Hier ist die Sache: Interviews gehen in beide Richtungen. Stellen Sie ihnen also unbedingt Fragen, damit sie Sie von ihrer Kompetenz überzeugen können. Fragen Sie sie zum Beispiel, welche Tools sie verwenden, welche Codestandards sie haben, wie ihr Prozess aussieht, wie sie die Codequalität sicherstellen, was sie über ihre Codebasis denken, sogar woran ihr Unternehmen ihrer Meinung nach arbeiten kann, was sie tun zu versuchen, Probleme zu identifizieren und zu beheben, und was ihr Unternehmen gut kann. Wenn Sie technische Interviews führen, nutzen Sie die Gelegenheit, um einen wechselseitigen Dialog zu beginnen, und denken Sie auch darüber nach, ob Ihr Interviewer so aussieht, als wüsste er auch, wovon er spricht.

Verwenden Sie diese Technik, und sie wird für Sie funktionieren, da sie Sie wie einen guten Kandidaten aussehen lässt UND Sie auch eine Vorstellung von der Qualität des Unternehmens bekommen.

Bei praktisch allen Unternehmen werden Sie keinen privaten Code sehen können, bevor Sie eingestellt werden. Sie können versuchen, Leute zu finden, die zuvor dort gearbeitet haben, und sehen, ob sie bereit sind, den Stand der Dinge zu kommentieren.

Wenn Sie erhebliche Mengen an Firmencodes sehen möchten, bevor Sie eingestellt werden, müssen Sie auswählen, für welche Arten von Unternehmen Sie sich bewerben. In den meisten Bereichen der Softwareentwicklung sind Sie auf Unternehmen beschränkt, die große Mengen an Open-Source-Arbeit leisten. Dies ist am einfachsten: Finden Sie heraus, an welchen Projekten sie arbeiten, sehen Sie sich an, was ihre Mitarbeiter für öffentliche Repositories bereitstellen, und sehen Sie, was sie befürworten Diskussionslisten/etc. Die einzige größere Teilausnahme sind Unternehmen, die öffentlich zugängliche Webentwicklung betreiben; In diesen Fällen können Sie auf der Client-Seite die Hälfte ihrer Sites sehen, obwohl das Backend weitgehend eine Blackbox bleiben wird.

Was soll ich tun, um nicht nur interviewt zu werden, sondern auch das potenzielle Unternehmen zu interviewen? Habt ihr damit Erfahrungen und könnt mir Tipps geben?

Der beste Weg, um zu erfahren, wie das Unternehmen/die Abteilung tatsächlich funktioniert, ist, mit jemandem zu sprechen, der tatsächlich dort arbeitet.

Wenn Sie jemanden in Ihrem Netzwerk haben, der über Insiderwissen über das Unternehmen und seine Entwicklungspraktiken verfügt, sprechen Sie mit ihm.

Wenn nicht, versuchen Sie während Ihrer Vorstellungsgespräche, mit jemandem zu sprechen, der einer Ihrer Kollegen im Unternehmen wäre. Wenn ich der Einstellungsmanager bin, stelle ich sicher, dass ich einen Kollegen in das Vorstellungsgespräch einbeziehe. Wenn ich der Kandidat bin, bitte ich darum, mit einem der Kollegen der offenen Stelle zu sprechen.

Während dieses Gesprächs können Sie nach dem Unternehmen, dem Manager und allen verwendeten Prozessen fragen.

Fragen Sie nicht einfach „Befolgen Sie Best Practices?“ weil "am besten" sehr kontextabhängig ist. Fragen Sie stattdessen nach den Besonderheiten, die Sie interessieren.

Soll ich um eine Probearbeit bitten?

Du könntest. Einige Unternehmen stellen Mitarbeiter für eine anfängliche Probezeit ein und würden dieses Angebot begrüßen.

Soll ich meine eigenen Fragen zum Vorstellungsgespräch mitbringen?

Bringen Sie immer Ihre eigenen Fragen mit.

Das stellt nicht nur sicher, dass Sie die Antworten auf wichtige Punkte erhalten, sondern zeigt auch Ihr Interesse an dem Unternehmen, der Stelle und Ihrer Karriere. Das sind alles gute Zeichen für Personalchefs.

Bitten Sie Ihre technisch orientierten Kollegen, Lehrer und Mentoren um Meinungen zum Ruf eines Unternehmens, das Sie in Betracht ziehen, sowie um Vorschläge für andere Orte, die Sie in Betracht ziehen sollten.

Ich betone „tech-orientiert“, weil eine großartige Kultur für die Vertriebsmitarbeiter oder Kunden eines Unternehmens möglicherweise nicht dasselbe für ihre Ingenieure bedeutet.

Eine ideale Quelle für Einblicke wäre ein Hackathon, bei dem Sie direkt mit Technikern und anderen Personen aus dem Unternehmen zusammenarbeiten können.

Eine weitere Erkenntnisquelle sind Kundenbewertungen / Servicebeschwerden - wenn die Produkte stinken und der Service schrecklich ist, ist es unwahrscheinlich, dass es ein großartiger Arbeitsplatz ist, insbesondere wenn es sich um ein Technologieunternehmen handelt.

Werden Sie auf diese Weise, wenn möglich, Nutzer der Produkte und Dienstleistungen des Unternehmens. Das wird tolle Einblicke geben.

Zu guter Letzt, ja, haben Sie Fragen an Ihren/Ihre Interviewer, aber stellen Sie sicher, dass es sich nicht um einfache Fragen handelt, die bereits auf ihrer Website oder anderswo beantwortet werden. Wenn Sie fragen „Wie viele Mitarbeiter haben Sie?“, wirken Sie faul und unvorbereitet. Viel Glück!

Sicher ;-) Ich würde nichts Offensichtliches oder etwas fragen, was man googeln kann. Es wären definitiv sehr spezifische Fragen, um zu sehen, wie tief ihr Wissen ist. Ich mag Situationen nicht wirklich, in denen ich erklären muss, wie ich etwas auf eine bestimmte Weise gemacht habe (nicht logisch, sondern technisch (es war wirklich grundlegendes Zeug)) ... oder sogar einige Leute verlangten, dass ich es lieber nicht verwenden würde etwas, weil sie es nicht verstehen.

Unternehmen können große Orte sein. Eine Gruppe oder Abteilung kann völlig andere Praktiken haben als eine andere.

Ich würde mir nicht zu viele Gedanken darüber machen, was andere Leute im Unternehmen tun. Normalerweise arbeitet jeder Programmierer an seinem eigenen Zeug. In 25 Jahren Programmieren hatte ich noch nie jemanden, der meinen Code auf irgendeiner signifikanten Ebene durcheinander gebracht hat. Wenn Leute den Code anderer Leute übernehmen, finde ich, dass sie ihn immer komplett neu schreiben.

Das Debuggen des Codes anderer Leute ist unvermeidlich. Je jünger und weniger produktiv Sie sind, desto mehr Aufräum- und Schrottarbeit erhalten Sie. Wenn Sie sehr produktiv sind, werden Sie nur sehr wenig Zeit mit gebrauchtem Programmieren verbringen. Es gibt nichts Ärgerlicheres als einen Junior-Programmierer mit 3000 Zeilen pro Jahr, der sich über den Stil des Basiscodes beschwert. Einmal stellte eine Firma, bei der ich arbeitete, einen Auftragnehmer mit schwachen Fähigkeiten ein, der damit beauftragt wurde, an einigen Komponenten zu arbeiten, die einen winzigen Bruchteil meiner Produktion ausmachten, und sich über meinen „Spaghetti“-Code beschwerte. Natürlich hat Mr. Beautiful Code eigentlich nicht viel schönen Code geschrieben und wurde folglich nach ein paar Wochen gefeuert.

Ich persönlich habe nie ein Problem mit dem Code anderer Leute. Es ist mir egal, wie schlecht es ist oder welche Sprache es hat oder welchen Stil es hat. Ich bin ein Meisterprogrammierer, also kann ich damit umgehen und es stört mich überhaupt nicht.

Einmal wollte ich mit jemandem Tennis spielen, aber sie lehnten ab und sagten: "Tut mir leid, ich spiele nicht mit schlechten Tennisspielern, weil es mein Spiel abwürgt." Das ist das Kennzeichen eines totalen Amateurs. Wenn Sie denken, dass das Spielen mit einem Anfänger Ihr Spiel „abwerfen“ wird, haben Sie einen langen Weg bis zur Meisterklasse.

Wenn Sie wissen möchten, wie guter Code aussieht, sehen Sie sich Google Code Jam an. Die Einsendungen der Top-Jungs dort hauen mich komplett um. Ich bin ein sehr guter Programmierer, aber wenn ich so etwas sehe, ist es, als würde ich einem Großmeister beim Schachspielen zuschauen, einfach unglaublich. Vergessen Sie den OO-Unsinn, den Ihre Professoren von sich geben, sie sind wertlos; lass die Jungs von Code Jam deine Vorbilder sein, denn sie sind Götter. Sie werden viel mehr lernen, wenn Sie ihren Code lesen, als in einem dummen Designhandbuch.

Meine Erfahrung war eher das Gegenteil, ich muss Code, der von anderen geschrieben wurde, viel modifizieren, und andere Leute müssen meinen Code auch stark modifizieren. Wenn Menschen ein Unternehmen verlassen, in den Urlaub fahren oder einfach gerade nicht verfügbar sind, muss ihr alter Code noch gepflegt/erweitert werden.

Niemand ist sich bei Best Practices zu 100 % einig, zumal sich die Empfehlungen ständig ändern.

Niemand setzt Best Practices zu 100 % um, aus Gründen, die von der Vergangenheit des Projekts über die Anforderungen des Unternehmens bis hin zu den Vorabkosten für deren Einführung reichen.

Und es spielt zu 100% keine Rolle. Wenn Sie in Ihrem Handwerk gut sind, können Sie sich an die Umgebung anpassen, die sie haben, lernen, was die Einschränkungen sind, und dann mit ihnen zusammenarbeiten, um Verbesserungen einzuführen, wo sie sinnvoll sind.

Ein guter Handwerker kann gute Arbeit leisten, auch wenn die Werkzeuge nicht die neuesten und besten sind. Und dazu gehören kognitive und Prozesswerkzeuge sowie solche, die allgemein als Werkzeuge anerkannt werden.

Das ist nicht dazu gedacht, die alten Tools zu verteidigen ... nur um ihre Benutzer zu verteidigen und anzudeuten, dass das Festlegen dieser speziellen Anforderung dazu führen kann, dass Sie einige verdammt gute Gelegenheiten ablehnen.

Das stimmt, niemand ist 100 % perfekt, aber ich arbeite lieber und versuche in einem Umfeld zu arbeiten, in dem die Dinge zu fast 90 % perfekt sind, als in einem, das kaum 5 % erreicht.
Sie werden ungewöhnlich gut abschneiden, wenn sie zuverlässig 50 % erreichen, es sei denn, Sie entscheiden sich für ein Startup, das keinen früheren Code zu warten hat und das zufällig mit Ihrer speziellen Vorstellung von Best Practices und ihrer relativen Priorität übereinstimmt. Wenn es für Sie so wichtig ist, werde ich nicht widersprechen, aber ich denke, Sie reden sich einige gute Jobs aus, und wenn Sie nicht über eine gute Barreserve verfügen, bringen Sie sich möglicherweise in die Lage, sich schließlich mit etwas Schlimmerem zufrieden zu geben als die, auf die du verzichtet hast. Ihr Anruf; wenn das deine sine qua non ist, mach es