Hi, I've personally never used agile methodologies with my team mates. But I did sometimes do pair-programming with one of them, in order to teach a new framework under my supervision. This is a technique used in Extreme Programming, and I noticed it's mentioned in the udemy course.
What I have noticed is that, when two people are working on the same code, given that they are skilled, the quality is higher, because almost no bugs make it through and the architecture is well thought, and the speed of development is also higher, because less time is spent debugging or researching solutions to problems.
I was wondering though, in your experience: is this overall better quality and higher speed able to compete with two independent programmers? I mean, cost wise, pair programming can be quite a burden for the client's budget. But do you think that in the long run, and using the technique only for specific parts of a project, pair programming can be more convenient rather than more expensive?
Laurie Williams has published research on pair-programming - I think the general findings are that pairs or groups will tend to take longer to complete a programming task but the overall cost of ownership of the code is lower because of the higher code quality and fewer problems (bugs / design problems) thus reducing time you need to maintain and debug. Read the research papers though to see for yourself what she found.
The one caveat I would point out is that the pair or group needs to actually be talking about design, refactoring as they go, and writing more unit tests. Basically, I believe that they should be doing Test-Driven Development. Otherwise, if it's just one person is watching the other person code and the discussion around design is not driven by tests and refactoring, then it's pointless to do pair or group/mob programming. The whole concept is about collaboration and talking through the design so that everyone is on the same page.
To that end, a disciplined solo programmer who does TDD well and is writing clear, clean code will outperform a pair or group that does not really do TDD well. In my experience, pair or mob programming is more enjoyable when people are writing tests, discussing, and refactoring so that the code that is produced is clean, expressive, and follows good design principles like SOLID and the 4 rules of simple design