Successfully reported this slideshow.

Dealing with challenges (technical)

412 views

Published on

Chris Douce @ European Innovation Academy Summer Session 2013

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Dealing with challenges (technical)

  1. 1. Lecture: Dealing with challenges (technical) Chris Douce, 22 July 2013 (14.00 – 14.50)
  2. 2. Dealing with the practical issues Photo Sarah G (Creative Commons)
  3. 3. Why is software so hard? Photo by Honda news (Creative Commons)
  4. 4. Why is software so hard? Photo by Honda news (Creative Commons)
  5. 5. Agile principles • Customer satisfaction by rapid delivery of useful software • Welcome changing requirements, even late in development • Working software is delivered frequently (weeks rather than months) • Working software is the principal measure of progress • Sustainable development, able to maintain a constant pace • Close, daily cooperation between business people and developers • Face-to-face conversation is the best form of communication (co-location) • Projects are built around motivated individuals, who should be trusted • Continuous attention to technical excellence and good design • Simplicity —the art of maximizing the amount of work not done—is essential • Self-organizing teams • Regular adaptation to changing circumstances Source: wikipedia
  6. 6. Agile and Extreme programming
  7. 7. Agile and Extreme programming
  8. 8. Agile and Extreme programming
  9. 9. Development as craft
  10. 10. Play
  11. 11. Play • Tools and development environments • Sample code and software • Prototypes • Similar products • Different products: same vendor, different vendors • Explore the boundaries of the possible • Give yourself some time… It’s okay! • Is fundamentally important…
  12. 12. Version control • Manual control • Software support • Integrated with environment
  13. 13. Version control Acknowledgements: Wikipedia
  14. 14. Configuration management
  15. 15. Choosing what to implement • Identify the key functions • Decide on what is out of scope (horizontal/vertical prototyping) • Choose how far you’re going to go • Understand what you can do • Understand what you might need help with • Prototypes = expression of idea + skills
  16. 16. Software testing • Usability testing • Accessibility testing • Function testing • Module testing • Integration testing • Condition testing • Performance testing • Security testing • Unit testing • Acceptance testing • Test harnesses • Test driven development
  17. 17. Software testing • Usability testing • Accessibility testing • Function testing • Module testing • Integration testing • Condition testing • Performance testing • Security testing • Unit testing • Acceptance testing • Test harnesses • Test driven development
  18. 18. Software testing function foo() { … } function bar() { … } function bez() { … } function fooBar() { … } function barFoo() { … } … … … function testFoo() { … } function testBar() { … } function testBez() { … } function testFooBar() { … } function testBarFoo() { … } … … … Key: Practicality
  19. 19. Chris’s tips • Don’t try to do everything: be realistic • If you think you’re going crazy, take a break: have a walk • Find the time to play, this is finding the time to learn • Find the time to read and study the work of others • Be prepared to have your assumptions challenged • Break hard stuff down into small pieces • Write test code to experiment • Projects extend to the amount of time available: beware! • Listen • Be humble
  20. 20. Chris’s anti-tips • Give one person all the coding responsibility • When coding, ignore what your team says • Don’t talk to each other • Ignore the external world; it’s a distraction • Don’t write anything down; forget your assumptions • Solve a coding problem that has already been solved • Make quick decisions • Don’t ask questions • Always be prepared to shout • Assume you can do everything
  21. 21. Challenges • Project • People • Technology • Software isn’t about technology; it’s all about people
  22. 22. Summary • Agile methods • Play, tools and testing • Revisiting the challenges • Tips • Tomorrow: expanding our horizons
  23. 23. Lecture: Dealing with challenges (technical) Chris Douce, 22 July 2013 (14.00 – 14.50)

×