Что такое резиновый дакинг?

Отладка Rubber Ducking или Dubber Duck — это простая концепция объяснения вашего кода или вашей проблемы резиновой утке.

Вы когда-нибудь хотели задать свой вопрос в Stack Overflow, но вам не нужно было публиковать вопрос, потому что вы поняли, что не так, когда вводили вопрос? Это именно то, что представляет собой Rubber Ducking. Ну, не совсем так, потому что вы не использовали резиновую утку, но суть вы поняли.

Если вы застряли в проблеме и не можете понять, в чем проблема, резиновый нырок — один из лучших способов распутать себя. Идея состоит в том, чтобы упростить и объяснить часть кода или проблему построчно, чтобы вы могли четко видеть, в чем заключается проблема.

Происхождение идеи восходит к 1999 году, когда в книге Эндрю Ханта и Дэвида Томаса «Прагматичный программист» рассказывается о разработчике, который носит с собой резиновую утку. Это оказалось эффективной стратегией в поиске решений проблем.

Почему это работает?

Психология, стоящая за этим, тоже довольно проста. Мы работаем с компьютерами, которые очень быстры и точны, и мы тоже склонны следовать за ними и думать быстро. Но человеческий разум не так точен, как компьютеры, потому что мы по своей природе прощающие. Таким образом, мы можем бессознательно упустить из виду определенные понимания, и когда эти потерянные фрагменты станут достаточно заметными, они могут создать препятствие.

Объясняя свою проблему кому-то новому, вы обязательно объясняете все детали, от начала до конца, и, сами того не зная, мы прослеживаем эти забытые кусочки, чтобы, наконец, достичь этого удовлетворительного «Ага!» момент.

Это обязательно должна быть резиновая уточка?

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

Вы знаете, как вы прослеживаете свои шаги, когда забываете, куда положили что-то? Это именно то, что нужно разработчикам. Мы, как разработчики, увлечены решением проблем, поэтому, когда мы сталкиваемся со стеной, мы стараемся изо всех сил и решаем ее, а не делаем шаг назад. Так что пусть это будет добрым напоминанием о том, что нужно практиковать Резиновый Утенок, чтобы сэкономить время, которое вы проводите в беде.