Преднамеренная практика



Преднамеренная практика

0 0


practice-0.1


On Github dmitry-n / practice-0.1

Преднамеренная практика

Дмитрий Нечаев

As the levels of performance in the domain increased in skill and complexity, methods to explicitly instruct and train individuals were developed. In all major domains there has been a steady accumulation of knowledge about the best methods to attain a high level of performance and the associated practice activities leading to this performance.

— Dr. K. Anders Ericsson, Deliberate Practice

Три вида деятельности

  • Работа - создание ценности.
  • Игра - деятельность, направленная на получение удовольствия.
  • Преднамеренная практика - деятельность, разработанная специально для того, чтобы улучшить текущий уровень навыков.

Что происходит в других доменах?

...спортсмены, музыканты, артисты, военные, медики...

практикуют

Результаты преднамеренной практики?

На протяжении всей истории Олимийских Игр спортивные результаты улучшались, причем в некоторых видах спорта более, чем на 50%.

Концерт для скрипки Чайковского во время создания считался неисполнимым, сегодня же входит в стандартный репертуар лучших исполнителей.

В чем сила преднамеренной практики?

The costs of mistakes or failures to meet deadlines are generally great, which discourages learning and acquisition of new and possibly better methods during the time of work.

— Dr. K. Anders Ericsson, Deliberate Practice

Что происходит в нашем домене?

We were too busy writing code to think about practicing our skills.

— Robert Martin

Наш домен молод

ENIAC - 1946 год

FORTRAN - 1954 год

Закат перфокарт - конец 1960 гг.

80 колонок на перфокартах самого распространенного вида

Школа мысли зарождается на рубеже тысячелетий

Роберт "Uncle Bob" Мартин, Дейв "pragdave" Томас (Agile Manifesto) пишут о методах преднамеренной практики для программистов

Методы

Code Kata

Coding Dojo

Pair Programming

Code Kata

Упражнение по программированию, помогающее программисту улучшить свои навыки с помощью практики и повторения. Ката - это задача, которую достаточно легко решить и можно решать снова и снова, пока не будет достигнуто совершенство. Выполняя такое упражнение, программист с каждой попыткой улучшает свое умение решать задачи.

Примеры:

  • Codebreaker
  • Конвертация числа, записанного арабскими цифрами, в римские и обратно
  • Разложение на множители
  • ...

Coding Dojo

Выполнение ката в группе

Ретроспектива - важная часть:

  • Что нам удалось сделать хорошо?
  • Чему мы научились?
  • Что бы мы сделали иначе?
  • Что по-прежнему вызывает сложности?

Над чем работать нам?

Практиковать существующие ката

  • Ruby
  • AngularJS
  • Bootstrap 3.0

Задачи, вызывающие сложности, и представляющие интерес, можем оформлять в виде ката и решать всей командой.

И не только ката

RoR, Sinatra, Node.js, AngularJS

Ruby+pry, PostgreSQL+psql, JS+Chrome Developer Tools

bash/zsh, grep, sed, awk, ... IDE/vim/emacs, git

Touch Typing

Ресурсы

  • http://www.codewars.com/
  • http://cyber-dojo.com/
  • http://katas.softwarecraftsmanship.org/
  • http://codingdojo.org/cgi-bin/wiki.pl?KataCatalogue
  • http://codekatas.org/
  • http://codekata.co/category/katas/
In software we do our practicing on the job, and that’s why we make mistakes on the job. We need to find ways of splitting the practice from the profession. We need practice sessions.

- Dave Thomas