It seems remote working is an option in an increasing number of jobs. Perhaps this is because technology had made it easier to collaborate when not in the same room. Video conferencing, Slack and cloud - based web apps are all but ubiquitous in modern workplaces.
I worked remotely as a software engineer for a year, going in to the office only two consecutive days a month. My experience may not be typical as I wasn't part of a software team in a software company, but rather one of only two engineers in a diverse team within a university. The other engineer had other projects and moved on after a few months so for much of the time I was very much on my own.
I used this time to do a short bike ride or "circular commute" every morning and take my daughter to her evening sports clubs at least once a week. Neither of these things fit in well with a one-hour commute each way.
Arranging redelivery or relying on a neighbour is inconvenient.
Leftovers or a quick snack is easy to arrange without the temptation or expense of eating out.
Even if there are others in the house, it was usually possible to close the door during work times and get some peace and quiet. Programming work often requires consistent concentration that can be hard to maintain in a busy office during the middle of the day. The easier tasks seemed to go much more quickly when working remotely.
When my daughter has been ill it's reassuring to be at home and close to school rather than at the other end of an unreliable train journey. In a pinch she can nap or watch TV while I work and I can make up for missed time in the evening.
I stayed entirely at home when working remotely, but people enjoy the possibility of working in another city or country so that the evenings and weekends are like a real holiday. I like having two large screens and a proper desktop machine, but I did run my work "machine" from an encrypted USB-stick with an Ubuntu install. This worked well apart from when using very high disk-access applications such as Docker. That tends to corrupt the disk somehow and make the system unreliable, so I'd stick with an SSD if using Docker or similar.
Normally our heating is off in the day, so unless you have a small heater for the space you're working in, then you may need to run it for the whole house which will add to costs.
For me this is the biggest disadvantage to working remotely. Not only is it fun to chat with colleagues, but it often leads to a better understanding of the work or opportunities to help out in unexpected ways. Knowing what things other people are working on and their particular set of skills is an essential but often overlooked benefit to working in the same room or building as teammates. Much of this knowledge is transferred in a casual over-heard conversation kind of way, which doesn't always happen on Slack, Skype or email. I was lucky to have a generous holiday allowance, some of which I used to catch up with friends outside work.
For similar reasons to the last point this can be difficult to do remotely. This is why many remote jobs require new starters to work in an office with existing staff for the first few months. If the job is really straightforward or all the documentation is perfect (is it ever?) then in theory you can learn the job from anywhere. For most, however, learning by discussing it with others is often the best way. Getting stuck when working remotely can be a frustrating experience and I often found myself taking a break to empty the dishwasher, partly to experience a feeling of progress that I couldn't achieve with professional work. When working remotely it's also hard to know when it's OK to ask for help. How busy is the other person? Are they irritated by my request? These things are hard to judge when not face to face. On the other hand there is something to be said for not interrupting people when they're deeply involved in a problem, so asynchronous communication like Slack (with No Hello) or Email can help.
I'm sure pair programming can be done remotely, but I can't see it being anything like as easy as sitting next to someone scribbling on bits of paper, waving your hands around and collectively scratching your heads.
If you work remotely from home, then it's not always obvious where work starts and ends. This can make it difficult to achieve a healthy work-life balance.
In such flexible workplaces colleagues may work different hours and might expect you to be available at the same time or ask questions after you've finished for the day. I had my work Slack on my phone, so I liked to be readily available whenever my colleagues needed me. Sometimes this was good as I could be instantly helpful even if I'm taking a break. On the other hand, if I'd finished work and was having dinner with my family, the interruption was annoying, yet I'd still be tempted to respond.
Some people will prefer to have strict working times in order to maintain focus and feel fully justified in relaxing at the end of the day. I preferred to start as early as I could and work a rather long day, but take regular breaks for chores or exercise, especially when stuck. Sometimes this approach seems to allow my mind to work on the problem in the background, although I was consciously thinking about something else. That's great when the solution can be found through slow thinking and coming up with creative solutions, but it doesn't work when collaboration is what's needed.
I'm currently enjoying working in an office with my colleagues and plenty of friends in nearby offices. I probably wouldn't do a fully-remote job again unless I already understood the work very well. However, I do appreciate the opportunity to work from home on the occasions that trains let me down, slight illness makes me unwilling to go in or life admin requires that I'm in the house. I'm sure others will disagree and find better ways to collaborate and learn than I did. I'd be interested to hear how other people addressed the issues I described above.
If you work remotely from home, then it's not always obvious where work starts and ends.
No time and money spent on commuting.