Ich werde Sie nicht mit Einzelheiten meiner Diskussion belästigen, daher werde ich sie in Form einer kurzen Instanz präsentieren.
Ein Java-Typ hat Artikel und Veröffentlichungen eines berühmten Programmierers (einer Art Martin Fowler aus meinem Land) verfolgt. Er sagt, dass er einige Geheimnisse teilt, die andere berühmte Programmierer nicht teilen.
Ich glaube nie, dass es im Programmierbereich einige Geheimnisse wie Zauberer gibt. Aber einige Programmierer, die in diesem Bereich noch nicht gut sind, denken, dass andere berühmte Programmierer Erfolg haben, weil sie einige Geheimnisse kennen, die wir nicht kennen.
Ich bin damit überhaupt nicht einverstanden und habe es mit jemandem besprochen und schließlich hat er mir gesagt, dass Sie 2 Jahre in diesem Bereich sind und er (Java-Typ) 20 Jahre professioneller Programmierer ist, also weiß er es besser als Sie.
Ich wollte sicher sein, dass ich mich nicht irre. Deshalb wollte ich das wissen.
Antworten:
Ich würde fast sagen, es ist das Gegenteil ...
Ich habe mit Leuten gearbeitet, die es aus irgendeinem Grund mochten, knifflig zu sein. Zugegeben, sie tatsächlich waren ziemlich gut Programmierer - wenn sie in einem Vakuum genommen - aber der Code , der sie produziert war oft ziemlich stumpf und schwer von anderen zu halten. Es macht keinen Sinn, etwas Kluges zu tun, das ein paar Tastenanschläge erspart, wenn zwei Jahre später jemand, der den Code verwaltet, einen Tag verschwendet, wenn er von dem Trick überrascht wird.
Wenn ich eines der wichtigsten Dinge nominieren musste, die ich in meinen zehn Jahren kaufmännischer Erfahrung als Programmierer gelernt habe, dann ist Wartbarkeit wichtig . Es steht weit über dem Wissen um einige obskure Hacks und Tricks, die in seltenen Situationen nützlich sein könnten, aber mit ziemlicher Sicherheit die Pflege der Codebasis auf lange Sicht erschweren werden.
Um ehrlich zu sein, würde ich sogar sagen, dass die gesamte Codierung so erfolgen sollte, dass jeder neue Absolvent mit relativ grundlegenden Kernkenntnissen in der jeweiligen Sprache / Plattform in der Lage sein sollte, sie aufzunehmen und damit zu arbeiten. Wenn es so knifflig und dunkel ist, dass Sie jemanden mit 20 Jahren Erfahrung in der Sprache / Plattform benötigen, der jeden kleinen internen Trick kennt, dann ist das Projekt in einer hohen technischen Verschuldung.
quelle
Programmierer mit mehr Erfahrung wissen mehr
Sie sind keine Geheimnisse
klingt wie er versucht, dir etwas zu verkaufen!
quelle
<rant>
Ich bin vor über 30 Jahren zum ersten Mal auf solchen Mist gestoßen. Es hat mich damals angepisst und mich jetzt noch mehr angepisst. Es heißt Argument from Authority (AKA Proof by Authority ) und ist reiner, unverfälschter Schwachsinn. Jede Person, die ich getroffen habe und die versucht hat, dies für sich selbst zu behaupten, hatte ein ernstes Problem mit dem Selbstwertgefühl ... und wusste oft weit weniger über das Thema, als sie vorgab zu wissen.
Ich persönlich habe mehrere beängstigend-kluge Programmierer gekannt, die noch in der High School waren und erst ein oder zwei Jahre lang programmiert hatten. Nur zwei Beispiele: Das ursprüngliche Forensystem wurde 1973 von einem 15-Jährigen geschrieben, und die allererste Implementierung von Instant Messaging für mehrere Benutzer wurde 1974 von einem 13-Jährigen geschrieben, der Milch trank, während die anderen Ingenieure es hatten ein Bier am Freitagnachmittag.
Ich kenne auch einige Dinosaurier, die seit 10 oder 15 Jahren keine neue Technologie mehr gelernt haben. Viele von ihnen werden zugeben, nicht zu verfolgen, was in der Gegenwart passiert, aber es gibt einige, die dies als Ehrenzeichen betrachten. Es ist nicht.
</ rant>
Nachdem ich das aus meinem System herausgeholt habe, möchte ich auf einen Punkt eingehen, der in den Antworten von @Bobby Tables und @Developer Art gemacht wurde: Verwenden von "Geheimnissen", Schreiben von "cleverem Code" oder Handeln in dem Code, der ein "Beweis" ist "Wie dunkel man etwas machen kann, ist falsch . Zeitraum. Es ist die Handlung einer unreifen, in sich versunkenen Person, die nicht die besten Interessen des Projekts / Unternehmens im Auge hat. Sie legen Wartungsminen ab, die in Zukunft einige Zeit in Betrieb gehen werden, wahrscheinlich nachdem sie zu anderen Arbeitgebern der
Opferübergegangen sind.Das Gegenteil von "clever" ist das Schreiben von klarem, präzisem Code, der die Programmiersprache gut nutzt. verwendet konsistente Namensstandards; angemessene Kommentare am Zeilenende; gute Blockkommentare zur Erläuterung der Hauptabschnitte; dokumentiert ist (gegebenenfalls mit Beispielen); und getestet. Das liefert ein echter professioneller Programmierer .
Und wenn sie fertig sind, drehen sie sich um und betreuen die nächste Generation professioneller Programmierer.
quelle
Ich bin nicht sicher, wie jemand mit dem hypothetischen Wissen einer anderen Person sprechen kann, aber meiner Erfahrung nach gibt es bei der Computerprogrammierung keine "Geheimnisse". In der Tat ist es eine Domäne, die fast durch Offenheit und Wissensaustausch definiert ist. Einige der komplexesten Projekte (diejenigen, die wohl am meisten von solchen "Geheimnissen" profitieren würden) sind Open Source, wie der Linux-Kernel.
Ich finde die Idee, dass Programmierer heimlich spezielle Techniken horten, absurd, aber es ist ziemlich schwierig, ein Negativ zu beweisen - besonders wenn es rein hypothetisch ist.
quelle
Die einzigen Geheimnisse, die mir bekannt sind, sind:
hartegute Arbeit.quelle
[^a]
- Dies beschleunigt nicht nur den Ausdruck, sondern enthält auch eine Reihe von erweiterten / Unicode-Zeichen, die das Original übersehen hat. Ich sage, zumindest wenn es um Programmierung geht, ist harte Arbeit bedeutungslos. Es gibt keinen Ersatz für gute Arbeit.Ich kenne ein Geheimnis, das jüngere Programmierer nicht kennen oder akzeptieren. Sobald jemand weit genug fortgeschritten ist, um dies zu verstehen, hat er es normalerweise selbst herausgefunden.
<TheSecret> Der ganze Code ist scheiße. Besonders deine. Meins auch. Der Code aller genialen Programmierer der Welt - ja, es ist auch scheiße. Akzeptiere es und erledige die Arbeit so gut du kannst. </ TheSecret>
quelle
Ich habe 50 Jahre Erfahrung. Ich habe viele Dinge gelernt, die jüngere Programmierer noch nicht gelernt haben. Ich bin vollkommen bereit, sie zu teilen, und ich versuche es in vielerlei Hinsicht.
Lernen ist etwas, was man tun möchte.
Ich höre oft, dass Wartbarkeit wirklich wichtig ist, und ich stimme vollkommen zu. Es ist jedoch nicht kostenlos. Es kann mehr oder weniger eine Lernkurve seitens des Betreuers erfordern.
Ein Programmierer mit einem Master-Abschluss in Informatik würde sich meinen Code ansehen und sagen, er sei nicht wartbar und voller Geheimnisse. Tatsächlich ist er oder sie einfach nicht damit fertig, neue Dinge zu lernen.
Piloten haben ein Sprichwort, wenn Sie die erforderlichen Tests bestehen und das "Ticket" Ihres Piloten erhalten. Sie sagen, es ist eine Lizenz zum Lernen.
Bildung hört nicht auf, wenn Sie ein Diplom erhalten. Es hat erst begonnen.
quelle
Das Wissen um kleine versteckte Geheimnisse bestimmter Programmiersprachen oder Frameworks hat wenig bis gar keinen praktischen Wert.
Die meisten praktischen Softwareentwicklungen stoßen in ihrer Praxis nicht auf diese versteckten Funktionen. Eine der Best Practices schlägt außerdem vor, dass Sie bewusst vermeiden, sich in verborgene Bereiche der von Ihnen verwendeten Technologien zu wagen, da der Code dadurch weniger wartbar und fehleranfälliger wird, da die meisten Programmierer diese "Geheimnisse" nicht kennen.
Anstatt Zeit damit zu verbringen, die Geheimnisse einer bestimmten Technologie zu erlernen, ist es im Allgemeinen besser, das Wissensspektrum zu erweitern und angrenzende Tools zu erlernen oder sogar Ihre nicht programmierenden Fähigkeiten zu verbessern oder mehr über das Geschäft zu erfahren, in dem Sie tätig sind .
Angesichts der Geschwindigkeit des Wandels in unserem Bereich lohnt es sich nicht, tief in ein bestimmtes Werkzeug zu investieren - das Wissen wird bald veraltet sein.
Nur wenn Sie sich als Technologieexperte positionieren und beabsichtigen, Ihre Beratungsleistungen in diesem speziellen Bereich anzubieten, ist es sinnvoll, tief zu investieren. Sonst ist es verschwendete Mühe.
quelle
Hier wird Ihnen eine Stückliste verkauft. Jemand versucht, das Konzept von Mysterious Secrets ™ anzuwenden, das Sie zu einem Elite Programmer ™ macht, um Sie dazu zu bringen, für diese Mysterious Secrets ™ zu bezahlen. Der nächste Schritt ist jemand, der anbietet, Ihnen diese geheimnisvollen Geheimnisse ™ in Form von Videos oder Reden oder Podcasts oder schlecht gedruckten Büchern beizubringen.
Wie kann ich mir dessen sicher sein? Ich programmiere seit den 70er Jahren und kenne eine Tonne mehr Programmiersprachen als nur Java. Ich habe das Programmieren (professionell und schulisch) vom kleinsten der kleinen (eingebetteten Systeme mit Hunderten von Bytes - das sind Bytes - RAM) bis zu großen Teilen von Big Iron ™ gesehen.
Es ist ein Geheimnis, ein guter Programmierer zu sein, und nur eines: Sie müssen daran arbeiten, sich ständig zu verbessern. Jeder, der Ihnen etwas anderes sagt, ist ein Lügner und / oder ein Narr.
quelle
Das einzige Geheimnis, das jungen Programmierern nicht bekannt ist, ist: Programmierer sind nicht so schlau, wie sie denken .
Sobald Sie das wissen, hören Sie auf, Code zu schreiben, den Sie nächsten Monat nicht verstehen, Sie beginnen, die Versionskontrolle zu schätzen, Sie reparieren keinen Code, der bereits funktioniert, Sie dokumentieren Ihren Code, Sie interpretieren keine Spezifikation, Sie tun es nicht. t Code-Funktionen, die eines Tages in der Zukunft nützlich sein könnten, lehnen Sie Legacy-Code nicht ab, ...
Mit anderen Worten, das Geheimnis ist Erfahrung.
quelle
Offensichtlich hat jemand mit 20 Jahren Erfahrung mehr Erfahrung als jemand mit nur 2 Jahren. Aber es gibt keine Geheimnisse - worum geht es?
(Natürlich würde jemand, der versucht, ein Geheimnis zu bewahren , sagen, dass ...)
quelle
Während Erfahrung wichtig ist, können wir aus den Erfahrungen anderer lernen. Ich habe gerade "The Clean Coder" gelesen, in dem Robert C Martin (Onkel Bob) Fehler, die er gemacht hat, und Lektionen, die er gelernt hat, teilt. Viele davon sind in den Antworten hier aufgeführt, wie zum Beispiel weiter lernen.
quelle
Alles, was nur wenige wissen, kann als Geheimnis betrachtet werden.
Alles, was wir heute wissen, wurde einmal entdeckt.
Also war alles einmal ein Geheimnis.
Einige Kenntnisse verbreiten sich schnell und andere langsam.
Einige Programmierer entdecken selbst nie etwas (können aber die Geheimnisse anderer sehr erfolgreich anwenden).
Einige Programmierer (z. B. John Carmack, Ken Perlin, Donald Knuth) scheinen jeden Tag über ein neues Geheimnis zu stolpern.
Also ja, es gibt Programmierer, die einige Geheimnisse kennen, die wir anderen noch nicht kennen.
quelle
Wissen allein ist keine Macht, das gebe ich dir zu. Möglicherweise hat jedoch jemand seine Fähigkeiten weiterentwickelt als Sie, was bedeuten kann, dass er Tipps und Strategien hat, die Ihnen helfen können, sich weiterzuentwickeln. Beachten Sie, dass der letzte Satz ein paar "Mai" enthält, da es keine Gewissheit ist, dass diese Sie wirklich voranbringen werden. Daher besteht das Potenzial, dass dies für Sie nichts Neues oder Schockierendes ist.
Gleichzeitig gibt es verschiedene Praktiken und Strategien, die zu einer Zeit radikal erschienen sind, obwohl wir diese heute für selbstverständlich halten. Quellcodeverwaltung, kontinuierliche Integration und Unit-Tests waren irgendwann alle neu, oder?
quelle
Es ist möglich, dass Sie und die meisten Leute, die diese Frage beantworten, sich viel zu sehr auf das Wort "Geheimnis" konzentrieren.
Wenn wir den "verborgenen" Teil herausnehmen, dann ist es durchaus möglich, dass dieser berühmte Programmierer einige nützliche Tipps und Tricks oder Kenntnisse hat, die durch Erfahrung gewonnen wurden, die Ihnen in irgendeiner Weise zugute kommen würden. Ich spreche von Wissen, wie Sie es in klassischen SE- oder CS-Büchern wie Rapid Development oder The Pragmatic Programmer finden würden . Dies in Kombination mit harter Arbeit kann absolut helfen.
In diesem Sinne kann der berühmte erfolgreiche Programmierer über Wissen verfügen, das andere einfach noch nicht haben.
Aber es gibt keine geheimen Rezepte, die einen "Programmierer, der in diesem Bereich nicht so gut ist" zu einem berühmten mit viel Erfolg machen.
quelle
Es gibt keine kleinen Geheimnisse. Nur komplizierter Code ... wurde schließlich zu vereinfachtem, effizientem Code.
quelle
Das Geheimnis liegt in der Art des Problems, dem Problembereich und wie Sie es lösen. Zum Beispiel habe ich ein PHP-Programm geschrieben, um eine Datei zu öffnen und ihre Daten zu lesen und die Daten in XML zu konvertieren. Dann habe ich diese XML verwendet, um Daten in verschiedenen HTML-Elementen, z. B. Optionsfeld usw., darzustellen. Nach 1 Jahr hatten wir einen neuen Junior-Programmierer, der dem beitreten konnte Team und er war gut in Algorithmen, also löste er das Problem mathematisch, was den Code mit Linksverschiebung und Teilen der Arrays usw. schwierig erscheinen ließ. aber die Ausführungszeit wurde auf 40% von dem reduziert, was ich geschrieben habe. Sein Ansatz, die PHP-Aussagen zu schreiben, hat mich überrascht. Ich glaube also, dass es bestimmte Tricks gibt, die nicht die Geheimnisse sind. Eine weitere Sache ist, wie viele Alternativen Sie in Ihrem Kopf denken können.
quelle
Es tut mir leid, wenn mir etwas fehlt, aber ich konnte dies oben nicht finden, zumindest nicht explizit angegeben.
Das Geheimnis besteht darin, die richtigen Werkzeuge für den Job zu verwenden. Tatsächlich sind es die Werkzeuge, die alte Programmierer schätzen und die sie nicht so leicht offenlegen. Sie werden mit Ihnen über Ihre BETONfehler sprechen, aber selten vorschlagen, mit welchem Tool Sie diese vermeiden können. Ihre Werkzeuge sind eines der Hauptgeheimnisse ihrer Produktivität.
Wenn man nur ein Beispiel nennt, kann man sich ein 600-seitiges Buch über Webdienste merken, die Feinheiten der WSDL-Spezifikation verstehen (ich habe es selbst einmal versucht, um die Feinheiten zu verstehen) und trotzdem nicht verstehen können, was mit der API schief geht Er verwendet, wenn er versucht, einen vorhandenen Webdienst anzurufen.
Auf der anderen Seite kann man wenig Wissen über die Spezifikation haben (aber eine klare allgemeine Idee) und Wireshark verwenden.
Man kann sich an alles C ++ erinnern (oh mein ..) und immer noch nicht verstehen, was mit seinem Code, der mit vi geschrieben und mit gcc kompiliert wurde, schief geht (keine Warnungen ..). Aber eine grafische IDE mit einem Debugger könnte helfen.
Und dann Google. Das größte Geheimnis von allen auf dem neuesten Stand.
quelle