Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Passing down the pain. (eurucamp 2015)

Passing down the pain. (eurucamp 2015)

The talk I gave at Eurucamp 2015. http://2015.eurucamp.org/

Ivan Zarea

August 01, 2015
Tweet

More Decks by Ivan Zarea

Other Decks in Education

Transcript

  1. Passing down the pain Difficulties in teaching software development Ivan

    Zarea Technical University of Moldova @minivaaan 2015
  2. Outsourcing • Good salaries • Low barrier to entry •

    Studying for the wrong purpose • Students don’t come to classes
  3. Switch the focus • Do not punish bad performers •

    Provide incentive to study • Immediately applicable
 • Identify what’s important for the industry
  4. What skills do I want my future teammate to have?

    • Read source code • Debug
 • Choose tools
  5. 1.1. Reading source code • Live code in classes •

    Engage everyone • Give source code with assignments • Show actual code to illustrate a concept
  6. 1.1. Example: youtube-dl • Read the documentation • See how

    to extend youtube-dl • See the Strategy Pattern in action!
  7. 1.2. Debugging • A relatable & engaging context • Debugging

    as a whole • Googling skill is a byproduct
  8. 1.3. Tool choice • Help students choose a tool •

    Remove the risk from the choice process • Make sure the arguments are sound
  9. Skills I want my future teammate to have • Read

    source code • Debug and google
 • Choose tools
  10. What values do I want my future teammate to have?

    • Appreciate constant progress • Concepts over code • Own the code (design for change)

  11. 2.1. Constant progress • Value of TDD • Program with

    existing code and tests • Program without code, but with tests
 • Write tests, too!
  12. 2.2. Concepts over code public class Logger { private static

    Logger instance = new Logger(); private Logger(){}
 public static SingleObject getInstance(){ return instance; } } require "singleton" class Logger include Singleton end
  13. 2.2. Concepts over code • Prefer concepts and discussions to

    implementations
 • Be frank about the fact that it’s hard
 • Try not to introduce concepts to everyone
 • Restrict choice to unfamiliar platforms
  14. 2.3. Own your code • Design for change
 • Build

    bigger projects during the course
 • Maintenance is reward
 • Feel the pain
  15. 2.3. Example: Markdown • Write a Markdown (subset) parser
 •

    Know that there will be changes to the requirements
 • Receive changes, update your code
  16. Values I want my future teammate to have • Appreciate

    constant progress • Concepts over code • Own the code (design for change)
  17. 3. Add Silliness & Humor • Integrate a chinchilla in

    the teaching process
 • The chinchilla wrote a bad dating app
 • You have to optimize it
 • That means looking at a lot of chinchillas
  18. spirit hacker • Take things apart, put them back •

    Display curiosity • Encounter issues • Hack teaching The