Steve Yegge post su piattaforma vs prodotto [chiuso]

7

Sto leggendo questo e mi sono imbattuto in:

The Golden Rule of Platforms, "Eat Your Own Dogfood", can be rephrased as "Start with a Platform, and Then Use it for Everything." You can't just bolt it on later. Certainly not easily at any rate -- ask anyone who worked on platformizing MS Office. Or anyone who worked on platformizing Amazon. If you delay it, it'll be ten times as much work as just doing it correctly up front. You can't cheat. You can't have secret back doors for internal apps to get special priority access, not for ANY reason. You need to solve the hard problems up front.

Che cosa significa esattamente? Qualcuno può spiegare, per favore?

    
posta sharp_net 13.10.2011 - 04:49
fonte

4 risposte

11

Un punto che sta facendo è che, specialmente per tutto ciò che è orientato al web, ma anche per gli altri, si ottiene un grande beneficio fornendo un'interfaccia aperta e programmabile. Ciò non significa un'interfaccia utente con un linguaggio macro, ma un'interfaccia utente che è in gran parte separata dal "motore" che fa il vero lavoro - e una documentazione completa e aperta su come l'interfaccia utente parla al motore, quindi qualcuno può scrivere un'intera nuova interfaccia utente che utilizza il motore, componenti aggiuntivi del motore che possono collegarsi perfettamente all'interfaccia utente, ecc.

In breve, invece di costruire (o addirittura pensare in termini di) prodotti completi, dovresti pensare e lavorare principalmente in termini di produzione di componenti utili. Questi componenti devono funzionare l'uno con l'altro in modo pulito, ma non è abbastanza da solo. Le interfacce tra questi componenti devono essere chiaramente documentate e definite in modo tale che siano idonee a sostituire sostanzialmente (ad esempio) l'interfaccia utente con qualcosa di proprio, collegarlo al motore ed essere in grado di utilizzare il motore al massimo capacità, perché hanno accesso alle proprie capacità proprio come chiunque altro.

In definitiva, questo non è un cambiamento radicale da ciò che è stato spinto per un certo tempo (ad es. applicazioni a 3 livelli). La grande differenza è che anche se sono scritti come componenti, la maggior parte delle tipiche applicazioni a 3 livelli presuppongono fondamentalmente che tutti i componenti in uso saranno prodotti insieme, quindi tutte le interfacce tra di loro sono "private". In alcuni casi ci sono supposizioni implicite che un componente non debba controllare gli input da un altro, perché "sa" quali input l'altro può produrre.

Soprattutto per i server con connessione Web e simili, non è sostenibile. Invece, l'interfaccia ogni deve essere "hardened" - specificata e implementata per funzionare in qualsiasi circostanza, specificatamente inclusa la possibilità che qualunque cosa sia dall'altra parte dell'interfaccia possa essere sciatta e schifosa, o addirittura un attaccante accuratamente progettato.

Considerato da una prospettiva leggermente diversa, un prodotto dovrebbe fornire l'accesso a uno qualsiasi dei diversi livelli. Per gli utenti principianti, dovrebbe avere un'interfaccia utente lucida. Per gli utenti più avanzati, dovrebbe avere una sorta di programmabilità integrata per modificare cose che non gli piacciono, automatizzare cose che fanno troppo spesso, ecc. Infine, e soprattutto, dovrebbe fornire un'interfaccia di basso livello che fornisca < em> controllo completo di ogni aspetto del "motore" di quel prodotto. Questo deve essere esattamente quello che usi per sviluppare il tuo codice personale per lavorare con il motore del prodotto, quindi chiunque altro ha accesso completo a quel motore come fa la tua interfaccia utente.

    
risposta data 13.10.2011 - 08:09
fonte
5

Grazie per il link - Steve Yegge deve essere il miglior rancher su Internet in questi giorni. E dal momento che il ranting è praticamente l'app killer di Internet, questo sta dicendo qualcosa. Alla tua domanda:

What does that exactly mean? Can someone please explain?

Uh, hai letto il pezzo, giusto? L'ho fatto, e ricordo che Steve spende la maggior parte (okay, alcuni) della sua colonna-pollici spiegando cosa significa quel paragrafo. Vedi Mangiare il tuo cibo per cani per una spiegazione della metafora del cibo per cani, se ti serve spiegarlo.

Oltre a ciò, la Big Idea di cui parla attraverso l'intero pezzo è che ci sono molti vantaggi nella creazione di una piattaforma per i prodotti invece di un unico prodotto fai-da-te che cerca di essere tutto per tutti. Con una piattaforma, puoi creare molti prodotti diversi e puoi consentire a altre persone di creare prodotti anche sulla tua piattaforma, e in questo modo puoi servire meglio i tuoi clienti e persino lasciarli usare le tue cose per servire loro stessi. Ma , non funziona se non ti impegni alla piattaforma; non funziona se non usi la piattaforma tu stesso, o se la usi, ma hai anche alcuni strumenti aggiuntivi per uso interno.

Aggiungendo i miei 2 centesimi, ciò di cui parla è molto simile alla differenza tra design top-down e bottom-up. Top-down: tu hai inventato un prodotto e poi hai impostato come specificare tutte le cose che il prodotto sarà in grado di fare, e poi lo costruirai. Bottom-up: si sogna un prodotto, ma invece di cercare di determinare ogni piccola caratteristica in primo piano, si costruisce invece un numero di parti che è possibile combinare in tutti i modi per arrivare a qualcosa di simile al prodotto che hai immaginato in primo luogo, ma lungo la strada potresti anche usare quegli stessi strumenti per costruire un sacco di altre cose a cui non hai mai nemmeno pensato.

    
risposta data 13.10.2011 - 07:59
fonte
5

Usa il tuo software - è il modo migliore per testarlo e perfezionarlo.

Una "piattaforma" è questo articolo si riferisce a un pezzo di software che altre persone possono utilizzare per far funzionare i propri programmi. Ad esempio, Facebook è la "piattaforma" utilizzata da Zynga per realizzare "Farmville".

Anche Windows è una piattaforma - perché altri programmi (Word, Chrome, World of Warcraft) lo usano per funzionare.

L'articolo fa la distinzione tra una "piattaforma" e un "prodotto". Un prodotto è anche un pezzo di software, ma è "stand alone" - è qualcosa che le persone useranno, ma non è qualcosa che i creatori di software possono "estendere" scrivendo software che lo usa. La maggior parte dei programmi eseguiti su Windows sono prodotti in questo senso piuttosto che piattaforme.

La più grande critica in questo articolo è contro Google+, che è un prodotto (per me) brillante (come in I love to use it) ma non una buona piattaforma perché non espone un'API o un servizio che altri programmatori possono uso. Ad esempio: Google Reader non può vedere e pubblicare facilmente su Google+; Flipboard (app per iPad) non può vedere o pubblicare su Google +.

    
risposta data 13.10.2011 - 08:21
fonte
0

Credo che stia dicendo: "Usa la stessa interfaccia che stai dando al mondo esterno". L'interfaccia che fornisci ai tuoi programmatori sarà buona (si spera perché un programmatore creerà un'interfaccia che vorrebbe usare). Se hai un'interfaccia diversa internamente rispetto a quella esterna, mancherà l'interfaccia esterna poiché le persone che la utilizzano non sono in grado di cambiarla in meglio.

In questo modo, nessuno utilizzerà la tua piattaforma perché sarà impossibile da usare. Non saranno in grado di ottenere le informazioni dalla piattaforma di cui hanno bisogno. Sono retrocessi in cittadini di seconda classe e terze parti andranno da qualche parte dove sono trattati bene.

    
risposta data 13.10.2011 - 06:26
fonte

Leggi altre domande sui tag