Software development is always a challenging undertaking and it requires high commitments from individuals who participate in it. Software development often involves new technology, challenging or unknown requirements, and tight schedules ? making it particularly prone to several types of risk. These challenges are even more paramount in agile development and in distributed development, where the need for efficient information sharing is important, yet the distributed development makes it very difficult. This tutorial uses innovative and new learning methods to explore and to learn about these challenges and how to deal with them. The tutorial is partially based on presentations given by authors, but a major element in the tutorial is the case study that is introduced and in which will involve all the participants. The learning in the tutorial is strongly facilitated by participants' discussions and the insights generated in concrete problem solving situations.