Lohnt es sich immer noch, die Desktop-GUI-Entwicklung zu lernen? [geschlossen]

18

In den letzten Jahren waren alle seriösen Projekte, an denen ich gearbeitet habe, entweder webbasiert oder hatten eine nicht grafische Benutzeroberfläche (Dienste, Befehlszeilenskripte usw.). Ich kann eine WinForms-App zusammenstellen oder bei Bedarf ein einfaches WPF ausführen, aber ich habe mich nie wirklich mit einigen der APIs auf niedrigerer Ebene wie MFC oder QT befasst.

Ich verstehe, dass dies von der jeweiligen Situation abhängt, aber lohnt es sich im Allgemeinen immer noch, sich Zeit zu nehmen, um die Desktop-Entwicklung gut zu erlernen, oder bewegen sich Anwendungen in einem Tempo auf das Web und mobile Geräte, das dieses Wissen weniger relevant macht? Erwarten Sie auch, dass Entwickler, mit denen Sie zusammenarbeiten, über Erfahrung mit Desktop-GUIs verfügen?

aubreyrhodes
quelle
5
Die Entwicklung von Desktop-Anwendungen ist großartig, aber für die Liebe von Knuth sollte man sich nicht mit MFC beschäftigen. Alles, was Sie für 95% der Windows-Desktop-App-Jobs benötigen, ist WinForms oder WPF / XAML. Die anderen 5% der Jobs, die Sie nicht haben möchten.
Adam Crossland
1
@Adam: +1 für "Die anderen 5% der Jobs, die Sie nicht haben möchten." - So wahr. :)
Bobby Tables

Antworten:

38

Ich würde ja sagen, das ist es. Es gibt eine Art Pendeleffekt in der Programmentwicklung. Zuerst lief alles direkt auf dem Computer. Als der Computer dann leistungsfähig genug wurde, um mehrere Programme auszuführen, erhielten sie Großrechner mit dummen Terminals. Aber dumme Terminals sind wirklich schlecht in Bezug auf die Benutzerfreundlichkeit. Sobald Computer leistungsfähig genug waren, um eine angemessene Menge an Hardware in ein terminalgroßes System zu stecken, erhielten wir PCs, und alles lief direkt auf dem Computer.

Dann haben sie das World Wide Web erfunden, und wir sind zurück zu einem Mainframe (Server) und einem dummen Terminal (Browser). Aber dummen Terminals mangeln es immer noch an Benutzerfreundlichkeit, und die Leute fangen an, die Lektionen von vor 30 Jahren neu zu lernen , und wir neigen dazu, wieder weg. Ein großer Teil der aktuellen Entwicklung betrifft Desktop-Apps (oder mobile Apps), die lokal ausgeführt werden, jedoch für bestimmte Zwecke eine Verbindung zum Internet herstellen können, um ihre Funktionalität zu verbessern.

Mason Wheeler
quelle
5
+1 für den Hinweis, dass diese Trends zyklisch ablaufen. Ich habe jedoch einen Fall gesehen, in dem eine Terminal-App als Desktop-App umgeschrieben wurde und die Benutzer effizienter mit der Terminal-App arbeiten konnten.
Larry Coleman
2
Der Unterschied zu Browsern besteht darin, dass sie tatsächlich Code auf dem lokalen System ausführen können, und diese Fähigkeit wächst mit jeder Browsergeneration. Die Folge davon ist, dass der Usability-Unterschied zwischen Desktop- und Web-Apps nicht so groß ist. Für viele Menschen (auch für mich) ist Google Mail nützlicher als Outlook. Das Pendel schwingt jedes Mal weniger weit und stoppt auf halbem Weg. Apps sind eine Mischung aus lokalen und Cloud-Teilen, unabhängig von der zugrunde liegenden Technologie.
Joeri Sebrechts 18.11.10
13
+1, ich hasse es, wenn Leute behaupten, dass der Desktop tot ist, es ist lächerlich.
Dr. Hannibal Lecter
1
@Joeri: Die meisten Terminals könnten immer mindestens ein paar Kleinigkeiten vor Ort erledigen. Eine deprimierende Menge von JavaScript, die ich gesehen habe, führt Dinge aus, die ein IBM 3270 (zum Beispiel) auch lokal hätte tun können.
Jerry Coffin
1
@Joeri Sebrichts - Wenn ich in Google Mail eine E-Mail per Drag & Drop in eine Aufgabe oder einen Kalendereintrag ziehen kann, bin ich mit Ihnen einverstanden, aber bis dahin viel zu wenig Funktionen.
JeffO
11

Selbst wenn Sie nie vorhaben, Desktop-Entwickler zu werden, würde ich Ihnen empfehlen, über genügend Erfahrung zu verfügen, um eine fundierte Meinung darüber zu haben, wann es besser ist, eine Desktop-Lösung über einen Web-Client zu verwenden.

Rechnung
quelle
+1: Angenommen, 'der Desktop ist tot' und Pigenholing-Anwendungen sind das Gegenteil von reinen Desktop-Entwicklern, die sagen, "das könnte als Web-App niemals gut sein". Wählen Sie aus, mit was Sie arbeiten möchten, aber kennen Sie den anderen gerade genug, um die wahren Vorteile / Fallstricke zu kennen.
Steven Evers
8

Ja, aber nicht so, wie Sie denken.

Die GUI-Programmierung ist nicht schwieriger und erfordert neben der Kenntnis der GUI-Programmierschnittstelle auch keine besonderen Kenntnisse. Das Anschließen von Schaltflächen, Fenstern und Steuerelementen ist nicht sonderlich schwierig und in modernen Programmierumgebungen im Vergleich zu den Anfängen mit Dingen wie MFC ziemlich einfach. GUI-Programmierung ist etwas, das ziemlich einfach zu erlernen ist, wenn es verlangt wird.

Während das Anschließen von Schaltflächen und Textfeldern relativ einfach ist, ist es sehr schwierig zu wissen, wann und wo Schaltflächen platziert werden sollen, und eine Benutzeroberfläche zu entwerfen , die von Menschen verwendet werden soll. Das ist eine sehr wertvolle und wichtige Fähigkeit. Die Designprinzipien, die für native Schnittstellen im Vergleich zum Web gelten, sind jedoch sehr ähnlich.

Lernen Sie also, wie Sie gute Benutzeroberflächen entwerfen, die effektiv sind und die Benutzer nicht verwirren, und machen Sie sich kostenlos mit der Programmierung vertraut.

Whatsisname
quelle
2
Insbesondere in diesen Tagen ist User Experience für das Software-Design zuständig. Architektur ist nicht mehr zuständig.
Rwong
5

Es wird wirklich von deiner Situation abhängen. Ich habe kürzlich für ein Fortune 500-Unternehmen gearbeitet, das mehrere Projekte hatte, um Webanwendungen wieder in Desktopanwendungen (SmartClient / Click-Once) umzuwandeln. Unter diesen besonderen Umständen ergab dies einen großen Sinn und beseitigte mehrere Usability-Probleme, unter denen ihre vorhandenen Apps litten.

Wenn Sie Vollzeitbeschäftigter sind und Ihr Unternehmen im Allgemeinen keine Desktop-Apps entwickelt, ist es wahrscheinlich nicht sinnvoll, mit Winforms oder WPF auf dem neuesten Stand zu sein. Wenn Sie jedoch ein Berater sind und Ihren Kunden einen anderen Service anbieten möchten, kann dies nicht schaden.

Walter
quelle
4

Hmm, neben GMail, Stack-Exchange und dem Homebanking meiner Bank benutze ich den ganzen Tag Nicht-Web-Software. Mit dem Aufkommen von Smartphones und Tablets sind Webanwendungen für mich noch weniger attraktiv (ich verwende meinen Smartphone-Facebook-Client). Das ist benutzerseitig.

Entwicklerseite: In den letzten 10 Jahren habe ich fast nur mit Nicht-Web-Software gearbeitet (und meine Karriere als Softwareberater umfasste viele sehr unterschiedliche Bereiche), und ich sehe keinen zukünftigen Web-Trend in meinem Job.

Also ja, es ist immer noch ein Muss , Desktop-GUI-Umgebungen zu lernen.

Wizard79
quelle
2
Wow, Sie benutzen keine Internet-Suchmaschine?
JBRWilkinson
1
@ JBRWilkinson: Nein, ich verlasse mich auf Gopher. Im Ernst, ich benutze Google sicher den ganzen Tag, aber das ist kein wirklicher Ersatz für ein Desktop-Tool oder eine Desktop-Anwendung.
Wizard79
2

Natürlich "kommt darauf an" - aber ich denke, Ihre Erfahrung ist typisch. Ich musste selten einen Thick-Client für eine der von mir geschriebenen Anwendungen erstellen. Es sei denn, es gibt einen bestimmten Grund, warum der Client auf dem Desktop ausgeführt werden muss (Konnektivitätsprobleme oder 3D-Spiele usw.). Ich glaube, dass es für Entwickler und Administratoren einfacher ist, eine "Instanz" der Anwendung zu verwalten. Wenn sie über die erforderlichen Fähigkeiten zum Entwerfen einer Webanwendung verfügen, sollten sie im Allgemeinen in der Lage sein, in den Bereich der Desktopanwendungen einzusteigen.

Eigentlich finde ich es wichtiger, dass ein Thick Client-Entwickler das Programmieren von Webanwendungen lernt - die ererbte Zustandslosigkeit von HTTP erschwert es einem Paradigma für die Anwendungsentwicklung, den Kopf herumzureißen (oder man muss zumindest ein bisschen mehr nachdenken als nur schlagen) Bedienelemente auf einem Panel).

Vergessen Sie nicht - Sie haben Technologien wie Silverlight und Adobe Flex / AIR, mit denen Sie die Grenze zwischen Desktop- und Webanwendungen überschreiten können.

Watson
quelle
+1 für die Webentwicklung ist schwieriger. Ich habe als Desktop-Entwickler angefangen und musste im Job in die Webentwicklung einsteigen. Es ist definitiv komplexer (dies setzt natürlich vergleichbare Aufgaben voraus, was nicht einfach ist).
Bobby Tables
@Guzica - Ja, ich habe eine ähnliche Einstellung von guten Entwicklern erlebt, mit denen ich zusammengearbeitet habe und die sich auf die Entwicklung von Desktop-Apps festgelegt haben. Sobald sie versuchen, den Schalter zu machen, ist es für sie nicht so einfach, wie sie zuerst dachten. Ich weiß nicht, ob dies eine inhärente Komplexität der Web-App-Programmierung ist, es ist nur eine andere Art zu programmieren, und viele Ihrer zugrunde liegenden Annahmen darüber, was das System tun kann, müssen sich ändern (zusätzlich zum Erlernen neuer Frameworks).
Watson
Es ist immer schwieriger, Dinge mit Tools zu tun, die begrenzter sind, was es nicht "komplexer" macht. Es macht es mehr Ärger.
Sam
0

Nach Angaben des IE9-Teams:

Es sollte keine Lücke zwischen nativen und Web-Apps geben. HW-Beschleunigung, schnelle JS- und Site-Fixierung starten

Ich denke, es ist eine sichere Wette, dass diese Technologien enger zusammenwachsen. Wenn Sie ein Java-Entwickler sind, gibt es kaum einen Unterschied zwischen der Entwicklung von Desktop-Apps und Web-Apps (mithilfe von GWT). Es ist nicht unvernünftig zu erwarten, dass immer mehr "Desktop" -Entwicklungsplattformen auf die Browser-Engine abzielen. Es ist auch nicht unangemessen zu erwarten, dass immer mehr Desktop-Apps über ein webähnliches Verteilungsmodell verfügen (automatische Aktualisierung im Hintergrund, Sandbox-Ausführung wie Chrome).

Joeri Sebrechts
quelle
3
Das ist total BS. Ich arbeite an einer App zur Latenzmessung, die lokal lokalisiert werden muss, um die Latenzen der Marktdatenlieferung in "Echtzeit" zu messen und anzuzeigen. So etwas wird NIEMALS in die Cloud verschoben.
Tim
Es ist BS total, weil Sie eine lächerlich dunkle Notwendigkeit für eine Anwendung gefunden haben, lokal zu sein?
Mike M.
@Tim: Sie haben Recht, dass einige Apps immer lokal sind. Es ist auch wahr, dass andere Apps niemals lokal sein könnten (z. B. Google Translate). Lokales Ausführen bedeutet jedoch nicht, dass es nicht aus der Cloud stammt. Chrome wird lokal ausgeführt, ist jedoch eine Cloud-basierte App (Sie haben wenig Kontrolle darüber, um welche "Version" es sich handelt). Es gibt Versuche, die Ausführung von nativem Code an Browserplattformen (Google NaCl) zu binden, und Versuche, Web-Sprachen an native Apps (Adobe Air) zu binden.
Joeri Sebrechts 19.11.10
1
@ Mike M - das ist nicht lächerlich dunkel. Bei meinem vorherigen Job habe ich an Bord von Navy-Software gearbeitet. Diese befinden sich wahrscheinlich auch nicht in der Cloud. Die Domänen, in denen ich arbeite, werden wahrscheinlich nicht migriert - sie müssen aus Gründen der Latenz und der Hardwareschnittstelle lokal sein. Das Web ist nett, aber einige von uns arbeiten aus einem bestimmten Grund immer noch im nativen App-Bereich.
Tim
@ Tim Mein Punkt ist, dass Sie ein Szenario gefunden haben, das es nicht hält. Der Autor erkennt dies, wenn er MOST sagt. Sie haben einen Kontrapunkt gefunden, und das ist großartig. Sie haben keineswegs bewiesen, dass das Ganze keine Grundlage hat. Natürlich wird es Zeiten geben, in denen es aus einer Vielzahl von Gründen lokal sein muss. Aber für die überwiegende Mehrheit, werfen Sie ein Glasfaserkabel und Ihre 1200 Meilen können in was gekreuzt werden, 10 Millisekunden? Als Benutzer würde es mir nichts ausmachen, wenn jede einzelne meiner Desktop-Anwendungen 10 Millisekunden länger dauert, um ein Formular zu laden.
Mike M.