Hackathons involve forming teams of people to work on projects, with an emphasis on organizing communication around the process. The purpose is for participants to learn, grow their skills, and celebrate their work and accomplishments together. Key roles include project managers to organize the team and facilitate communication, as well as product managers to guide development work according to priorities. An agile development approach is commonly used, with an emphasis on early delivery of minimum viable products and accepting changing requirements. The informal, collaborative environment allows for learning through experiences like pair programming. Overall, hackathons aim to provide opportunities for learning, skill-building, and celebration among participants.