Es scheint mir, dass die Programmindustrie in einem Wettlauf nach unten steckt. Wenn wir die Praktiken von:
- Keine Zeit für die Implementierung von Best Practices
- So oft wie möglich den Personencode anderer verwenden (benutzerdefinierter Code als Verbindlichkeit)
- Verwendung von immer höheren Sprachen zur Verbesserung der Produktivität
- GUI-basierte "Entwicklungstools", die das "Programmieren" erheblich vereinfachen und es nicht erforderlich machen, dass die Benutzer die Hintergründe des Codes verstehen
Diese Dinge implizieren für mich, dass wir im Wettlauf sind, wie jeder andere Büroangestellte zu werden. Es liegt im Interesse des Arbeitgebers, dass die Dinge keine Fertigkeiten erfordern (einfacher zu ersetzen), dass die Dinge vorkonstruiert werden (weniger Projektzeit).
Mein Punkt hier ist, dass a) es eine Abweichung zwischen den Fähigkeiten und den wirtschaftlichen Interessen des Arbeitgebers gibt? und b) wenn ja, wie verringern Sie dies, um professionelle Standards durchzusetzen?
Antworten:
Ich denke, Sie haben eine sehr ergreifende Frage gestellt.
Das Erstellen von GUI-Codierungswerkzeugen macht Programmierer genauso arbeitsunfähig wie Roboter Fließbandarbeiter. Meiner Meinung nach gibt es zwar einen Verlust an Arbeitsplätzen, aber auch eine Verlagerung der nächsten Arbeitsplätze.
Die Technologie, um eine Aufgabe zu erledigen, ändert sich, aber die Aufgabe muss noch erledigt werden: Die Autos müssen noch hergestellt / zusammengebaut werden, bevor sie gefahren werden können; Der Code / die Geschäftslogik muss noch zusammengesetzt werden, damit die Anwendung funktioniert.
Neue Technologien bieten Programmierern folgende Möglichkeiten: Lernen Sie GUI-basiertes Programmieren oder programmieren Sie GUI-Tools ... oder ... etwas ganz anderes.
Es kann zu einem Missverhältnis zwischen den Fähigkeiten der Arbeitnehmer und den Interessen des Arbeitgebers kommen, jedoch nicht lange, insbesondere wenn der Arbeitgeber versiert ist. Es ist daher im besten Interesse sowohl des Arbeitgebers als auch des Arbeitnehmers, das zu ihrem gegenseitigen Nutzen zu tun. Aber einer wird dem anderen unweigerlich voraus sein. Hoffentlich bist du es (-:
Die besten Wünsche,
KM
quelle
Zu den Trends, die Sie erwähnen, möchte ich noch einen hinzufügen, der IMHO sie erklärt:
Es gibt weitaus mehr Programmierer (benötigt) als jemals zuvor.
Die Anzahl der Aufgaben, die eine Programmierung erfordern oder einschließen, nimmt ständig zu und ist sogar noch höher als die Anzahl der Programmierer. Heutzutage gibt es mehrere Mikrochips in einem durchschnittlichen Auto. In 5 Jahren befindet sich möglicherweise ein Chip in Ihrem Kühlschrank und Ihrem Toaster. In 10 Jahren Ihre Unterwäsche? ... Und jemand muss all diese Software produzieren, damit diese funktionieren. Es werden also alle möglichen Anstrengungen unternommen, um das Automatisierbare zu automatisieren und die "Produktivität" (wie auch immer definiert) zu verbessern. Und immer mehr neue Köpfe werden rekrutiert.
Dies impliziert, dass die Mehrheit der aktiven Programmierer von heute unerfahren und / oder schlecht auf ihre Arbeit vorbereitet ist. Es dauert mehrere Jahre, um ein angemessenes Erfahrungsniveau zu erreichen, und es erfordert ständiges Lernen, um sich dort zu halten. Unter dem Strich werden immer mehr Programmieraufgaben immer weniger anspruchsvoll. Aber es gibt immer noch genug Herausforderungen für jeden, der sie sucht .
Lassen Sie mich den Anwalt des Teufels gegen Ihre obigen Punkte spielen:
Viele Leute tun es nicht, viele Leute tun es. Als ich vor zehn Jahren zum ersten Mal Unit Testing und den agilen Ansatz entdeckte, hatte keiner meiner Kollegen die geringste Ahnung, was es war. Heutzutage ist es fast Standardmaterial an Universitäten, so dass es viele junge Absolventen bereits verstehen.
Im Gegensatz zu was? Das Rad neu erfinden? Oder den Code anderer Leute verwenden, um das zu vermeiden?
Ich denke, es ist wichtig zu wissen , dass wir (meistens) dafür bezahlt werden, Probleme zu lösen, und das Schreiben von Code ist nicht das Ziel, sondern nur das Mittel dazu . Wenn ein Problem gelöst werden kann, ohne eine einzige Codezeile zu schreiben, macht es den Kunden trotzdem glücklich. Vor allem, wenn es uns so gelingt, eine zuverlässigere Lösung schneller und kostengünstiger herzustellen. Ich sehe kein Problem damit.
Im Gegensatz zur Codierung alles in der Montage? ;-)
IMHO kann jedes Werkzeug missbraucht werden. Das heißt nicht, dass GUI-Builder notwendigerweise perfekt oder sogar gut waren - die meisten (oder zumindest einige) von ihnen sind innerhalb ihrer Grenzen verwendbar. Aber wenn jemand diese Grenzen nicht kennt, ist es ein Problem des Werkzeugs oder seines Benutzers?
Im Allgemeinen glaube ich (obwohl ich keine Beweise dafür habe), dass in den Tagen der Lochkarte und des Maschinencodes ungefähr derselbe Anteil des vorhandenen Codes schrecklich war wie jetzt, nur beides
war viel viel weniger.
Mit dem Internet und dem Daily WTF sind wir nun Tag für Tag den schlimmsten Beispielen ausgesetzt. Es ist ein bisschen so, als würde man alle Nachrichten über Terrorismus und Erdbeben sehen und sich von Promis scheiden lassen, und schreien, wie gefährlich und unmoralisch diese Welt geworden ist.
quelle
Sie fassen die Situation richtig zusammen, interpretieren die Bedeutung aber völlig falsch.
Je leistungsfähiger die Software wird, desto größer werden auch die Aufgaben, die sie übernimmt. Daher ist es heutzutage möglicherweise nicht mehr erforderlich, Datenbankprogrammierer zu sein, um eine Telefonkontaktdatenbank zu erstellen, wenn Sie Access verwenden können. Es kann auch sein, dass Sie kein Webprogrammierer sein müssen, um ein Blog einzurichten, wenn Sie nur auf WordPress zugreifen können. Aber während es vor 15 Jahren notwendig gewesen wäre, ein Programmierer zu sein, um diese Dinge zu tun, ist das, was Programmierer jetzt tun, um Größenordnungen größer als das, was vor 15 Jahren getan werden könnte.
Lassen Sie es mich so sagen, in 100 Jahren wird es trivial sein, ein so komplexes System wie Facebook oder Google einzurichten. Ich spreche nicht ihre Webseiten, ich meine ihre Rechenzentren. Jeder wird es schaffen. Es wird in Telefone eingebaut, vorausgesetzt, wir verwenden sie sogar noch. ABER, es wird immer noch Programmierer geben, und obwohl sie in 100 Jahren möglicherweise nicht an solchen "trivialen" Systemen arbeiten, werden sie an Systemen arbeiten, die so viel komplexer und ausgefeilter sind, dass hier niemand anfangen kann, ihren Umfang und ihre Möglichkeiten zu verstehen Rahmen. Und diese Systeme, wie die jetzigen, sind für den durchschnittlichen Büroangestellten weit außerhalb der Reichweite, da einige Leute, sogenannte Programmierer, sich darauf spezialisiert haben , die Technologie dieser Ära auf die Spitze zu treiben.
quelle
Ich habe so etwas jetzt seit vierzig Jahren gelesen, und ich war nicht am Anfang der Vorhersagen. Es ist noch nicht passiert.
COBOL war das ursprüngliche Entwicklungstool, mit dem die Notwendigkeit von Business-Programmierern beseitigt werden sollte, und es war eine viel höhere Sprache als Assembler. Codebibliotheken (um nicht den eigenen Code schreiben zu müssen) sind von ähnlicher Antike.
Von Zeit zu Zeit taucht etwas auf, das es Nicht-Programmierern ermöglicht, etwas Ähnliches wie Programmierarbeit zu tun. Es gab in den 1980er Jahren "Sprachen der vierten Generation", ausgefallene Tabellenkalkulationen wie Excel, Berichtsgeneratoren und dergleichen. Was sie einheitlich gemacht haben, ist, wenn sie erfolgreich sind, einen Teil der Arbeit von der Programmierung zu entfernen und es den Programmierern zu ermöglichen, andere, interessantere Dinge zu tun.
Dieses Muster wird nicht ewig anhalten, aber ich brauche mehr als theoretische Argumente und Vorhersagen, um mich davon zu überzeugen, dass die Programmierung tatsächlich bergab geht.
Das Problem von COBOL mit modernen Entwicklungstools ist, dass sie nicht die Fähigkeit ersetzen, eine ungenaue Spezifikation in etwas Präzises und Nützliches umzuwandeln. Das ist die grundlegende Fähigkeit von Programmierern, und warum wir nicht für eine lange Zeit weggehen.
quelle
Assembler- und FORTRAN-Programmierer sagten wahrscheinlich dasselbe, als strukturierte Programmierung und weit verbreitete Interpreten ins Spiel kamen.
Letztendlich ist Software eine Kreation, die etwas automatisieren soll, was zuvor von Hand gemacht wurde. Früher hätte eine Buchhaltungsabteilung in einem gemäßigten Unternehmen Dutzende von Mitarbeitern benötigt, jetzt kann die gesamte Arbeit von einem oder zwei Mitarbeitern ausgeführt werden. Infolgedessen haben sich die Torpfosten verschoben, und wir erwarten jetzt diesen zusätzlichen Leistungsstandard von einem Buchhalter.
Das Rendern von Filmen dauert bei Pixar länger als je zuvor. Trotz der damit einhergehenden enormen Steigerung der Rechengeschwindigkeit fordern die Animatoren immer komplexere und detailliertere Szenen. Die Animation des Toy Story-Kalibers ist 2010 nicht mehr akzeptabel wie 1995. Mit der Weiterentwicklung der Tools sind auch die Fähigkeiten und damit die Erwartungen gestiegen.
Wenn Drag & Drop oder andere Programmiermethoden an der Tagesordnung sind, wird die Welt nach Lösungen für noch schwierigere und komplexere Probleme verlangen, und sie werden Programmierer benötigen, die diese neueren ausgefallenen Tools verwenden, um sie zu lösen. Die Torpfosten bewegen sich.
quelle
Obwohl ich den meisten Antworten zustimme, die darauf hinweisen, dass noch viel zu tun ist, werde ich Ihnen eine andere Antwort geben, die Sie berücksichtigen sollten:
Ja, das ist es und das sollte es auch sein
Ich bin hier, um eine Lösung für Probleme zu finden, die andere nicht können. Alles im Toolset, das mir die Zeit nimmt, Probleme zu lösen, um all die kleinen Details der Implementierung meines Designs zu behandeln, ist Verschwendung.
Der einzige Grund, warum ich befürchte, zu einer höheren Sprache oder zu einem einfacheren und abstrakteren Tool zu wechseln, ist, dass diese Tools häufig Annahmen treffen, die mir im Weg stehen, und dass ich Zeit brauche, um die Annahmen zu umgehen, um die gewünschte Implementierung zu erzielen.
Es gibt immer mehr Probleme zu lösen, als es gute Problemlöser gibt. Selbst wenn die gesamte Entwicklungskette so einfach werden würde, dass Kinder im Vorschulalter sie nutzen könnten, wären die meisten der entwickelten Lösungen unzureichend oder ineffizient genug, um eine bessere Lösung zu erzielen, da die meisten nur schlecht darin sind, die richtige Lösung für Probleme mit allen Randfällen zu finden und was-wäre-wenns, die Sie berücksichtigen müssen, um eine gute Lösung zu finden.
Unsere Aufgabe ist es, Probleme besser zu lösen als die meisten anderen. Die Komplexität der Toolkette ist in der Gesamtansicht nicht sonderlich relevant, solange sie aus dem Weg geht und Sie etwas Gutes bauen und bauen lassen.
quelle
Auch wenn sich die Programmiertechnologien ändern können, ist die zugrunde liegende Komplexität eines Softwareprodukts immer noch vorhanden. Wenn Software vollständig mithilfe von Diagrammen oder Flussdiagrammen (oder auf eine andere "einfache" Weise) geschrieben werden kann, muss die gesamte Komplexität der Software noch verstanden und angesprochen werden. Aus diesem Grund ist es für Arbeitgeber wichtig, Programmierer zu haben, die die Produkte des Unternehmens genau kennen, um sie zu aktualisieren oder neue Funktionen hinzuzufügen. Und es kann eine Weile dauern, bis Mitarbeiter ein Softwareprodukt kennengelernt haben.
quelle
Unabhängig davon, was Sie automatisieren oder aus dem Regal ziehen können, lassen sich die meisten Softwarepakete in zwei Kategorien einteilen:
Ich glaube, ich habe die dritte Software vergessen. Es handelt sich um Standardproduktivitätssoftware (E-Mail, Browser, Textverarbeitung usw.). Die Software in Kategorie 1 führt dazu, dass Unternehmen Softwareentwickler einstellen, um die Standardsoftware anzupassen (sofern dies möglich ist) Sie können auch einen Entwickler beauftragen, weil die Person, die dieses anpassbare System in- und auswendig kennt, entweder sehr gefragt ist (denken Sie an SAP, PeopleSoft usw.) oder eine aussterbende Rasse ist (denken Sie an ein System, das SAP und PeopleSoft ähnlich ist und das nicht so ganz gleiche Marktdurchdringung haben).
Entwickler werden immer benötigt. Was ich sehe, ist, dass mehr manuelle, mühsame, sich wiederholende Arbeit automatisiert wurde (denken Sie daran, Code für den Datenzugriff von Hand zu schreiben, statt einen O / RM zu verwenden). Dadurch können Entwickler mit weniger Aufwand mehr Wert für das Unternehmen schaffen.
quelle
Ich nehme Ihre Argumente nicht an:
außer dass.
Die Wiederverwendung von Code ist eine bewährte Methode. Verwendeter Code wird getestet. Natürlich sollten Sie Code aus guten Quellen verwenden, der von vielen gepflegt und verwendet wird.
Produktivität ist an sich nicht schlecht - oder?
Wenn das Werkzeug die Arbeit erledigt: Verwenden Sie es. Wenn nicht: lehne es ab. Wenn das Versprechen hält und die Leute den Code wirklich nicht verstehen müssen - gut gemacht! Sie scheinen zu sagen, dass dies ein Versprechen ist, das nicht hält?
(Die Zahlen hier werden automatisch falsch wiedergegeben. :))
quelle
Visuelle Programmierung ist nicht weniger gültig oder verdient Verachtung als textbasierte Programmierung.
Es gibt bestimmte Defizite und Herausforderungen bei der visuellen Programmierung, aber die zugrunde liegenden Komponenteninstallationen, die möglicherweise gefährlich sind, wenn sie ignoriert werden, werden nicht von visuellen Komponenten und insbesondere von visuellen Designern monopolisiert. Das Ignorieren der zugrunde liegenden Rohrleitungen ist ein Risiko für jede Entwicklung.
Wenn Sie die Möglichkeit haben, Labview auszuprobieren, sehen Sie möglicherweise das Potenzial (oder sogar eine spezielle Variante in der Lego NXT-Umgebung). Obwohl nicht ohne Mängel oder Mängel, gibt es Vorteile. Sehen heißt glauben.
quelle
Programmierpraktiken steigern nicht nur die Produktivität und senken die Kosten für bestimmte Entwicklungstypen (Ihr Wettlauf nach unten), sondern steigern auch die Anwendungsfähigkeiten und die Kundenerwartungen (und fördern so den Wettlauf nach oben). Erleben Sie die Boni, die Goole und Facebook zahlen, um Spitzentechnologen zu gewinnen.
quelle
Es gibt keinen anderen Beruf, der sich mit Existenztechnik befasst, die sich so sehr um Veränderung bemüht wie das Programmieren. Sobald Sie etwas vereinfachen, öffnen Sie nur eine Dose für neue Probleme, die neue Ideen hervorbringen.
Daher würde ich die Bemühungen anderer Menschen, Code und Lösungen zu teilen, nicht verschmutzen, um uns dabei zu helfen, neue Herausforderungen, Ideen und Benutzererfahrungen mit den schlechten Praktiken, schlechten Gewohnheiten und Manieren des einzelnen Praktizierenden ohne Humanismus in Angriff zu nehmen.
quelle
Wenn wir die Praktiken von:
WTF? Meinten Sie, dass diese Liste inkonsistent ist? Listen sollten für jedes Element von derselben Seite kommen, anstatt ohne Vorwarnung hin und her zu wechseln. So sollte Ihre Liste lauten:
Wenn wir die Praktiken von:
quelle