it-swarm.dev

Was sollte jeder Programmierer über Programmierung wissen?

Bitte, bleiben Sie bei technischen Fragen, vermeiden Sie Verhaltens-, kulturelle, berufliche oder politische Probleme.

52
Maniero
  1. Der Fehler befindet sich in Ihrem Code, nicht im Compiler oder in den Laufzeitbibliotheken.

  2. Wenn Sie einen Fehler sehen, der möglicherweise nicht auftreten kann, überprüfen Sie, ob Sie Ihr Programm korrekt erstellt und bereitgestellt haben. (Insbesondere, wenn Sie ein kompliziertes IDE oder Build-Framework verwenden, das versucht, die unordentlichen Details vor Ihnen zu verbergen ... oder wenn Ihr Build viele manuelle Schritte umfasst.)

  3. Gleichzeitige/Multithread-Programme sind schwer zu schreiben und schwerer richtig zu testen. Es ist am besten, so viel wie möglich an Parallelitätsbibliotheken und Frameworks zu delegieren.

  4. Das Schreiben der Dokumentation ist Teil Ihrer Arbeit als Programmierer. Überlassen Sie es nicht "jemand anderem".

EDIT

Ja, mein Punkt 1 ist überbewertet. Selbst die am besten entwickelten Anwendungsplattformen haben ihren Anteil an Fehlern, und einige der weniger ausgereiften sind mit ihnen weit verbreitet. Trotzdem sollten Sie immer zuerst Ihren Code verdächtigen und erst dann Compiler-/Bibliotheksfehler beschuldigen, wenn Sie haben. eindeutige Beweise dafür, dass Ihr Code nicht fehlerhaft ist.

In den Tagen, als ich C/C++ entwickelt habe, erinnere ich mich an Fälle, in denen sich vermeintliche Optimierungsfehler als Folge davon herausstellten, dass ich/ein anderer Programmierer Dinge getan habe, von denen die Sprachspezifikation sagt, dass sie undefinierte Ergebnisse haben. Dies gilt auch für vermeintlich sichere Sprachen wie Java; z.B. Schauen Sie sich das Speichermodell Java (JLS Kapitel 17) genau an.

92
Stephen C
  • Wie man den Code anderer Leute liest.
  • Code existiert nicht, wenn er nicht im Versionskontrollsystem aktiviert ist.
84
pramodc84

Gleitkommaberechnungen sind nicht genau.

76
Chinmay Kanchi

Hör nicht auf zu lernen.

63
systempuntoout

Das Wichtigste, was Sie tun können, um die Qualität und Wartbarkeit Ihres Codes zu verbessern, ist REDUCE DUPLICATION.

44
Chris Holmes

Fähigkeiten zur Fehlerbehebung und zum Debuggen

Sie verbringen kaum Zeit mit diesem Thema in einem der Programmierkurse, die ich besucht habe, und meiner Erfahrung nach ist es eine der größten Determinanten dafür, wie produktiv ein Programmierer ist. Ob es Ihnen gefällt oder nicht, Sie verbringen viel mehr Zeit in der Wartungsphase Ihrer App als in der neuen Entwicklungsphase.

Ich habe mit soooooo vielen Programmierern zusammengearbeitet, die durch zufälliges Ändern von Dingen debuggen, ohne eine Strategie zu haben, um das Problem überhaupt zu finden. Ich habe dieses Gespräch Dutzende Male geführt.

Anderer Programmierer : Ich denke, wir sollten versuchen zu sehen, ob es das Problem behebt.
Me : Okay, vorausgesetzt, das behebt das Problem. Was sagt Ihnen das darüber, wo die Ursache des Problems liegt?
Anderer Programmierer : Ich weiß es nicht, aber wir müssen etwas versuchen .

39
JohnFx
  1. Sei nicht schlau; klar sein.
  2. Vor der Wiederverwendung verwenden.
  3. Namen sind wichtig.
  4. Eine Funktion macht eine Sache und macht es gut.
  5. Klein ist besser als groß.
37
KevBurnsJr

Die Grundlagen. Derzeit lernen Programmierer Technologien, keine Konzepte. Es ist falsch.

34
clrod

Jeder Programmierer sollte wissen, dass er ständig Annahmen in den Code einfügt, z. "Diese Zahl ist positiv und endlich", "dieser Code kann jederzeit innerhalb eines Augenblicks eine Verbindung zum Server herstellen".

Und er sollte wissen, dass er sich darauf vorbereiten sollte, wenn diese Annahmen brechen.

26

Jeder Programmierer sollte über das Testen Bescheid wissen.

19
Tom Duckering

Lerne Konzepte. Sie können die Syntax googeln.

17
pramodc84

Kritisches und logisches Denken. Ohne das kann man nichts Gutes tun.

16
Mladen Prajdic
14
Carlos

Unit Testing. Dies ist eine großartige Möglichkeit, Ihre Annahmen darüber zu kodifizieren, wie der Code verwendet werden soll.

14
btlog
13
Maniero

Fachwissen. Die Spezifikation ist niemals 100%; Die Kenntnis der tatsächlichen Domain, für die Sie entwickeln, erhöht IMMER die Qualität des Produkts.

13
Steven Evers

Das ist schwieriger als du denkst.

Während es einfach (ish) ist, etwas zusammenzustellen, das bei normaler Verwendung funktioniert, ist die Bewältigung fehlerhafter Eingaben, aller Edge- und Corner-Fälle, möglicher Fehlermodi usw. zeitaufwändig und wird wahrscheinlich der schwierigste Teil des Jobs sein.

Dann müssen Sie die Anwendung auch gut aussehen lassen.

13
ChrisF

Zeiger natürlich. :) :)

11

Daten sind wichtiger als Code.

Wenn Ihre Daten intelligent sind, kann der Code dumm sein.

Dummer Code ist leicht zu verstehen. Smart Data auch.

Fast jede algorithmische Trauer, die ich jemals hatte, war darauf zurückzuführen, dass Daten am falschen Ort waren oder von ihrer wahren Bedeutung missbraucht wurden. Wenn Ihre Daten eine Bedeutung haben geben Sie diese Bedeutung in das Typsystem ein.

11
Gonzales

Code Complete 2 - von Abdeckung zu Abdeckung

11
Kyle B.

Welche Sprache und Umgebung eignet sich am besten für den Job? Und es ist nicht immer dein Favorit.

10
Dan Diplo

Teilen und erobern. Dies ist normalerweise der beste Weg, um alle Arten von praktischen Problemen von der Planung bis zum Debuggen zu lösen.

10
Rick Minerich

Wahre Fähigkeiten spiegeln sich in der Fähigkeit wider, ein einfaches Design gut auszuführen, und nicht in der Fähigkeit, ein kompliziertes Design überhaupt zum Laufen zu bringen.

Diese Fähigkeit beruht auf einer besseren Beherrschung der Grundlagen, nicht auf der Beherrschung des Arkanen. Ein hochkarätiger Programmierer wird nicht durch seine Fähigkeit definiert, zu codieren, was andere nicht können (unter Verwendung von Funktionen auf höherer Ebene, erweiterte funktionale Programmierung, was-hast-du), sondern durch seine Fähigkeit, perfekt weltliche Codierung zu verfeinern. Auswahl der geeigneten Zerlegung der Funktionalität zwischen Klassen; in Robustheit bauen; Verwendung defensiver Programmiertechniken; und mit Mustern und Namen, die zu einer besseren Selbstdokumentation führen, sind dies das A und O der hochkarätigen Programmierung.

Es ist von entscheidender Bedeutung, guten Code zu schreiben, auf den Sie oder eine andere Person in einer Woche, einem Monat oder einem Jahr zurückgreifen können, und zu verstehen, wie dieser Code verwendet, geändert, verbessert oder erweitert wird. Das spart Ihnen Zeit und geistige Anstrengung. Es schmiert die Produktivitätsräder, indem es Straßensperren beseitigt, über die Sie zuvor gestolpert wären (möglicherweise unterbrechen Sie Ihren Gedankengang oder nehmen sich Stunden oder Tage Mühe von anderen Arbeiten usw.). Es erleichtert die Konzentration auf die schwierigen Probleme und manchmal verschwinden die schwierigen Probleme.

Mit einem Wort: Eleganz. Jede Klasse, jede Methode, jede Bedingung, jeder Block, jeder Variablenname: Streben Sie nach Eleganz.

8
Wedge

Geben Sie dem Benutzer niemals die Schuld, was mit einer saubereren Benutzererfahrung oder einer besseren Dokumentation behoben werden könnte. Oft nehmen Programmierer automatisch an, dass der Benutzer ein Idiot ist, der nichts richtig machen kann, wenn das Problem eine schlechte Gesamterfahrung oder mangelnde Kommunikation ist. Programme sollen verwendet werden, und den Benutzer mit Verachtung zu behandeln, bedeutet, den Punkt der Programmierung an erster Stelle zu verfehlen.

8
user8

Jeder Programmierer sollte wissen, wie man den Debugger benutzt und wie man ihn benutzt gut.

6
Brian R. Bondy

So verwenden Sie Google

5
bruno077

Datenstrukturen

5
Maniero

Kurzschlussauswertung, obwohl dies eines der ersten Dinge ist, die Sie über boolesche Operatoren lernen.

Benutzerfehler sind nicht; Sie sind Usability-Fehler:

  • Gefährliche Funktionen sollten rückgängig machen sein und nicht nur gewarnt werden. Hier sehen Sie rm, das noch nicht mit dem Mülleimer funktioniert.
  • Machen Sie das am wenigsten schädliche Ding, wenn der Benutzer kaputt geht (ESC, Strg-C). Im Idealfall sollte sich das System im selben Zustand befinden wie vor dem Ausführen des Befehls. rm wieder.
  • Schädliche Optionen sollten weit entfernt von harmlosen sein. Wenn Sie mit der rechten Maustaste auf eine Datei im GNOME-Papierkorb klicken, wird "Dauerhaft löschen" direkt neben "Wiederherstellen" angezeigt :(

Nicht speziell auf GNU Tools oder GNOME), aber dies waren die einfachsten Beispiele.

4
l0b0

So schätzen Sie genau ab, wie viel Zeit ein Feature für die Implementierung benötigt. Noch wichtiger ist, wie Sie vermitteln können, dass Sie nicht beschissen sind, wenn Sie diese Schätzung einreichen.

4
wheaties

Codierungsstil ist wichtig:

  • konsistente Einrückungsangelegenheiten,
  • konsequente Nutzung von Leerzeichen (z. B. um Bediener),
  • konsequente Platzierung von {} s Angelegenheiten,
  • gut ausgewählte Kennungen sind wichtig,
  • usw.

... und gutes Design ist wichtig.

Im Idealfall lernt der Programmierer diese Dinge vor (oder während) seiner ersten Codeüberprüfung. Im schlimmsten Fall lernt der Programmierer sie, wenn der Chef ihn auffordert, in Eile einige nicht triviale Änderungen an einem schrecklichen Code vorzunehmen.

4
Stephen C

Apropos kommerzieller Softwareentwickler hier ... Offensichtlich nicht zutreffend für ein DOD-Sicherheitssystem oder einen Hedge-Fonds-Quant.

  • Konzentriere dich auf das, was funktioniert, nicht auf das, was klug ist, KISS.
  • Beachten Sie die 80/20-Regel und verbringen Sie nicht Ihre ganze Zeit damit, der Minderheit zu gefallen/sie zu verkaufen.
  • Nehmen Sie an einem Kurs in Datenstrukturen/Algorithmen teil.
  • Test, Test, Test.
  • Machen Sie sich keine Gedanken über Code, der sich in der Produktion befindet und gerade funktioniert. Es sei denn, Sie haben übermäßigen Cashflow und keine neuen Ideen. Dann ist es gut.
  • Die überwiegende Mehrheit Ihrer Zeit wird damit verbracht, die Cruft zu sortieren und keine interessanten Programmierprobleme zu lösen. Wenn Sie nicht interviewen, möchten die Leute nur sehen, wie Sie interessante Programmierprobleme lösen.
3
red-dirt

Dass es gibt -

1) Andere Programmierparadigmen jenseits von nur OO (Objektorientierung) 2) Andere bessere IDEs jenseits von Visual Studio (dieses ist speziell für Programmierer gedacht, die nur unter Windows und nur unter MS-Technologien gearbeitet haben)

3
Manoj Waikar

Wie der Computer wirklich funktioniert, Sprachgrundlagen, Algorithmen/Datenstrukturen, Algorithmusanalyse und ein gewisses Maß an Komplexitätstheorie.

3
Paul Nathan

Ich kann nicht glauben, dass dies nicht erwähnt wurde

Jeder Programmierer, der Salz wert ist, muss in der Lage sein, weltbereite Software zu produzieren.

Damit meine ich das Befolgen grundlegender Internationalisierungsprinzipien wie das Externalisieren aller Zeichenfolgen usw.

Ich kann nicht glauben, wie oft ich fest codierte englische Zeichenfolgen oder Dialoge mit abgeschnittenen Zeichenfolgen usw. gesehen habe, als das Produkt übersetzt wurde.

2
Jimmy Collins

Unit-Tests sind keine Wunderwaffe. Sie können immer noch Fehler einführen, falsche Tests schreiben und es sollte nicht die einzige Form von Tests sein, die Sie durchführen.

2
aqwert

Computer verstehen die Semantik nicht. Angenommen, Sie haben Folgendes:

var ferrari = new Ferrari();
ferrari.DriveTo(Places.Seattle);

Für den Computer können Sie auch verschiedene Typnamen verwendet und Folgendes verwendet haben:

var mxEEcceqs = new safHBBdueWE();
mxEEcceqs.HYBbQAW(n3dNm.pDojeW);

Das Benennen von Dingen ist sehr wichtig, aber machen Sie nicht den Fehler anzunehmen, dass der Computer weiß, was Sie "meinen", nur weil Sie Ihren Typ "Ferrari" oder Ihre Methode "DriveTo" genannt haben.

2
xofz

Reihenfolge der Ausführung.

Sie werden erstaunt sein, wenn Sie mit Programmierern gegen die Leute sprechen, die noch nie Code gesehen oder berührt haben, oder mit den vorgetäuschten Programmierern *, was sie nicht bekommen, ist die Reihenfolge der Ausführung. Wenn Sie jemanden treffen, der die Kontrollstrukturen nicht erfassen kann, sollten Sie diese Idee zuerst in den Kopf bekommen. Sie werden feststellen, dass sie danach schneller lernen.

* Ja, diese Leute, die in der Lage sind, Jobs als Programmierer zu bekommen, aber wenn Sie ihnen die einfachste technische Frage stellen, gehen sie Hirnfurz. Ich denke, wir haben alle eine davon getroffen.

2
Philip

Jeder Programmierer sollte die "Wissenschaft" in der Informatik kennen (Entwurfsmuster, Algorithmen, Objekte usw.). Wenn Sie das beherrschen, können Sie mit jeder Sprache programmieren, es ist nur eine Frage der Gewöhnung an die Syntax.

2
JD Frias

Was Lexing und Parsing sind, ist nur eine vage Übersicht in Ordnung. Besser noch, wenn Sie mit mindestens einem Parser-Generator-Framework vertraut sind.

Die meisten der schrecklichsten WTFs, die ich je gesehen habe, sind die benutzerdefinierten Parsing-Routinen der Leute. Schrecklich, anfangs zu codieren, schlimmer zu pflegen.

2
angusgr

Auswertung.

Ein Programmierer sollte wissen, wie die von ihm geschriebenen Anweisungen bewertet werden. a(line.of(code) is aSequenceOf(evaluations)) und wenn Sie nicht verstehen, wie diese Zeile nach jedem Schritt ihrer Auswertung aussieht, werden Sie als Programmierer in Ihrer Fähigkeit, Sprachfunktionen zu nutzen, extrem eingeschränkt sein.

Ich spreche nicht nur über das Grundlegende

if (bool == false):
    return true
else:
    return false

was natürlich nur durch return !bool ersetzt werden kann.

Ich beziehe mich auch auf die Fähigkeit, Ihre Sprache so weit zu verstehen, dass Sie sich so etwas einfallen lassen können:

string[] thingsToOutput;
for(int i = 0; i <= thingsToOutput.Length; print(thingsToOutput[i++]));    

Als ich eine solche Aussage zum ersten Mal sah, hat sie mich ein wenig umgehauen. Mir war nicht in den Sinn gekommen, dass ich die for-Schleife so nutzen könnte. Die Person, die diese Erklärung verfasst hat, hat die Möglichkeiten, die ihnen zur Verfügung stehen, besser verstanden - sie hat mehr offene Türen gesehen als ich, was ihnen mehr Freiheit und Macht bei der Gestaltung von Code gab.

Nun, ob es gut Code ist, ist ein Problem - ob eine dieser Türen sollte geöffnet werden - das steht zur Debatte. Es bleibt, dass mit großer Kraft kommt große Verantwortung.

2
doppelgreener

Dass Sie die Antwort auf diese Frage kennen, macht Sie nicht zum Programmierer

2
hplbsh

Grundlagen der Softwarelizenzierung

  • Der Unterschied zwischen einer "viralen" Copyleft-Lizenz (GPL) im Vergleich zu Apache, die für geschlossene Quellen geeignet ist, und nicht-viralem MS-PL/MS-RL.

  • Wann sollten Sie LGPL verwenden und wann nicht.

  • Lizenzkompatibilität. Beispielsweise können Sie eine moderne Apache-Lizenzbibliothek mit einem GPLv3-Code verknüpfen, nicht jedoch mit GPL 1 oder 2.

  • Wenn Sie den Quellcode vollständig besitzen, können Sie ihn unter so vielen (oder wenigen) Lizenzen veröffentlichen, wie Sie möchten.

Hinweis an S.O. Gemeinschaft:
Bitte bearbeiten Sie diese Antwort nach Belieben ... hauptsächlich für Informationen, die nicht für den Kommentarbereich unten geeignet sind.

2

Kryptographie. Sie müssen nicht in der Lage sein, Ihren eigenen Verschlüsselungsalgorithmus zu schreiben, aber Sie müssen ein grundlegendes Verständnis dafür haben, wie Verschlüsselung, Nachrichtenauthentifizierung und die PKI funktionieren. Ich habe zu lange mit blindem Versuch und Irrtum in diesem Bereich gekämpft. Kürzlich habe ich das Buch "Cryptography Engineering" (von Ferguson, Schneier, Kohno) aufgegriffen und es hat mir die Augen geöffnet.

2
Tobias

Kennen Sie Ihr Betriebssystem/Ihre Plattform, bevor Sie mit dem Codieren beginnen.

Wenn Sie Windows/Linux/Android/iOS usw. codieren, lernen Sie zunächst das Betriebssystem. Wenn Sie auf etwas anderes wie das Web abzielen, gilt dasselbe.

1
Amir Rezaei

schreibe Code für Leute!

keine magische Zahl mehr!

schreiben Sie nicht den gesamten Code in eine Zeile!

1
linjunhalida
  1. baue etwas, was die Leute wollen
  2. bauen Sie etwas, das Sie jeden Tag verwenden möchten
  3. wenn Sie Ihren Code nicht kommentieren, stellen Sie sicher, dass er sauber gelesen wird
  4. kommentieren Sie Ihren Code
1
Michael Ossareh

Es gibt keinen Fehler, der unmöglich auftreten kann.

1
Rayne

"Hallo Welt" ist keine vollständige Anwendung, da es keine nachgewiesene/programmatische Behauptung gibt, dass die Ausgabe tatsächlich "Hallo Welt" ist. Der Code ist erst vollständig, wenn er auf Einheit getestet wurde.

1
stimpy77

Einige davon wurden bereits veröffentlicht, aber hier ist meine Liste:

  • Bauen Sie auf die Anforderungen auf und fügen Sie keine Dinge hinzu, die Sie nicht benötigen, insbesondere wenn Sie "denken", dass Sie es tun werden. Wenn Sie es später benötigen, fügen Sie es dann hinzu.
  • So verwenden Sie die Google-Suche. Belästigen Sie Ihren Kollegen nicht, bis Sie nachgesehen haben.
  • Sei nicht schlau.
  • Es wird erst durchgeführt, wenn ALLE Anforderungen erfüllt, getestet, dokumentiert und in SVN eingecheckt wurden.
  • Richtige Kodierungsstandards, zB: Namenskonventionen
1
Tyler Egeto

Erfahren Sie, wie Sie Ihren Code, Ihre Tests und Ihr Softwarepaket gut bereitstellen.

Eine der schlimmsten Gewohnheiten von Entwicklern, die ich in der Industrie gesehen habe, ist die allgemeine Unkenntnis darüber, wie Sie Ihre Software in die Hände anderer Leute legen können. Hier sind einige schlechte Anzeichen:

Neue Entwicklungsumgebung-itus:

  • Ich wollte lernen Ruby, also haben wir unsere Sachen darin geschrieben, der Kunde und der Haupt-Build müssen jetzt eine Ruby-Umgebung) aufnehmen

Version-itus:

  • Unser Team ist auf die Compiler-Version X + 1 umgestiegen, weil es die neueste ist. Haben wir es niemandem erzählt?
  • Wir brauchen die Bibliotheksversion Y, oh, deine Sachen funktionieren damit nicht?
  • Wir haben eine wirklich alte Version getestet. Funktioniert sie nicht mit dem neuesten Build?
  • Wir haben eine spezielle Version des Kernels gehackt, damit die Version funktioniert

Nur-Binär-Itus:

  • Unsere Build-Umgebung ist wirklich kompliziert, wir geben Ihnen nur Binärdateien

Multi-Core-Itus:

  • Deaktivieren Sie SMP. Unsere Inhalte funktionieren nur in Uniprozessor-Umgebungen

Hardcodierter Feature-Itus:

  • Kommentieren Sie dieses #define aus, um Feature X zu aktivieren. Was möchten Sie damit zur Laufzeit?
1
tonylo

Einfachheit, Klarheit, Allgemeinheit. http://www.math.harvard.edu/computing/programming/rules.html

  • bauen Sie Systeme als Netzwerke einfacher Prozesse, die durch Muffen/Rohre verbunden sind
  • daten in einem einfachen Textformat austauschen: Sätze von Datensätzen von "Schlüssel: Wert" -Paaren oder TSV

"Das effektivste Debugging-Tool ist immer noch sorgfältiges Überlegen, gepaart mit vernünftig platzierten Druckanweisungen." BWK

1
user2137

Je mehr Sie über die Funktionsweise der Sicherheit auf der Plattform Ihrer Wahl wissen, desto besser.

1
Ripped Off

Verwenden Sie das richtige Werkzeug für den Job.

Der Programmierer ist das wichtige Element, und die Sprache und die Werkzeuge sollten basierend auf dem Problem ausgewählt werden. Hab keine Angst vor neuen Sprachen und Projekten.

1
1
Daniel Grillo

In der Programmierung wird nicht geweint!

1
Billy Coover
  1. ein gründliches Verständnis der Grundlagenkonzepte, z. Datentypen, Schnittstellen
  2. ein mittleres bis hohes Verständnis des Werkzeugs, das sie verwenden, z. spezifische .net/Java-Kenntnisse
  3. eine vernünftige Vorstellung von "den anderen Technologien, mit denen Ihr Material zusammenarbeitet", z. wie Datenbanken funktionieren
  4. ungefähr dort, wo ihre technologische Basis z. Was ist Cloud Computing und welche Auswirkungen wird es auf die aktuellen Fähigkeiten haben?
1
adolf garlic

So schreiben Sie ein FizzBuzz-Programm.

1
CtrlDot

Wenn Sie eine Anwendung verteilen oder eine Website außerhalb der Grenzen Ihres Unternehmens in Produktion bringen müssen, funktioniert alles, was Sie für unwichtig hielten.

1
JeffO

Code ist nur schön, wenn er das tut, was er tun soll.

1
sambeau
  • Binär mit Grundverständnis von signiert und nicht signiert.
  • Verstehen Sie, wie ein Positionsnummernsystem funktioniert.
  • Verstehen Sie, wie grundlegende Datenstrukturen im Speicher gespeichert werden.
1

Das Reparieren von Code erfordert mehr Intelligenz als das anfängliche Schreiben desselben Codes.

Wenn Sie also Code an der Grenze Ihrer Klugheit schreiben, sind Sie per Definition nicht klug genug, um ihn zu reparieren, wenn er kaputt geht.

1
Adam Bachman

Schreiben Sie zuerst Ihre Datenstrukturen - das bedeutet alles von Datenbankschemata bis hin zu Swizzling-/Serialisierungsmechanismen.

Bei den meisten Projekten geht es darum, Daten im Format C von Punkt A nach Punkt B zu speichern und zu verschieben.

Wenn alles gesagt und getan ist, sind ungefähr 90% Ihres Codes logisch für die Formatierung, aber der wahre Killer hat nur ein Format, um auf Ihre Daten zuzugreifen und diese zu schreiben. Sobald Sie eine API für den Datenzugriff haben, können Sie mit der Formatierung herumspielen, wie Sie möchten. Wenn Sie jedoch mit der Produktion mit einer Speicher-API beginnen, kann es sehr schaden, wenn Sie feststellen, dass Sie es vermasselt haben.

1
user2040

In Steve Yegges 5 wichtigen Fragen zum Telefonbildschirm versucht er sicherzustellen, dass die Befragten über Grundkenntnisse verfügen in folgenden Bereichen:

  1. Codierung. Der Kandidat muss einfachen Code mit korrekter Syntax in C, C++ oder Java schreiben.
  2. OO Design. Der Kandidat muss grundlegende OO) Konzepte definieren und Klassen entwickeln, um ein einfaches Problem zu modellieren.
  3. Skripte und reguläre Ausdrücke. Der Kandidat muss beschreiben, wie die Telefonnummern auf 50.000 HTML-Seiten gefunden werden.
  4. Datenstrukturen. Der Kandidat muss Grundkenntnisse über die gängigsten Datenstrukturen nachweisen.
  5. Bits und Bytes. Der Kandidat muss einfache Fragen zu Bits, Bytes und Binärzahlen beantworten.

http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions

Zu der Zeit, als er dies schrieb, war er bei Amazon, arbeitet aber jetzt bei Google (und führt wahrscheinlich Interviews). Dies bringt Sie nur über den Bildschirm. So beschrieb er, wonach er suchte:

was ich hier suche, ist ein totales Vakuum in einem dieser Bereiche. Es ist in Ordnung, wenn sie ein wenig kämpfen und es dann herausfinden. Es ist in Ordnung, wenn sie kleinere Hinweise oder Aufforderungen benötigen. Es macht mir nichts aus, wenn sie rostig oder langsam sind. Was Sie suchen, sind Kandidaten, die in Bezug auf das betreffende Gebiet völlig ahnungslos oder schrecklich verwirrt sind.

1
Lou Franco

Dokumentation ist sehr wichtig. Mehr noch, wenn Sie etwas von Grund auf neu bauen. Es ist hilfreich, Ihre Ideen zu dokumentieren, bevor Sie Code schreiben.

Ich habe das auf die harte Tour gelernt.

1
Pablo

Ich kann noch keinen Kommentar abgeben, aber zum Thema "Testen und Debuggen von Fähigkeiten" ist dieses kleine Juwel von Ned Batchelder ein Muss. (Dann gewinnen Sie, viel von dem, was er zu Debugging und Behauptungen zu sagen hat, ist eine Überlegung wert.)

0
Stan Rogers

Jeder Programmierer sollte wissen, dass er nur weiß, dass er nichts weiß. Es gibt viel zu lernen.

0
sharjeel

Jeder Programmierer sollte die Aktionen FindNextSelected und FindPreviousSelected (Visual Studio) an Tastaturtasten (vorzugsweise F4 und F2) binden. Daraus ergeben sich zwei Dinge:

  1. Schnellere Navigation zwischen verschiedenen Punkten der Verwendung von Variablen/Funktionen/Teilzeichenfolgen (schneller als mit "Alle Referenzen finden")
  2. Möglichkeit, Dinge innerhalb eines Dokuments zu unterscheiden. Wenn Sie beim Durchsuchen eines Teilstrings vor und zurück springen, können Sie die Unterschiede zwischen verschiedenen Positionen erkennen. Sie müssen Winmerge nicht verwenden, wenn Sie Teile desselben Dokuments vergleichen müssen.
0
AareP

Kennen Sie die grundlegende Syntax für reguläre Ausdrücke einschließlich der bedingten Gruppierung. Vermeiden Sie die Verwendung bibliotheksspezifischer Regex-Befehls-Addons oder kommentieren Sie diese Teile zumindest aus.

0
Bob Dobelina

Wie es geht.

... Was meinst du damit, ich brauche 15 Zeichen?

0
Randall Schulz

Programm unter Berücksichtigung der Wartbarkeit.

0
Jesse

reguläre Ausdrücke THE Book about regular expressions

Ich kann nicht sagen, wie oft einfache reguläre Ausdrücke Daten konvertiert haben, von denen die Leute dachten, dass die Manipulation Tage dauern würde. Es muss in jeder Programmier-Toolbox vorhanden sein.

Klar, wir können xkcd nicht vergessen: Wait, forgot to escape a space. Wheeeeee—taptaptap—eeeeee.

0
neves

Jeder Programmierer sollte wissen, wie ein Prozessor funktioniert.

0
Brian Makin

Sei Meister von etwas, aber sei bewusst von Alles !!!!

0
user11020

Es gibt hier einige sehr gute Vorschläge, aber ich bin überrascht, dass niemand die ausgezeichnete Artikelserie von Ulrich Drepper erwähnt hat: Was jeder Programmierer über das Gedächtnis wissen sollte .

0
Mansur

Alle Probleme in der Informatik kann durch eine andere Indirektionsebene gelöst werden.

0
FreeMemory

Entwerfen Sie Ihren Code, und wenn Ihr Manager einen Ansatz im Stil RAD) verwenden möchte, versuchen Sie, so viele Details wie möglich zu erhalten. Wenn weitere Funktionen hinzugefügt werden, versuchen Sie, den vorhandenen Code vorher neu zu schreiben Wenn Sie einfach mehr Code aufstapeln, erhalten Sie ein Hochhaus anstelle eines Hauses.

0
Luke Tongs

jeder Programmierer sollte eine solide Grundlage in der Softwareentwicklung sowie in den Konzepten Systemanalyse/Design und Informationssysteme haben. Auf diese Weise befinden sie sich in einer Position des Wissens + der Meinung, wenn sie aufgefordert werden, einen wesentlichen Beitrag zur Systemanalyse/zum Design und/oder zur Informationsarchitektur zu leisten. Normalerweise scheint es nur eine persönliche Meinung zu sein, die sich normalerweise einfach aus persönlichen Vorlieben ergibt der besten Problemlösung. Software-Engineering ist etwas schwieriger zu messen, aber das erforderliche Wissen ist da draußen verfügbar und in geeigneten Universitätsstudiengängen, in denen mehr als nur das Zusammenschustern von Code vermittelt wird. Jedenfalls soll dies nicht negativ sein, da der Hauptgeist nur die Verbesserung ist, aber dann habe ich mit einigen Leuten zusammengearbeitet, die überhaupt keine IT-Kenntnisse haben, oder es gibt die eigensinnigen "Script Kiddies", die codieren und neu codieren (und nur in ihre Sprache der Wahl) und sehen jedes Problem nur als Wiederholung zuvor angewandter Lösungen (von diesem Codierer). Daher würde ich es sehr bevorzugen, wenn sich Programmierer mehr auf das Gesamtbild in Bezug auf Software-Engineering (SSADM) konzentrieren und Probleme als Chancen betrachten würden besser für den Kunden zu machen.

0
chris

Führen Sie zuerst den Code oder die Logik in Ihrem Kopf oder Papier aus. Beeilen Sie sich nicht, um den Kompilierungs- und Ausführungsbefehl auszuführen, um ihn zu testen.

0

Es steht wirklich in ein paar Buchstaben:

Ok, ich vereinfache zu stark, aber wenn Sie ziemlich autodidaktisch sind, nie aufhören zu lernen und ein bisschen perfektionistisch sind, sollten Sie die Basis haben, um ein guter Programmierer zu werden.

Alles darüber hinaus wäre spezifischer für bestimmte Rollen und Technologien.

0
haylem

Wenn etwas schief gehen kann, wird es. Nehmen Sie den schlimmsten Fall an

0
Adham Saad

Vergessen Sie nicht die Person, die die von Ihnen erstellte Software verwenden wird.

0
Dan Goldstein

Erkennen Sie, dass alles, was schief gehen kann, schief gehen wird. Verbringen Sie sehr wenig Zeit damit, Code zu schreiben - aber erkennen und verwenden Sie gängige Muster. Refactor-Code ständig, um das ideale Design zu erreichen.

0
zkarthik

Alle Daten müssen irgendwo leben. Sie können es finden, wenn Sie genau genug suchen.

0
Jonathan

Sie müssen über die Kraft von Verschlüssen Bescheid wissen und sie verwenden.

0
nickik

Hexadezimale Notation. Auch Bitfelder - UND-Verknüpfung, ODER-Verknüpfung (einschließlich und exklusiv), Ergänzung (1 und 2), Bitverschiebung.

0
tcrosley

Meine erste Stimme wäre für Namenskonventionen.

0
Gopi

Wenn jemand Sie bittet, etwas zu bauen, denken Sie daran: Er bittet Sie auch, es zu warten. Möglicherweise für immer.

0

Was auch immer Programme tun, mehr als einer Maschine zu sagen, wie man eine Arbeit macht, sie sind eine höchst eindeutige Möglichkeit, Mitmenschen zu zeigen, wie man eine Arbeit macht.

0
vpit3833