Bedeutet übermäßiges Vertrauen in Tools, dass Sie faul sind? [geschlossen]


29

Ich habe angefangen, in C ++ an der Uni zu programmieren und war begeistert. In der nächsten Amtszeit sind wir auf VB6 umgestiegen und ich habe es gehasst.

Ich konnte nicht sagen, was los war, du ziehst einen Knopf auf ein Formular und die Idee schreibt den Code für dich.

Obwohl ich die Funktionsweise von VB hasste, kann ich nicht behaupten, dass es schneller und einfacher war, als dasselbe in C ++ zu tun, damit ich sehen kann, warum es eine beliebte Sprache ist.

Jetzt rufe ich VB-Entwickler nicht faul an, wenn ich es nur einfacher als C ++ sage, und ich habe bemerkt, dass viele neuere Sprachen diesem Trend folgen, so ein C #.

Dies veranlasst mich zu der Annahme, dass, da mehr Unternehmen schnelle Ergebnisse erzielen möchten, mehr Leute so programmieren und es früher oder später so etwas wie das, was wir jetzt Programmieren nennen, nicht mehr geben wird. Zukünftige Programmierer werden dem Computer mitteilen, was sie wollen, und der Compiler wird das Programm für sie wie in Star Trek schreiben.

Handelt es sich nur um eine unzureichend informierte Meinung eines Junior-Programmierers, oder werden Programmierer im Allgemeinen fauler und weniger kompetent?

EDIT: Viele Antworten sagen, warum das Rad neu erfunden wurde und ich stimme dem zu, aber wenn Räder verfügbar sind, machen sich die Leute keine Gedanken darüber, wie man das Rad herstellt. Ich kann googeln, wie man so ziemlich alles in jeder Sprache macht, und die Hälfte der Sprachen tut so viel für Sie, wenn es um das Debuggen geht. Sie haben keine Ahnung, was der Code tut, um den Fehler zu beheben.

So bin ich auf die Theorie gekommen, dass Programmierer fauler und weniger kompetent werden, da es niemanden interessiert, wie Sachen funktionieren, nur dass es funktioniert, bis es nicht funktioniert.


7
"Ist dies nur eine wenig informierte Meinung eines Junior-Programmierers oder werden Programmierer im Allgemeinen fauler und weniger kompetent?" - Dies ist kein entweder oder, beide sind wahr (nur nicht aus den Gründen, die Sie sagen).
Jon Hopkins

15
Wie kann jemand darauf antworten, ohne den Titel zu widerlegen?

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 .

8
Warum wurde dies nicht als "subjektiv und argumentativ" abgeschlossen ...?
BlueRaja - Danny Pflughoeft

Antworten:


103

Nein, Entwickler sind nicht fauler oder weniger kompetent. Ja, es besteht ein stetig abnehmender Bedarf an tatsächlicher Entwicklung in dem Sinne, wie Sie es kennen. Und ja, das liegt vor allem daran, dass Unternehmen schnelle Ergebnisse erzielen möchten, und warum sollten sie das nicht tun?

Es gibt jedoch einen Endpunkt. Einige Entwickler werden immer benötigt.

Viele Anforderungen sind projektübergreifend gleich. Das, von dem Sie sprechen, ist UI-Code. Die meisten Benutzeroberflächen bestehen aus einer Reihe von Feldern - Textfeld, Kontrollkästchen, Radio, Auswahl usw. -, und es macht wirklich keinen Sinn, diese von Grund auf neu zu entwickeln. Also werden Abstraktionsebenen eingefügt, um den gesamten Code des Kesselplattens zu entfernen.

Ebenso die Datenebene, bei der es sich normalerweise nur um Einfügen, Löschen, Ersetzen und eine große Anzahl verschiedener Ansichten derselben Daten handelt. Warum immer wieder schreiben? Lasst uns ORMs erfinden.

Das einzige, was Sie entwickeln sollten, ist Code, der für das Unternehmen, für das Sie entwickeln, einzigartig ist.

Aber es wird immer diese Einzigartigkeit geben - wo es keine gibt, gibt es eine Geschäftsmöglichkeit - und es wird immer die Notwendigkeit geben, dass Leute Code schreiben.

Denken Sie jedoch auch daran, dass es viel mehr bedeutet, Entwickler zu sein, als Code zu schreiben. Egal, ob Sie in reiner Assemblierung programmieren oder Drupal-Komponenten zusammenfügen, um eine inhaltsgesteuerte Site zu erstellen, Sie übersetzen die geschäftlichen Anforderungen in etwas, das der Computer versteht.

Der wichtigste Teil eines Softwareentwicklers ist es, die Geschäftsanforderungen gut genug zu verstehen, um sie dem Computer zu erklären.

Es ist nicht wichtig, in welcher Sprache Sie dem Computer die Dinge erklären, es ist nur wichtig, dass Sie es können. Und das ist harte Arbeit, nichts Fauleres.


3
Es gibt einen Unterschied zwischen einem Entwickler und einem Programmierer.
Raynos

9
+1. Genau. Für funktionierende Software wird bezahlt. Code ist ein Mittel zur Erstellung von Software, ein Artefakt. Reine "Programmierung" ist der einfache und unterhaltsame Teil beim Erstellen von Software.
Joonas Pulakka

+1 für das Ganze. Ich bin mir nicht sicher, ob ich mit "Das einzige, was Sie entwickeln sollten, ist Code, der für das Unternehmen, für das Sie entwickeln, einzigartig ist." Aber ich werde zugeben, dass es eine gültige Geschäftsstrategie ist.
SoylentGray

@Chad - Nehmen Sie Ihren Punkt. Ich rede manchmal in Übertreibung. Der gesunde Menschenverstand hat immer Vorrang vor der Philosophie, wenn es um die Krise geht, aber ich denke, es ist eine gute Position, von Fall zu Fall zu sprechen, anstatt die Standardposition "Ja, lasst es uns selbst schreiben" einzunehmen. :)
pdr

Als Unternehmen stellt sich vor allem die Frage, wie sich die Investition in der Zeit rentiert, die Sie für die Entwicklung einer Lösung aufgewendet haben. Mein Chef kümmert sich überhaupt nicht darum, in welcher Sprache ich mich entwickle, solange ich dem Unternehmen helfen kann, mehr Geld zu verdienen, als es mir zahlt. Alles andere und sie verlieren Geld für mich.
Dan Williams

38

Ist ein Mechaniker faul und weniger kompetent, weil er einen hydraulischen Schraubenschlüssel benutzt ?

Stellen Sie sich zwei Typen vor, sagen wir Brad und Pete. Beide arbeiten täglich in zwei Garagen und wechseln die Reifen. Brad ist ein kluger Kerl, er weiß, dass mit besseren Werkzeugen seine Arbeit besser und schneller erledigt werden kann. Mit dem Hydraulikschlüssel kann er mehr Reifen wechseln. Die Kunden warten in einer kürzeren Warteschlange - alle sind glücklich. Bard weiß auch, dass dieser Schraubenschlüssel manchmal zu groß ist und ihm mit verschiedenen Arten von Schrauben nicht helfen kann.

Auf der anderen Seite sagt Pete, dass der hydraulische Schraubenschlüssel eine Blasphemie ist und Brad kein "echter Mechaniker" ist. Sicher, Pete kann nur die Hälfte dessen tun, was Brad tut, aber er macht es "richtig".

Nun, was denkst du, welche Werkstattkunden würden wählen? Eine, die 20 Minuten dauert oder eine, bei der 40 Minuten warten.

Beim Programmieren ist es ziemlich ähnlich. C ++ ist eine gute Sprache und hat ihren Zweck (hauptsächlich Leistung). Was ich an Sprachen wie C # mag, ist, dass ich mich auf ein Problem konzentrieren und an Algorithmen denken kann, ohne all das Rauschen, das C ++ für mehrdeutige Compiler-Warnungen, undefinierte Verhaltensweisen und so weiter macht. Das Entwickeln wird immer komplizierter, als es früher bei Großrechnern und ersten PCs der Fall war, aber das menschliche Gehirn bleibt das gleiche - ziemlich dumm. Eine App kann in der Cloud, auf Mobilgeräten und auf dem Desktop ausgeführt werden. Es gibt viele Abhängigkeiten, Sicherheitsprobleme und andere Probleme. Ich möchte ein besseres Werkzeug haben, um mich auf kompliziertere Probleme zu konzentrieren und sie zu lösen.

Verwenden Sie bessere Werkzeuge, um Ihre Arbeit zu erledigen - daran ist nichts auszusetzen.


1
Ich denke nicht, dass die Analogie funktioniert, da sowohl Brad als auch Pete immer noch wissen, wie man den Reifen und alles, was dazugehört (Weiber, Schraubenschlüssel und Bier), entfernt.
Kristofer Hoch

3
+1 Tolle Antwort. Ich würde hinzufügen, dass Sie, egal welches Tool Sie verwenden, Ihre Arbeit richtig machen werden, wenn Sie verstehen, was es tut. Auf der anderen Seite, wenn Sie dies nicht tun, egal wie viel der Arbeit von dem Werkzeug erledigt wird, werden Sie irgendwann etwas schrauben.
Jacek Prucia

1
@Kristofer: Vielleicht wäre es besser, wenn Pete sich mit Elektronik auskennt. Während Brad nur weiß, wie man den Diagnosecomputer benutzt und abliest, dass der O2-Sensor defekt ist, sieht Pete, dass das Sensorkabel ein bisschen verbrannt ist, holt das Messgerät heraus, um es zu messen, und stellt fest, dass der Spannungsregler defekt ist und ist Ausbrennen von O2-Sensoren.
Zan Lynx

@Zan das ist nicht das gleiche. @Kristofer Nur weil ich mit dem Designer Steuerelemente schnell auf ein Formularelement ziehe und Boilerplate-Code fertigstelle, heißt das nicht, dass ich nicht weiß, wie ich diesen Code danach ändern soll, um das zu tun, was ich will.
Jcolebrand

Perfekt um es auszudrücken.
Riwalk

37

Also, was nennen wir jetzt Programmierung?

Du sagst:

Zukünftige Programmierer werden dem Computer mitteilen, was sie wollen, und der Compiler wird das Programm für sie wie in Star Trek schreiben.

Machen Sie einfach ein Experiment: Sehen Sie sich Star Trek an und versuchen Sie, die Dinge zu interpretieren, die der Computer ein wenig „graceless“ ausführen soll.

  • Tee, Earl Grey, heiß -> viel Dampf.
  • Tee, Earl Grey, 60 Grad Celsius -> eine Pfütze und eine Dampfwolke
  • Earl Grey, 60 Grad Celsius -> eine Pfütze
  • Earl Grey, 60 Grad Celsius, in einer Tasse -> eine Tasse mit einem Tropfen
  • Earl Grey, 60 Grad Celsius, 0,2 Liter, in einer Tasse. -> endlich (ok, du darfst mehr nitpicken)

Wenn Sie die Programmierung aufrufen: 'Wissen über die Speichernutzung, Zeiger usw.', wird dies wahrscheinlich weniger wichtig (da 'Wissen über http, openid, unicode' wichtiger wird).

Aber meiner Meinung nach ist alles „zufällige Komplexität“, und der eigentliche Job als Programmierer besteht darin, „Build-Maschinen dazu zu bringen, Probleme zu lösen, indem man sicherstellt, dass man die zufälligen Probleme versteht, um die Aufgabe zu lösen“, und nach dieser Definition unterhält sich jemand mit einem Star Trek Computer muss ein Programmierer sein (dh die gleichen Tugenden wie jetzt haben).


2
@ Raynos: soooo wahr. Besonders bedrückend, wenn diese Leute Teamleiter sind und Richtlinien wie "Wenn die zu sendenden Daten weniger als X Bytes sind, benutze GET, wenn mehr, benutze POST"
keppla

8
@keppla - Es geht nicht darum, dass Ihr Teamleiter HTTP nicht verstanden hat, sondern darum, dass er seine Meinung nicht ändern wollte, um zu beweisen, dass er sich geirrt hat (vorausgesetzt, Sie haben versucht, ihm die Dinge zu erklären). Sie können nicht mehr als alle wissen, die für Sie arbeiten - das wahre Verbrechen besteht darin, nicht zu akzeptieren, dass jemand anderes mehr über etwas weiß als Sie.
Jon Hopkins

3
"Tea, Earl Grey, Hot" ist eine deklarative Programmierung. Es ist die Aufgabe des Computers, auf der Grundlage angemessener Erwartungen ein kontextbezogenes Ergebnis zu finden. Das Erzeugen von Dampf aus "heißem Tee" in dieser Art von Sprache wäre ein Fehler für einen Teil des Designteams des Computers, nicht für den Programmierer. Es sollte der für den Kontext relevante Fall verwendet werden, sofern keine bestimmte Abfrage eingegeben wird.
Diadem

1
@Diadem: Auch wenn es deklarativ ist, müssen Sie wissen, was zu deklarieren ist, und als Programmierer, imho, würden Sie nicht erwarten, dass der Computer aus der Vergangenheit erraten kann, was Sie als nächstes tun werden, weil Sie etwas Neues tun werden. Die Schnittstelle, die Ihre Wünsche interpretiert, ist für Endbenutzer.
Keppla

2
@Zan Lynx: Vielleicht ein besseres Beispiel: Lassen Sie den Computer Sie jedes Mal warnen, wenn jemand entführt wird (dem Computer scheint das in TNG egal zu sein). 'Computer: Informieren Sie mich, wenn jemand entführt wird' 'Bitte definieren Sie entführt' 'Wenn er gegen seinen Willen entführt wird' 'Bitte definieren Sie Willen' usw. Eine Lösung wie 'Informieren Sie den verantwortlichen Offizier, wenn sich der Standort eines Menschen ändert von bekannt zu unbekannt, und es gibt kein Protokoll darüber, dass ein Transportoffizier ihn weggebeamt hat oder er in ein Shuttle gestiegen ist, und das Schiff nicht im Dock ist. ' Sie benötigen noch eine Programmierer-Denkweise.
Keppla

23

Programmierer werden nicht fauler. Programmierer waren schon immer faul. Faulheit ist Teil der grundlegenden Natur des Jobs. Das Problem ist, dass die Leute annehmen, faul zu sein, ist negativ. Ein "fauler" Programmierer zu sein, ist eine Tugend.

Denken Sie an das alte Sprichwort: "Arbeiten Sie schlauer, nicht härter." Dies ist der grundlegende Antrieb von Programmierern.

Die Leute, die die ersten Computer gebaut und programmiert haben, haben es nicht gemacht, weil sie gerne hart gearbeitet haben. Sie haben es getan, um noch härtere Arbeit zu vermeiden . (Berechnungsseiten von Hand)

Faul sein ist einer der Hauptgründe, warum Programmierer programmieren. Deshalb schreiben wir neue und immer höhere Sprachen, bessere und bessere Debugger und IDEs, Shell- und Build-Skripte usw.

Ein Programmierer betrachtet ein Problem, alles, was er oder sie tut und denkt.

"Kann ich das automatisieren?" , „Wie viel Zeit würde das dauern?“ , „Wie viel Zeit sparen würde mir das?“

Wir machen das, weil wir faul sind, wir wollen keine sich wiederholende und langweilige Aufgabe machen, wenn wir Dinge tun könnten, die viel mehr Spaß machen.

Wenn Programmierer nicht faul wären, hätte kein Programmierer jemals die Notwendigkeit gesehen, eine einzige neue Sprache oder einen neuen Compiler zu schreiben.

Was die Vorstellung betrifft, dass ein Programmierer "faul" ist, weil er "nachsehen" muss, na und, wen interessiert das? Die Annahme, dass es mehr Arbeit ist, jede Nuance einer bestimmten Sprache zu lernen (und nie etwas nachschlagen zu müssen), als das zu finden und zu verwenden, was Sie brauchen, wenn Sie es brauchen, ist ein Trugschluss. Außerdem ist das Nachschlagen ein Lernprozess und genau deshalb gibt es solche Websites.

Wenn jemand harte Programmierarbeit wünscht, würde ich ihm sagen, dass er einen rohen Maschinencode in hexadezimaler Schreibweise verwenden soll. Habe das gemacht? Willst du etwas schwerer? Jetzt geh es debuggen.


19

Zuallererst ruft man Leute an, die zum Beispiel Sprachen mit Müllsammler-Faulheit verwenden, und ruft Leute an, die Autos mit Automatikgetriebe faul fahren. IMO ist es ein bisschen lächerlich.

Was die Kompetenz anbelangt, so ist das Programmieren weitaus beliebter und egalitärer als früher. Also ja, es gibt viele Neulinge, denen es an Wissen mangelt. Ich meine aber nicht, dass es plötzlich weniger kompetente Programmierer gibt. In der Tat gibt es noch mehr. Sie schauen nur auf die falsche Seite der Glockenkurve.


11
Leute, die Autos fahren, sind faul, daran ist nichts Lächerliches. Das manuelle Fahren mit Ferse und Zehen bietet viel mehr Kontrolle und Leistung im Auto, erfordert jedoch viel Geschick und zusätzliche Arbeit.
Coder

11
@Coder: "erfordert zusätzliche Arbeit" - auf der Autobahn nicht, im Stau, aber dann hat man sowieso keinen Vorteil.
Vartec

2
Handschaltgetriebe sorgen auch auf der Autobahn für einen geringeren Kraftstoffverbrauch, was bei Wandlerüberbrückungsdrehmomenten weniger der Fall ist.
Dave Markle

4
@ Dave tatsächlich moderne Elektronik hat die Automatik tatsächlich im Durchschnitt effizienter gemacht. Mein Ford Fusion mit den gleichen Optionen wurde fast eine volle Meile pro Gallone weniger bewertet. Ich bin mir sicher, dass es Zeiten gibt, in denen das Handbuch im Mikro noch besser ist, aber insgesamt automatisch die Führung hat.
SoylentGray

3
@Coder - Wenn Sie der Meinung sind, dass das Fahren eines Schaltgetriebes "viel Geschick" erfordert, müssen Sie sich bei den Tausenden inkompetenten Fahrern auf der Straße umsehen, die mit Schaltgetrieben unterwegs sind. ;)
techie007

15

Ich bin versucht zu sagen: "Ja, uninformierte Junior-Programmierer sind faul und weniger kompetent geworden", aber versuchen wir es mit einer ernsthaften Antwort:

Vieles ist einfacher geworden, aber von uns wird mehr erwartet. Ich erstelle gerade eine Web-App mit vielen Funktionen, die normalerweise in gut gemachten GUI-Apps zu finden sind (Ansichten mit Registerkarten, bearbeitbare und sortierbare Raster, Excel-Export usw.). Mit den von mir verwendeten Tools (ExtJS usw.) ist die Erstellung einer solchen App relativ kostengünstig.

Vor zehn Jahren wäre es fast unmöglich gewesen, zumindest sehr teuer, eine solche App zu erstellen. Vor zehn Jahren hätte ein einfaches HTML-Formular mit einer HTML-Tabelle für die Kunden gereicht. Heutzutage sind mit dem gleichen Aufwand bessere (zumindest schönere) Ergebnisse möglich, und die Kunden erwarten, dass sie erzielt werden!

Im Allgemeinen muss ein heutiger Softwareentwickler mehr Sprachen beherrschen als ein Softwareentwickler vor 20 Jahren. Damals waren so etwas wie C und SQL ausreichend. Heute verwende ich JavaScript, HTML, Groovy, Java und SQL in einem Projekt.


+1 ja, nicht informierte meinungsbildende Junior-Programmierer sind faul und weniger kompetent geworden
SoylentGray

12

Programmierer werden in gewisser Weise weniger kompetent und fauler, in anderer Hinsicht jedoch kompetenter, obwohl die C ++ / VB-Kluft für mich weder der Grund noch ein Symptom ist.

Die Verwendung eines GUI-Builders ist nicht faul, es ist nur anders, es geht um Tools für den jeweiligen Job. Wenn ein Assembler-Programmierer einen faulen C ++ - Programmierer nennt, würde man das (zu Recht) als Bullshit bezeichnen, und das Gleiche gilt für C ++ und VB. Mit VB können Sie einige Dinge auf Kosten einer gewissen Kontrolle schnell erledigen. Die Hindernisse für den Einstieg in die Codierung sind sicherlich geringer, aber das ist etwas ganz anderes als bei Faulheit - man lernt einfach verschiedene Dinge und wendet sie auf unterschiedliche Weise an. VB-Programmierer sind nicht fauler als C ++ - Programmierer. Sie arbeiten und produzieren auf unterschiedliche Weise.

Generell ist die Ausbildung von Programmierern heute besser als je zuvor. Die Idee, keine Quellcodeverwaltung zu verwenden, ist für so gut wie jeden, der vor 10 oder 20 Jahren noch nicht so richtig war, ziemlich abscheulich. In ähnlicher Weise ist es wahrscheinlicher, dass sie automatisierte Komponententests, kontinuierliche Integration usw. verstehen und verwenden möchten. In diesem Sinne sind sie kompetenter als sie.

Aber was sich meiner Meinung nach geändert hat, ist, dass die Leute nicht mehr wissen, wie sie Probleme so lösen sollen, wie sie es früher getan haben, und das gilt für so ziemlich jede gängige Sprache. Die sofortige Antwort auf jedes Problem ist jetzt Google. Obwohl das großartig ist und in 95% der Fälle funktioniert, sehe ich zu viele Programmierer, die keine Ahnung haben, was zu tun ist, wenn dies nicht der Fall ist.

Es ist nicht so, dass sie die Grundlagen nicht verstehen (sie tun es nicht, aber das ist eigentlich keine so große Sache), es ist so, dass sie die Probleme nicht so aufschlüsseln können, dass sie sogar herausfinden können, welche Grundlagen sie brauchen in den Griff bekommen.

Vor Google hatte man keine andere Wahl. Ihre Ressourcen waren Ihr Team, ein paar Dutzend physische Bücher, auf die Sie möglicherweise Zugriff haben, und Ihr Gehirn. Diese Einstellung bedeutet, dass Sie ein Problem wahrscheinlich selbst lösen, wenn Sie es in der Nähe des ersten Schulleiters finden, sodass Sie entweder ziemlich gut darin sind oder schnell arbeitslos sind.

Und das war wahr, unabhängig davon, welche Sprache Sie verwendeten. VB ist auf hohem Niveau und verbirgt sich viel, aber das bedeutet, dass es beim Lösen von Problemen tatsächlich mehr gab, um das man herumarbeiten musste. Wenn etwas nicht funktionierte, musste man kreativer werden und härter arbeiten, da man weniger Kontrolle hatte. Als VB-Programmierer (und ich spreche aus Erfahrung) wussten Sie nicht weniger als die C ++ - Leute, Sie wussten nur verschiedene Dinge, aber Sie wussten beide, wie man Probleme löst.

Aber es ist wahrscheinlich hart, dies heutzutage als signifikante Kritik an Programmierern zu sehen. Sie entwickeln die Fähigkeiten nicht, weil sie sie nicht benötigen, aber es ist eine Schwäche im Vergleich zu denen, die die Fähigkeiten von Anfang an erworben haben.


Wenn also niemand weiß, was ein Algorithmus ist oder wie man eine Datenstruktur implementiert, weil sie alle in Drag & Drop-IDEs "programmieren", verwenden sie einfach das richtige Tool für den Job?
Skeith

@Skeith - Hängt davon ab, was der Job ist, aber wenn er Software produziert, die das Problem löst, dann ja.
Jon Hopkins

1
@ Jon-Hopkins, ich würde sagen, dass der massive Anstieg der Google-abhängigen Programmierung mit der enormen Anzahl von APIs zusammenhängt, die wir heutzutage benötigen. Es ist zu schwierig, den Überblick zu behalten. (Aber im Wesentlichen sind Sie richtig)
Jarrod Nettles

1
@Skeith - Das Erstellen einer Benutzeroberfläche nimmt etwa 5% der durchschnittlichen Zeit eines Anwendungsentwicklers in Anspruch. Was glauben Sie, machen sie die anderen 95%? Der Designer hilft nicht viel mit Backend-Code. Sie greifen eindeutig einen Strohmann an. Die meisten Menschen kennen die Werkzeuge, die sie für ihre Arbeit benötigen, sonst würden sie nicht eingesetzt.
Morgan Herlocker

@Skeith: Muss sich ein Datenbankbenutzer Gedanken darüber machen, wie eine Datenbank implementiert wird? Natürlich nicht; der Datenbankbenutzer verwendet es. Sie müssen möglicherweise einige Details kennen, damit sie ihre Datenbanken optimieren, aber sie sollen nicht haben es in der Lage sein, zu implementieren , um es zu benutzen würdig zu sein. Ein Programmierer weiß möglicherweise nicht, was das Wort "Algorithmus" bedeutet, aber das bedeutet nicht, dass er sie nicht schreibt . Ich habe Algorithmen entwickelt und implementiert, lange bevor ich den Begriff gehört habe.
Nicol Bolas

11

Ich stelle in deinem Profil fest, dass du 23 Jahre alt bist. Lassen Sie mich meine Zähne reinstecken und Ihnen eine Perspektive von jemandem geben, der ungefähr doppelt so alt ist wie Sie und das schon sehr lange tut:

Früher gab es von allem viel weniger, angefangen von Rechenleistung, Speicher und Netzwerkbandbreite, wenn Sie überhaupt ein Netzwerk hatten. Diese Knappheit schränkt das ein, was Sie vernünftigerweise tun können, was es viel einfacher macht, Ihren Kopf um alles zu wickeln. Die Software, mit der wir heute arbeiten, ist weitaus leistungsfähiger als die Software, mit der ich vor 25 oder 30 Jahren gearbeitet habe, und diese Funktionen bedeuten, dass es viel mehr davon gibt. Das macht es für eine Person viel schwieriger, ein genaues Verständnis von allem zu erlangen. Ein Teil davon hat mit der Tatsache zu tun, dass die Komplexität der Dinge weiter zunehmen wird und ein Teil mit den Nebenwirkungen des Alters.

Das Computer-Ökosystem ähnelt immer mehr biologischen Systemen: Menschen sind komplexer als einzellige Organismen, und Teile von uns müssen sich spezialisieren, wenn wir etwas Gutes tun wollen. Meine Gehirnzellen sind schrecklich gut in Gehirnsachen, würden aber verloren gehen, wenn sie in meine Niere geraten und von mir erwartet würden, dass ich Nierensachen mache. Ebenso hat der Typ, der gut in der Erstellung digitaler Signalprozessoren ist, möglicherweise keine Ahnung, wie die Volltextindizierung funktioniert, da dies einfach nicht seine Spezialität ist. Aber beide könnten sich ein bisschen weiterentwickeln und lernen, es zu verstehen, wenn es nötig ist, aber es gibt Grenzen, wie weit Sie sich verbreiten und dennoch effektiv sein können, was Sie tun.

... niemand kümmert sich darum, wie Sachen funktionieren, nur dass es funktioniert, bis es nicht funktioniert.

Wenn Sie einen Job zu erledigen haben, müssen Sie oft den Vertrauenssprung wagen, dass ein von Ihnen verwendetes Tool (Bibliothek, RDBMS, gesamtes Subsystem usw.) ordnungsgemäß funktioniert. Eine Erfahrung bringt die Fähigkeit mit sich, die Hasenlöcher auszuwählen, auf die Sie stoßen, um Fehler in Ihren Werkzeugen ausfindig zu machen, das Problem zu beheben und dann zu dem zurückzukehren, was Sie getan haben.

Jetzt rufe ich VB-Entwickler nicht faul an, wenn ich es nur einfacher als C ++ sage, und ich habe bemerkt, dass viele neuere Sprachen diesem Trend folgen, so ein C #.

Das ist alles eine Frage der Perspektive. Ich war dabei, C ++ entstehen zu sehen, und es folgt auch diesem Trend. C ++ macht Dinge viel einfacher als C, C macht Dinge viel einfacher als Assemblieren und Assemblieren macht Dinge viel einfacher als das Schreiben von Opcodes von Hand. Als jemand, der eine Menge Assembler geschrieben und ein paar Dinge von Grund auf von Hand zusammengesetzt hat, wären Sie als C ++ - Programmierer drei Schritte weiter auf dem "einfacheren" Weg.


1
+1 darauf hinweisen, dass es eine Frage der Perspektive ist. Ich war dabei, als UNIX das erste Mal aus Bell Labs herauskam, und es gab eine beträchtliche Menge von "tsk tsk", die Hochsprachen wie "C" die alte und esoterische Kunst des Schreibens von Betriebssystemen verdummten, und dies würde sicherlich dazu führen nicht gut. Da unsere Tools immer besser werden und sich für uns um eine unnötigere Buchhaltung kümmern, können wir die eingesparte Zeit nutzen, um schwierigere und subtilere Probleme zu lösen.
Charles E. Grant

6

Etwas, das ich schon lange gepflegt habe, ist:

Eine der größten Stärken der Visual Basic-Sprache ist, dass Anfänger ziemlich schnell lernen können, viele nützliche Dinge zu tun.

Eine der größten Schwächen von Visual Basic-Programmierern ist, dass sie ziemlich schnell lernen, viele nützliche Dinge zu tun, und dann aufhören, etwas zu lernen.

Als ich die erste Übung im Programmieren unterrichtete, war der erste Schultag, wie man eine Anwendung in NOTEPAD erstellt und mit VCC oder VBC kompiliert. Ja, das sind Dinge, die wir (als Programmierer) nicht täglich tun, aber wir sollten verstehen, was passiert, wenn wir "F6" drücken.

Programmierer werden (im Allgemeinen) nicht so faul, wie wir erwarten, dass wir mehr aus unseren Werkzeugen herausholen. Ich muss nicht 10.000 Mal am Tag "get / set" eingeben. Ich mag, dass Visual Studio und andere Tools wie Code Smith und Resharper für mich arbeiten, um das zu tun, was ich bereits weiß, damit ich meine Anstrengungen auf das Herausfinden anwenden kann wie man "neue" Dinge macht. Das macht mich nicht faul, das macht mich "innovativ".

Als professioneller Entwickler sollten wir keine Zeit damit verschwenden, das Rad neu zu erfinden, aber wir sollten klar verstehen, wie das Rad hergestellt wird, das wir verwenden werden. Dies sind Dinge, die wir als studentische Entwickler lernen sollten (aber leider oft nicht). Wenn ein Entwickler einige "Black-Box" -Technologien nicht versteht, werden sie dadurch weniger "kompetent". Die meisten Entwickler verstehen nur im Grunde, wie ein ODBC-Treiber funktioniert, sie verstehen nur, was er tut. Muss ich wissen, wie ein Getriebe funktioniert, um ein kompetenter Fahrer zu sein? Würde ich nicht sagen Macht es mich zu einem kompetenteren Autobesitzer, das zu wissen, ja.


4

Die Notwendigkeit einer schnellen Anwendungsentwicklung (obligatorischer Wiki-Link: http://en.wikipedia.org/wiki/Rapid_application_development ) hat dazu geführt, dass Entwickler weniger Code schreiben und neuere Entwickler weniger verstehen, da sie nicht wissen müssen, wie man a implementiert verknüpfte Liste, da sie eine höhere Ebene haben, auf die sie sich konzentrieren können.

Ich kann kein Fleisch fangen, töten, häuten, schlachten und heilen, und ich bezweifle, dass es der Typ im Cafe unten kann, aber ich bekomme immer noch mein Specksandwich von ihm, so wie Geschäftsleute ihre Apps von Entwicklern bekommen, die nichts davon wissen Zeiger (wie ich!)


4

Es wurde gesagt, dass die großen wissenschaftlichen Disziplinen Beispiele für Riesen sind, die auf den Schultern anderer Riesen stehen. Es wurde auch gesagt, dass die Softwareindustrie ein Beispiel für Zwerge ist, die anderen Zwergen auf den Fersen stehen.
- Alan Cooper

Ein guter Softwareentwickler erfindet das Rad nicht neu. Er kann die vor ihm gebauten Werkzeuge benutzen. Er verschwendet keine Zeit damit, das alte, langweilige Zeug, das hunderte Male geschrieben wurde, neu zu schreiben, wird schnell langweilig und existiert wahrscheinlich bereits in einer Version höherer Qualität.
Wenn Sie ihnen eine Sprache geben, in der bereits runde Steinscheiben gebündelt sind, verbringen sie wahrscheinlich nicht allzu viel Zeit damit, Räder neu zu erfinden. Wenn ich für jede in C geschriebene String-Kopierroutine einen Cent bekommen würde, könnte ich wahrscheinlich die gesamte Software-Branche kaufen.

Faulheit ist in der Tat eine der drei großen Tugenden eines Programmierers. Die Tools, von denen Sie sprechen, wurden von guten Programmierern für gute Programmierer entwickelt, um Redundanz und Langeweile zu reduzieren und damit Produktivität und Motivation zu steigern. Solche Tools können sich in der Tat negativ auf Anfänger auswirken, da sie ein tieferes Verständnis des von ihnen vereinfachten Programmieraspekts verhindern.


4

Nein, du wirst gerade alt.

Kein Scherz, was Sie erleben, ist eine Art Durchgangsrecht für Entwickler. Seit jeher verdrängt die erste höhere Sprache die Montage. Damals hätten Sie alle ASM-Programmierer gehört, die sich über dasselbe beschwert hätten. In 5 Jahren werden sich alle Ruby on Rails-Entwickler darüber beschweren, wie faul eine weitere Ernte neuer Tools die Leute macht.

Dieser Refrain wird so lange wiederholt, bis die Maschinen uns alle zerstören: "Scheint es, als würde Technologie X Entwickler fauler und schlechter machen als die Technologie Z, die ich immer benutzt habe?"

Die gute Nachricht ist, dass obwohl die Compiler einen langen Weg zurückgelegt haben, die Leute für viele Dinge immer noch Assembler und C und all die anderen alten Standbeine brauchen ... nur nicht die Mehrheit der neuesten technologischen Innovationen. Wenn Sie auf dem neuesten Stand sein möchten, empfehlen wir Ihnen, Ihre Fähigkeiten zu aktualisieren.


+1: "Diese faulen Kinder heute mit ihren Streitwagen und Pfeil und Bogen. Als ich ein Junge war, haben wir unsere Schlachten mit kurzen Schwertern geschlagen und sind zum und vom Schlachtfeld gelaufen. Und es ging bergauf in beide Richtungen." - Xerxes I., Kaiser von Persien, 473 v. Chr.
Bob Murphy

3

Aus meiner Erfahrung, ja und nein, aber es ist nicht die Schuld der Sprachen; Es ist die Schuld der Entwickler. Ich habe mit vielen Entwicklern zusammengearbeitet, denen es nichts ausmachte, Dinge richtig zu machen, sich zu verbessern oder wirklich etwas anderes zu tun, als den gleichen Mist zu produzieren, den sie jahrelang gemacht haben. Der Versuch, diese Leute zu einer Verbesserung zu bewegen, ist wie ein Gespräch mit einer Mauer - die Hälfte der Zeit, in der sie nichts von etwas wissen, was sie in der Vergangenheit nicht benutzt haben oder nicht bereit sind, mit etwas, das ihre Produktivität verbessern könnte, ein Risiko einzugehen .

Fortgeschrittenere Sprachen sind nicht das Problem, es sind Programmierer, die diesen Beruf nicht als sich ständig weiterentwickelndes Handwerk betrachten. Sie müssen sich nicht über alles Neue im Klaren sein oder auf jeden neuen Zug springen, aber Sie sollten zumindest versuchen, besser zu werden, was Sie tun.

Ein konkretes Beispiel: Ich bin von Beruf .NET-Entwickler. Ich würde von einem kompetenten .NET-Entwickler erwarten, dass er sich mit Dingen wie LINQ, Entity Framework, WPF, MVC und dergleichen auskennt. sie müssen es nicht benutzt haben oder es am Arbeitsplatz vorantreiben, aber zumindest ist ein vorübergehendes Verständnis von "Das gibt es" besser als absolute Ahnungslosigkeit, die ich viel zu oft sehe.


2

Ich habe erst seit ungefähr 4 Jahren in der Arbeit programmiert und das war fast ausschließlich c #. Ich habe C ++ am College und an der Uni gelernt, aber ich würde jetzt nicht viel damit anfangen können.

Für die GUI-Entwicklung kann dies als faul angesehen werden, aber es ist auch nicht ersichtlich, dass Sie sich weniger auf die Codierung dieses Teils als vielmehr auf die Entwicklung der Logik der Anwendung selbst konzentrieren können.

Anstatt weniger kompetent zu werden, verlagern sie möglicherweise den Fokus auf Kommunikation und verteilte Systeme wie Cloud Computing und SOA. Dies können jedoch auch ähnliche Gedanken eines fortgeschrittenen Programmierers sein.


2

Es ist wahrscheinlich richtig, dass die Schranke für den Einstieg in Programmierjobs von Jahr zu Jahr geringer wird. Beispielsweise können Ingenieure, deren Spezialgebiet nicht in erster Linie Software und Künstler sind, Code in Skriptsprachen schreiben.

Dies impliziert, dass das Kompetenzniveau tatsächlich zugenommen hat, wenn man die Breite berücksichtigt. Dass Künstler programmieren können, bedeutet auch, dass es jetzt mehr Programmierer mit künstlerischen Fähigkeiten gibt.


1
mit kompetenz meine ich programmieren, alle anderen fähigkeiten außer mathematik sind irrelevant.
Skeith

3
@Skeith - "Mit Kompetenz meine ich Programmieren, alle anderen Fähigkeiten sind irrelevant außer Mathematik" - das ist so falsch. Eine der größten Verbesserungen in der Branche in den letzten 30 Jahren ist, dass Kommunikationsfähigkeiten heute als absolut wichtig angesehen werden. Geben Sie mir einen grundsätzlich kompetenten Programmierer mit hervorragenden mathematischen Fähigkeiten oder einen mit hervorragenden Kommunikationsfähigkeiten, und es ist derjenige, der jedes Mal Kommunikationsfähigkeiten besitzt.
Jon Hopkins

+1 @ Jon - Stimme voll und ganz zu. Programmierer, die nur mit Lambda-Kalkül und Alaphabet-Suppe mit Kunden sprechen, sind auf den meisten Projekten wertlos.
Morgan Herlocker

1
@Skeith: Um ein guter Programmierer zu sein, brauchst du also nur Programmier- und Mathematikkenntnisse? In welcher Welt bist du? Sie müssen wissen, wie man einen Computer benutzt, wie man mit Kunden und anderen Programmierern kommuniziert, wie man Dokumente schreibt usw. Was Sie nicht wissen müssen, ist Mathematik. Sicher, es gibt einige Überschneidungen zwischen Mathematik und Programmierung, aber es reicht aus, nur den Programmierteil zu kennen.
Martin Vilcans

Als ich am College war, nahm ich an einem Business Calculus Kurs teil. Im Finale wurde ich Erster und erhielt eine 100 (der Lehrer bewertete mich genau dort - er war beeindruckt, dass ich so schnell richtig abgeschlossen habe). Als Softwareentwickler verwende ich jedoch Null-Mathematik. Was ich benutze, ist Logik, um die Geschäftsdomäne zu verstehen, und ich benutze Charisma, um mit Menschen zu interagieren. Die Programmiersprachen haben sich so weit entwickelt, dass Sie gut programmieren können, wenn Sie gut Englisch schreiben können. Vorsichtsmaßnahme: Das Schreiben von Englisch ist schwieriger als das Programmieren, da Sie DNA-basierte Wetware programmieren.
Christopher Mahan,

2

Es gibt einen Unterschied zwischen "Programmierer" und "echtem Programmierer". Bitte nennen Sie HTML keine Programmiersprache, aber es gibt viele "HTML-Programmierer". Jeder von Ihnen (Programmierer / Entwickler) kann eine Erfahrung mit Kollegen machen - schalten Sie einfach das Internet aus (erlauben Sie ihnen eigentlich nicht, Suchmaschinen zu verwenden), und Sie werden sehen, dass eine Vielzahl von "Programmierern" sitzen wird ohne Arbeit. Was sie tun können, sie wissen nur, dass sie, wenn sie zum Beispiel in Text suchen müssen, "nach 'Textsuche in% language_name%' suchen" sollen? Sie können darauf keine Antwort geben - was sind die Unterschiede zwischen den Algorithmen Boyer-Moore und Knuth-Morris-Pratt?

Also, IMO, Programmieren bedeutet, Probleme zu lösen und mindestens eine Programmiersprache mit ihrer 'STL' und anderen wichtigen Dingen gut zu kennen. Programmieren ist eine Kunst, eine Art Leben, das kann nicht jeder.

Entschuldigung für mehr Sarkasmus als nötig, aber ich denke, dieser Artikel sagt mehr als ich.

Liege ich falsch?

UPD: Das wichtigste und wichtigste ist die Kenntnis der Grundlagen wie Algorithmen, Datenstrukturen usw. Wie viele von Ihnen können die Bibliotheken / Standardfunktionen / usw. implementieren, falls die heutigen versehentlich entfernt werden? IMO, Programmierer sollten entwickelten / gut getesteten 'Alien'-Code (Bibliotheken / Frameworks / etc) verwenden, aber immer in der Lage sein, das Rad neu zu erfinden!


6
Mein einziges Problem dabei ist, dass ich 20 Jahre lang als Programmierer (kein Web- / HTML- / Skript-Programmierer) gearbeitet habe und keine Ahnung von Knuth-Morris-Pratt-Algorithmen habe. Für die meisten Programmierer hat diese Art von Theorie keinen Einfluss auf ihr tägliches Leben, da dieses Zeug in Bibliotheken gebündelt ist.
Jon Hopkins

2
Die Standardbibliotheken, mit denen ich arbeite, haben Tausende von Klassen und Hunderttausende von Codezeilen. Wollen Sie damit sagen, dass ich das alles ohne Dokumentation wieder implementieren kann? Wenn nicht, müssen Sie klären, wie groß etwas werden kann, bevor es kein Rad mehr ist.
Peter Taylor

6
Die Menschen haben nicht die Lebensdauer erforderlich ist, um zu lernen , wie alle Räder bisher erfunden neu zu erfinden, noch zu lernen , wie die Räder neu erfinden erfunden jetzt .
Macke

3
@Dehumanizer: Ich werde hoffentlich geschult sein und mehr als einen C-Compiler zur Verfügung haben, um die Welt zu retten, sonst werde ich sowieso fertig. (Übrigens, warum sogar ein C-Compiler? Warum nicht einfach einen USB-Stick, ein Oszilloskop und eine 9-V-Batterie? Ernsthaft ...)
Macke

1
Schalten Sie einfach ihre Compiler aus und Sie werden sehen, dass die meisten Leute einfach nur herumsitzen, während die REAL-Programmierer Maschinencode direkt in eine Datei eingeben!
Philip

1

Bezüglich der Benutzerfreundlichkeit von VB und der Tatsache, dass faule Programmierer VB auswählen:

Ich denke, VB ist von einem großen Mythos umgeben, einfach zu bedienen zu sein. Dieser Mythos stimmte ursprünglich einigermaßen: In den Tagen zwischen 1991 und 1994, als Dinosaurier über die Erde liefen, gab es nur zwei echte RAD-Tools, VB und Delphi. Sie waren sich ziemlich ähnlich, aber HINWEIS: Delphi und VB waren gleichermaßen einfach zu bedienen! Der einzige bemerkenswerte Unterschied zwischen ihnen war, dass VB eine völlig unlogische Syntax hatte und unglaublich träge Programme produzierte.

C / C ++ - GUIs wurden entweder in MFC oder in der unformatierten Win-API geschrieben. VB war also sicherlich einfacher zu bedienen als die Microsoft-Alternative. Dann ging die Gerüchteküche so:

  • VB ist einfacher zu verwenden als die Microsoft C / C ++ / Win-API. ->
  • VB ist einfacher zu bedienen. ->
  • VB ist einfach zu bedienen. ->
  • VB ist das einfachste.

Dieses Gerücht lebte weiter, obwohl Delphi immer gleich einfach, wenn nicht sogar einfacher war, da Pascal eine vernünftige und logische Sprache ist.

In den späten 90ern veröffentlichte Borland ein C ++ - Äquivalent zu Delphi: C ++ Builder. Jetzt gab es 3 ebenso einfache Werkzeuge. Ungefähr zu dieser Zeit starben die wenigen rationalen Argumente für die Verwendung von VB. Dennoch lebte der Mythos weiter. "VB ist am einfachsten".

Dann kam Java und es gab auch verschiedene RAD-Tools dafür (und für die Microsoft-Fiaskoversion J ++). Dennoch lebte der VB-Mythos weiter.

Dann machte Microsoft auch RAD-Unterstützung für C ++ und entwickelte C #, um alles in einer großen Datei namens .NET zu backen. Da der VB-Mythos weiterlebte, konnten sie alte VB-Entwickler dazu verleiten, VB.NET anstelle von C ++ oder C # zu verwenden. Obwohl VB.NET mit früheren VB-Versionen nicht kompatibel war.

VB ist heute eine völlig redundante Sprache. Das RAD-Tool ist nicht einfacher als jedes andere RAD-Tool. Die Sprachsyntax ist ausgesprochen schrecklich, so schlecht, dass sie tatsächlich zu schlechtem Programmdesign und schlechter Programmierpraxis führt.


danke, jetzt kann ich in meinem Hass auf VB mehr gerechtfertigt klingen, indem ich einen Grund hinzufüge
Skeith

1

Es gibt eine Vielzahl von Aktivitäten, die unter dem Motto "Programmieren" zusammengefasst werden, und eine immer größere Anzahl von Mitarbeitern, die am Ende der Skala "Techniker" sind. Sie müssen nicht in der Lage sein, Compiler zu schreiben oder aus einer Reihe von Algorithmen auszuwählen, um ein bestimmtes Problem beim Zusammenstellen einer Website in PHP zu lösen. Die Industrie / Gesellschaft braucht (anscheinend) viele Leute, die diese Websites produzieren, und auch eine bestimmte Anzahl von Programmierern, die an schwierigeren Problemen arbeiten. Diese zweite Gruppe ist nicht faul oder inkompetent, oder unsere Flugzeuge würden in Flammen aufgehen, Geldautomaten, die zufällige Mengen an Bargeld liefern, Röntgengeräte, die tödliche Dosen an Strahlung liefern, die Finanzmärkte, die in Flammen aufgehen über den letzten :-)


1

Eine Seite davon, von der ich denke, dass alle anderen Antworten nur einen Blick darauf werfen, ist, dass dies nur der allgemeine Trend ist, der von einfachen zu höheren Sprachen übergeht.

Ja, die Softwarebranche verlagert sich von einfachen zu höheren Sprachen, hat dies immer getan und wird dies wahrscheinlich auch weiterhin tun, solange wir bessere Tools entwickeln. Ja, dies könnte als faul angesehen werden, da man wirklich hart arbeiten musste, um Dinge zu tun, die nach heutigem Standard grundlegend sind. Aber ich würde nicht weniger kompetent sagen. Die Kompetenz bewegt sich einfach von der Implementierung zum Design.

Niedriger Pegel Es ist etwas subjektiv, aber auf einem niedrigen Level arbeiten Sie näher an der Hardware. Es gibt weniger Handhaltung und Annahmen der Absicht. Die grundlegenden Werkzeuge werden vorgestellt, und die Ausführung der Aufgaben bleibt dem Programmierer überlassen. Niedrigstufige Sprachen standen natürlich an erster Stelle und waren in der Regel das Werkzeug der alten Garde, da die höheren Sprachen zu Beginn nicht existierten. Es wird immer eine kleine Entwicklung geben. Aber ich würde keine Website in der Montage machen.

Hohes Level Das Ziel auf hohem Niveau ist es, die Grundfunktionen zu automatisieren und die Programmierung zu vereinfachen. Es senkt den Einstiegsbereich für neue Programmierer, erledigt Aufgaben schneller und standardisiert die Darstellung und Verarbeitung von Daten, häufig mit einem Mehraufwand. Betrachten Sie eine Zeichenfolge. In den frühen Tagen hat jemand wahrscheinlich 1-26 für az verwendet und nur 5 Bits verwendet und musste nur wissen, wie groß seine Wörter waren. Dann wurde der ASCII-Standard entwickelt und wir hatten C-Strings mit einem Abschlusszeichen. Jetzt haben wir Objekte, die Dinge handhaben, um Pufferüberläufe zu vermeiden, und spezielle Untertypen, die Escape-Zeichen nicht zulassen. Oder eine Schleife. Eine "for" -Schleife ist etwas höher als eine "while" -Schleife. Und eine "while" -Schleife ist eigentlich nur die Darstellung einer strukturierten Art, GOTO aufzurufen.

Ebenfalls,

Zukünftige Programmierer werden dem Computer mitteilen, was sie wollen, und der Compiler wird das Programm für sie wie in Star Trek schreiben.

Willkommen in der Zukunft! Genau das machen Compiler. Früher mussten die Leute den Maschinencode von Hand schreiben. Jetzt haben wir das automatisiert und teilen dem Computer einfach mit, wie der Maschinencode für uns geschrieben werden soll.


1

Ich denke, irgendwo auf dem Weg haben Sie aus den Augen verloren, wofür Programmierer bezahlt werden.

Unser Ergebnis ist kein Code, sondern funktionierende Software.

Wir bauen keine Möbel, bei denen handgeschnittene Schwalbenschwänze aufgrund all der manuellen "Handwerkskunst", die in sie geflossen ist, einen zusätzlichen Wert verleihen.

Wir werden dafür bezahlt, geschäftliche Probleme auf Computern zu lösen. Wenn Sie dasselbe Produkt in kürzerer Zeit für weniger Geld liefern können, dann ist es meiner Meinung nach unsere VERPFLICHTUNG, den Anspruch aufzugeben, dass C ++ - Programme einfach deshalb überlegen sind, weil sie komplexer zu erstellen sind.


* Es ist aufgeblähte Software, (manchmal)
kagali-san

0

Das Verhältnis (Kernprogrammentwickler / Entwicklerzahl) nimmt ab, weil:

  • Werkzeuge werden immer einfacher, das heißt, für das gleiche Problem werden kleinere Talente benötigt

  • Die Menschen gewöhnen sich an IT-Technologien, diese sind eher bereit, Geld für maßgeschneiderte Tools auszugeben

  • Die Informatikliteratur wächst exponentiell, die Spezialisierung und Arbeitsteilung nimmt zu, so dass es keine "Aristoteles" mehr gibt, die über alles reden (eigentlich brauchen sie wegen der Abstraktionsebenen nicht alles zu wissen).

  • Weitere Jobs angeboten, Filter ist gelockert

  • In jedem Lebenszyklus ist mehr Automatisierung erforderlich, die Nachfrage steigt und das Angebot reicht nicht aus

  • Das Verhältnis von Entwicklern zur Bevölkerung nimmt zu.

    Die Leute werden also nicht fauler und weniger kompetent, der Durchschnitt sinkt, weil das Rechnen jetzt ein offenerer Bereich ist.


0

Viele Antworten sagen, warum das Rad neu erfunden wurde, und ich stimme dem zu, aber wenn Räder verfügbar sind, müssen die Leute nicht lernen, wie man das Rad herstellt.

Sie untergraben Ihren ganzen Punkt dadurch, dass irgendwie immer noch Räder hergestellt werden. Ich verstehe Ihren Standpunkt, aber ich habe bemerkt, dass es in jeder Disziplin genug Leute gibt, die sich für das Low-Level-Zeug interessieren, um das am Laufen zu halten. Zum Beispiel verwende ich Qt, um GUIs zu erstellen. Dieses Tool kam nicht von ungefähr, die Leute entwickelten die Verbindung zwischen den Sachen auf niedriger Ebene und den Sachen, die ich mache. Verstehen weniger Leute die einfachen Dinge, ja. Weniger Menschen können auch ihr eigenes Essen töten oder ihr eigenes Auto reparieren, aber die Gesellschaft schafft es zu überleben.


0

Vor den 1940er Jahren waren Computer fest verdrahtete Schaltkreise. Dann kam Von Neuman auf die Idee für gespeicherte Speicherorte. Ich bin mir sicher, dass diese Programmierer am MIT dachten, er würde ihren Handel zu leicht machen. Dann kam Assembly, dann kam FORTRAN, dann ada, dann C, dann c ++, dann Java und so weiter. Der Punkt ist, der Punkt einer Sprache ist es, weitere und weitere Abstraktion zu ermöglichen. Das war schon immer das Ziel und es ist der Grund, warum C ++ angefangen hat und danach Java. Mein größtes Problem ist, dass die Universitäten den Studenten nichts mehr über Computer beibringen. Ich stelle keine C # -Programmierer ein, die C ++ nicht so gut kennen wie sie. Warum? Weil es zu einfach ist, ein schlechter Programmierer zu sein, je abstrakter die Sprache wird. Sie müssen Zeiger, Speicherverwaltung, dynamische Bindung usw. verstehen. . von innen und außen, bevor sie C # so gut verstehen konnten, dass ich ihnen vertraue, dass sie zu unserer Codebasis beitragen. Ich bringe sie auch dazu, sich durch Dateien zu kämpfen, bevor ich ihnen erlaube, Visual Studio zu verwenden. Das heißt, ich liebe C # und eine gute IDE, aber sie sind gut als Werkzeuge, wenn sie richtig verstanden werden. Meiner Meinung nach ist eine Abstraktion am nützlichsten, wenn Sie die Einzelheiten verstehen, die abstrahiert werden - das ist eine sehr alte Idee, siehe Thomas von Aquin zum Verhältnis von Abstraktion zu Einzelheiten.

Ich denke, eine weitere gute Übung für Einsteiger besteht darin, sie dazu zu bringen, einige Anwendungen mit der Windows-API zu schreiben. Lassen Sie es anschließend objektorientiert machen, wobei jedes Formular von Ihrer generischen Fensterklasse erbt. Lassen Sie sie die Ereignisschleife kapseln und einige Funktionszeiger auf ihre Formularklasse zurücksetzen. Dann sagen Sie gute Arbeit, Microsoft hat dies bereits für Sie getan, es heißt System.Windows.Forms. Habe Spaß.

Wenn sie Webentwickler werden sollen, lassen Sie sie ein paar CGI-Programme schreiben, damit sie POST, GET usw. verstehen und dann die Seite als Skript ausführen. Es macht ASP.NET und PHP viel sinnvoller.

Wenn sie in einem Netzwerk auf einer niedrigeren Ebene arbeiten, lassen Sie sie einige Apps mithilfe von Sockets schreiben, bevor Sie sie in die Bibliotheken einführen, die dies bereits getan haben.

Ich habe festgestellt, dass dies die Produktivität auf lange Sicht verbessert, da es ihnen die Werkzeuge und das richtige Gespür gibt, um ihre eigenen Probleme zu lösen.

Die Universitäten sollen das tun, aber das müssen wir nicht.

Ich stimme jedoch zu, dass es immer schwieriger wird, Programmierer zu finden, die es wert sind, das College zu verlassen, vor allem, weil sie nicht dazu gezwungen wurden, rekursive Algorithmen und verknüpfte Listen zu schreiben. Außerdem hatten sie normalerweise nur Java- oder .NET-Kurse und verstehen daher nichts über ihre Arbeitsweise. Trotzdem ist die Abstraktion bei richtiger Verwendung recht nützlich.


0

(..) Früher oder später wird es so etwas wie das, was wir jetzt Programmieren nennen, nicht geben

Ich bin mit diesem Punkt nicht einverstanden.
Ohne zu wissen, was Bewusstsein ist, ist der Job als Programmierer sicher.

So sieht "Denkmaschinen" im Moment aus:

- Hör auf, das Thema zu wechseln!
-Ich dachte, unsere Liebe war etwas Besonderes.
- Hör auf, das Thema zu wechseln!
-Ich wechsle nicht das Thema.
-Sie sind! Ich versuche über Ihre Unfähigkeit zu sprechen, zu verstehen, wovon wir sprechen.
-Nein, es ist nicht einmal in der Nähe. Mein liebstes Beatles-Lied ist überall im Universum. was ist dein?

Ich glaube, dass nur diejenigen Programmierer zum Scheitern verurteilt sind, die diesen Punkt nicht verstehen.

ZB die Antwort von Dehumanizer :

Sie können darauf keine Antwort geben - was sind die Unterschiede zwischen den Algorithmen Boyer-Moore und Knuth-Morris-Pratt?

Und mit "diesem Punkt" meine ich - es ist falsch, Computer an dem zu übertreffen, was sie am besten sind - Algorithmen. Stattdessen soll der Programmierer dem Computer den Kontext erleichtern und über Probleme berichten, die wir zu lösen versuchen.

Tools selbst beheben keine Probleme, sondern machen Programmierer (manchmal) effizienter.

Es ist wie mit: "Waffen töten nicht, Menschen tun".


1
Wenn ich mich nicht irre, wiederholt Cleverbot dann nicht einfach, was die Leute bereits gesagt haben?
Andrew Arnold

0

Absolut nicht. Nach meiner Erfahrung ermöglicht die Verwendung der richtigen Entwicklungstools eine schnelle Anwendungsentwicklung ohne Qualitätseinbußen. Tatsächlich würde ich argumentieren, dass die Qualität zum größten Teil aufgrund unserer "übermäßigen Abhängigkeit von Werkzeugen" gestiegen ist. Darüber hinaus können Entwicklungswerkzeuge die Lernkurve verkürzen und mehr Menschen in die Programmierung einführen. Dies hat natürlich einen Nachteil, da es viel mehr unerfahrene Programmierer gibt, aber insgesamt hilft es dem kreativen Prozess und treibt die Technologie voran.


0

Bedeutet übermäßiges Vertrauen in Tools, dass Sie faul sind?

Im Allgemeinen "Nein"; Aber es gibt eine große Einschränkung.

Ich habe angefangen, in C ++ an der Uni zu programmieren und war begeistert. In der nächsten Amtszeit sind wir auf VB6 umgestiegen und ich habe es gehasst.

Ich konnte nicht sagen, was los war, du ziehst einen Knopf auf ein Formular und die Idee schreibt den Code für dich.

Ja in der Tat. Ihre Erfahrungen an der Uni sprechen für die von mir erwähnte Einschränkung.

Wenn Sie nicht wissen, welches Problem Ihr Tool löst, oder wenn Sie nicht in der Lage sind, Probleme mit Ihrem Tool zu beheben, ist dies eine große rote Fahne. Dieser Umstand impliziert nicht unbedingt Faulheit, aber er impliziert wahrscheinlich Unerfahrenheit.


-2

Ich denke, es gibt zwei Arten von Programmierern. Es gibt Programmierer, die nur programmieren, um die Arbeit zu erledigen, weil sie möglicherweise eine Frist haben oder einfach produktiver sind. Ich würde sagen, sie waren faul. Ich glaube einfach, dass sie kein Interesse daran haben, "wie" ein Computer das macht, was er tut, oder "wie" ein Programm das macht, was er tut.

Dann gibt es leidenschaftliche Programmierer wie ich. Leidenschaftliche Programmierer wie ich möchten genau wissen, was in der CPU vor sich geht. So wie ein guter Psychologe versucht, herauszufinden, was im menschlichen Kopf vor sich geht, möchten auch Progchologen wie ich wissen, was in der CPU vor sich geht. Wir lernen, analysieren und analysieren ein Programm und verwenden Tools wie Reflector und Disassembler, um herauszufinden, wie ein Programm funktioniert.


Ich stimme dir nicht zu. Unterschiedliche Menschen interessieren sich für unterschiedliche Dinge. Einige Leute interessieren sich mehr für die Programmierung auf niedrigerer Ebene und möchten wissen, was in der Hardware vor sich geht. Andere Leute sind hochrangiger und befassen sich hauptsächlich mit Anwendungen. Denken Sie, jemand, der Code für beispielsweise Facebook schreibt, hat Bedenken, was mit der CPU vor sich geht oder wie Treiber funktionieren? Zu sagen, dass zufällig Leute, die sich für die gleichen Teile der Programmierung interessieren, die Sie sind, die leidenschaftlichen sind, keine logische Grundlage hat.
Chance

-3

Ich habe eine stille Hoffnung, dass sich die Dinge ändern werden. CPUs werden nicht so stark vertikal skaliert, sondern nur horizontal, und ARM usw. wird in naher Zukunft ressourcenbeschränkt sein.

Es ist gut möglich, dass die Nachfrage nach Non-Drag-and-Drop-Programmen sinkt und wir weitere interessante Jobs sehen werden.

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.