As a student, I support pair programming. Last semester, we did a six-man project building an client-server battleships game that offered singleplayer and multiplayer.
We had to create a strategy to manage the quality of the project and chose a task-based pair programming strategy. In those student projects it is often the case, that the better students do a rather big portion of the project while the others try to keep up.
With pair programming this was not the case. Everyone developed on a similar level. Yes, it probably slowed down some of the developers, but for a student project, the main goal is to learn. And pair programming was a way to do that.
Also, our project quality really benefitted from this. After developing the basic server, client and game logic, we switched teams to do the next step. For example, the team that connected the client to the server would now have a person that knows the server side and one that ones the client side. This team changing was done on a regular basis and helped putting the software together. There were less problems with the code of different people working together than in most other projects and I believe, that pair programming was a big factor in that.
So, I can't speak for the work environment, but for learning to be a software developer, it really was a good experience.
We had to create a strategy to manage the quality of the project and chose a task-based pair programming strategy. In those student projects it is often the case, that the better students do a rather big portion of the project while the others try to keep up. With pair programming this was not the case. Everyone developed on a similar level. Yes, it probably slowed down some of the developers, but for a student project, the main goal is to learn. And pair programming was a way to do that.
Also, our project quality really benefitted from this. After developing the basic server, client and game logic, we switched teams to do the next step. For example, the team that connected the client to the server would now have a person that knows the server side and one that ones the client side. This team changing was done on a regular basis and helped putting the software together. There were less problems with the code of different people working together than in most other projects and I believe, that pair programming was a big factor in that.
So, I can't speak for the work environment, but for learning to be a software developer, it really was a good experience.