$30 off During Our Annual Pro Sale. View Details »

Learn to Program in 10+ Years (HackConf 2016)

Learn to Program in 10+ Years (HackConf 2016)

Bozhidar Batsov

October 18, 2016
Tweet

More Decks by Bozhidar Batsov

Other Decks in Programming

Transcript

  1. View Slide

  2. ЙО!

    View Slide

  3. View Slide

  4. Hack

    View Slide

  5. Conf

    View Slide

  6. Hack

    View Slide

  7. Conf

    View Slide

  8. Hack

    View Slide

  9. Conf

    View Slide

  10. Божидар

    View Slide

  11. @bbatsov

    View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. 2^5

    View Slide

  16. View Slide

  17. View Slide

  18. Как да се научим да
    програмираме за 21 дни
    Божидар Бацов

    View Slide

  19. View Slide

  20. Научете за променливи,
    константи, масиви, низове,
    изрази, твърдения,
    функции,…
    Ден 1 - 10

    View Slide

  21. Научете за потока на
    изпълнение на една
    програма, основи на ООП,…
    Ден 11 - 21

    View Slide

  22. Програмирайте ударно за
    кеф. Забавлявайте се в
    процеса, но не забравяйте да
    се учите от грешките си.
    Ден 22 - 697

    View Slide

  23. Общувайте с други
    програмисти. Работете по
    проекти с тях. Учете от тях.
    Ден 698 - 3648

    View Slide

  24. Научете висша теоретична
    физика и формулирайте
    консистента теория на
    квантовата гравитация.
    Ден 3649 - 7781

    View Slide

  25. Научете биохимия,
    молекулярна
    биология, генетика,…
    Ден 7782 - 14611

    View Slide

  26. Използвайте познанията си
    по биология, за да направите
    елексир на младостта.
    Ден 14611

    View Slide

  27. Използвайте познанията си
    по физика, за да направите
    машина на времето и да се
    върнете в ден 21.
    Ден 14611

    View Slide

  28. Убийте младото си
    “аз” и заемете
    мястото му.
    Ден 21

    View Slide

  29. Все още не е открит по-
    прост начин да се научите
    да програмирате за 21 дни…

    View Slide

  30. Как да се научим да
    програмираме за 10
    години
    Божидар Бацов

    View Slide

  31. 9 години Emacs

    View Slide

  32. 1 година всичко
    останало

    View Slide

  33. View Slide

  34. Как да се научим да
    програмираме за 10+
    години
    Божидар Бацов

    View Slide

  35. Защо се занимаваме
    с програмиране?

    View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. Софтуера управлява
    живота ни

    View Slide

  40. Програмистите
    решават проблеми
    посредством софтуер

    View Slide

  41. Ние създаваме
    софтуер

    View Slide

  42. Ние сме модерните
    богове

    View Slide

  43. View Slide

  44. Правете нещо,
    което обичате

    View Slide

  45. Аз обичам да
    програмирам!

    View Slide

  46. View Slide

  47. Apprentice
    Journeyman
    Master

    View Slide

  48. Чирак
    Калфа
    Майстор

    View Slide

  49. View Slide

  50. A long time ago in a
    galaxy not far away….

    View Slide

  51. 1997

    View Slide

  52. View Slide

  53. View Slide

  54. 1998

    View Slide

  55. View Slide

  56. View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. Убеден бях че не
    знам почти нищо за
    програмирането

    View Slide

  61. 3 lvl
    Dev Knight

    View Slide

  62. 3/100

    View Slide

  63. Плафон и половина

    View Slide

  64. View Slide

  65. View Slide

  66. Слаба учебна
    програма отказва
    всеки

    View Slide

  67. Сега всички имате достъп
    до страхотни образователни
    ресурси онлайн

    View Slide

  68. Khan Academy

    View Slide

  69. Coursera

    View Slide

  70. edX

    View Slide

  71. 2003

    View Slide

  72. View Slide

  73. View Slide

  74. View Slide

  75. View Slide

  76. View Slide

  77. 2004

    View Slide

  78. View Slide

  79. View Slide

  80. View Slide

  81. Technical support

    View Slide

  82. Средата е супер
    важна

    View Slide

  83. Повечето книги за
    програмиране издадени
    в България не стават

    View Slide

  84. View Slide

  85. View Slide

  86. View Slide

  87. View Slide

  88. View Slide

  89. View Slide

  90. Уиндоус не е
    единствената
    операционна система

    View Slide

  91. Системното
    програмиране под
    Unix е забавно

    View Slide

  92. FreeBSD е
    най-великата
    операционна система

    View Slide

  93. View Slide

  94. View Slide

  95. Тунинговането на
    операционната ти
    система е супер забавно

    View Slide

  96. Компилирането на
    ядро е мега яко

    View Slide

  97. vim е странен,
    но готин редактор

    View Slide

  98. View Slide

  99. Не ограничавайте
    процеса на учене до
    рамките на работния ден

    View Slide

  100. less is more

    View Slide

  101. more is more

    View Slide

  102. Поддръжката е една
    супер неблагодарна
    работа

    View Slide

  103. Не отивай пиян на
    работа

    View Slide

  104. 10 lvl
    Dev Knight

    View Slide

  105. 2005

    View Slide

  106. Systems
    Programmer

    View Slide

  107. Средата е важна

    View Slide

  108. FTP не става за
    version control

    View Slide

  109. Правилните
    инструменти те правят
    по-продуктивен

    View Slide

  110. View Slide

  111. Emacs

    View Slide

  112. GNU/Linux

    View Slide

  113. Gentoo

    View Slide

  114. Необходима е
    стратегия за
    развитие

    View Slide

  115. View Slide

  116. Развивай се в много
    посоки

    View Slide

  117. Виж какво те кефи
    най-много

    View Slide

  118. 23 lvl
    Dev Knight

    View Slide

  119. 2006

    View Slide

  120. C++ Programmer

    View Slide

  121. Средата е важна

    View Slide

  122. Emacs е велик

    View Slide

  123. View Slide

  124. View Slide

  125. View Slide

  126. Трябва да можеш да
    дебъгваш ефективно

    View Slide

  127. Огромните С++
    приложения се
    компилират бавноооооо

    View Slide

  128. View Slide

  129. Трябва да можеш сам
    да се ориентираш в
    кода

    View Slide

  130. Това, за което са те
    наели, не значи нищо

    View Slide

  131. Понякога просто се
    налага да правиш
    нещата, които са важни

    View Slide

  132. View Slide

  133. Постоянното тунинговане
    на операционна система е
    загуба на време

    View Slide

  134. View Slide

  135. В голямата фирма
    нещата се случват
    бавно

    View Slide

  136. Пренаписванията на
    проекти са опасни…

    View Slide

  137. …и обикновено не
    свършват

    View Slide

  138. Ефективното
    планиране е важно

    View Slide

  139. Екипите, в които има
    само тесни специалисти,
    са неефективни

    View Slide

  140. Programming is
    thinking, not typing.
    —Casey Patton

    View Slide

  141. Но не е лошо и да
    можете да пишете
    като хората…

    View Slide

  142. View Slide

  143. Механичните
    клавиатури са
    велики

    View Slide

  144. View Slide

  145. Leopold FC 660C

    View Slide

  146. Караокето е най-
    висшата форма на
    team building

    View Slide

  147. View Slide

  148. Да ходиш с колежка
    е лоша идея

    View Slide

  149. 32 lvl
    Dev Knight

    View Slide

  150. Професионална
    криза

    View Slide

  151. View Slide

  152. All programming and
    no play make Bozhidar
    a dull boy.
    Стара народна мъдрост

    View Slide

  153. View Slide

  154. 2008

    View Slide

  155. Java Programmer

    View Slide

  156. Средата е важна

    View Slide

  157. Прагматично
    програмиране

    View Slide

  158. Pair programming
    кърти, чисти и
    извозва

    View Slide

  159. Базови добри практики
    • Прилична документация
    • Автоматизирани тестове
    • Continuous integration
    • Code review
    • Планиране на работата
    • Ретроспективи

    View Slide

  160. Трябва да се
    инвестира в хората

    View Slide

  161. Java програмистите
    са Джедаи

    View Slide

  162. C програмистите са
    Сити

    View Slide

  163. Широк спектър задачи -
    от десктоп приложения
    до Java Enterprise

    View Slide

  164. Swing > HTML + CSS

    View Slide

  165. Различни проблеми,
    различна оптимална
    технология

    View Slide

  166. Groovy, Scala, Ruby

    View Slide

  167. За да израстваш
    трябва да поемаш
    отговорности

    View Slide

  168. Консултантската
    работа не става

    View Slide

  169. 51 lvl
    Dev Knight

    View Slide

  170. Преподавател

    View Slide

  171. View Slide

  172. Уменията да
    презентираш са
    важни

    View Slide

  173. Не разбираш нещо,
    ако не можеш да го
    обясниш

    View Slide

  174. Научаваш повече
    отколкото хората, на
    които преподаваш

    View Slide

  175. Индивидуалният
    подход дава много
    добри резултати

    View Slide

  176. Голяма част от
    студентите не знаят
    защо са на курса ти

    View Slide

  177. Партитата на
    курсовете са топ
    забавни

    View Slide

  178. View Slide

  179. OSS Developer

    View Slide

  180. 0 -> 1

    View Slide

  181. View Slide

  182. View Slide

  183. Emacs… отново

    View Slide

  184. Когато един проект ти е
    присърце мотивацията
    ти е епична

    View Slide

  185. Разпределените
    екипи работят

    View Slide

  186. Винаги има някой
    по-умен от теб, от
    който да учиш

    View Slide

  187. Четенето на добър код
    е един от най-добрите
    начини да се учиш

    View Slide

  188. Чувството някой да
    ползва твой проект е
    невероятно

    View Slide

  189. Да комитваш в Emacs
    е по-яко от да правиш
    секс

    View Slide

  190. Абсолятно!

    View Slide

  191. 2011

    View Slide

  192. Technical Lead

    View Slide

  193. Средата е важна

    View Slide

  194. Ти си голям фактор
    в изграждането и

    View Slide

  195. Средата в
    start-up-ите
    е уникална

    View Slide

  196. Продуктова компания
    >
    Ишлеме софт

    View Slide

  197. Трябва да научиш това-
    онова за мениджънт на
    хора и проекти

    View Slide

  198. Трябва ти да се научиш
    да разпознаваш добри
    попълнения за екипа ти

    View Slide

  199. Трябва да имаш
    стратегия за
    развитие на тима

    View Slide

  200. По-голям фокус
    върху архитектурни
    решения

    View Slide

  201. Повече време
    отделено на
    проучване

    View Slide

  202. Не трябва да си гъз

    View Slide

  203. View Slide

  204. 67 lvl
    Dev Knight

    View Slide

  205. 2013

    View Slide

  206. CTO

    View Slide

  207. Средата е важна

    View Slide

  208. Ти създаваш
    средата

    View Slide

  209. Ти избираш
    технологиите

    View Slide

  210. Най-добрата технология
    не винаги е технология,
    която познаваш

    View Slide

  211. Познато != Просто

    View Slide

  212. Познато != Оптимално

    View Slide

  213. Занимаваш се с
    всичко…

    View Slide

  214. …освен с
    програмиране

    View Slide

  215. 81 lvl
    Dev Knight

    View Slide

  216. Равносметката

    View Slide

  217. Програмирам от 18
    години

    View Slide

  218. Програмирам
    професионално от 12
    години

    View Slide

  219. В период на около 5
    години регистрирах
    огромни темпове на
    развитие

    View Slide

  220. Бат Божо, колко зле
    беше миналата
    година…
    — Бат Божо

    View Slide

  221. View Slide

  222. Продължавам да
    научавам нови неща
    почти всеки ден

    View Slide

  223. Технологиите са
    развиват стремглаво

    View Slide

  224. Ако не се развиваш
    в крак с тях ще
    гледаш прогреса им
    само отстрани

    View Slide

  225. Рецептата за успеха

    View Slide

  226. 500 мл хъс

    View Slide

  227. 800 гр добра среда

    View Slide

  228. 5 кг практика

    View Slide

  229. 20 Разнообразни и
    разнородни проекти

    View Slide

  230. 3 с.л. забавления

    View Slide

  231. Пече се на бавен
    огън 10 години

    View Slide

  232. View Slide

  233. Felina
    twitter: @bbatsov
    github: @bbatsov
    http//batsov.com
    http://emacsredux.com
    HackConf 2016
    София Сити,
    България
    16.10.2016

    View Slide