SlideShare ist ein Scribd-Unternehmen logo
1 von 153
Debug на навици



Стефан Кънев                WordCamp
http://skanev.com/   25 септември 2011
@skanev                         София
Здравейте, аз съм Стефан
031
 0x19
11001
Програмист
Всеки път
Физическа болка
Хора с мустаци
This slide has been
intentionally left blank
Debug на навици



Стефан Кънев                WordCamp
http://skanev.com/   25 септември 2011
@skanev                         София
Съвършенство чрез
           Debug на навици



Стефан Кънев                      WordCamp
http://skanev.com/         25 септември 2011
@skanev                               София
програмист
 професия
    хоби
няма да говоря
за програмиране
ще говоря
за навици
self-help
Ще има елементи от
всички тези неща.
Колко от вас са
програмисти?
static u64 sched_clock_local(struct sched_clock_data *scd)
{

 u64 now, clock, old_clock, min_clock, max_clock;

 s64 delta;

again:

 now = sched_clock();

 delta = now - scd->tick_raw;

 if (unlikely(delta < 0))

 
 delta = 0;


   old_clock = scd->clock;


   /*

    * scd->clock = clamp(scd->tick_gtod + delta,

    *

        max(scd->tick_gtod, scd->clock),

    *

        scd->tick_gtod + TICK_NSEC);

    */


   clock = scd->tick_gtod + delta;

   min_clock = wrap_max(scd->tick_gtod, old_clock);

   max_clock = wrap_max(old_clock, scd->tick_gtod + TICK_NSEC);


   clock = wrap_max(clock, min_clock);

   clock = wrap_min(clock, max_clock);


   if (cmpxchg64(&scd->clock, old_clock, clock) != old_clock)

   
 goto again;


   return clock;
}
Автоматизация
Автоматизация




                 =
Публикуване
 на мисли в
  интернет
Автоматизация




                  =
Инсталиране и
хостинг на блог
по-добър
Автоматизация




Автоматизация
                =
                    ?
Автоматизация




                =   Автоматизация




Автоматизация
Малко Meta
Автоматизация




                =   Автоматизация




Автоматизация
knowledge worker
“I’m not a great programmer,
I’m just a good programmer
with great habits.”
                     Kent Beck
“We are what we repeatedly do.
Excellence, then, is not an act,
but a habit.”
                           Aristotle
Автоматизация




                = навици

Автоматизация
Автоматизация




                =

Автоматизация
Автоматизация




                = навици

Автоматизация
Няма да ви представям
цялостна система.
Има достатъчно...
Ще ви разкажа какво
работи за мен
малки трикове
малки трикове
без някакъв ред
малки трикове
без някакъв ред
 без градация
изводи
   (highly personal)
фокус
Обикновено си мислите, че
нямате проблем с фокуса.
Обикновено грешите
No Instant Messengers
1   25 минути
1   25 минути   5 мин
1   25 минути   5 мин


2   25 минути
1   25 минути   5 мин


2   25 минути   5 мин
1   25 минути   5 мин


2   25 минути   5 мин


3   25 минути
1   25 минути   5 мин


2   25 минути   5 мин


3   25 минути   5 мин
1   25 минути   5 мин


2   25 минути   5 мин


3   25 минути   5 мин


4   25 минути
1           25 минути   5 мин


2           25 минути   5 мин


3           25 минути   5 мин


4           25 минути


    15 минути
Вече мога да се
фокусирам за
25 минути
I have found Jesus!
Условех рефлекс
Дори да не ми се
работи, трябва само
да пусна таймера
Работния ми ден
става по-предвидим
2 браузъра




Работа            Лични работи
Почивки
След като работиш
дълго, не усещаш, че
си уморен
RSI ;(
1           25 минути   5 мин


2           25 минути   5 мин


3           25 минути   5 мин


4           25 минути


    15 минути
Почивките стават
задължителни!
Yak Shaving
http://xkcd.com/349/
Случва се по-често,
отколкото очаквате
Ако не съм успял да
завърша нещо за 25
минути, изтривам кода
и започвам отново
Това ме кара да работя
на малки стъпки, което
намалява риска от
бръснене на якове
Имам външен стимул
да спра навреме
Мога да свърша
нещо смислено
за 25 минути
estimation
Вече знам колко
работа мога да
свърша за един ден
структура
Мога да изграждам
неща около нея
Помага ми, когато
нямам вдъхновение
да работя
Въвежда
предвидимост в
работния ми ден
The ToDo list
Не се разсейвам с
неща, изникващи докато
върша нещо друго
Винаги знам какво да
правя, ако приключа с
текущата задача
изборът е труден
Изграждайте навици,
които ви помагат да
избягвате вземане на
решения
weight loss
Кантарът изглеждаше
страшно
Хм, мисля да започна да
    тичам всеки ден
Мотивация за
тичане всеки ден
се намира трудно
трикове!
Seinfeld Calendar
Създава цел и “continuity”
                 (приемственост?)
Before:   After:
поддръжка на
апартамент
Трудно ми е да повярвам, че кодът
 ти е подреден, предвид колко е
   разхвърлян апартамента ти!
Трудно ми е да повярвам, че кодът
 ти е подреден, предвид колко е
   разхвърлян апартамента ти!




          Какво имаш предвид? Та ти
       работиш над кода на WordPress?!
Май Ники имаше право за
нещо... пък и мустакът му е
  толкова убедителен...
Поведението ми докато
пиша код е различно от
това, когато стоя в
апартамента си
Refactoring!
Refactoring!
Прилагането на
рефакториране вкъщи
чувствително подобри
жизнения ми стандарт
Kaizen
Изграждането и
поддържането на
навици е навик
Малко Meta
mind mapping
Стават леко “модерни”
Пропуснете курсовете;
 книжката си струва
Не винаги нещата
работят от първия
път
note keeping
wiki
Понякога старите
навици са вредни
Шунка
Ами, таковато, тиганът ми
  беше твърде малък
учене на думи
всяка дума по 10 пъти
Английския има
завъртян правопис
fish      ghoti
[ˈfɪʃ]   [ˈfɪʃ]
fish                    ghoti
[ˈfɪʃ]                 [ˈfɪʃ]


         tough [tʌf]
fish                       ghoti
[ˈfɪʃ]                    [ˈfɪʃ]


         tough [tʌf]
         women [ˈwɪmɪn]
fish                          ghoti
[ˈfɪʃ]                       [ˈfɪʃ]


         tough [tʌf]
         women [ˈwɪmɪn]
         nation [ˈne͡ɪʃən]
някаква генерализация
експериментирайте
   наблюдавайте
      мерете
Книжки!
Нещо работи при вас?
    Пишете ми!

stefan.kanev@gmail.com
Въпроси?

Weitere ähnliche Inhalte

Mehr von Stefan Kanev

Как блогът ми ме направи по-добър професионалист
Как блогът ми ме направи по-добър професионалистКак блогът ми ме направи по-добър професионалист
Как блогът ми ме направи по-добър професионалистStefan Kanev
 
Щастливият програмист 2.0
Щастливият програмист 2.0Щастливият програмист 2.0
Щастливият програмист 2.0Stefan Kanev
 
Пак ли този Rails?
Пак ли този Rails?Пак ли този Rails?
Пак ли този Rails?Stefan Kanev
 
The Happy Programmer
The Happy ProgrammerThe Happy Programmer
The Happy ProgrammerStefan Kanev
 
ФМИ Python: Agile & Friends
ФМИ Python: Agile & FriendsФМИ Python: Agile & Friends
ФМИ Python: Agile & FriendsStefan Kanev
 
Behavior-Driven Development с RSpec и Cucumber
Behavior-Driven Development с RSpec и CucumberBehavior-Driven Development с RSpec и Cucumber
Behavior-Driven Development с RSpec и CucumberStefan Kanev
 
Test-Driven Development + Refactoring
Test-Driven Development + RefactoringTest-Driven Development + Refactoring
Test-Driven Development + RefactoringStefan Kanev
 
4. Метапрограмиране
4. Метапрограмиране4. Метапрограмиране
4. МетапрограмиранеStefan Kanev
 
3. Обекти и класове
3. Обекти и класове3. Обекти и класове
3. Обекти и класовеStefan Kanev
 
2. Функционални Закачки
2. Функционални Закачки2. Функционални Закачки
2. Функционални ЗакачкиStefan Kanev
 
1. Въведение в Ruby
1. Въведение в Ruby1. Въведение в Ruby
1. Въведение в RubyStefan Kanev
 
0. За курса, Ruby и Rails
0. За курса, Ruby и Rails0. За курса, Ruby и Rails
0. За курса, Ruby и RailsStefan Kanev
 

Mehr von Stefan Kanev (16)

Ruby 0 2012
Ruby 0 2012Ruby 0 2012
Ruby 0 2012
 
Ruby 0
Ruby 0Ruby 0
Ruby 0
 
Защо MongoDB?
Защо MongoDB?Защо MongoDB?
Защо MongoDB?
 
Как блогът ми ме направи по-добър професионалист
Как блогът ми ме направи по-добър професионалистКак блогът ми ме направи по-добър професионалист
Как блогът ми ме направи по-добър професионалист
 
Щастливият програмист 2.0
Щастливият програмист 2.0Щастливият програмист 2.0
Щастливият програмист 2.0
 
Пак ли този Rails?
Пак ли този Rails?Пак ли този Rails?
Пак ли този Rails?
 
The Happy Programmer
The Happy ProgrammerThe Happy Programmer
The Happy Programmer
 
ФМИ Python: Agile & Friends
ФМИ Python: Agile & FriendsФМИ Python: Agile & Friends
ФМИ Python: Agile & Friends
 
Behavior-Driven Development с RSpec и Cucumber
Behavior-Driven Development с RSpec и CucumberBehavior-Driven Development с RSpec и Cucumber
Behavior-Driven Development с RSpec и Cucumber
 
Test-Driven Development + Refactoring
Test-Driven Development + RefactoringTest-Driven Development + Refactoring
Test-Driven Development + Refactoring
 
за Ruby
за Rubyза Ruby
за Ruby
 
4. Метапрограмиране
4. Метапрограмиране4. Метапрограмиране
4. Метапрограмиране
 
3. Обекти и класове
3. Обекти и класове3. Обекти и класове
3. Обекти и класове
 
2. Функционални Закачки
2. Функционални Закачки2. Функционални Закачки
2. Функционални Закачки
 
1. Въведение в Ruby
1. Въведение в Ruby1. Въведение в Ruby
1. Въведение в Ruby
 
0. За курса, Ruby и Rails
0. За курса, Ruby и Rails0. За курса, Ruby и Rails
0. За курса, Ruby и Rails
 

Debugging Habits

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. \n
  138. \n
  139. \n
  140. \n
  141. \n
  142. \n
  143. \n
  144. \n
  145. \n
  146. \n