Woher weiß ich, ob ich ein guter Programmierer bin?


301

Wie die meisten Leute halte ich mich für ein bisschen überdurchschnittlich in meinem Bereich. Ich werde gut bezahlt, habe Beförderungen erhalten und hatte noch nie ein echtes Problem damit, gute Referenzen oder einen Job zu bekommen.

Aber ich war schon genug da, um zu bemerken, dass viele der schlechtesten Programmierer, mit denen ich zusammengearbeitet habe, sie für die besten hielten. Schlechte Programmierer, die von anderen schlechten Programmierern umgeben sind, scheinen sich am meisten zu täuschen.

Ich bin sicher nicht perfekt. Ich mache Fehler. Ich vermisse Termine. Aber ich denke, ich mache ungefähr die gleiche Anzahl von Bonehead-Moves wie "andere gute Programmierer". Das Problem ist, dass ich "andere gute Programmierer" als "Leute, die wie ich sind" bezeichne.

Also, ich frage mich, gibt es eine Möglichkeit, wie ein Programmierer eine vernünftige Selbsteinschätzung vornehmen kann? Woher wissen wir, ob wir in unseren Berufen gut oder schlecht sind?

Oder, wenn Begriffe wie gut und schlecht zu schlecht definiert sind, wie können Programmierer ihre eigenen Stärken und Schwächen ehrlich identifizieren, damit sie die ersteren nutzen und daran arbeiten können, die letzteren zu verbessern?


Warum willst du das wissen? Niemand kann definieren, was "gut" ist. Wenn Sie die Arbeit wie erwartet erledigen und gut bezahlt werden, ist das gut genug.
Mert Akcakaya

Antworten:


325

Ein guter Programmierer versteht, dass er weiter lernen und wachsen muss. Sie bemühen sich, bei jeder Anstrengung ihr Bestes zu geben, Fehler zuzugeben und von ihnen zu lernen.

Sie sind außerordentlich kommunikativ. Sie sind nicht nur in der Lage, Laien komplexe Fachbegriffe zu erklären, sondern geben sich auch große Mühe, als Verfechter der eigenen Idee zu agieren, um sicherzustellen, dass sie ihren Kunden die besten Optionen bieten.

Die besten Programmierer wissen und akzeptieren, dass es mehr als einen Weg gibt, Dinge zu tun, dass nicht jedes Problem ein Nagel ist und dass sie ständig neue Techniken erlernen möchten, weil es immer einen besseren Weg gibt, etwas zu tun, als sie geplant hatten , Technologien und Verständnis.

Ein guter Programmierer liebt es zu programmieren und würde dies in seiner Freizeit tun, selbst wenn er bereits mehr als 80 Stunden pro Woche programmiert.

Ein guter Programmierer weiß, dass er kein guter Programmierer ist. Wirklich großartige Programmierer gibt es nicht, es gibt nur diejenigen, die behaupten, großartig zu sein, und diejenigen, die wissen, dass sie nicht großartig sind.


5
Sie treffen das genau auf den Kopf! IMO!

13
Und ich denke, eine allgemeinere Konsequenz ist, dass Sie gut darin sind, was Sie tun, wenn Sie sich für das interessieren, was Sie tun.

7
Gut gesagt. In Bezug auf Ego / Demut kam ich in den 70ern durch das MIT AI Lab. Die besten Programmierer hatten ein gewisses bescheidenes Selbstvertrauen. Wenn Sie denken, dass Sie etwas Wichtiges tun, könnten Sie sich irren, aber wenn Sie es nicht tun, haben Sie wahrscheinlich Recht.
Mike Dunlavey

4
Teilweise stimme ich Absatz 2 zu: "Sie sind nicht nur in der Lage, Laien komplexe Fachbegriffe zu erklären ..." Ich kenne einige gute Programmierer. Aber sie konnten niemandem außerhalb ihres Kreises etwas erklären. Sie konnten auch nicht verstehen, was der Laie zu sagen versuchte. Beide schauen sich mit "Hirsch im Scheinwerferlicht" an. Ich werde sagen, dass sie außerordentlich kommunikativ sind. Für den Rest Ihrer Punkte fasse ich sie zusammen, indem ich sage, dass ein guter Programmierer bescheiden ist und bereit ist, sein Wissen auf die beste Art und Weise zu teilen, die er / sie kennt.
IAbstrakter

101
"und das in ihrer Freizeit, selbst wenn sie bereits mehr als 80 Stunden pro Woche programmieren." Werde diese dumme Aussage los und ich würde dem Rest vollkommen zustimmen. Ein wirklich „guter Programmierer“ erkennt, dass bei mehr als 80-Stunden-Arbeitswochen andere Tätigkeiten als das Programmieren (in der Freizeit) für die körperliche und geistige Gesundheit und die Produktivität bei der Arbeit unerlässlich sind.

91

Wie Paul Graham in dieser Podcast-Besetzung eloquent hervorhebt , geht das nicht. Nur Ihre Mitarbeiter können es Ihnen sagen.


4
Diese Antwort ist so viel besser als die akzeptierte ...

125
Ihre Mitarbeiter können nicht sagen, ob Sie kompetent sind, wenn sie inkompetent sind. Sie werden einfach denken, dass Sie seltsame Meinungen haben und leidenschaftlich über irrelevante Themen streiten.

2
Stimmen Sie zu, Keysersoze. Dann kann es dir niemand sagen und du wirst es nie erfahren, es sei denn, du holst dir ein paar neue Mitarbeiter. Ich denke, es lohnt sich auf lange Sicht nicht, mit niemandem zu arbeiten, der kompetent ist.

1
@keysersoze, aber wenn ich tatsächlich inkompetent bin, sind meine Mitarbeiter möglicherweise kompetent und ich bin einfach zu dumm, um das zu realisieren;)

1
Paul Graham schrieb auch einen Aufsatz über großartige Programmierer und wies darauf hin, dass er nicht in der Lage ist, großartige Namen zu nennen, da er nie mit den offensichtlichen Entscheidungen gearbeitet hat (wie Richard Stallman, Linus Torvalds et al.).
David Thornley

59

Ich habe immer festgestellt, dass es am einfachsten ist, Ihre Leistung anhand zweier Dinge zu beurteilen.

  1. Umgib dich mit anderen guten Programmierern
  2. Sehen Sie, wie sehr sie sich über den von Ihnen geschriebenen Code beschweren.

Natürlich geht es darum, gute Programmierer zu finden, und dann geht es auch nicht nur darum, ein guter Programmierer zu sein. Sie müssen in der Lage sein, gut in Gruppen zu arbeiten, aber auch gut für sich selbst.

Um das Thema abzubrechen, zitiere ich Robert A. Heinlein und seine Meinung zu diesem Thema:

"[Ein Kick-Ass-Programmierer] sollte in der Lage sein, eine Windel zu wechseln, eine Invasion zu planen, ein Schwein zu schlachten, ein Schiff anzuschließen, ein Gebäude zu entwerfen, ein Sonett zu schreiben, Konten auszugleichen, eine Mauer zu errichten, einen Knochen zu setzen, das Sterben zu trösten , Befehle entgegennehmen, Befehle erteilen, zusammenarbeiten, alleine handeln, Gleichungen lösen, ein neues Problem analysieren, Mist anbauen, einen Computer programmieren, ein leckeres Essen zubereiten, effizient kämpfen und tapfer sterben.
- aus dem Heft von Lazarus Long.


12
erinnert mich irgendwie an das Zitat: "Dumme Leute umgeben sich mit klugen Leuten. Kluge Leute umgeben sich mit klugen Leuten, die mit ihnen nicht einverstanden sind."
Sam Hasler

Ich wage zu sagen, dass dies das beste Heinlein-Zitat auf SO ist.

1
Das Problem ist, dass andere Programmierer sich möglicherweise auf oder über Ihrem Niveau befinden, Sie aber nicht beleidigen möchten. Ich habe nicht viel Feedback von drei Programmierern bekommen, mit denen ich zusammengearbeitet habe, und sehr wenig von zwei anderen, die ich für "gut"

4
... obwohl wir als unsozial eingestuft sind, können andere Programmierer die Verteidigung von Code verhindern, indem sie einfach kein Feedback zu Problemen geben. Was tatsächlich Probleme mit dem Code übersehen kann, um keine sozialen Probleme zu verursachen.

55

Dies ist die Programmer-Kompetenzmatrix nur für Sie: http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm


Ich bin 3-4 auf wie 90% dieser Artikel und ich kann keine Scheiße codieren. Zumindest nicht zu schnell.

-1 für die Einkaufsliste.

6
-1 - Algorithmuskenntnisse sind gut, aber es gibt keine Möglichkeit, dass all diese Dinge in Ihrem Kopf gespeichert werden, wenn jemand Sie interviewt. Dafür gibt es Wikipedia, Google und Stackoverflow.

1
Ich stimme zu, dass diese Liste meistens unbrauchbar ist. Es ist eine gute Quelle für Ideen, wenn Sie nach Übungen suchen, aber es ist nicht sehr nützlich, wenn Sie die Feststellung treffen, dass Sie ein "guter Programmierer" sind. "Guter Programmierer" ist mehr Einstellung als willkürliche Liste.

2
+1. Obwohl ich mit dem oben Gesagten nicht einverstanden bin, halte ich dies dennoch für eine sehr gute Liste. Vielen Dank für die Veröffentlichung. Dies sind definitiv die Kriterien, anhand derer ich einen Programmierer bewerten würde, der sich für eine Stelle bewirbt. Und @macnnicken, es geht nur bis Level 3. :)
EMP

38

Jeff hat einen meiner Lieblingsblogposts zu diesem Thema ... Warum ich der beste Programmierer der Welt bin

"... es ist nicht unsere Aufgabe, besser zu sein als jeder andere. Wir müssen nur besser sein als vor einem Jahr."


3
Ich mag das Zitat, sehr gut. Und darum geht es beim Programmieren. "Seien Sie besser in dem, was Sie Tag für Tag tun und wissen."

1
In den letzten 12 Jahren habe ich jedes Jahr auf Code zurückgegriffen, den ich ein Jahr zuvor geschrieben hatte, und dachte, es sei absolut scheiße. Vielleicht mache ich etwas richtig! Es gibt nichts Schlimmeres als einen stagnierenden Programmierer.

28

Ich denke, die Tatsache, dass Sie die Frage stellen, beweist, dass Sie kein schlechter Programmierer sind, also sind Sie meiner Meinung nach auf halbem Weg. :)

Nach meiner Erfahrung denken schlechte Programmierer immer, dass sie großartige Programmierer sind.


wie viel erfahrung hast du

1
Meine Erfahrung stimmt mit Ihrer Erfahrung überein, weshalb ich mir Sorgen mache, wenn ich anfange zu denken, dass ich gut bin.
Kristopher Johnson

21

@Nicks Aussage "Schlechte Programmierer denken immer, dass sie großartige Programmierer sind ..." wird durch den Mahn-Krüger-Effekt erklärt , der verallgemeinert, dass Leute, die ein wenig über ein Thema wissen, oft überschätzen, wie viel sie tatsächlich wissen.

Ein bisschen scherzhaft zu sein ... je weniger du glaubst, dass du es weißt, desto mehr tust du wahrscheinlich ... es sei denn, du bist ein wirklich selbstbewusster Idiot.

Beantwortung der ursprünglichen Frage, obwohl ich denke, dass der größere Einfluss (nicht Kontrolle), den Sie im Allgemeinen haben, ein guter Indikator ist. Wenn du siehst, wie andere deinem Beispiel folgen oder deine Übungen aufgreifen, bist du auf dem richtigen Weg.


Der Mahn-Krüger-Effekt ist furchtbar demütigend. Ich versuche es immer im Hinterkopf zu behalten, wenn ich mich bei etwas gut fühle, was ich getan habe!

Gute Programmierer stellen keine Fragen und stimmen dann die Antworten ab, weil sie sie nicht mögen. Sie tun nicht so, als wüssten sie alles in einem neuen Fach, und wenn ein Experte eine Frage für sie beantwortet, stimmen sie nicht ab, weil es nicht die ist, die sie wollten.

Ich wünschte, ich hätte eine Ahnung von DK im College, als ich ein gutes Beispiel für ein Ende des Spektrums war!
DarenW

18

Die Antwort mit den meisten Plus-Stimmen ist wirklich beunruhigend. Grundsätzlich heißt es, dass Sie kein Leben außerhalb der Programmierung haben. Was ist mit der Familie? Gemeinschaft? Liebhabereien? In was für einem Beruf müssen Sie sich mit der Besessenheit beschäftigen, nur um als "gut" zu gelten? Ich denke wirklich, wir müssen hier eine Perspektive bekommen.


2
Genau. Wir sollten danach streben, ein großartiger Mensch zu sein, bevor wir ein großartiger Programmierer werden.

Guter Ort, um sich auf den Begriff 501-Programmierer zu beziehen: hanselman.com/blog/…
ChrisFletcher


9

Ich bin nicht perfekt. Ich mache Fehler. Ich vermisse Termine. Aber ich denke, ich mache ungefähr die gleiche Anzahl von Bonehead-Moves wie "andere gute Programmierer".

Diese Erkenntnis allein macht Sie zu einem besseren Programmierer als die meisten schlechten Programmierer.

Viele der schlechtesten Programmierer glauben, dass sie bereits alles wissen, was sie wissen müssen, und sind sich ihrer Grenzen nicht bewusst. Infolgedessen verbessern sie nie ihre Fähigkeiten.


9

Wenn Sie sich Ihren Code von vor einem Jahr ansehen und denken, meine Güte, ich hätte das viel besser machen können, sind Sie wahrscheinlich gut :).


Ich habe mir gerade mein Hallo-Welt-Programm angesehen und dachte, dass es jetzt viel effizienter ist, bin ich gut? jks jks

9

Hier sind einige Beispiele aus der Praxis für schlechte Programmierung. Natürlich wurde überall an 100 Stellen ähnlicher Code kopiert / eingefügt. Guy wurde gefeuert, aber ich habe gehört, dass er wieder einen guten Job hat. Genießen:

ein)

if (! TableObject.loadList("sql condition").isEmpty()) {  
    List<TableObject> myList = TableObject.loadList("sql condition");  
    ...  
}

b)

public static Type getInstance() {  
    if (instance == null) {  
        return new Type();  
    }  
    return instance;  
}

c)

getForeignKeyObjectProperty1() {  
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getProperty1();  
}  

getForeignKeyObjectProperty2() {  
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getProperty2();  
}  

...

getForeignKeyObjectPropertyN() {
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getPropertyN();
}

d)

public boolean isHasImage() throws SQLException {
    StringBuilder query = new StringBuilder();
    query.append("select user_name");
    query.append(" from user");
    query.append(" where has_image = 1");
    query.append(" and user_name ='"+getUserName()+"' and user_image is not null");
    Connection c = Database.getInstance().getConnection();
    Statement st = c.createStatement();

    try {
        ResultSet rs = st.executeQuery(query.toString());
        if (rs.hasNext()) {
            return true;
        } else {
            return false;
        }
    } finally {
        st.close();
    }
}

Wenn Sie diese Art von Code erstellen, beenden Sie die Programmierung. Wenn Sie in diesem Code nichts Seltsames sehen, beenden Sie die Programmierung. Sonst bist du nicht schlecht, also bist du vielleicht sogar gut :)

BEARBEITEN: Um Kommentare zu beantworten: Ich habe vor dem Abschluss einen Job bekommen und dieser Typ hatte bereits einige Jahre Programmiererfahrung. Er wurde einige Monate nach meiner Anstellung entlassen, deshalb war ich nicht in der Lage, irgendjemanden zu unterrichten. Die obigen Beispiele kamen nur von oben - jeder Code, den er berührte, war auf verschiedene und einfallsreiche Weise fehlerhaft. Die meisten Dinge schlichen sich aus der Firma heraus, weil nur dann andere Leute Teile des Codes sahen. Er ist im Allgemeinen ein netter Kerl, mit dem man sich angenehm unterhalten kann, aber er wird NIE ein guter Programmierer sein, so wie ich niemals ein guter Maler oder Schriftsteller oder was auch immer sein werde.

Um dies mit einem anderen Beispiel zu vergleichen, war der Typ, der ihn ersetzte, zu dieser Zeit ebenfalls undergraded. Er studierte an einem College, das mehr für Management als für Programmierung bekannt war. Er ist nicht zu geeky in dem Sinne, dass er irgendetwas zum Spaß programmiert oder zu Hause sitzt und über Java oder Programmierung liest, aber es geht ihm gut. Er passte sich schnell an und begann, nützlichen und wartbaren Code zu produzieren. Einige Leute können das, andere nicht - fragen Sie einfach dailywtf.


11
Jeder kann beliebigen Code posten und behaupten, dass diejenigen, die ihn nicht verstehen, dumm sind. Ich werde in der dummen Linie stehen gehen.

20
Ein guter Programmierer hätte sich die Zeit genommen (vielleicht 2 Minuten?), Um seinem Kollegen zu erklären, was mit einem solchen Code nicht stimmt.

4
Ein guter Programmierer hätte zustimmend darauf hingewiesen, warum dieser Code "schlecht" ist, und hätte seinem Kollegen geholfen, besser zu werden, anstatt ihn zu verspotten.

7
Ich hoffe, dieser Typ hat einen Job gefunden, bei dem seine Mitarbeiter ihm geholfen haben, zu wachsen, anstatt ihn zu tadeln.
Robert S.

8
@ Morph: instanceFeld ist nie eine TypeInstanz zugewiesen und bleibt so immer null=)
Fehlender Faktor

8

Es gibt ein paar Dinge, die Sie versuchen könnten, um ein besseres Maß dafür zu erhalten, wie Sie sich anhäufen.

  • Vergleichen Sie Code-Reviews. Sehen Sie, wessen Überprüfung mehr Probleme ergab.
  • Fragen Sie, wann sie das letzte Mal Bücher gelesen haben, die nicht zu ihrem normalen Studienverlauf gehörten. Dann fragen Sie sich das Gleiche.
  • Fragen Sie sich, wer neue Ideen in das Unternehmen einbringt (und wie gut sie funktionieren).
  • Und zu guter Letzt, gibt es eine Form der Anerkennung von Unternehmen?

(Das habe ich zum Schluss gesagt, weil in meiner letzten Firma ein Programmierer zweimal in drei Jahren zum "Entwickler des Jahres" ernannt wurde. Nachdem er gegangen war, fanden wir mindestens 20 TDWTF-taugliche Code-Schnipsel. Er entwickelte Code schnell , aber nicht unbedingt gut Das Management kannte den Unterschied einfach nicht.)


1
+1 für "Code-Bewertungen vergleichen". Das scheint ein Roman und eine sehr praktische Sache zu sein.
j_random_hacker

6

Erlauben Sie anderen Entwicklern, mit denen Sie respektieren, zu arbeiten oder Ihren Code zu sehen.

Lassen Sie die Leute tatsächlich das verwenden, was Sie mögen und sehen, was sie denken.

- Kevin Fairchild


6

Kannst du das verstehen?

if(rp->p_flag&SSWAP) {
	rp->p_flag =& ~SSWAP;
	aretu(u.u_ssav);
}

:-)


Abgeändert ??!?!?!?! Jemand kennt ihre Geschichte nicht. :-)
Iain Holder

5
Es wird nicht erwartet, dass du das verstehst

Ist das ein Hinweis auf etwas? In jedem Fall, wenn es sich um C / C ++ - Code handelt, haben Sie in der 2. Zeile wahrscheinlich "& =" anstelle von "= &" gemeint. (Ich sage "wahrscheinlich", weil Sie durch Überladen des Operators ~ () in C ++ die obige Kompilierung durchführen könnten ... Aber ich bin mir ziemlich sicher, dass Sie das nicht beabsichtigt haben.)
j_random_hacker

1
@j_random_hacker Ich vermute, dass = & richtig ist, da dieser Code von Dennis Ritchie geschrieben wurde. Siehe cm.bell-labs.com/who/dmr/odd.html
Iain Holder,

1
@ IainMH, dmr gibt auch zu, dass es fehlerhaft war.

4

Allein der bloße Gedanke, den Sie selbst einschätzen müssen, hebt Sie von den anderen ab.

Eine Möglichkeit, mich selbst zu beurteilen, besteht darin, zuzuhören, was meine Kollegen über mich zu sagen haben. Trick ist es, die richtigen Leute zu finden.


4

Es ist immer subjektiv, wer ein guter Programmierer ist. Ich stimme Nick zu, dass es ein Schritt in die richtige Richtung ist, nur die Frage zu stellen. Ich denke, der ständige Wunsch, mehr zu lernen und sich zu verbessern, macht einen guten Programmierer aus.


4

Für mich sind die besten Programmierer nie auf der Suche nach Arbeit. Sie haben ständige Angebote für neue Positionen, die nur auf ihrem Ruf basieren. Ein guter Programmierer kann also Angebote von früheren Arbeitgebern haben, um zurückzukehren, wenn er dies wünscht. Oder ein guter Programmierer hätte sich bei ehemaligen Mitarbeitern erkundigt, ob er für sie in einer neuen Firma arbeiten möchte.

In Bezug auf Stärken / Schwächen kennen Sie sie wahrscheinlich bereits. Wenn nicht, fragen Sie eine ältere Person in Ihrem Team. Es muss nicht einmal ein Entwickler sein. Ein guter Projektmanager kennt die Stärken / Schwächen der Programmierer. Außerdem sind die Eigenschaften, die einen guten Programmierer definieren, nicht nur auf Code beschränkt. Das Verständnis des Geschäfts, Kommunikationsfähigkeiten, Urteilsvermögen usw. werden alle außerhalb Ihrer IDE durchgeführt.


2
Sie könnten ein großartiger Programmierer und eine schreckliche Person sein. Möchten Sie lieber mit einer netten Person arbeiten, die vielleicht nicht so viel weiß, aber lernwillig ist, oder mit einem absoluten Idioten, der in jeder Hinsicht ein fantastischer Programmierer ist? Was Sie beschreiben, macht einen guten Mitarbeiter aus, keinen guten Programmierer. ;)

2
Ich verstehe nicht, woher dieser Kommentar kommt. Die beiden Hauptfragen, die ich beantworte, lauten: "Wie kann ich wissen, ob ich ein guter Programmierer bin?" und 'Wie erkenne ich meine Stärken / Schwächen?' Was ist das für ein Gerede über Idioten und schreckliche Menschen? Ich habe Meinungen zu diesen Dingen, aber ich glaube nicht, dass sie mit meiner Antwort zusammenhängen.

2
Reputation zu erlangen, ist oft eher eine Frage der PR und des Vertrauens als der tatsächlichen Fähigkeiten.
David Thornley

Vorausgesetzt, "Fähigkeit" ist technische Fähigkeit, dann ist es mehr als "tatsächliche Fähigkeit", ein guter Programmierer zu sein. Technische Eignung ist nur ein Teil des Puzzles.

3

Ich denke, das ist ungefähr so, als würde man sich fragen, wie man wissen kann, ob man eine nette Person ist.

Ich denke, leider ist die Antwort, dass nur andere glaubwürdige Leute Ihnen das sagen können. Ich glaube nicht, dass Sie dies selbst genau bestimmen können (zumindest ist es sehr schwierig - aber ich denke, es ist möglicherweise unmöglich).


3

ich würde einfach sagen: wenn du leidenschaftlich bist (ich meine WIRKLICH leidenschaftlich) was du tust, wenn du flexibel bist (eine andere Sprache, neue Technologie, komplettes Remake eines alten Projekts - lass es uns tun!), wenn du weiter lernst und verbessern Sie Ihre Fähigkeiten und denken Sie niemals, dass Sie gut genug sind, um aufzuhören - dann sind Sie ein guter Programmierer!


3

95% aller Programmierer glauben, zu den Top 5% der Programmierer zu gehören, die anderen 5% sind Manager. Wenn Sie also ein Manager sind, sind Sie wahrscheinlich kein guter Programmierer, sonst sind Sie es wahrscheinlich.


... und 25% wissen, dass sie in den Top 1% sind;)

3

Ich denke, es kommt eher darauf an, was Sie mit Ihren Programmierkenntnissen anfangen. Ein großartiger Programmierer zu sein ist in Ordnung, aber was macht es aus, wenn Sie den ganzen Tag Banksoftware programmieren (keine Beleidigung). Es passt einfach nicht zusammen.

Um sich wirklich zu beweisen, dass Sie ein guter Programmierer sind, nehmen Sie ein interessantes und schwieriges Nebenprojekt auf. Dies zeigt ein paar Dinge: Sie möchten gerne in Ihrer Freizeit programmieren und das Thema wirklich genießen - dies ist eine Grundvoraussetzung, um ein guter Programmierer zu sein. Vielseitigkeit zeigt sich darin, dass Sie Ihre Fähigkeiten über das hinaus erweitern können, was Sie in Ihrer Arbeitsumgebung tun. Es zeigt auch Motivation und Kreativität: Sie haben ein Problem selbst definiert und unternehmen Schritte, um es zu lösen.

All diese Aspekte machen für mich einen guten Programmierer aus.


3

Meine Antwort wird politisch falsch sein. Tatsächlich bin ich jedoch Gründer eines Start-ups und meine Aufgabe ist es, die besten Programmierer einzustellen.

Woher weiß ich, welche Leute gute Programmierer sind oder gute Programmierer sein können?

1 Wort: IQ.

IQ dient zum Programmieren, ebenso wie die Höhe für Basketballspieler.

Ich würde die mathematischen Fähigkeiten als weitere politisch korrektere Indikatoren bezeichnen. Meine Informatiklehrer sagten mir, dass es ein Kriterium gibt, das richtig vorhersagt, wer bei Programmierkursen erfolgreich sein wird. High School Math Scores. Das sind effektiv IQ sowieso.

Dies kann eine Überraschung sein. Uns wird gesagt, dass das Programmieren ein College-Abschluss ist. Ratet mal, mir ist der Abschluss egal. Ich kümmere mich nur um 3 Dinge.

  1. Programmierkenntnisse (die getestet werden können).
  2. Eignung.
  3. Der gesunde Menschenverstand (nicht zu niedrig) Fähigkeiten.

Leider misst IQ nur eine Sache. Also mache ich ein paar Tests.

Ich stelle Leuten Fragen. Einfache Frage, von der ich erwarte, dass ein Grundschüler sie beantworten kann.

Ich stelle Fragen wie:

  1. Was ist der Abstand zwischen kurzem und langem Zeiger der Uhr um 7:35
  2. Wenn ich von Jakarta nach Semarang fahre und 60 km / h Geschwindigkeit beibehalten möchte. Dann fahre ich in den ersten 2 Stunden 100 km / h. Wie schnell sollte ich den Rest der Reise fahren, damit meine durchschnittliche Geschwindigkeit 60 km / h beträgt?

Wenn Sie genau hinschauen, erfordern diese Fragen überhaupt keine Kreativität. Nur gesunder Menschenverstand. Jeder Grundschüler mit IQ kann das beantworten.

Die meisten College-Absolventen können nicht. Stellen Sie sich vor, jemand kann das nicht beantworten? Kann er programmieren? Denk darüber nach. Wie oft müssen Sie angeben, was er tun soll?

Sie können auch Fragen wie Microsoft stellen, die Kreativität erfordern. Sie können Fragen zum Wiegen von 8 Bällen auf einer Waage stellen, um herauszufinden, welcher der schwerste ist. Das Problem bei solchen Fragen ist, dass es sich um Glück handelt. Einige sind jedoch recht einfach, es sollte eine Mindestanforderung sein.

Ein großartiger Programmierer zu werden, kann die Moral anderer Programmierer verbessern. Ein Lawsy-Programmierer kann die Moral aller anderen senken.

Nachdem die Leute solche Fragen beantworten können, was sehr einfach ist, würde ich sie dazu bringen, einen Google-Jam-Code zu schreiben.

Gute Programmierer können Google Jam Code lösen und vorhersagen, welche Probleme einfacher sind.


2

imho du bist ein guter programmierer wenn

- Sie haben einen fundamentalen theoretischen Hintergrund. In den meisten Fällen ist es Zeitverschwendung, das Rad sowie einen Algorithmus oder ein Framework neu zu erfinden.

-sie können manchmal Dinge und Probleme aus einer verzerrten Perspektive sehen. Dies kann dazu führen, dass Sie innovative Lösungen finden.

- Sie investieren Zeit, Geld und Mühe, um die besten Tools und Fähigkeiten auf den neuesten Stand zu bringen.

-Ihr Code ist leicht zu ändern. Wenn Sie sauberen, eleganten und verständlichen Code entwerfen, ist es nicht schmerzhaft, ihn zu modifizieren.

-Wenn Ihre Code / Bugs-Rate recht hoch ist. Ich weiß, dass dies trivial erscheinen mag, aber ich kenne viele kreative und erfahrene Entwickler, die dennoch sehr anfällig dafür sind, triviale Fehler zu machen. dies beeinträchtigt ihre Wirksamkeit und Nützlichkeit erheblich.

- Die Menschen in Ihrer Umgebung wissen, dass Sie bei der Entscheidung helfen können, welche Entscheidungen zu treffen sind

-Sie können Probleme mit verschiedenen Werkzeugen lösen. Schlechte Programmierer verwenden weiterhin dasselbe Tool (sei es eine Sprache oder eine Technologie oder eine Architektur usw.) für jedes Problem, das sie haben

- Du lernst weiter, du bist neugierig.

-Sie haben Spaß am Programmieren, nach all den Jahren


2

"Sir, ich habe es von Alpha bis Omaha durchgemacht, und ich sage Ihnen, je weniger ein Mann weiß, desto größer ist der Lärm, den er macht, und desto höher ist das Gehalt, das er befiehlt." Mark Twain

... meine Schlussfolgerung ist, dass gute Programmierer ein niedriges Gehalt haben und wenig Lärm machen ... :)


2

Bester Programmierer: Beenden Sie die Aufgabe mit der geringsten Anzahl von Code-Anweisungen rechtzeitig.


1

Wie viele Fehler hat Ihr Code pro Metrik? (dh Fehler pro Zeile) Wie viel Code muss neu codiert werden, wenn neue Funktionen hinzugefügt werden müssen? Haben Ihre Mitarbeiter Probleme, Ihren Code zu ändern?

Letztendlich ist die Frage so gut wie unmöglich zu beantworten, da die Frage "Was ist Qualitätscode?" Nach all den Jahren immer noch ein heiß diskutiertes Thema ist.


1

Mir gefällt wirklich, was Adam V oben gesagt hat.

Sehen Sie sich zusätzlich zu den Aussagen anderer die Wartbarkeit und den Supportverlauf Ihrer Arbeit an. Wenn Ihr Code hohe Wartungsanforderungen hat und ständig repariert wird oder schwer zu ändern ist, können diese Indikatoren für seine Qualität sein. Dies können aber auch Indikatoren für schlechte Anforderungen sein.


1
"Dies können aber auch Indikatoren für schlechte Anforderungen sein." höchstwahrscheinlich unser Fall hier. Aufgrund der schlechten Anforderungen haben wir ein ganzes Modul neu geschrieben.

1

Es ist sehr schwer, sich selbst einzuschätzen. Inkompetente Menschen neigen dazu, wild überhöhte Einschätzungen ihrer eigenen Fähigkeiten zu haben.

Eine gute Messgröße ist, ob andere Personen, die Sie als Programmierer selbst respektieren, mit dem von Ihnen geschriebenen Code arbeiten möchten. Wenn Sie die Möglichkeit haben, direkt mit Ihnen zu arbeiten oder den von Ihnen geschriebenen Code zu erben, lehnen Sie diesen dann ab? Widerwillig zustimmen? Oder nutzen Sie die Chance, von Ihrer Arbeit zu lernen? Diese Technik funktioniert sogar noch besser, wenn es sich um einen Gleichaltrigen handelt, nicht um einen Untergebenen oder jemanden, der denkt, dass es für ihn von Vorteil sein könnte, wenn Sie sich gut fühlen.


1

Wenn Sie es wirklich herausfinden möchten, senden Sie Ihren Kollegen einen Code und fordern Sie eine (konstruktive) Überprüfung des Codes an. Im schlimmsten Fall lernst du etwas. Die bloße Tatsache, dass Sie hier auf dieser Seite sind und nach Erleuchtung suchen, unterscheidet Sie bereits von den ungewaschenen Massen. (es sei denn, du bist nur zum Streicheln des Egos hier. :-)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.