Was sollte jeder Programmierer wissen?


245

Unabhängig von den verwendeten Programmiersprachen oder Betriebssystemen oder der Umgebung, für die sie entwickelt wurden, was sollte jeder Programmierer wissen?

Einige Hintergrundinformationen:

Ich bin daran interessiert, der beste Programmierer zu werden, den ich kann. Als Teil dieses Prozesses versuche ich zu verstehen, was ich nicht weiß und würde mir sehr helfen, wenn ich es täte. Obwohl es Unmengen von Listen gibt, die "n Dinge, die jeder Entwickler von [Programmiersprache einfügen] wissen sollte", muss ich noch etwas Ähnliches finden, das nicht auf eine bestimmte Sprache beschränkt ist.

Ich erwarte auch, dass diese Informationen für andere von Interesse und von Nutzen sind.

Antworten:


636

Wie man Stolz schluckt und Fehler zugibt, ohne sie persönlich zu nehmen.


60
Das ist etwas, das jeder Mensch unabhängig von seiner Arbeit tun sollte (... Geschlecht, Religion, Kultur, sozialer Status ...), meinst du nicht auch? ;)

3
Oh ja. Aber wir Programmierer (zumindest ich) neigen dazu, offeneren Stolz zu haben als die meisten :-)

17
Ich wünschte, ich könnte dich zweimal wählen.

4
Ich denke, das habe ich an der Universität gelernt. In der Highschool war ich immer eines der klugen Kinder. Wenn ich nicht zu Uni gegangen wäre, hätte ich gedacht, ich wäre ziemlich schlau und hätte ein großes Ego. Als ich zu Uni ging und mit Leuten interagierte, die wirklich besser als ich waren, wurde mir geholfen, zu sehen, wie dumm ich war
Kibbee,

4
Dies ist zwar sehr richtig, aber das Problem ist nicht immer eine Ablehnung oder ein großes Ego, sondern die möglichen Konsequenzen, wenn man offen zugibt, Fehler gemacht zu haben, zumindest nicht ohne eine Art Selbstverteidigung / Schadensbegrenzung. Manchmal ist es eine kulturelle Sache. :)

309

Wie man wie ein Benutzer denkt und nicht wie ein Techie-Geek-Programmierer.


2
Ich finde es immer ironisch, dass das, was den meisten von uns in der Branche fehlt, eine der wichtigsten Fähigkeiten sein kann: Kommunikationsfähigkeiten.

Konnte dem nicht mehr zustimmen. Dies sollte # 1 sein.

23
Ich stimme nicht zu. Dafür stellen Sie Leute ein. Sie werden niemals in der Lage sein, wie ein Benutzer zu denken, aber Sie können sich mit Sicherheit von Leuten sagen lassen, was Benutzer zu diesem Ratschlag denken und handeln. Fragen Sie die Benutzer einfach nicht, wie sie denken! Das ist die schlechteste Option von allen.

1
Sie können andere Leute damit beauftragen, aber wenn Ihr Entwicklungsteam verstehen kann, wie ein Benutzer denkt, haben Sie viel weniger Argumente und Iterationen, bevor die Dinge richtig sind. Plus, wenn ein Entwickler wie ein Benutzer denken kann, der weiß, welche neuen Funktionen er einfallen wird

3
Der Benutzer kann sehr wohl ein Techie-Geek-Programmierer sein, aber weniger wahrscheinlich ein Techie-Geek-Programmierer, der auch den Code implementiert hat . Wenn die Anwendung sehr subtile und komplexe Semantiken / Verhaltensweisen aufweist, ist die Person, die den Code geschrieben hat, möglicherweise die einzige Person, die verstehen kann, wie die Anwendung verwendet wird ...
Reuben

244

Wann um Hilfe zu bitten und wann NICHT um Hilfe zu bitten.


2
So wahr. In letzter Zeit ist die Antwort in meinem Kopf aufgetaucht, als ich jemanden gefragt habe. :(
kevindaub

Also, was ist die Antwort?)

28
Fragen Sie zuerst Ihr Gummi-Entchen. Wenn er Ihnen nicht helfen kann, fragen Sie einen anderen ...
Dean Rather

3
empört, weil ich zu Beginn nicht wusste, wie sehr ich andere Entwickler störte, indem ich sie ständig nach einfachen Dingen fragte, die ich selbst herausfinden sollte, bis ich von n00b veranlasst wurde, mir das anzutun.

1
Ich stelle mir immer eine Frage nach dem Motto "Was würde mein Kollege sagen, wenn ich ihn fragen würde?". Normalerweise hilft mir das dabei, das Problem ein wenig zu lösen, bevor ich dann tatsächlich fragen muss.

184

Wie man den Code anderer Leute liest.


102
Nachtrag: Wie man Code schreibt, den andere lesen können

42
Nachtrag Nr. 2: Lesen Sie Ihren eigenen Code 6 Monate später

10
@ Nathan Koop: Es sollte besser sein, "wie man Code schreibt, damit man ihn 6 Monate später selbst lesen kann".
Doc Brown

4
Wenn es 6 Monate her ist, ist es bereits der Code eines anderen. In dem Sinne, dass Sie sich seitdem weiterentwickelt haben, besser geworden sind und es genauso gut jemand anderes sein könnte, der es zuerst geschrieben hat, also behandeln Sie es als solches.
MPelletier

7
Anhang Nr. 3: Lesen Sie Ihren Code 6 Minuten später.
Mpen

152

Vertrautheit mit Versionskontrollsystemen. Es muss nicht jeder sein, aber die grundlegenden Konzepte, die auf alle angewendet werden können, sollten bekannt sein.


und diese
Versionskontrolle

4
Ich möchte hinzufügen, dass es einen hinreichend großen Unterschied zwischen zentralisierten SCMs (z. B. Subversion, CVS) und verteilten SCMs (z. B. Git, Mercurial, Bazaar) gibt, dass es wichtig ist, jeweils einen davon zu lernen.
Intuited

128

Hier sind meine 10 Bits:

  • Wie man demütig ist Wir sind alle hier, um zu lernen. Sie sind vielleicht schlauer als andere, aber es gibt viele Menschen, die schlauer sind als Sie.
  • Informationen studieren / konsumieren. Ich weiß nichts über dich, aber ich lerne für immer! Bücher, das Internet, was auch immer!
  • Was ein Wörterbuch ist und wie man es benutzt und wie man Akronyme schnell herausfindet.
  • Was sind die grundlegenden Werkzeuge des Handels und was tun sie (IDE, CVS et al.).
  • Kennen Sie die gängigen Begriffe und deren Bedeutung: Entwurfsmuster, Benutzerfreundlichkeit, Test (ha!), Stapel usw.
  • Verständnis für OOP.
  • Seien Sie "fähig" in mindestens einer Sprache, nichts Erstaunliches, wissen Sie nur, wie man Variablen und Methoden identifiziert usw. Von hier aus können Sie SCHNELL lernen.
  • Verstehen Sie, dass Menschen letztendlich Software verwenden und diese Menschen glücklich machen wollen.

38
Dies muss ein oktaler Beitrag sein.
Auch Mien

10
Zum ersten Teil ... "Sei nicht so demütig, du bist nicht so toll".
Magnus

@TheOtherScott, schön fangen lol, aber ich sagte eigentlich 2 Bits: D;)

3
Zu Punkt 3: www.acronymfinder.com
Jasper Bekkers

1
@ Jasper / Intuited: Geben Sie einfach das Akronym in Google ein und es wird das eine oder andere hervorgehoben ... Die Antwort befindet sich normalerweise in einem der ersten 10 Ergebnisse. Weitere Informationen erhalten Sie durch Anklicken!
Mpen

104

Vielleicht ist es zu subtil, aber ich betrachte es als "zu wissen, welches Problem zu lösen ist". Viele Programmierer (und normale Leute) geben sich große Mühe, Dinge zu lösen, die einfach nicht sehr wichtig sind. oder sie schaffen eine Lösung mit viel zusätzlicher Arbeit, die nicht ganz das ist, was benötigt wird.


4
Einverstanden ist die Sorge um Rand-Use-Case-Szenarien, auf die nur eine Handvoll Benutzer stoßen werden, eine allzu häufige Falle! Ich lerne das immer noch auf die harte Tour ...
Ian Robinson

Ich sollte einen Link zu Ihrer Antwort als Homepage meines ehemaligen Teamleiters setzen. du hast so recht

4
Ich finde es toll, dass du "viele Programmierer (und normale Leute)" gesagt hast :-)

95

Wie man sich entspannt. Es ist das Geheimnis der Produktivität.

Schließlich sind Willenskraft und Koffein nicht genug. Diese ständige Kontraktion ist sehr schädlich.

Das ist eine große Sache.


1
Was meinst du mit Kontraktion?

4
@Egg: Manchmal, wenn ich arbeite, kann ich völlig entspannt und sehr produktiv sein. An meinen schlechten Tagen bekomme ich Adrenalin und Koffein und spüre eine enorme Anspannung in meinem Körper. Wenn ich genau aufpasse, ziehe ich tatsächlich einige Muskeln zusammen. Ich merke diese Spannung andauernd bei anderen. Leider kann es zu allen Arten von Problemen wie Burnout und Herzerkrankungen kommen, und es führt wahrscheinlich auch zu einem Nettoproduktivitätsverlust, da das Sprinten nur für eine begrenzte Zeitspanne möglich ist. Das ist die Kontraktion, von der ich spreche.
Brian MacKay

@Ei, er bedeutet Kontraktion nicht genutzter Muskeln.

2
Wo wir gerade von Kaffee und Kontraktion sprechen: Wussten Sie, dass Kaffee die Arterie schrumpft und das Gehirn mit Blut versorgt? Das Gehirn wacht auf. Kaffee ist doch nicht so gut. trinke Wasser
Reno

83

Grundlegende Datentyp- und Algorithmus-Theorie. Dinge wie Big O-Notation, Arrays, Warteschlangen usw.


Hilft Ihnen überhaupt nicht, wenn Sie nur Vorlagen für Web-Content-Management-Systeme erstellen.

3
Nun, heutzutage sind Standardalgorithmen in den Bibliotheken / Frameworks implementiert, aber ich stimme zu, dass ein gewisses Denken wie bei einem harten Algorithmus nützlich ist, aber nicht sehr oft

7
Nur weil sie bereits implementiert sind, heißt das noch lange nicht, dass Sie nicht verstehen müssen, was wann zu verwenden ist, was Komplexität garantiert usw. Dies ist das wichtige Material hinter den Algorithmen.

3
Einverstanden mit Greg Rogers. Möglicherweise müssen Sie die Algorithmen implementieren, aber Sie verstehen deren Komplexität und Kompromisse besser. Z.B. Einige Algorithmen benötigen mehr Speicher, sind jedoch schneller.

6
Sie werden nicht wissen, welche Sie verwenden sollen, wenn Sie sie nicht verstehen. Algorithmen sind sehr wichtig.

60

Wie man das richtige Werkzeug für die richtige Aufgabe auswählt und nicht an dummen Flammenkriegen um seine Lieblingsprogrammierwerkzeuge teilnimmt.


+1 damit dieser nicht bei 42
bleibt

54

Nun, hier ist meine .02 $:

  • Das Lernen hört nie auf. Egal wie gut Sie denken, dass Sie sind, es gibt immer jemanden, der besser ist als Sie, und es gibt immer etwas, das Sie an sich selbst verbessern können. Wenn Sie aufhören zu lernen, werden Sie zwangsläufig als Programmierer herabgesetzt. Bücher lesen. Blogs lesen. Sprechen Sie mit anderen Programmierern.
  • Versuchen Sie, mehrere Sprachen zu lernen. Mindestens einer von ihnen ist objektorientiert. Außerdem sollten Sie etwas über verschiedene Technologien in Bezug auf die Sprache wissen, die Sie lernen (z. B. Wenn Sie Java lernen, wäre es schön, wenn Sie etwas über Spring und so weiter wüssten.).
  • Refactoring. Früher oder später wirst du dieses Wissen brauchen.
  • Erfahren Sie, wie Sie mit altem Code umgehen.
  • Schreiben Sie Komponententests. Erfahren Sie mehr über TDD.
  • Lernen Sie im Team zu arbeiten.
  • Schreiben Sie eleganten und lesbaren Code. Wie das alte Sprichwort sagt: "Schreiben Sie Ihren Code so, als ob die Person, die ihn pflegen wird, ein psychotischer Serienmörder ist, der weiß, wo Sie leben."
  • Lerne, faul und diszipliniert zugleich zu sein. Gute Programmierer besitzen beide Eigenschaften. Wie seltsam es scheint, widersprechen sie sich nicht, sondern ergänzen sich.

Sind das Ihre 0,02 Dollar oder 0,02 Cent? LOL! :-D

"Schreiben Sie Ihren Code so, als ob die Person, die ihn pflegen wird, ein psychotischer Serienmörder ist, der weiß, wo Sie leben." +1
Ben

50

Sie können die Qualität eines Produkts nicht testen.


2
So haben "Qualitätssicherungsprofis" den falschen Namen.

1
Technisch gesehen ist QS und Test nicht dasselbe, obwohl ich Ihrer Meinung nach nicht sicher bin, ob die meisten Organisationen den Unterschied tatsächlich praktizieren.
Tall Jeff

5
Kürzlich angetroffen - und festgefahren: "Das Ergebnis des Testens ist nicht Qualität, sondern Wissen".
Peterchen

richdiet: SQA-Experte James Bach glaubt, dass das "A" in SQA / QA für "Assistance" stehen sollte. Ich stimme seiner Meinung und Ihrer Aussage voll und ganz zu.

44

Jeder Programmierer sollte Designmuster verstehen .


13
Ich würde hinzufügen, dass sie auch ein Verständnis brauchen, dass nicht alles in ein bestimmtes Designmuster eingepasst werden kann.
Loach

10
Ich möchte auch hinzufügen, dass nicht jeder Programmierer Designmuster verstehen sollte. Es gibt Sprachen in fernen Ländern, deren andere Merkmale so mächtig sind, dass Gedanken direkt aus dem Programmierer in Arbeitsprogramme fließen. Absichtliche Muster sind in diesen Sprachen eine Fehlleitung.
Ali

2
Design Patterns sind für Desinger und nicht für "Programmierer" - ein Programmierer muss wissen, dass, wenn er / sie ein "Designer" wird

10
Es gibt zwei Arten von Menschen. Menschen, die gerne codieren, und Menschen, die es vorziehen, über Codierung zu sprechen. Design Patterns ist ein Muss für die zweite Gruppe ..
Björn Reppen

1
Solche Muster sind ein Weg, um Einschränkungen von Sprachen zu überwinden. Ein Programmierer sollte sie nur verstehen, weil er die Schwächen seiner Sprachen verstehen und überwinden kann.

44

Ich bin ein bisschen spät dran, aber ich gehe mit dem Wissen von Edsger Dijkstra:

Neben einer mathematischen Neigung ist eine außergewöhnlich gute Beherrschung der Muttersprache das wichtigste Kapital eines kompetenten Programmierers.

Wenn Sie keinen guten Absatz schreiben können, können Sie wahrscheinlich auch keinen guten Code schreiben.


8
Dennoch bin ich erstaunt über die schreckliche Rechtschreibung, Grammatik und Zeichensetzung, die einige Programmierer beim Schreiben in natürlicher Sprache verwenden. Man könnte meinen, dass die tägliche Arbeit mit Systemen, die Rechtschreibfehler und ungültige Syntax nicht

1
@cheduardo, das liegt daran, dass Sie nach dem Kompilieren oder Ausführen eines Programms in den meisten Sprachen über Rechtschreib-, Grammatik- oder Interpunktionsfehler informiert werden, die dann leicht korrigiert werden können. Nicht so bei logischen Fehlern.
Inshallah

@Inshallah: es sei denn du tust etwas wie if (BlowUpTheSystem = 1). Zugegeben, bei einem ordnungsgemäßen Komponententest sparen Sie wahrscheinlich nur Zeit. Aber dann ist die Zeit ziemlich wichtig.
Intuited

2
Stimmen Sie zu ... hmm ... abzüglich des Teils "Muttersprache" kommunizieren einige von uns [leider?] Besser / klarer in unseren nicht-Muttersprachen.

39

Lassen Sie sich nicht zu emotional von einer bestimmten Technologie, einem bestimmten Betriebssystem oder einer bestimmten Sprache anstecken. Keine davon ist perfekt. Auf lange Sicht werden Sie sich wahrscheinlich wünschen, Sie könnten sich Ihre eigene Speisekarte daraus zusammenstellen wie über jeden anderen.

Stellen Sie sich das wie ein Auto vor - Sie haben vielleicht noch nie ein bestimmtes Auto gefahren, aber alle haben Schlüssel, Lenkräder, Gaspedale und Bremsen - Sie sollten in ein Auto einsteigen und schnell losfahren können, wenn Sie wissen, was wo ist. Behandeln Sie Betriebssysteme und Sprachen gleich und konzentrieren Sie sich darauf, die grundlegenden Konzepte zu erlernen, die ihnen zugrunde liegen, selbst wenn Sie sich in den Schwierigkeiten befinden, die mit den Besonderheiten einer bestimmten Instanz verbunden sind.

Und versuchen Sie im Laufe der Zeit, die Herkunft, das Erbe und die Gemeinsamkeiten der verschiedenen Technologien zu verstehen und zu schätzen, die Ihnen dabei helfen, den Überblick zu behalten. Stellen Sie zum Beispiel fest, dass sich die Technologie im Laufe der Zeit immer wieder um „Best Practices“ und „Economies of Scale“ (Skaleneffekte) dreht, während sich der Evolutionsbaum aktiv verzweigt und voller Sackgassen ist PC unter der Haube in diesen Tagen ...).

Denken Sie auch daran, egal wie viel Spaß Sie damit haben, Technologie ist im Wesentlichen eine unvollkommene Linse zwischen dem, was Ihr Verstand sich vorstellen kann, und dem, was Sie tatsächlich produzieren. Gib dein Bestes, lerne zu lernen und bleibe anpassungsfähig ...



35

Dass der Tag, an dem Sie aufhören zu lernen, der Tag sein sollte, an dem Sie kein Programmierer mehr sind.


Wenn ich einen Wunsch hätte, wäre der Weihnachtsmann mein Vater.

Weil der Weihnachtsmann ...?

1
Der Tag, an dem du aufhörst zu lernen, sollte der Tag sein, an dem du stirbst. :)
Trotzdem

Also, um für immer zu leben, musst du immer weiter lernen? Jetzt gibt es eine Idee, die ich unterstützen kann!
canadiancreed

34

Unit Testing und Debugging.


Der erste macht den zweiten überflüssig. ;-)

4
Nein, wenn der Komponententest fehlschlägt, muss ein Debugging durchgeführt werden. Die beiden gehören zusammen.
Zan Lynx,

Kann das nicht genug betonen.
Fastcodejava

33

Es wurde bereits erwähnt, aber ich denke, es verdient seine eigene Antwort.


Ich stoße immer häufiger darauf, und ich sammle hier und da Stücke, aber ich bin noch nicht einmal ein Amateur.

Ich stimme vollkommen zu. Es sieht seltsam und schwierig aus, wenn Sie es nicht verstehen, aber wenn Sie es verstehen, ist es so viel einfacher als eine Tonne Teilzeichenfolge / Index von Funktionsaufrufen, die erforderlich wären, um dasselbe zu tun. Ich würde nur sicherstellen, dass Ihre Muster gut kommentiert sind.
Kibbee

9
Einige Leute denken, wenn sie mit einem Problem konfrontiert werden: "Ich weiß, ich werde reguläre Ausdrücke verwenden." Jetzt haben sie zwei Probleme. - "Jamie Zawinski": jwz.livejournal.com , in comp.lang.emacs
Bjorn Reppen

Die Verwendung eines Editors, der im Grunde genommen um sie herum aufgebaut ist, ist ein guter Weg, um die bösen Dinge zu lernen. Ich habe Erfahrung mit vim, bei dem ein größtenteils vergleichbares Äquivalent zu den De-facto-Standard-PCREs verwendet wird, aber ich habe den Eindruck, dass in der Emacs-Welt dieselben Regeln gelten.
Intuited

1
Einige Leute denken, wenn sie mit einem regulären Ausdruck konfrontiert werden: "Ich weiß, ich zitiere Jamie Zawinski." .
Donal Fellows

29

Niemand möchte Software benutzen. Sie wollen, dass Probleme gelöst werden.


7
Genau. Wenn ich Entwickler höre, die versuchen, die Datenbank einem Endbenutzer als Antwort auf ihre Frage zu erklären, warum etwas nicht getan werden kann, zucke ich zusammen. Sie müssen nicht wissen, wie wir Sachen machen. Sie wollen nur, dass es funktioniert. Und so sollte es auch sein.
Kevin Fairchild

Ich mag es zu glauben, dass man Software schreiben kann, die die Leute gerne benutzen.

Konnte nicht mehr zustimmen. Dies gilt jedoch auch für APIs. Niemand möchte neue APIs lernen, weil es so verdammt lustig ist. Wir wollen die Funktionalität der API, nicht den Code, den sie darstellt.
Blub

Kevin, ich wünschte, unser "Implementierungsprogrammierer" (nobles Wort für Test-Typ) würde das lesen und verstehen. Auch ich sitze hinter meinem Schreibtisch und hoffe, dass die Welt ihn verschluckt, während er über Schleifen und if-Anweisungen an Endbenutzer spricht.

27

Kaffee und IntelliSense sind Ihre besten Freunde aller Zeiten.


Ich wünschte, ich könnte mehr als 1 positive Bewertung abgeben!
Dinah

Ich hoffe, mehr Kaffee zu haben !!!! ñ_ñ

Ich denke, ich bin damit mehr einverstanden als mit jeder anderen Sache auf SO.
Unkwntech

Ich trinke praktisch nie Kaffee, es sei denn, ich muss unbedingt ein Projekt in X Stunden abschließen, wenn: Anzahl der verbrauchten Stunden + X> 8 für einen Tag.
Blub

Kaffee gibt dir keine Energie. Es drückt nur einige aus Ihren internen Reserven. Das ist schlecht / ungesund.
Andrei Rinea

18

Wie man ein großes, kompliziertes Objekt beobachtet und in kleine, einfache Objekte zerlegt, die beim Zusammensetzen immer noch die gleiche Aufgabe erfüllen.


18

Vertraue niemals einem Benutzer ( besonders wenn die App öffentlich ist!), Er wird oft alles in seiner Macht Stehende tun, um deine App auf die eine oder andere Weise zu beschädigen.

Machen Sie es zukunftssicher und erweiterbar - Sie wissen nie, wann Sie es in ein paar Jahren erweitern möchten, und erkennen, wie viel Aufwand es kosten würde, schlecht erstellten Code neu zu codieren.


1
Dies ist zu verallgemeinert. Ein bisschen Pragmatismus ist auch gut.
Mafu

18

Dass der Programmierer nicht alles weiß und immer versuchen sollte, neue Sprachen / Technologien usw. zu lernen.


16

Die Grundlagen für gutes UI-Design und Kommunikationsdesign (auch bekannt als Grafikdesign) .

Ich sehe so viele Apps und Projekte, die durch schlechtes Design oder schlechte Bedienbarkeit ruiniert wurden. Schon das Erlernen der Grundlagen kann einen großen Unterschied machen. Darüber hinaus sind die visuellen Problemlösungstechniken (z. B. die visuelle Kommunikation eines Konzepts) eine anregende Herausforderung, die Ihre Augen für neue Sichtweisen öffnen sollte, die sich wiederum auf Ihren Code auswirken sollten.

Ein empfohlenes Buch ist The Non-Designer's Design Book von Robin Williams

Das sagt Joel Spolsky dazu :

Beeindruckend! Jeder muss Grafikdesign machen, und nicht jedes Software-Team hat den Luxus professioneller Designer. In diesem ausgezeichneten, dünnen Buch erhalten Sie einen Überblick über die Prinzipien des Seitenlayouts, der Schriftarten usw. Die gute Nachricht ist, dass Sie es in der Badewanne lesen können, bevor das Wasser kalt wird, und am nächsten Tag Ihre Dialogfelder und Powerpoints und Webseiten werden besser aussehen.


1
Ich werde dies mit einem zusätzlichen Nicken an die „Gestaltung alltäglicher Dinge“ anschließen. amazon.com/Design-Everyday-Things-Donald-Norman/dp/0385267746
Stimul8d

14

Jeder Programmierer sollte schnell lernen können. Oftmals werden Sie aufgefordert, eine Technologie zu entwickeln, die Sie noch nie verwendet haben. Möglicherweise haben Sie eine Woche Zeit, um auf die Beine zu kommen (wenn Sie Glück haben), bevor Sie aufgefordert werden, Code in Produktionsqualität zu schreiben.


Ich begann meinen ersten Programmierjob und schrieb innerhalb einer Woche Code, der irgendwann live gehen würde. Zum Glück lerne ich schnell und habe bereits Programmiererfahrung. Innerhalb von 6 Monaten hatte ich die Client-Server-Verbindung umstrukturiert, um die Leistung um das Dreifache zu verbessern. Dies war in einer Sprache, die ich noch nie benutzt hatte.

14

Versionskontrolle. Und um meine Freundin zu zitieren: "Ich möchte nicht, dass du den Abwasch machst, ich möchte, dass du es magst !"


10

Die Anforderungen ändern sich, Ihr Code muss angepasst werden, und Sie müssen ihn möglicherweise anpassen.

Es gab mehrere Fragen hier zu Themen im Zusammenhang , die davon betroffen sind.


10

Aus meinem Kopf:

  1. Sehr wenige Programmierprobleme erfordern neben Addition, Subtraktion, Multiplikation und Division auch Mathematik. Wenn Sie Kalkül verwenden möchten, um ein Problem zu lösen, prüfen Sie die Alternativen ausführlich, bevor Sie dies tun.

  2. Jedes Mal, wenn Sie erraten, wie etwas funktionieren soll, machen Sie es falsch. Es ist nicht deine Aufgabe, telepathisch zu sein.

  3. Die Person, die Ihnen die Spezifikation gibt, weiß selten alles, was sie will, bis Sie es herausgefunden haben.

  4. Mehr als die Hälfte davon, ein großartiger Programmierer zu sein, kommt aus dem Umgang mit Menschen. Die Interaktion mit Ihrem Team, die Verwaltung Ihres Managers und die Feinabstimmung des Endbenutzers sind die halbe Miete.

  5. Guter Code ist so geschrieben, dass er von anderen gelesen werden kann, wie er von Ihrem Compiler gelesen werden muss.

  6. Best Practice und praktische Realität werden mehr in Konflikt geraten als der Programmierer denkt, aber weniger als der Manager. Wenn sie sich in einem Konflikt zu befinden scheinen, liegt es an Ihnen, den Konflikt abzugrenzen und zu verstehen und sich dann dem Praktischen hinzugeben. Die subtile und clevere Lösung ist nur dann besser als die hässliche, brutale, wenn sie auf lange Sicht kostengünstiger ist.

  7. Gute Tools können keine guten Programmierer sein, aber schlechte Tools machen uns genauso schrecklich.

  8. Schauen Sie niemals auf eine Technologie herab, sondern suchen Sie immer nach der besten Alternative.

  9. Je mehr Sprachen Sie kennen, desto besser sind Sie in der Sprache, die Sie verwenden.

  10. Lassen Sie sich nicht durch das langsame Hineinkriechen von programmierorientierten Gedanken in Ihren Alltag stören. Selbst wenn wir nicht an einem Computer sitzen, leiden wir alle unter Bandbreitenbeschränkungen, haben Leistungseinbußen durch Taskwechsel und müssen Dinge aus dem Backup-Speicher laden. Computer sollen menschliches Denken imitieren und die Analoga sind überall.


Nummer 10 brachte mich zum Lachen. So oft werde ich bei der Arbeit an einem Problem arbeiten, aber erst um 22 Uhr im Bett finde ich die Antwort!

9

Das Lesen des Codes anderer Leute wird Ihr Gehirn nicht verderben, sondern herausfinden, warum Sie es nicht so gemacht hätten (ob besser oder nicht, ist eine andere Frage).

So können Sie gedankenexperimente programmieren und gelegentlich finden Sie jemanden, der etwas Besseres umsetzt! Wie in viel besser.

Diese Antwort erweitert sich natürlich auf das Lesen Ihres eigenen Codes und erweitert sich daher auf die Verwendung der Versionskontrolle und von DIFF und damit auf 42.

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.