Vale ancora la pena imparare lo sviluppo di gui desktop? [chiuso]


18

Negli ultimi due anni, tutti i progetti seri su cui ho lavorato sono stati basati sul Web o con un'interfaccia utente non grafica (servizi, script della riga di comando, ecc ...). Posso mettere insieme un'app WinForms o fare un semplice WPF quando necessario, ma non ho mai approfondito alcune API di livello inferiore come MFC o QT.

Capisco che ciò dipende dalla situazione, ma in generale vale comunque la pena dedicare del tempo per imparare bene lo sviluppo del desktop o le applicazioni si spostano sul Web e sui dispositivi mobili a un ritmo che rende questa conoscenza meno rilevante? Inoltre, ti aspetti che gli sviluppatori con cui collabori abbiano esperienza nella gui desktop?


5
Avere lo sviluppo di applicazioni desktop è fantastico, ma per amore di Knuth, non preoccuparti di MFC. Tutto ciò di cui hai bisogno per il 95% dei lavori delle app desktop di Windows è WinForms o WPF / XAML. L'altro 5% dei lavori che non vuoi avere.
Adam Crossland,

1
@Adam: +1 per "L'altro 5% dei lavori che non vuoi avere." - Così vero. :)
Bobby Tables,

Risposte:


38

Direi di sì, lo è. C'è una sorta di effetto pendolo nello sviluppo del programma. Innanzitutto tutto è andato direttamente sul computer. Quindi quando il computer è diventato abbastanza potente da eseguire più programmi, hanno ottenuto i mainframe con terminali stupidi. Ma i terminali stupidi fanno davvero schifo in termini di usabilità, quindi non appena i computer sono diventati abbastanza potenti da mettere una quantità ragionevole di hardware all'interno di un sistema di dimensioni terminali, abbiamo i personal computer e tutto è andato direttamente sul computer.

Quindi hanno inventato il World Wide Web e siamo tornati a un mainframe (server) e un terminale stupido (browser). Ma i terminali stupidi fanno ancora schifo in termini di usabilità e le persone stanno iniziando a imparare di nuovo le lezioni di 30 anni fa e ci stiamo allontanando di nuovo da questo. Gran parte dello sviluppo molto attuale in questi giorni è per le app desktop (o mobili) che vengono eseguite localmente, ma sono in grado di connettersi a Internet per scopi specifici per migliorare la loro funzionalità.


5
+1 per indicare che queste tendenze si svolgono in cicli. Tuttavia, ho visto un caso in cui un'app terminal è stata riscritta come app desktop e gli utenti sono stati in grado di lavorare in modo più efficiente con l'app terminal.
Larry Coleman,

2
La differenza con i browser è che possono effettivamente eseguire codice sul sistema locale e questa capacità aumenta con ogni generazione di browser. La conseguenza di ciò è che la differenza di usabilità tra desktop e app Web non è così grande. Per molte persone (incluso me stesso) Gmail è più utilizzabile di Outlook. Ogni volta il pendolo oscilla meno lontano e si fermerà a metà strada, con le app che sono una miscela di parti locali e cloud, indipendentemente dalla tecnologia sottostante.
Joeri Sebrechts,

13
+1, odio quando le persone iniziano a sostenere che il desktop è morto, è ridicolo.
Dott. Annibale Lecter,

1
@Joeri: la maggior parte dei terminali potrebbe sempre fare almeno qualche bit a livello locale. Una quantità deprimente di JavaScript che ho visto fa cose che un IBM 3270 (per un esempio) avrebbe potuto fare anche localmente.
Jerry Coffin,

1
@Joeri Sebrichts - quando Gmail mi consente di trascinare e-mail in un'attività o in un elemento del calendario, posso essere d'accordo con te, ma fino ad allora, un numero troppo limitato di funzionalità.
JeffO,

11

Anche se non hai mai intenzione di fare desktop dev, ti suggerirei di avere abbastanza esperienza su cui avresti un'opinione informata su quando è meglio usare una soluzione desktop su un client web.


+1: Supponendo che "il desktop è morto" e che le applicazioni pigenholing siano l'opposto dei puri sviluppatori desktop che affermano "che non potrebbe mai essere buono come un'app Web". Scegli quello con cui vuoi lavorare, ma conosci l'altro abbastanza da conoscere i suoi veri vantaggi / insidie.
Steven Evers,

8

Sì, ma non nel modo in cui stai pensando.

La programmazione della GUI non è più difficile né richiede competenze specifiche oltre alla familiarità con l'interfaccia di programmazione della GUI. Collegare pulsanti, finestre e controlli non è tremendamente difficile ed è abbastanza facile con i moderni ambienti di programmazione rispetto ai primi tempi con cose come MFC. La programmazione della GUI è roba che è abbastanza facile da imparare quando richiesto.

Tuttavia, mentre agganciare pulsanti e caselle di testo è abbastanza facile, sapere quando e dove posizionare i pulsanti e progettare una gui da usare da parte degli esseri umani è molto difficile. Questa è un'abilità molto preziosa e importante da avere. Tuttavia, i principi di progettazione che si applicano alle interfacce native rispetto al Web sono molto simili.

Impara quindi come progettare interfacce utente efficaci, efficaci e che non confondano gli utenti, e acquisirai familiarità con la programmazione gratuitamente.


2
Soprattutto in questi giorni User Experience è responsabile della progettazione del software. L'architettura non è più responsabile.
rwong

5

Dipenderà davvero dalla tua situazione. Di recente ho lavorato per un'azienda Fortune 500 che aveva diversi progetti per riconvertire le applicazioni Web in applicazioni desktop (SmartClient / Click-Once). Nelle loro circostanze particolari ha avuto molto senso ed eliminato diversi problemi di usabilità di cui soffrivano le app esistenti.

Se sei un dipendente a tempo pieno e la tua azienda non progetta in genere app desktop, probabilmente non ha senso essere completamente aggiornato su Winforms o WPF. Se, tuttavia, sei un consulente e desideri essere in grado di offrire un altro servizio ai tuoi clienti, allora non è possibile che ti faccia male.


4

Hmm, oltre a GMail, Stack-Exchange e l'home banking della mia banca, utilizzo tutto il giorno software non web. Ora con l'avvento di smartphone e tablet, le applicazioni web sono ancora meno attraenti per me (utilizzo il mio client Facebook per smartphone). Questo è lato utente.

Lato sviluppatore: negli ultimi 10 anni ho lavorato quasi esclusivamente su software non web (e la mia carriera ha attraversato molti domini molto diversi mentre lavoravo come consulente software) e non vedo alcuna tendenza web futura nel mio lavoro.

Quindi sì, è ancora indispensabile imparare gli ambienti della GUI desktop.


2
Wow, non usi un motore di ricerca per Internet?
JBR Wilkinson,

1
@JBRWilkinson: no, mi affido a Gopher. Seriamente, sicuro di usare Google tutto il giorno, ma non è in realtà un sostituto per qualsiasi strumento desktop o applicazione.
Wizard79,

2

Ovviamente "dipende" - ma penso che la tua esperienza sia tipica. Raramente ho dovuto creare un client spesso per una qualsiasi delle applicazioni che ho scritto. A meno che non vi sia un motivo specifico per cui il client deve essere in esecuzione sul desktop (problemi di connettività o gioco 3D, ecc.), Credo che sia più facile per lo sviluppatore e gli amministratori mantenere una "istanza" dell'applicazione. Se hanno l'abilità impostata per progettare un'applicazione Web, dovrebbero andare bene spostandosi nel regno dell'app desktop in generale.

In realtà penso che sia più importante che uno sviluppatore di client spessi apprenda la programmazione delle applicazioni Web - l'eredità dell'apolidia dell'HTTP rende un paradigma di sviluppo delle applicazioni più difficile da avvolgere (o almeno devi pensare un po 'più che schiaffeggiare controlli su un pannello).

Non dimenticare: hai tecnologie come Silverlight e Adobe Flex / AIR che possono scavalcare la linea tra l'applicazione desktop / web.


+1 per lo sviluppo web è più difficile. Ho iniziato come sviluppatore desktop e ho dovuto passare allo sviluppo web sul posto di lavoro. È decisamente più complesso (ovviamente si tratta di assumere compiti comparabili, il che non è facile).
Tavoli Bobby,

@Guzica - sì, ho riscontrato un atteggiamento simile da parte dei bravi sviluppatori con cui ho lavorato che erano bloccati nello sviluppo di app desktop. Una volta che cercano di rendere l'interruttore non è così facile per loro come avevano pensato prima. Non so se si tratti di una complessità intrinseca nella programmazione di app Web, è solo un modo diverso di programmare e molte delle ipotesi di base su ciò che il sistema può fare devono cambiare (oltre all'apprendimento di nuovi framework).
Watson,

È sempre più difficile fare le cose con strumenti più limitati, che non lo rendono "più complesso". Lo rende più una seccatura.
Sam,

0

Secondo il team IE9:

Non ci dovrebbe essere un divario tra app native e web. L'accelerazione HW, il JS veloce e il pinning del sito iniziano

Penso che sia una scommessa sicura che queste tecnologie si avvicineranno insieme. Se sei uno sviluppatore Java, c'è poca differenza tra lo sviluppo di app desktop e app Web (utilizzando GWT). Non è irragionevole aspettarsi che sempre più piattaforme di sviluppo "desktop" siano in grado di indirizzare il motore del browser. Inoltre, non è irragionevole aspettarsi che sempre più app desktop abbiano un modello di distribuzione simile al web (aggiornamento automatico in background, esecuzione sandbox, come Chrome).


3
Questo è BS totale. Sto lavorando a un'app di misurazione della latenza che deve essere localizzata al fine di misurare e visualizzare in "tempo reale" le latenze della consegna dei dati di mercato. Questo genere di cose non verrà MAI spostato nel cloud.
Tim

È totale BS perché hai trovato un'esigenza ridicolmente oscura che un'applicazione sia locale?
Mike M.

@Tim: hai ragione che alcune app saranno sempre locali. È anche vero che altre app non potrebbero mai essere locali (ad esempio google translate). Tuttavia, l'esecuzione in locale non implica che non provenga dal cloud. Chrome viene eseguito localmente ma è un'app basata su cloud (hai poco controllo su quale "versione" sia). Ci sono tentativi di legare l'esecuzione di codice nativo nelle piattaforme del browser (Google NaCl) e tentativi di legare le lingue web in app native (Adobe Air).
Joeri Sebrechts,

1
@Mike M - non è ridicolmente oscuro. Nel mio lavoro precedente ho lavorato sul software di bordo della Marina. Anche quelli probabilmente non saranno nel cloud. I domini in cui lavoro probabilmente non migreranno: devono essere locali per motivi di latenza e interfaccia hardware. Il web è bello, ma alcuni di noi lavorano ancora nell'area dell'app nativa per un motivo.
Tim

@Tim Il mio punto è che hai trovato uno scenario che non regge. L'autore lo capisce quando dice di PIÙ. Hai trovato un contrappunto, ed è grandioso. Non hai affatto dimostrato che l'intera cosa non ha basi. Naturalmente ci saranno momenti in cui deve essere locale per una moltitudine di ragioni. Ma per la stragrande maggioranza, getta un po 'di cavo in fibra ottica e le tue 1200 miglia possono essere attraversate in cosa, 10 millisecondi? Come utente starei bene con ciascuna delle mie applicazioni desktop impiegando 10 millisecondi in più per caricare un modulo.
Mike M.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.