Ich spreche von Dingen, die nur mit Programmierung zu tun haben und nicht mit System- oder Netzwerkadministration.
Ich bin kurz davor, das College zu beenden und einen Programmierjob zu bekommen, also bin ich daran interessiert, darüber Bescheid zu wissen. Obwohl dies eine subjektive Frage zu sein scheint, denke ich, dass dies nicht ganz der Fall ist und in die Kategorie der Best Practices fällt.
Ich glaube nicht, dass ein Programmierer alles über das Betriebssystem wissen kann, an dem er arbeitet, alle APIs des Frameworks, an dem er arbeitet, alle Funktionen und Macken der Sprachen, mit denen er arbeitet, alle Datenstrukturen und Algorithmen, alle Einstellungen für sein Compiler, Linker, IDE usw. Ich denke auch nicht, dass es praktisch ist. Oder kann er?
Die übliche Antwort lautet "am meisten". Was ist das am meisten? Wenn Sie einen Programmierer mit ungefähr 5 Jahren Erfahrung interviewen würden, was würden Sie von ihm erwarten? Oder sagen wir, wenn Sie an einem Interview teilnehmen würden und ungefähr 10 Jahre Erfahrung hinter sich haben, was würden Sie auffrischen?
Antworten:
Du musst wissen:
quelle
Die Programmiererkompetenzmatrix ist eine ausreichend gute Checkliste und eine einfache, informative Lektüre aus einer Hand.
Norvigs klassischer Blog über " Lernen, in 21 Tagen zu programmieren " ist ebenfalls eine gute Lektüre.
quelle
Ich möchte dies kommentieren, da ich denke, dass diese Frage in diesen Foren wahrscheinlich häufig gestellt wurde, es aber keine Rolle spielt, dass Sie jedes Mal, wenn sie gestellt wird, unterschiedliche Perspektiven erhalten.
Hier ist meine Erfahrung und ich denke, "Weisheit oder Einsicht" in unseren Beruf. Einige davon überschneiden sich mit den Aussagen anderer, aber ich liste meine Erfahrungen und dann meine Philosophie / Meinung / Vorschläge für jeden auf
1) Ja, wie andere bereits gesagt haben, müssen Sie über eine bestimmte Ebene verfügen, auf der Sie komplexe Ideen verarbeiten, verarbeiten und in der Lage sind, Ihre eigenen Lösungen für Probleme zu finden. Auf der anderen Seite: Sie können lernen, im Laufe der Zeit ein besserer Problemlöser zu werden, wenn Sie viel positive Motivation haben, weiter daran festzuhalten, hart zu arbeiten und viele Fragen zu stellen. Die meisten Entwickler, die sagen, dass sie alles wissen oder versuchen, so auszusehen, als ob sie es tun, verbergen einfach die Tatsache, dass sie viele Fragen gestellt, sich im Code den Arsch abgezogen haben usw., um dorthin zu gelangen, wo sie sich gerade befinden, und um so gut wie möglich zu werden sie scheinen zu sein
2) In unserer Branche gibt es meiner Meinung nach wieder viele Egos, mit denen Sie sich leider auseinandersetzen müssen. Ich sehe das nicht als eine gute Sache an und es ist besonders eine Eigenschaft für viele Entwickler da draußen.
Was Sie meiner Erfahrung nach finden werden, ist eine der folgenden Arten von Teams:
"Code & Run" -Teams. Dies bedeutet, dass sie sich nur darum kümmern, schnell Mist aus der Tür zu bekommen. Sie könnten sich weniger um die Codequalität (sauberen Code) oder den Code kümmern, der später gewartet werden kann. Halten Sie sich von diesen Geschäften fern, wenn Sie können. Es ist schwierig, denn selbst wenn Sie ein Unternehmen in einem Interview vertiefen, werden Sie erst dann wirklich wissen, wie das Team arbeitet, wenn Sie den Job bekommen und ungefähr 4 bis 6 Monate Zeit haben, um wirklich zu sehen, wie es codiert oder ob es wirklich die Teamarbeit fördert und Förderung der Zusammenarbeit (Ideen usw.)
Durchschnittlicher Entwickler-Shop, der "ok" ist. Dies bedeutet, dass ihnen die Codequalität ein wenig am Herzen liegt. Sie haben vielleicht ein paar gute Entwickler im Team, die gut in einem Team arbeiten und eine positive Einstellung haben, und dann eine Mischung aus einigen Entwicklern, die andere Eigenschaften wie egoistisch, faul usw. haben könnten. Ich meine, es ist eine Art Hogposh-Laden aber wo der Code nicht der größte ist, aber erträglich
Toller Laden. Dieser Shop versucht sein Bestes, um wirklich guten Designmustern zu folgen. Sie sind vielleicht keine Experten für Entwurfsmuster, aber sie kennen bewährte Verfahren wie DRY, SOLID oder was auch immer. Sie erwarten nicht unbedingt, dass Superstars ihrem Team beitreten, aber sie suchen Entwickler, die zumindest etwas sauberen Code codieren und zuerst über eine gute Erfahrung verfügen. Dies sind die Teams, für die Sie sich einsetzen möchten ... aber Sie müssen möglicherweise ein paar Geschäfte durchgehen, um gute Teams zu finden
Superstar Shop. Dies ist ein Shop, der nur die absolut besten Programmierer sucht, aber auch die besten Programmierer, die alles haben. Sie kommunizieren gut und arbeiten gut als Team (positiv mit anderen zum Wohle des Tema). Denken Sie daran, jeder Laden wird Ihnen sagen, ja, wir suchen nur das Beste. Das meiste davon ist Unsinn ... sie haben gute Absichten, aber oft ist es nur Marketinggespräch. Aber es gibt einen Prozentsatz der Geschäfte, die wirklich nach Top-Talenten suchen. Und Sie werden wissen, dass, wenn Sie in das Interview einsteigen und sie Fragen zu Threading, erweiterten Designmustern usw. stellen. Also ... um auf dieses Niveau zu gelangen und wenn Sie in einem Team arbeiten möchten, das diese Art von Erwartung hat Es kann einige Jahre dauern, bis Sie dort ankommen
Superstar Shop mit negativen Vibes / Egos. Es gibt Läden da draußen, die Top-Entwickler einstellen, aber in denen der Großteil dieses Ladens eine Menge Stiche haben kann, die Superstars sind. Es gibt also Teams, die keinen schlechten Code tolerieren, aber sie sind echte Schwachköpfe. Es ist keine Teamumgebung und du willst dich von diesem Mist fernhalten. Unsere Branche braucht es nicht und Sie auch nicht
und eine der folgenden Arten von Entwicklern:
a) Riesiges Ego, weiß alles, will immer Abstand zu allem halten, offenbart wenig, hat eine Einstellung ... im Grunde kein Teamplayer und nicht jemand, mit dem man arbeiten oder in seinem Team haben möchte
b) Entwickler, die nur da sind, um einen mittelmäßigen Job zu machen und den Job zu erledigen und nach Hause zu gehen. Persönlich denke ich, dass es von Anfang an nichts Falsches gibt, aber gleichzeitig denke ich, dass unser Beruf Entwickler braucht, die leidenschaftlich sind und bereit sind, ihr Handwerk zu opfern und zu genießen, um letztendlich Wert zu schaffen, aber sich auch als Entwickler langfristig zu verbessern schleppen, weil es ihnen wichtig ist, besser zu werden
c) Entwickler, die es wahrscheinlich schaffen könnten, aber zu faul, negativ oder was auch immer andere Eigenschaften sind, die nur die Hölle für alle verursachen, aber hauptsächlich wegen des Faulheitsfaktors. Ich möchte keine faulen Leute in meinem Team haben ... faule Ingenieure sind nicht das, was wir in unserem Beruf brauchen
d) Entwickler, die gut zu großartigen Entwicklern sind, die sich für Teamarbeit interessieren, die bereit sind, sich selbst zu demütigen, andere zu unterrichten, zu kommunizieren und offen für konstruktive Kritik an Prozessen oder Code (Codeüberprüfungen usw.) zu sein, und das einfach Achten Sie darauf, bei der Arbeit positiv zu sein, während Sie als Entwickler mit allen Kollegen zusammenarbeiten. Sie möchten mit solchen Menschen arbeiten, einer positiven unterstützenden Entwicklungsumgebung. Jetzt sage ich nicht, dass ein Team nach Auslaugern suchen sollte ... Sie müssen in der Lage sein, Ihr eigenes Gewicht zu halten, aber Sie möchten nicht in Teams landen, in denen sie erwarten, dass Sie ein "Star" -Entwickler sind und niemals Fragen stellen ... das ist eine schlechte Umgebung. Halten Sie sich davon fern ... es ist meiner Meinung nach schwierig, dieses Umfeld in unserem Beruf insgesamt in der Erfahrung meiner und anderer Freunde während unserer gesamten Karriere zu finden. Sie können gute Teams finden, aber sie sind schwerer zu finden als in chaotischen Läden mit schlechten Einstellungen zu landen. Wissen Sie also, worauf Sie sich einlassen, das Gras ist nicht immer grüner, nur weil Entwickler sogenannte "Profis" sind. Ich bin mir sicher, dass dies mit jedem Job zu tun haben kann, aber ich denke mehr an unseren Beruf als an die meisten anderen da draußen.
3) Eine Sache, die ich auf die harte Tour gelernt habe, ist, dass wenn Sie ein Perfektionist sind und sich zu sehr für einen guten Prozess und perfekten Code interessieren, Sie eines Tages in Schwierigkeiten geraten werden. Finde das Gleichgewicht. Sie möchten keinen reinen, schlampigen Code und möchten nicht zu viel Zeit damit verschwenden, dass Ihr Arbeitgeber sauer wird, weil Sie 2 Wochen gebraucht haben, um eine relativ mittelgroße Aufgabe zu erledigen, die normalerweise beispielsweise ausgeführt werden sollte 3-4 Tage, weil Sie wollten, dass es zu sauber ist. Ein gutes Buch zum Lesen und ein guter Typ, dem man in unserer Branche folgen kann, ist "Onkel Bob". Ich bin ein großer Fan von ihm, ebenso wie viele Entwickler da draußen. Lesen Sie seine Blog-Beiträge auf Code und kaufen Sie sein Buch. Ich kann nicht sagen, wie viel Weisheit und Erfahrung er Menschen zu bieten hat, einschließlich Ihnen selbst, die gerade das College verlassen, um über unseren Beruf in Bezug auf die besten Praktiken, Einstellungen,
sein Unternehmensblog: http://blog.objectmentor.com/articles/category/clean-code (und siehe http://blog.objectmentor.com/articles/2009/02/03/speed-kills )
Eines seiner vielen guten Bücher, die meiner Meinung nach jeder Entwickler lesen oder gelesen und in Ihrem Regal haben sollte: http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
Sein persönlicher Blog: http://cleancoder.posterous.com/retarded-architecture
Und ein gutes Video von ihm auf einer Konferenz, die er sprach: http://www.viddler.com/explore/oredev/videos/36/
4) Machen Sie sich keine Sorgen darüber, mit all den Entwicklern zu konkurrieren, mit denen Sie arbeiten. Sie müssen sich darüber im Klaren sein, dass Sie einige Jahre brauchen werden, um die Grundlagen unseres Berufs zu beherrschen, selbst wenn Sie sich in CS gut geschlagen haben. Es braucht Zeit, arbeitet hart, stellt Fragen, recherchiert, ist geduldig ... und vor allem, da unsere Branche jetzt in einem solchen Wandel ist, sollten Sie nicht frustriert sein, wenn Sie nicht alles wissen. Konzentrieren Sie sich zuerst auf die Grundlagen ... kennen Sie sie in den ersten Jahren gut. Machen Sie Ihre Sorgen nicht zu kompliziert, Sie sind ein Junior-Entwickler, der versucht, besser zu werden, und das wird passieren, wenn Sie hart arbeiten und zuerst die grundlegende OOP beherrschen. Viele Entwickler in unserer Branche kennen die Grundlagen immer noch nicht, weil sie sich nicht die Mühe gemacht haben, sie zu kennen, und das ist negativ. Sie möchten zunächst die Grundlagen gut kennen (Polymorphismus, Verkapselung, yada yada). Wenn Sie in Ihren ersten Jobs nicht viel Gelegenheit haben, viel OOP zu machen, bemühen Sie sich sehr, es zu Hause zu erforschen und zu üben, indem Sie mit Code herumspielen und ein lustiges Haustierprojekt auf der Seite haben, das Ihnen Spaß macht.
Ich könnte diesen Beitrag verlängern, aber ich werde hier aufhören. Wenn Sie weitere Fragen zu meinem Beitrag haben, antworten Sie einfach in den Kommentaren und wir können weiter diskutieren.
Letztendlich, wenn Sie ein Genie, super klug, klug, mittelmäßig oder scheiße sind, egal wer Sie auf welchem Niveau sind, wenn Sie es in unserem Beruf schaffen wollen, müssen Sie immer super hart arbeiten und ständig versuchen zu lernen und verbessern Sie sich und streben Sie das Beste an, was Sie sein können (Code, Kommunikation usw.). Unser Beruf ist nicht leichtfertig zu nehmen.
quelle
So finden Sie so schnell wie möglich heraus, was Sie nicht wissen ...
quelle
Mit ungefähr 10 Jahren Erfahrung würde ich Algorithmen (Sortieren, Datenstrukturen, Diagramme) auffrischen. Das größte Problem für mich ist, dass ich meine letzten Jahre entweder in einer Führungsrolle verbracht habe oder mich mit Architekturproblemen auf höherer Ebene befasst habe, die im Allgemeinen kein Algorithmusdesign und -analyse auf niedrigerer Ebene erfordern, wie fast alles, was Sie jemals dazu benötigen würden Level wurde bereits geschrieben, zur Hölle optimiert und kampferprobt.
Ich würde auch einige Zeit auf projecteuler.com und interviewstreet.com verbringen, um Probleme zu lösen und mir zu helfen, diese neu erlernten Erkenntnisse anzuwenden, um ihnen zu helfen, zu bleiben.
quelle
quelle
Kennen Sie Ihren Algorithmus und Ihre Datenstrukturen genau. Wissen, wie man gemeinsame Aufgaben mit der Sprache / dem Framework erledigt und wie ein Experte dasselbe tun würde. Arbeiten Sie, machen Sie Fehler, verbessern Sie sich und lassen Sie sich von Ihrer Erfahrung mehr beibringen, solange Sie in der Branche sind.
Meine Checkliste für ein Interview wäre
Vergessen Sie nicht, die zeitliche und räumliche Komplexität Ihrer Lösungen zu berücksichtigen, wenn Sie eine dieser großen Firmen anstreben, von denen die Leute träumen, dass sie einsteigen :).
Viel Glück
quelle