debugger;

A presentation at HolyJS in December 2016 in Moscow, Russia by Denys Mishunov

Slide 1

Slide 1

gger ; debu DENYS MISHUNOV DIGITAL GARDEN AS @mishunov

Slide 2

Slide 2

Slide 3

Slide 3

LIVE & BREATHE * CODE * also drink, eat, and don’t forget to enjoy

Slide 4

Slide 4

return path.slice(0, dotIndex); }, isDeep: function (path) { return path.indexOf('.') !== -1; }, isAncestor: function (base, path) { return base.indexOf(path + '.') === 0; }, isDescendant: function (base, path) { return path.indexOf(base + '.') === 0; }, translate: function (base, newBase, path) { return newBase + path.slice(base.length); }, matches: function (base, wildcard, path) { return base === path || this.isAncestor(base, path) || Boolean(wildcard) && this.isDescendant(base, path); } };Life.Base._addFeature({ _prepAnnotations: function () { if (!this._template) { this._notes = []; } else { var self = this; Life.Annotations.prepElement = function (element) { self._prepElement(element); }; if (this._template._content && this._template._content._notes) { this._notes = this._template._content._notes; } else { this._notes = Life.Annotations.parseAnnotations(this._template); this._processAnnotations(this._notes); × 3 ! 1 }Elements Network Performance Console ⠇×

Slide 5

Slide 5

return path.slice(0, dotIndex); }, isDeep: function (path) { return path.indexOf('.') !== -1; }, isAncestor: function (base, path) { return base.indexOf(path + '.') === 0; }, isDescendant: function (base, path) { return path.indexOf(base + '.') === 0; }, translate: function (base, newBase, path) { return newBase + path.slice(base.length); }, matches: function (base, wildcard, path) { return base === path || this.isAncestor(base, path) || Boolean(wildcard) && this.isDescendant(base, path); } };Life.Base._addFeature({ _prepAnnotations: function () { if Elements (!this._template) Network {Performance Console × 3 ! 1 this._notes = []; } else { Frustration: repeat count must be less than infinity life.html:1300 × var self = this; Life.Annotations.prepElement = function (element) { 24/7: BRAIN is not a constructor life.html:1315 × self._prepElement(element); }; if (this._template._content && this._template._content._notes) { Perfectionism: too much recursion life.html:1316 × this._notes = this._template._content._notes; } else { ! Narrow-mindedness: unreachable code after return statement life.html:1325 this._notes = Life.Annotations.parseAnnotations(this._template); this._processAnnotations(this._notes); } ⠇×

Slide 6

Slide 6

× Frustration: repeat count must be less than infinity

Slide 7

Slide 7

Slide 8

Slide 8

ЗОНЫ ПУЛЬСА

Slide 9

Slide 9

(frustration)

Slide 10

Slide 10

Slide 11

Slide 11

return path.slice(0, dotIndex); }, isDeep: function (path) { return path.indexOf('.') !== -1; }, isAncestor: function (base, path) { return base.indexOf(path + '.') === 0; }, isDescendant: function (base, path) { return path.indexOf(base + '.') === 0; }, translate: function (base, newBase, path) { return newBase + path.slice(base.length); }, matches: function (base, wildcard, path) { return base === path || this.isAncestor(base, path) || Boolean(wildcard) && this.isDescendant(base, path); } };Life.Base._addFeature({ _prepAnnotations: function () { if Elements (!this._template) Network {Performance Console × 3 ! 1 this._notes = []; } else { Frustration: repeat count must be less than infinity life.html:1300 × var self = this; Life.Annotations.prepElement = function (element) { 24/7: BRAIN is not a constructor life.html:1315 × self._prepElement(element); }; if (this._template._content && this._template._content._notes) { Perfectionism: too much recursion life.html:1316 × this._notes = this._template._content._notes; } else { Narrow-mindedness: unreachable code after return statement life.html:1325 ! this._notes = Life.Annotations.parseAnnotations(this._template); this._processAnnotations(this._notes); } ⠇×

Slide 12

Slide 12

× 24/7: BRAIN is not a constructor

Slide 13

Slide 13

ЗАКОН ПАРКИНСОНА “ Работа заполняет ровно то время, что на неё отпущено

Slide 14

Slide 14

Slide 15

Slide 15

#йаусталъ

Slide 16

Slide 16

СЧАСТЬЕ СТРЕСС

Slide 17

Slide 17

СЧАСТЬЕ 1:3 СТРЕСС

Slide 18

Slide 18

гиппокамп

Slide 19

Slide 19

гиппокамп • • • концентрация внимания способность к обучению память

Slide 20

Slide 20

Slide 21

Slide 21

Эй, ты! ПРРР

Slide 22

Slide 22

“ 90% чего угодно — ПОЛНАЯ ЧУШЬ — закон/откровение Старджона — ”

Slide 23

Slide 23

62 134 МИЛЛИАРДЕРА НОБЕЛЕВСКИХ ЛАУРЕАТА HARVARD UNIVERSITY EST. 1636

Slide 24

Slide 24

Slide 25

Slide 25

ЧТО? КАК? ПОЧЕМУ?

Slide 26

Slide 26

return path.slice(0, dotIndex); }, isDeep: function (path) { return path.indexOf('.') !== -1; }, isAncestor: function (base, path) { return base.indexOf(path + '.') === 0; }, isDescendant: function (base, path) { return path.indexOf(base + '.') === 0; }, translate: function (base, newBase, path) { return newBase + path.slice(base.length); }, matches: function (base, wildcard, path) { return base === path || this.isAncestor(base, path) || Boolean(wildcard) && this.isDescendant(base, path); } };Life.Base._addFeature({ _prepAnnotations: function () { if Elements (!this._template) Network {Performance Console × 3 ! 1 this._notes = []; } else { Frustration: repeat count must be less than infinity life.html:1300 × var self = this; Life.Annotations.prepElement = function (element) { 24/7: BRAIN is not a constructor life.html:1315 × self._prepElement(element); }; if (this._template._content && this._template._content._notes) { Perfectionism: too much recursion life.html:1316 × this._notes = this._template._content._notes; } else { Narrow-mindedness: unreachable code after return statement life.html:1325 ! this._notes = Life.Annotations.parseAnnotations(this._template); this._processAnnotations(this._notes); } ⠇×

Slide 27

Slide 27

× Perfectionism: too much recursion

Slide 28

Slide 28

https://habrahabr.ru/company/pvs-studio/blog/118204/

Slide 29

Slide 29

https://habrahabr.ru/company/pvs-studio/blog/118204/

Slide 30

Slide 30

• снижение КПД • паралич перфекционизма • решение необнаруженных проблем

Slide 31

Slide 31

АДЕКВАТНЫЙ перфекционизм

Slide 32

Slide 32

“ В аду для перфекционистов Ни серы нет, и нет огня. А лишь слегка асимметрично стоят щербатые котлы. — Неизвестный (мне) автор — ”

Slide 33

Slide 33

return path.slice(0, dotIndex); }, isDeep: function (path) { return path.indexOf('.') !== -1; }, isAncestor: function (base, path) { return base.indexOf(path + '.') === 0; }, isDescendant: function (base, path) { return path.indexOf(base + '.') === 0; }, translate: function (base, newBase, path) { return newBase + path.slice(base.length); }, matches: function (base, wildcard, path) { return base === path || this.isAncestor(base, path) || Boolean(wildcard) && this.isDescendant(base, path); } };Life.Base._addFeature({ _prepAnnotations: function () { if Elements (!this._template) Network {Performance Console × 3 ! 1 this._notes = []; } else { Frustration: repeat count must be less than infinity life.html:1300 × var self = this; Life.Annotations.prepElement = function (element) { 24/7: BRAIN is not a constructor life.html:1315 × self._prepElement(element); }; if (this._template._content && this._template._content._notes) { Perfectionism: too much recursion life.html:1316 × this._notes = this._template._content._notes; } else { Narrow-mindedness: unreachable code after return statement life.html:1325 ! this._notes = Life.Annotations.parseAnnotations(this._template); this._processAnnotations(this._notes); } ⠇×

Slide 34

Slide 34

! Narrow-mindedness: unreachable code after return statement

Slide 35

Slide 35

vs.

Slide 36

Slide 36

I T vs.

Slide 37

Slide 37

“ Сам доклад поставлен на отлично. У меня один вопрос: … Почему на технической организации мы говорим о психологии пользователя? — Неизвестный (мне) автор — ”

Slide 38

Slide 38

БЮДЖЕТ ПРОИЗВОДИТЕЛЬНОСТИ

Slide 39

Slide 39

ФИЧА БЮДЖЕТ ПРОИЗВОДИТЕЛЬНОСТИ

Slide 40

Slide 40

БЮДЖЕТ ФИ ПРОИЗВОДИТЕЛЬНОСТИ ЧА

Slide 41

Slide 41

20% БЮДЖЕТ ФИ ПРОИЗВОДИТЕЛЬНОСТИ ЧА

Slide 42

Slide 42

Elements Network Performance Console × 3 ! 1 ⠇× × Frustration: repeat count must be less than infinity life.html:1300 × 24/7: BRAIN is not a constructor life.html:1315 × Perfectionism: too much recursion life.html:1316 Narrow-mindedness: unreachable code after return statement life.html:1325 !

Slide 43

Slide 43

СПАСИБО ДА, ИЛЛЮСТРАЦИИ МОИ:) DENYS MISHUNOV • DIGITAL GARDEN AS Elements Network Performance Console TWITTER: @MISHUNOV × 3 ! 1 ⠇× × Frustration: repeat count must be less than infinity life.html:1300 × 24/7: BRAIN is not a constructor life.html:1315 × Perfectionism: too much recursion life.html:1316 Narrow-mindedness: unreachable code after return statement life.html:1325 !