Virtual Communities of Practice: A 21st Century Method for Learning, Programming, and Developing Professionally