Habiendo leído las respuestas aquí, que son excelentes, hay dos aspectos principales en esto:
En primer lugar está el aspecto de la disciplina. Trabajar desde casa, por definición, tiene diferentes distracciones que trabajar desde una oficina. Cuando trabajo desde casa, lo trato como un día normal de trabajo. Soy una persona muy distraída, con la casa llena de cosas que me encantan. (Piano, guitarras, libros, Xbox) y una moto sentada en un garaje que me hace un guiño cuando ve la luz del sol, así que tengo que levantarme, hacer mi rutina de desayuno, y luego sentarme a trabajar durante 7 horas con la misma estructura de trabajo/descanso/trabajo/almuerzo/trabajo/descanso/trabajo/acabado de aproximadamente 9 a 5, de lo contrario mi forma de tocar la guitarra es buena, y mi producción es mala.
En segundo lugar está el aspecto práctico de trabajar lejos de mi sistema de desarrollo, pero normalmente lo que hago es una VPN en mi red de trabajo y utilizar una sesión de Escritorio Remoto. Tengo una conexión a Internet de fibra simétrica de 100Mbit en el trabajo con una latencia de 10ms para el mundo malo, y fibra de 70Mbit en casa con una latencia de <20ms. En general, la experiencia es perfecta, por lo que puedo acceder a mi servidor de construcción, servidor de proyectos y sistema de escritorio en el trabajo como si estuviera en mi escritorio. Por esta razón, sólo utilizo un portátil estándar en casa. Tiene VS en él, pero sólo lo uso para probar cosas rápidamente.
[Y sí, he hecho el "por qué no puedo transferir ese archivo a mi memoria USB" después de un largo día cuando se remotamente en mi PC de trabajo. Lo mejor de todo fue intentar grabar una compilación en un DVD. Pasé media hora expulsando/cerrando mi unidad, intercambiando discos, sólo para ver "no hay disco en la unidad" cada vez. Por supuesto, estaba mirando mi máquina de trabajo e intercambiando discos en mi máquina de casa!]