Avendo letto le risposte qui, che sono eccellenti, ci sono due aspetti principali per questo:
In primo luogo c'è l'aspetto della disciplina. Lavorare da casa per definizione ha distrazioni diverse dal lavorare in ufficio. Quando lavoro da casa, lo tratto come una normale giornata di lavoro. Sono una persona molto distraibile, con una casa piena di cose che amo fare. (Pianoforte, chitarre, libri, Xbox) e una moto seduta in un garage che mi fa l'occhiolino quando vede il sole, quindi devo alzarmi, fare la mia routine della colazione, poi sedermi e lavorare per 7 ore con la stessa struttura lavoro/pausa/lavoro/pranzo/lavoro/pausa/lavoro/finito dalle 9 alle 5 circa, altrimenti la mia chitarra suona bene e il mio output è pessimo.
In secondo luogo c'è l'aspetto pratico di lavorare lontano dal mio sistema di sviluppo, ma di solito quello che faccio è VPN nella mia rete di lavoro e uso una sessione di Desktop Remoto. Ho una connessione Internet simmetrica in fibra 100Mbit backbone al lavoro con 10ms di latenza verso il mondo cattivo, e 70Mbit in fibra a casa con <20ms di latenza. Nel complesso l'esperienza è senza soluzione di continuità, quindi posso accedere al mio build server, project server e sistema desktop al lavoro come se fossi alla mia scrivania. A casa uso solo un banale portatile standard per questa ragione. Ha VS su di esso, ma lo uso solo per testare rapidamente le cose.
[E sì, ho fatto il "perché non posso trasferire quel file sulla mia chiavetta USB" dopo una lunga giornata quando ero in remoto nel mio PC di lavoro. Il migliore di tutti è stato provare a masterizzare una build su un DVD. Ho passato mezz'ora a espellere/chiudere il mio disco, scambiando i dischi, solo per vedere ogni volta "nessun disco nell'unità". Naturalmente, stavo guardando la mia macchina da lavoro e scambiavo i dischi sulla mia macchina di casa!]