Diagrammi di Classi
I diagrammi sono un tentativo (a mio parere semplificativo, pratico e assolutamente ben inquadrato) di avvicinare la modellazione UML a cui un Ing. del SW può essere abituato, allo sviluppo integrato in .NET. Sebbene siano due cose diverse, l'UML e questi Class Diagram, ben utili possono essere allo sviluppatore che vuole avere un maggior impatto visivo alla gerarchia di classi e alla architettura creata nel progetto.
Si possono creare classi a partire da diagrammi, con la Toolbox in figura:

Oppure si possono scrivere classi intere di solo codice e poi "vederle" in un Class Diagram (ovviamente facendo Drag & Drop con esse).
Il risultato è che possiamo pensare al modeling di alto livello in una GUI, avendo sotto controllo l'insieme e delegando l'implementazione ad un momento più distante.

IntelliSense
Quando qualche tempo fa, mi fu chiesto cosa ne pensassi dell'IntelliSense, questa fu la mia risposta:
"I use IntelliSense as the main foundation of my development activity. Using IntelliSense let me avoid to learn specific method names, properties.. It helps me to determine anonymous types and I could go on :). IntelliSense is the only thing in VS I can rely on, and It would be impossible to renounce to this feature. IMHO IntelliSense is perfect as it is now, at the current state of the art."
In sostanza, mi sento di affermare che l'IntelliSense è indispensabile per ogni developer poichè, in quest'epoca di professionisti dalle 1000 competenze, delegare la mnemonicità all'IDE, è scelta obbligata.

Frammenti di Codice
Qualche settimana fa, a casa di Giuseppe, mi ha sconvolto la scoperta che un maestro di siffatta consistenza, abbia appreso da me l'arte dei frammenti di codice. Quelle icone a forma di pagina strappata che volgarmente si vedono quando vi accingete a scrivere una riga di codice, sono in realtà snippet che contengono codice, e che possono essere inseriti ove si voglia semplicemente digitando il nome (ad esempio "prop") facendolo seguire da due colpi di TAB.
Il risultato è la generazione di codice editabile. Lo possiamo fare anche noi? Certo, a seguire un esempio di snippet:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="...">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>Fibonacci Sequence</Title>
      <Shortcut>fibo</Shortcut>
      <Description>Genera la funzione per calcolare la sequenza dei primi N numeri di fibonacci.</Description>
      <Author>Roberto Freato</Author>
    </Header>
    <Snippet>
      <Declarations>
        <Literal Editable="true">
          <ID>FuncName</ID>
          <ToolTip>Nome della funzione generata</ToolTip>
          <Default>Fibonacci</Default>
          <Function>
          </Function>
        </Literal>
      </Declarations>
      <Code Language="csharp"><![CDATA[static int $FuncName$(int x)
{
    Console.WriteLine("x = {0}", x);
    if (x <= 1)
    {
        return 1;
    }
    return $FuncName$(x - 1) + $FuncName$(x - 2);
}]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

Ricordare la sintassi XML di uno snippet è cosa ardua, per cui possiamo delegare il tutto ad un software reperibile a questo link, che ci aiuta nella definizione degli snippet => http://snippy.codeplex.com/. Per importare uno snippet appena creato, si utilizza l'apposita funzione nel menù Tools:

Toolbox
Un altro modo figo per salvare frammenti di codice è la toolbox. Se qualcuno ha mai notato che la tipica toolbox degli elementi droppabili, mentre si scrive il codice, è vuota, questo è proprio perchè possiamo selezionare del codice nella nostra classe e "trascinarlo" direttamente nella toolbox.

Questa operazione creerà un item che potremmo poi rinominare a piacimento e metterlo anche in una nuova tab della toolbox stessa. Il risultato è che poi potremmo utilizzare i frammenti di codice a sinistra, esattamente come già facciamo su una pagina ASP.NET o in una pagina WPF.

Infine per inserire qualunque snippet dell'ambiente, anche quelli non presenti nella lista dell'IntelliSense, basta premere Ctrl+K e poi Ctrl+X.

ClickOnce
Questa metodologia di Deployment è comoda in contesti in cui l'applicazione sia leggera, sia frequentemente aggiornata e sia difficile il deploy sulle macchine (e magari su macchine molto numerose). Consiste nel creare una build dell'applicativo in remoto (su un web server) con un particolare manifest ad indicarne la versione e altre proprietà.
La prima volta, si indicherà agli utenti di raggiungere l'URL del prodotto e di cliccare su installa. Il file con estensione application è riconosciuto dal .NET framework e subito avvia l'installazione del prodotto in modalità ClickOnce (che comporta anche una sandbox particolare).
Agli avvii successivi del programma, esso controllerà online la eventuale presenza di aggiornamenti e, previa configurazione, si auto-aggiornerà in maniera trasparente all'utente.

Quando ben abbiamo perso mesi e mesi per arrivare ad una customizzazione dell'ambiente consona alla nostra produttività, difficilmente vorremmo affrontare un format senza preservare queste impostazioni. Perciò, dal menù Tools abbiamo l'opzione Import/Export Settings che ci permette di esportare tutto (o parte) di ciò che abbiamo customizzato, come in figura: