Was ist der absurdeste Mythos über Programmierprobleme?


101

Anders ausgedrückt ... Was ist das häufigste und frustrierendste Missverständnis in Bezug auf das Programmieren, auf das Sie gestoßen sind?

Welche verbreitet und langjährige Mythen / Missverständnisse findet man schwer für Programmierer zu zerstreuen / korrigieren .

Bitte erklären Sie, warum dies ein Mythos ist.


24
Ich würde gerne sehen, dass Mythbusters einige davon übernehmen.
Spong

8
Hast du Lust auf einen YouTube-Kanal von Mythbuggers? :-)
Tamara Wijsman

1
Ooooh, MythBusters und Rennbedingungen! Meesa gefällt!

@ TomWij das wäre toll, eine Website mit einem solchen Namen zu haben!
Junior M

Antworten:


272

Da Sie ein Programmierer sind, wissen Sie, wie Sie den von Viren befallenen Computer von [Person] reparieren.


34
Auto-Analogie / Ausstiegsklausel: "Ich bin Rennfahrer, kein Mechaniker."
Peter Boughton

15
Dieser Comic ist relevant: theoatmeal.com/comics/computers
lunixbochs


21
@ Tim, wenn sie kochen kann, fangen Sie an, sie freiwillig für die Partys Ihrer Freunde zu engagieren
Steven A. Lowe

19
Es ist nicht so, dass ich nicht weiß, wie man ... Es ist so, dass ich keine Stunden damit verschwenden möchte, Ihre Maschine zu reparieren, dass Sie sowieso in 2 Wochen kaputt gehen.
ChaosPandion

267

Eine übliche HR-Sache, die mich bei der Arbeitssuche verrückt macht: die implizite Annahme, dass alle Programmierkenntnisse sprachspezifisch sind, dass es keine Software-Engineering-Expertise gibt, die über Befehlssätze hinausgeht. Diese zehn Jahre Erfahrung in Java und fünf weitere in Perl bedeuten, dass Sie für ein Projekt, das beispielsweise C # verwendet, völlig unbrauchbar sind.

"Ja, es gibt eine Lernkurve. Aber ich habe schwierigere Übergänge als diese gemacht. Ich mache einen Deal, bezahle mir 80% für den ersten Monat und am Ende dieser Zeit, wenn ich nicht ... oh Warten Sie, wir führen diese Unterhaltung nicht wirklich, weil Ihr HR-Affe einfach meine Bewerbung gelöscht hat. "


91
+ INF für HR-Affen.
Rusty

67
Ich wurde von einem HR-Mitarbeiter abgelehnt, weil ich wusste, wie C # funktioniert, aber er suchte jemanden, der in dotNet codieren konnte.
burnt_hand

11
@burnt_hand: Ja, ich kenne dotNet. Ich kenne auch Excel und Internet Explorer. Kann ich jetzt einen Vertrag abschließen?
Alan Plum,

Ich stimme zwar zu, dass es große Überschneidungen mit Syntax, Struktur, SDLC usw. zwischen Java und C # gibt, aber wie wird es Ihnen gehen, wenn Sie in Ihrem Interview einen einigermaßen kniffligen C # -Test durchführen?
JBRWilkinson 16.10.10

2
@Kyralessa - Ich denke, dass ich jetzt genug über die zugrunde liegende Theorie des Rechnens und die Funktionen von Computern weiß, um in keiner Programmiersprache grundlegende Fehler zu machen. Ich kann die Dokumentation lesen. Eine sprachspezifische Einstellung mit begrenzten technischen Kenntnissen / Fähigkeiten / Fähigkeiten führt jedoch zu grundlegenden Fehlern in der Struktur, dem Design, der Korrektheit, der Skalierbarkeit, der Zuverlässigkeit und der Wartbarkeit des Programms, deren Behebung möglicherweise hohe Kosten verursacht. Wenn Sie in der Zwischenzeit aufgrund der schlechten Qualität der Software nicht alle Kunden verlieren (vorausgesetzt, Ihr Projekt kommt tatsächlich voran).
Flamingpenguin

261

Wenn Sie nicht tippen, arbeiten Sie nicht.

Ich glaube, Zombiestarren und Kaffeespaziergänge sind unverzichtbar, wenn Programmierer Dinge in ihren Köpfen organisieren wollen.


9
Bild auf, Bild ab ... Bild auf, Bild ab ...
Adolf Knoblauch

139
Ich werde nicht für das Tippen bezahlt, sondern für das Denken. Ich schreibe als Bonus.
Kevin


11
Aus diesem Grund schätze ich freiberufliche Online-Märkte, die die Aufnahme von "Arbeitszeiten" mit einem Screengrabber und einer Webcam anbieten, nicht besonders. WTF? Wenn Sie der Meinung sind, dass mein Angebot gut ist, warum interessiert es Sie, was genau ich in der Zeit mache, für die ich Gebühren erhebe?
Alan Plum

10
"Wenn ich mehr Zeit zum Codieren hätte, würde ich weniger Zeilen schreiben." - Abe Lincoln Zitat ausziehen.
JeffO

158

dass Sie ein spätes Projekt beschleunigen können, indem Sie einfach mehr Leute darauf werfen.


28
Ah, aus dem Monat des mythischen Mannes. en.wikipedia.org/wiki/The_Mythical_Man-Month
spong

2
Eigentlich können Sie. -1 (ja, siehe ein Mythenträger!)
P Shved

63
Wir verwenden ein buntes Sprichwort: "Sie können nicht 9 Frauen in einen Raum stecken und in einem Monat ein Baby bekommen."
Walter

10
Letzte Woche haben wir 4 Personen ohne Projekterfahrung hinzugefügt, um einen unrealistischen Zeitplan zu "unterstützen". Der Bericht dieser Woche aus dem Projekt führte zu höheren Managementlisten: "Planungsfehler Ursache: Verringerte Effizienz aufgrund der Lernkurve neuer Teammitglieder" und "Wiederherstellungsplan: Weitere Personen hinzufügen, wenn sich Gelegenheiten bieten". Unglaublich.
AShelly

7
@Walter, aber du kannst in 9 Monaten 9 Babys haben und in 7 Jahren eine kleine Baseballmannschaft.
Huperniketes

132

Diese Schreibsoftware ist einfach.

Wie sonst erklären Sie all diese Projekte, die über die Zeit und das Budget laufen und die Menschen (Politiker, Medien usw.) sind immer noch überrascht, und Kunden beschweren sich, wenn Sie ihnen mitteilen, dass ihre "kleine Website" (oder was auch immer) tatsächlich 6 benötigen wird Monate für die Entwicklung und Kosten von mehreren tausend Dollar (Pfund, Euro, [Währung Ihrer Wahl einfügen])

Bei unklaren und sich ständig ändernden Anforderungen finde ich es manchmal erstaunlich, dass jede Software jemals fertig wird!

Ich weiß, dass es etwas komplizierter ist;)


11
Und dann versuchen sie, die Entwicklung zu billigeren Offshore-Alternativen zu führen. Erst viel später stellte sich heraus, dass es noch teurer wurde. Und weniger von dem, was sie wirklich brauchten, aufgrund der physischen Trennung und der Kommunikationsprobleme zwischen dem Entwicklungsteam und dem Kunden.
7wp

1
Dies ist nicht nur ein Problem für Manager, sondern auch für Programmierer. Das eigentliche Problem besteht in der Regel darin, dass die Zeit, die nicht aktiv mit dem Schreiben von Code verbracht wird, häufig verpasst wird (möglicherweise aufgrund des weit verbreiteten LOC = Productivity Quantification Mythos).
Alan Plum

3
Es ist nicht so, dass sich die Anforderungen geändert hätten, es ist einfach nicht das, was sie wollten.
JeffO

1
Ich hatte jemanden, der die Programmierung als "nur ein Bündel von" if "-Anweisungen" abtat. OK, vielleicht ist es ... in diesem Fall ist Poesie "nur eine Ansammlung von Worten" ... Filmproduktion ist "nur eine
Ansammlung

2
Ich habe für den Typ Manager gearbeitet, der dachte, das Programmier-Bit sei der einfache Teil des Jobs. Und nein, er hatte selbst keine Programmiererfahrung.
Captain Sensible

114

Die Komplexität der App ist direkt proportional zur Komplexität der Benutzeroberfläche. Mit dieser Überlegung sollten Sie in der Lage sein, Google oder Twitter über ein Wochenende aufzubauen.


2
das ist wahr, ich könnte Twitter und Google an einem einzigen Wochenende bauen. Es ist nicht ihre Software, die komplex ist; Für Google ist es der Suchalgorithmus (der eher mit einer Codebibliothek oder einem Datenbanktreiber vergleichbar ist), und Twitter (bis zu den letzten 1,5 Jahren) war außerordentlich einfach, nur die Skalierbarkeit und Datenbankprobleme waren komplex. Jetzt, da es komplexer ist (mehr Mitarbeiter erfordert), verfügt es auch über eine viel komplexere Benutzeroberfläche und viele weitere Benutzeroberflächen.
Orokusaki

3
Ich glaube, ich habe es auf Joel Spolskys Blog gelesen, aber in dem Artikel wurde nur erwähnt, dass der Fortschritt der Benutzeroberfläche im Verhältnis zum Back-End-Fortschritt steht. Auf diese Weise können Sie den spitzen Typen, die zu dumm sind, um zu verstehen, dass die meisten Programme viel mehr als nur eine Augenweide sind, eine realistische Einschätzung des Fortschritts geben.
Evan Plaice

3
1+ Es gab eine Zeit, in der ich meinem ehemaligen Chef ein SharePoint-Projekt (ein mehrsprachiges Addon) vorstellte, nachdem ich stundenlang an dem komplexen Backend-Code gearbeitet hatte. Das Endergebnis war, dass in der Benutzeroberfläche nicht viel getan wurde, was meinen Chef zu der Annahme veranlasste, dass in dem Projekt nicht viel getan wurde. Das hat mich angepisst. Er war nicht derjenige, der stundenlang an der Tastatur saß und versuchte, die Kuriositäten von SharePoint sowie die Textersetzungslogik zu umgehen.
Jason Evans

1
Hassen Sie nicht, wenn eine große, fast unmögliche Anfrage lautet: "
Können

Ich frage mich, was ich in den letzten Jahren gemacht habe. Alle Projekte, an denen ich hauptberuflich gearbeitet habe, sollten in kürzester Zeit abgeschlossen sein, da sie überhaupt keine Benutzeroberfläche hatten. :-)
Bart van Ingen Schenau

95

Alle Programmierer können gut rechnen. :-)


Kommentatoren : Kommentare dienen der Klarstellung und nicht der ausführlichen Diskussion. Wenn Sie eine Lösung haben, hinterlassen Sie eine Antwort. Wenn Ihre Lösung bereits veröffentlicht wurde, stimmen Sie sie bitte ab. Wenn Sie diese Frage mit anderen diskutieren möchten, verwenden Sie bitte den Chat . Weitere Informationen finden Sie in den FAQ .

Ich denke, die Fähigkeiten in Mathematik hängen irgendwie mit den Programmierkenntnissen zusammen.
Diego

@Diego: Obwohl dies nicht unbedingt bedeutet, dass alle Programmierer trotzdem gut in Mathe sind.
Omega

95

Jedes Teenager-Kind, das mit Computern hackt, ist einem erfahrenen Arbeitsprogrammierer gleichgestellt (oder überlegen).

Mein 14-jähriger Neffe kann gut mit Computern umgehen und ich bezahle ihm 10 US-Dollar pro Stunde, um meinen Rasen zu mähen. Warum soll ich dir sechs Ziffern bezahlen, um das nächste FaceBook zu schreiben?


5
Sie befinden sich wahrscheinlich in ihrer eigenen Umgebung, dh sie arbeiten nach ihren eigenen Maßstäben. Stellen Sie sie in ein Team, in dem sie kommunizieren müssen, und das ist der Punkt, an dem sie leiden.
Adolf Knoblauch

36
Gegenfrage könnte sein: "Was würden Sie ihm bezahlen, um Ihr Haus zu bauen?"

7
Ein Kind, das keine Qualifikationen hat, aber einen ordentlichen Code schreibt, kann Mr. Spaghetti jeden Tag schlagen.
Zaz,

13
Ich beschuldige Hollywood dafür
MAK

6
Als ich anfing, hatte ich erwartet, dass das, was ich selbst unterrichtet und an der Uni gelernt hatte, nur der Anfang sein würde, und ich würde mit erfahreneren Leuten arbeiten, die bessere Programmierer und sachkundigere Entwickler waren, und ich würde lernen viele von ihnen. Die Erfahrung hat mich etwas anderes gelehrt. Es ist absolut wichtig, aber ohne Können und Leidenschaft ist Erfahrung nur Zeitverschwendung.
Peter Boughton

69

Das heißt Echtzeit schnell.

Die Aussage „Die Pakete in Echtzeit verarbeitet werden müssen.“ ist wertlos und der böse Zwilling antwortet: "Wie schnell muss X passieren?" mit "echtzeit" ist das evtl. weniger als wertlos ... eher an der grenze dumm als ahnungslos.

Echtzeit bedeutet, dass die Funktion Y immer X-mal benötigt und jede Abweichung auf einen schwerwiegenden Fehler hinweist. Die Dauer von X definiert nicht "Echtzeit", sondern kann sechs Mikrosekunden oder sechs Tage betragen. Dass Sie bestimmen können, dass die Funktion Y X-Zeit benötigt, definiert "Echtzeit". Echtzeitsysteme sind nach dieser Definition deterministisch.

Also hör auf damit.


echtzeit =
zeitnah

4
Ich habe immer gedacht, Echtzeit bedeutet, dass alles, was gerade passiert, so geschieht, wie Sie es benötigen, und nicht, dass es sich um einen Zeitverweis handelt.
burnt_hand

14
Dies ist wahrscheinlich nur einer der Fälle, in denen ein falsch benanntes Konzept zu Verwirrung führt.
JohnFx,

2
@ JohnFx Gut ausgedrückt. Konzepte brauchen Kontext.
Rusty

2
@Richard: Tatsächlich dauert iTunes immer ein paar Minuten, bevor etwas abgespielt wird. Oh, das hast du nicht gemeint?
Konfigurator

69

Warum schreibt ihr es nicht einfach gleich beim ersten Mal richtig, anstatt so viel Zeit damit zu verbringen, fehlerhaften Code einzugeben und dann später den Code zu lesen, um die Fehler zu finden?

:-) :-) :-) :-)


34
Ehrlich gesagt, das ist eine gute Frage. Die einfachste Möglichkeit, Code zu verbessern, besteht darin, ihn zum ersten Mal zu schreiben.
DJClayworth

10
Wir haben eine Einstellung in der App-Konfiguration: <add Key = "Bugs" Value = "true" />
burnt_hand

1
@DJClayworth - das funktioniert nicht immer. In einigen Fällen ist das Problem so groß, unklar oder einfach nur schwer, dass es zu viel ist, wenn man sich beim ersten Mal auch nur "richtig" nähert. In einem solchen Fall ist es besser, einen "ersten Schnitt" zu schreiben, der nicht völlig falsch ist, als Tage / Wochen / Monate damit zu verbringen, endlos zu entwerfen und neu zu entwerfen, um es beim ersten Mal richtig zu machen.
Stephen C

Dies könnte die Laienversion von "Warum macht ihr nicht TDD?" Sein. Was, um fair zu sein, eine verdammt gute Frage ist, wenn auch für die Entwicklung der realen Welt zu einfach.
Dan Ray

1
@Stephen C: Ja, aber es gibt einen Unterschied, ob man es größtenteils richtig macht (anstatt vollkommen richtig), oder ob man größtenteils alles richtig macht, um es einfach zum Laufen zu bringen. Ich weiß, das ist nicht das, was du gesagt hast, aber ich denke immer noch, dass es gesagt werden muss.
Nr. 1

65

Wenn Sie nicht zur Universität gegangen sind, sind Sie für den Job nicht geeignet


27
Außerdem: Ein Programmierer mit einem Abschluss ist besser als ein Programmierer ohne und sollte dementsprechend bezahlt werden. Das gleiche gilt wahrscheinlich für Ageismus und Sexismus. Diese Art von Unsinn macht mich wütend - wenn Sie nicht wissen, wie man guten Code schreibt, ist es mir egal, wohin Sie gegangen sind und was Sie getan haben. Dies kann ein weiterer Fall sein, in dem die Programmierer- / Nerd-Kultur (Skill == Autorität) mit der Unternehmenskultur (Rang == Autorität) kollidiert.
Alan Plum

1
Und doch scheinen die Lehrkräfte an der Universität auch zu glauben, dass sie das Verhalten von Programmierern und Projekten verallgemeinern können, indem sie beobachten, wie Schüler zusammenarbeiten. Die Mitteilungen des ACM reichen für 4-6 solcher Artikel pro Jahr.
MIA

1
@Billy Wie wäre es hier, wo ein Hochschuldiplom Jack bedeutet, aber ein Universitätsdiplom Ihnen alles gewährt? Beide gehen zur Schule, beide sind wohl besser als die anderen, aber es gibt einen soziologischen Unterschied
Tarka

4
@Billy: In Kanada werden Sie von der Universität mit einem Abschluss und von Colleges mit Diplomen ausgezeichnet. Colleges sind eher "Schulen, in denen man praktische Dinge lernt". Denken Sie an ein Community College in den USA im Vergleich zu einem normalen College / einer normalen Universität. Hier haben sie in der Regel zwei Jahre spezialisierte angewandte Programme. Sie können keinen Bachelor (Master, etc.) von einem College bekommen. Grundsätzlich würden Sie studieren, wie man Software schreibt, und studieren, wie man Informatik studiert. Hochschulabschlüsse werden bei der Einstellung viel stärker bevorzugt.
Adam Lear

4
Die Universitäten lehren mindestens eine wichtige Sache: die Denkweise . Das ist sehr wichtig, aber diejenigen, die das nicht wissen ... nun, wissen das nicht.

61

Diese vorzeitige Optimierung bedeutet, dass Sie überhaupt nicht optimieren sollten. Ich habe mehr schrecklich schlechte Datenbanken gesehen, weil niemand die Leistung (kritisch für jedes Datenbanksystem) beim Design berücksichtigen wollte, da dies eine vorzeitige Optimierung war als jedes andere Problem beim Datenbankdesign. Quatsch, es gibt bekannte Performance-Killer, verwenden Sie sie nicht mehr als erste Wahl.

Ein weiterer Mythos ist, dass es zu schwierig ist, die Datenbank umzugestalten. Nein, aber Sie müssen überlegen, wie Sie Refactoring in der Entwurfsphase durchführen können, um es effektiv durchzuführen. Übrigens: Je länger Sie auf die Behebung dieses störenden designbasierten Leistungsproblems warten, desto schwieriger wird es, es zu beheben.

Ein weiterer böser Mythos ist, dass Datenbankdesign die OOP-Prinzipien widerspiegeln sollte. Nein, Datenbanken funktionieren mit Mengen, nicht mit OOP-Prinzipien. Einige OOP-Dinge verursachen schreckliche Performance-Probleme und andere sind in Bezug auf die Datenbank einfach nur schmerzhaft.

Schließlich sollten Sie die Datenintegrität in der Anwendung erzwingen. Datenbanken halten länger als die Anwendung und verlieren die Regeln, wenn die Anwendung ersetzt wird. Mehrere Anwendungen greifen auf sie zu, und häufig müssen direkte Abfragen ausgeführt werden, um Probleme zu beheben, die die Anwendung nicht durchlaufen. Ich habe noch nie eine Datenbank gesehen, die sich weigert, die Datenintegrität in der Datenbank mit guten Daten durchzusetzen.


+1 insbesondere für die Kommentare zu Datenbank-Integritätsprüfungen.
Frank Shearar

+1 Speziell für den letzten Absatz. Ich habe diese Trommel mehr als einmal geschlagen.
Binary Worrier

5
+1 für den ersten Absatz. Vorzeitige Optimierung ist die Wurzel allen Übels; Schlechten Code ohne blutigen Grund zu schreiben ist noch schlimmer.
Konfigurator

3
"Einige OOP-Dinge verursachen schreckliche Performance-Probleme und andere sind in Bezug auf die Datenbank einfach nur albern" - könnten Sie sagen, welche? Ich weiß über OOP Bescheid, aber nicht viel über Datenbanken, und es interessiert mich, wie weit ich Ideen von einer Seite zur anderen tragen kann.
Tom Anderson

@HLGEM Mich würden auch die Beispiele interessieren, über die sich @Tom wundert ...
Armand,

53

Dass es eine mythische Quelle für absolute Best Practices gibt.

Eine Abweichung kann niemals gerechtfertigt werden.

Kein Dokument, das behauptet, etwas als Best Practice zu definieren, kann jemals in Frage gestellt werden.


1
Besser ein Teammitglied als Ihre Manager ...
Bill

5
Können Sie mir das Dokument weiterleiten?
AShelly

1
Stimme voll und ganz zu. Wen interessiert es, wenn Sie Tabulatoren und Leerzeichen in Python-Code mischen?
Zaz

4
@Josh - jemand, der Ihren Quellcode mit einer Toolkette anzeigen muss, die eine andere Vorstellung davon hat, wo sich die Tab-Positionen befinden.
Stephen C

1
Ich interpretiere "Best Practice" als "Ich kann das nicht rechtfertigen". Ich benutze es auf jeden Fall so.
Tom Anderson

51

Die Tatsache, dass das Marketing zu glauben scheint, dass das Hinzufügen einer Tonne kleiner Features weniger Arbeit bedeutet als das Hinzufügen eines einzelnen, aber ziemlich umfangreichen Features. Dies ist wahrscheinlich ein spezifischerer Fall für das Missverständnis, dass "Task-Switching keinen Overhead hat".


12
Und noch lustiger ist es, wenn man keine Ahnung hat, welche Funktionen einfach und welche so gut wie unmöglich sind.
Derobert

4
@derobert Genau, ich habe oft die Erfahrung gemacht, dass einige der rücksichtsvolleren Marketing-Leute in der Tat Angst haben, sich nach einer einfachen / einfachen Funktion zu erkundigen, deren Implementierung sie für sehr schwierig hielten. Obwohl ich das Gegenteil viel häufiger erlebe: Hier ist eine Reihe von X "einfachen" Funktionen, die wir bereits an den Kunden verkauft haben. Bitte erledigen Sie diese bis gestern ....
Giel

50

Dieser kommentierende Code ist unnötig oder "guter Code braucht keine Kommentare". Manchmal müssen Sie erklären, was ein komplexes Stück Code bewirkt. Darüber hinaus können Sie durch Kommentieren von Codeabschnitten das Lesen viel effektiver überfliegen.


14
@ DisgruntledGoad - Es ist jedoch wahr. Das Missverständnis in diesem "Mythos" beruht auf der Tatsache, dass zu viele Programmierer ihren monolithischen verwirrenden Code als "gut" betrachten. if user.is_logged_in: print('Welcome')braucht keinen Kommentar.
Orokusaki

3
@orokusaki Nicht jeder Algorithmus ist so einfach.
Jouke van der Maas,

25
@orokusaki Sie verwechseln "guter Code braucht keine Kommentare" mit "einfacher Code braucht keine Kommentare". Guter Code ist nicht immer einfach.
DisgruntledGoat

3
@Jouke van der Mass: natürlich. Es ist jedoch egal, wie komplex der Algorithmus ist, das Ziel ist es, den Algorithmus einfach auszudrücken. dh guter Code drückt komplexe Algorithmen, Regeln und Optimierungen auf einfache und eindeutig verständliche Weise aus. Einfache Dinge einfach auszudrücken ist vergleichsweise einfach. Komplexe Dinge einfach auszudrücken ist das, worauf es ankommt.
Flamingpenguin

2
@orokuskai: guter Code ist einfach. Die Dinge, die es tut, mögen komplex sein, aber die Einfachheit (Eleganz) des Codes macht es meiner Meinung nach gut! Natürlich macht Code viele andere Dinge, und Müllcode kann Ihnen viel Geld einbringen. Aber mein Ziel ist es, einfachen Code auch in komplexen Situationen zu schreiben.
Flamingpenguin

50

Der schlimmste Mythos: Wenn Sie lange programmieren, können Sie leicht ein Projektmanager sein.

Und dass Sie Projektleiter werden sollten, wenn Sie schon lange programmieren.


3
Oder noch schlimmer: Wenn Sie noch nie ein Programmierprojekt programmiert oder verwaltet haben, lesen Sie ein paar Bücher und lassen Sie Software auf magische Weise entstehen. Ich war mit einer früheren PM auf diesem Weg und möchte es nicht wiederholen, solange ich lebe.
Evan Plaice

4
Schlimmer noch: Da alle großen Programmierer im Team lieber Code als Berichte schreiben, sollten wir den mittelmäßigen Programmierer zum Projektmanager befördern. Der Gedanke ist, dass er "technisch genug" sein wird. Tatsache ist, dass er letztendlich ein Desinformationsfilter zwischen dem Team und dem oberen Management ist.
AShelly

2
Außerdem: Wenn Sie der beste Programmierer sind, sollten Sie natürlich Projektmanager werden und von diesem Zeitpunkt an keine eigentliche Programmierung mehr durchführen! Nein, vielen Dank, aber ich werde trotzdem die Gehaltserhöhung in Anspruch nehmen. Hinweis: Ich spreche nicht davon, Leitender Programmierer zu werden, sondern von den Managern, die es für eine clevere Idee halten, alle auf ein ausreichendes Maß an Inkompetenz zu bringen.
Alan Plum

1
Ist auch als Peter-Prinzip bekannt. en.wikipedia.org/wiki/Peter_Principle
Spoike

In der Tat gut gesagt
Michael Easter

50

Wenn wir in unserem Projekt etwas anderes als Java, C # und C ++ verwenden, werden wir keine Programmierer finden, die dies unterstützen.


Ich hatte noch nie davon gehört, aber es ist gültig. Natürlich würde es passieren, wenn Sie eine obskure Sprache verwenden.
Maniero

5
@bigown, "obskur"? Wie dunkel? Ist TCL dunkel? Haskell? Pascal (Delphi)? Python? Ich denke, sie sind nicht dunkel. Viele Leute denken, dass sie es sind, und nur ein sehr enger Satz von Sprachen (C ++, C # und Java) ist für eine "ernsthafte" Entwicklung zulässig.
P Shved

5
@bigown: oh, du meinst obskur wie COBOL? : p
AnonJr

2
Ich habe einmal für eine kleine Firma gearbeitet, die Objective-C-Code unter Linux entwickelt hat. Der CEO, der kein Ingenieur war, aber über ein gewisses technisches Wissen verfügte, konnte nicht glauben, dass es ObjC-Programmierer gab oder dass es jemand anderes benutzte. Tatsächlich hatten sie nie Probleme, gute Entwickler einzustellen.

4
Ich habe ein Argument gelesen, dass genau das Gegenteil zutrifft: Für Sprachen, die dunkel (oder zumindest kommerziell unbedeutend), aber cool, unterhaltsam und interessant sind (was in diesem Zusammenhang Python und Ruby bedeutete), gibt es mehr Programmierer als Jobs. Außerdem sind sie alle Leute, die auf coole, lustige und interessante Sprachen stehen, also müssen sie schlau sein. Wenn Sie also in Python arbeiten, fällt es Ihnen leichter, intelligente Programmierer einzustellen, als wenn Sie in Java arbeiten. Ich weiß nicht, ob ich es glaube, aber es ist mindestens so plausibel wie die orthodoxe Idee!
Tom Anderson

42

Java ist nur C ++ mit verschiedenen Klassen.


57
+1 Ich wurde einmal von einem Interviewer gefragt: "Was ist der Unterschied zwischen C ++ und Java?" Also habe ich einige Unterschiede aufgelistet. Nativer Compiler vs. JVM, ANSI-Standard vs. proprietär, Garbage Collection, Classloader usw. Er brüllte: "FALSCH! Es gibt keinen Unterschied! Sie sind identisch!" Er war kein Student, er war der technische Leiter.
Bill Karwin

11
@Bill, meine Antwort wäre dann: "Warum dann mit ganz anderen Namen auf sie verweisen?"
Jesse C. Slicer

2
@Bill, du hast den Test also nicht bestanden und wurdest eingestellt?

20
Meine Antwort wäre "Auf Wiedersehen."
Foole

6
@Foole Meinst du nicht System.exit (1)?
Barry Brown


33

Wahrscheinlich das Gefährlichste, das ich je gesehen habe, weil es so schnell akzeptiert wird, ist, dass es gut ist, Code schnell zu schreiben. Je schneller Sie also [Feature hier einfügen] in einer bestimmten Sprache codieren können, desto besser ist die Sprache ist.

Dies ist ein ernstzunehmendes Beispiel für eine vorzeitige Optimierung, da viel mehr Arbeit in die Pflege des Codes als in dessen Erstellung investiert wird. Dies bedeutet, dass es viel wichtiger ist, Code zu schreiben, der einfach zu lesen, zu verstehen und zu debuggen ist, als Code, der einfach zu schreiben ist, und dass das Ermöglichen von einfach zu lesendem Code ein viel nützlicheres Maß für die Sprachqualität ist.


14
Genau das ist mit einem der Produkte passiert, für die ich arbeite. eilige entwicklung wurde als genial empfunden. Das Produkt sah in Ordnung aus und der Entwickler wurde vom oberen Management hoch gelobt. Ein anderer Junior-Entwickler wurde dann mit der Behebung eines "kleinen" Fehlers beauftragt und gab nach einer Woche des Versuchs, den Code zu verstehen, auf und bat einen Senior um Rat, der nicht glauben konnte, wie blöd der Code war. Die Weigerung des oberen Managements, dies zu akzeptieren, war zwei Jahre lang ein großes Problem.
Danach

4
Es gibt einen bekannten Mythos unter technischen Managern, dass Ihre erfahrenen Entwickler zehnmal produktiver sind als unerfahrene Entwickler. Das direkte Ergebnis dieses Mythos ist, dass jeder Entwickler, der Code schnell erstellen kann - egal wie fehlerhaft oder schwer zu warten -, Lob und Beförderung erhält.
RTPerson

3
Du BRAUCHST eine mächtige Sprache. Siehe Paul Grahams Diskussion über Sprachen und was Sie damit machen können: paulgraham.com/power.html

4
@ Thorbjørn: Ich habe diesen Artikel gelesen und Paul Graham hat sich geirrt. Er ist ein Verfechter von Lisp, also verdreht er die Fakten in eigennützige Argumente, damit Lisp gut aussieht. Vielleicht nicht einmal bewusst, da es wirklich nicht viel Verdrehen braucht. Es gibt eine Menge Überschneidungen zwischen Lesbarkeit und Prägnanz, wie er am Ende des Artikels betont. Aber die Schlussfolgerungen, die er zieht, stimmen überhaupt nicht mit dem Stand der Softwareentwicklung in der realen Welt überein. Ja, du brauchst eine mächtige Sprache, aber er misst die Macht anhand der falschen Kriterien und es ist schädlich zu glauben, was er sagt.
Mason Wheeler

3
@rtperson: Dass die Produktivität um den Faktor zehn variieren kann, ist kein Mythos. Dass Menschen, die schnell abschließen, notwendigerweise produktiver sind, ist.
David Thornley

31

Fertigungsunterricht kann auf den Softwareentwicklungsprozess angewendet werden.


6
Kommt auf den Unterricht an. Als ich in einer Matratzenfabrik arbeitete, stellten wir fest, dass ein Aufgabenwechsel für unsere Produktion schädlich ist. Ein bisschen wichtig, da wir durch die Anzahl der Matratzen bezahlt wurden und nicht durch die Stunde ... und eine Lektion, die aus den gleichen Gründen auch hier gilt.
AnonJr

Dies ist ein hartnäckiger Mythos, wenn Sie an einem Ort arbeiten, an dem hauptsächlich Hardware hergestellt wird. Die Reifen, durch die wir springen, um unsere Software in dasselbe Modell wie ein Hardware-Teil zu integrieren, sind erstaunlich ...
AShelly,

5
Die Herstellung von Software ist trivial. Es ist einfach, Kopien zu erstellen, und kostet nicht viel, um Millionen von Kopien zu erstellen. Dies führt dazu, dass die Leute das Fertigungsteil insgesamt ignorieren und versuchen, die Fertigung auf den Konstruktionsprozess anzuwenden.
David Thornley

+100 dafür, besonders Leute, die Wirtschaft studiert haben, denken dies
Kugel

1
Jeder sollte Jack Reeves lesen: developerdotstar.com/mag/articles/reeves_design_main.html - dies ist der Ursprung (oder zumindest eine frühe und aussagekräftige Aussage) der Idee, dass Quellcode ein Design ist, kein Produkt . Programmierer sind wie die Designer im Zeichenraum, nicht die Maschinisten in der Fabrik, und die Verwaltung der Programmierung muss wie die Verwaltung anderer technischer Entwürfe und nicht der Fertigung sein.
Tom Anderson

31

Als Programmierer wissen Sie alles über die neuesten Hardwaretrends, Übertakten, Gehäusemodifikationen usw. Freunde und Verwandte beraten Sie beim Kauf ihrer Ausrüstung.


5
Früher habe ich mich in der Schule über einige dieser Dinge aufgeklärt, aber heute finde ich, dass sie für meine Arbeit im Allgemeinen irrelevant sind, und während einige ordentlich sind, zahle ich lieber jemanden, der sich auskennt und die Zeit nutzt, die ich habe Speichern Sie tun, was ich mag (dh Schreiben von Code). Vielleicht ein anderes "gut mit Computern" Missverständnis.
Alan Plum

2
+1 oder eine geringfügige Abweichung - Da Sie ein Programmierer sind, verfügen Sie über einen wassergekühlten Super-Duper-300-LED-Lüfter, der die Spitze des brandneuen Sortiments darstellt, das ab Werk ausgeliefert wurde, bevor das Gehäuse herausgegeben wurde. Ähm nicht wirklich! Es ist eine anständig schnelle Maschine, in einem schwarzen, sehr billigen Gehäuse. Kümmere dich nicht wirklich darum!
Surgical Coder

Lach, da ist ein PM-Assistent bei der Arbeit, der zu Hause ein hochmächtiges Spielgerät hat und sich immer in den Dev-Bereich begibt, um zu fragen, ob er (Produkt A) oder (Produkt B) kaufen soll auch nimmt das Entwicklerteam alle auf 4Chan rumhängen, (was er tatsächlich tut.) - seufz
ocodo

+1 Wort. Das ist genau richtig. Ich bin ein Softwareentwickler und wurde so oft gebeten, das Internet von jemandem zu konfigurieren. Im Grunde ist alles, was ich tue, Versuch und Irrtum plus Google-Suche. Ich mag es am liebsten, wenn etwas völlig Unabhängiges kaputt geht, nachdem Sie jemandem einen Gefallen getan haben und es dann Ihre Schuld ist.
Anne Schuessler

30

Wenn Programmierer sagen, es sei sehr schwer / einfach unmöglich, denkt HR, dass sie faul und unmotiviert sind


2
Management mit
einbeziehen

Wenn Sie Nein sagen, denken sie, dass es schwierig ist, mit Ihnen zu arbeiten.
Captain Sensible

+100, und das mit genügend "Motivation", können sie Ihre Antwort ändern. Oder gehen Sie zu einem anderen [weniger erfahrenen] Entwickler und lassen Sie absichtlich die Hälfte der Details weg, um ihn dazu zu bringen, Ja zu sagen, um dann die Hälfte der Entwicklung hinter sich zu lassen und genau das Problem zu finden, vor dem Sie ihn gewarnt haben.
Wildpeaks

28

Es muss ein Open-Source-Programm für mein Unternehmen geben. Kannst du es nicht einfach herunterladen und an meine Anforderungen anpassen?


2
+1. Oh ja, was auch immer wir tun müssen, muss bereits in Open Source sein.
Sharptooth

7
Die meiste Zeit gibt es ... zumindest gilt das für die Webentwicklung.
WalterJ89

@ WalterJ89: Es mag dort sein, aber das heißt nicht, dass es eine gute Idee ist, es zu benutzen. Open Source bedeutet nicht automatisch guten Code.
Alan Plum

stimmt .. aber im Fall von Wordpress, Drupal, jQuery, ... kann es Bereiche geben, in denen kostenlos nicht großartig ist, wie E-Commerce, aber häufig ist das Web sehr offen, und ich finde, ich arbeite gerne mit Open-Source-Community weit mehr als ein Propietory-Helpdesk.
WalterJ89

7
Das Gegenteil ist auch ein Mythos. Dass Sie FOSS nicht verwenden können, um Ihre geschäftlichen Anforderungen zu erfüllen.
Endstation

27

Ich wurde von mehr als einer Person gefragt, wie es ist, nur in der Mitte des Gesprächs zu programmieren, um zu erkennen, dass sie glauben, wir programmieren direkt in Binärform oder mithilfe mathematischer Symbole.

Ich weiß nicht, ob ich diesen Mythos zerstreuen will, er lässt mich wirklich schlau aussehen!


6
Es hilft nicht, dass die meisten Leute nicht einmal wissen, was Programmierung wirklich ist ... sie haben diese vage Vorstellung, dass es Software erstellt ... aber sie haben keine klare Vorstellung, was Software ist ...
Spudd86

7
"Wir schreiben Strickrezepte". Großmütter neigen dazu, das zu verstehen.

Ich kenne Leute, die ein Programm in C schreiben und dann die leistungskritischsten Teile in Assembly wiederholen.
Zaz,

1
@Josh - es sei denn, es liegt ein Leistungsproblem vor, das scheint Zeitverschwendung zu sein.
JohnFx

1
@oosterwal - Assembly ist weder binär noch verwendet es mathematische Symbole.
JohnFx

26

Ich denke, das größte Missverständnis ist, dass es wichtiger ist, den Code einfach aufzuschreiben, als ihn lesen und verstehen zu können.


5
* v (int) (void) ++
Rusty

1
@Rusty: Ich kann mir viel, viel schlimmere Beispiele einfallen lassen, wenn ich nicht einmal syntaktisch korrekt sein muss.

4
Ahh, ja, "Nur schreiben" Code ...
Paddyslacker

24

Programmieren ist wie am Fließband. Sie arbeiten für eine bestimmte Zeit an einem Produkt (möglicherweise mit Kollegen) und versenden es schließlich. Genau wie beim Bau eines Hauses aus Ziegeln.

Contra: Programmierung beinhaltet viel Kreativität und Planung. Es ist Kunst. Wie der Maurer kennt auch ein Programmierer den Unterschied zwischen der Formgebung eines Ziegels und der Planung einer ganzen Kathedrale.


6
Stimmen Sie dem Unterschied zur Fließbandarbeit zu - aber in vielerlei Hinsicht sehe ich keinen großen Unterschied zum Hausbau.
Billy ONeal

24

Durch das Portieren eines Programms nach C ++ wird es automatisch schneller ausgeführt.


Ich würde mich auf andere niedrige Sprachen ausdehnen. Das Gegenteil ist möglich, wenn der Programmierer nicht weiß, was er tut.
Maniero

2
Eine weitere gängige Variante ist der Wechsel zu einer Client-Server-Architektur. "Ein Upgrade auf SQL beschleunigt meine App erheblich!" Nicht unbedingt.
JohnFx

Ja, es ist oft das Gegenteil. SQL-artige Datenbanken sind gut, um ACID zu sein, oder fast das, es kommt mit Preis. Das Schlimmste ist, dass das falsche Denken in Bezug auf SQL-Techniken die Leistung beeinträchtigen kann.
Maniero

6
Portierung nach C ++ / C für diejenigen, die in Python / Perl / Ruby / etc. Geschrieben sind. Portierung nach asm für diejenigen, die in C / C ++ geschrieben sind: P. Ich frage mich, wohin du portieren würdest? Entwerfen Sie es in die Hardware?
MAK


21

Jede Programmierumgebung mit einer Art visuellem Designer macht es so, dass Geschäftsbenutzer das Programm "schreiben" können und tatsächliche Programmierer nicht benötigt werden.


9
Ah ja. Es macht immer Spaß, wenn ein Unternehmen ein neues Authoring-Tool erstellt, um Programmierer überflüssig zu machen, und jeder, der es anwendet, hochbezahlte <Authoring-Tool> -Spezialisten damit beauftragt, es tatsächlich zu verwenden. Ein typisches Beispiel: Joomla! und all das Unsinn.
Alan Plum

HA HA HA HA HA HAAA HA +1 :)
Billy ONeal

Cobol bereits versucht, dass :)
Carra

20

OOP Wiederverwendung. Es ist der größte Fehlschluss, der in der Programmierung vermarktet wird.


1
Gut. Der HP XL WESM entspricht in etwa 85% dem Symbol WS5100 (OEMming ist im Gange). Möchten Sie, dass ich diesen Prozentsatz meines Überwachungs- und Konfigurationscodes kopiere und einfüge, damit doppelt so viele Fehler auftreten, oder möchten Sie, dass ich ihn von Grund auf neu schreibe und vierzigmal so lange und fünfmal so viele benötige? Oder werden Sie nur von einem dummen Management unter Druck gesetzt, das denkt, es sei eines von mehreren magischen Allheilmitteln, um $ project schneller zu machen?

1
Die Wiederverwendung im Kleinen wurde vor 40 Jahren und mehr gelöst. Die Wiederverwendung im Großen ist schwierig und wurde noch nicht gelöst, IMHO. Genau wie Robert Glass in Fakten und Irrtümer der Softwareentwicklung
MarkJ
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.