Това значи, че си
играя с програмиране
от 18-20 години
Slide 12
Slide 12 text
много код
много грешки
много уроци
Slide 13
Slide 13 text
искам да споделя няколко с вас
Slide 14
Slide 14 text
ще ви разказвам истории
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
Научаването на занаята е
пътешествие...
Slide 17
Slide 17 text
...има моменти на действие...
Slide 18
Slide 18 text
...и моменти на размисъл.
Slide 19
Slide 19 text
Всяко пътешествие се нуждае от карта
Slide 20
Slide 20 text
1. Да бъдеш програмист и няколко
трудни истини
2. Неща, които ми се иска да знаех
преди 10 години
3. С какво може да започнете още днес
План
Slide 21
Slide 21 text
1. Да бъдеш програмист и няколко
трудни истини
2. Неща, които ми се иска да знаех
преди 10 години
3. С какво може да започнете още днес
План
Slide 22
Slide 22 text
Всяка котка има 3 имена:
1. Едно за хората
2. Едно за другите котки
3. Едно за себе си
Slide 23
Slide 23 text
В професионален аспект
има интересен паралел
Slide 24
Slide 24 text
1.Как ни виждат “нормалните”
хора
2.Как ни виждат другите
програмисти
3.Как виждаме себе си
Slide 25
Slide 25 text
Искам да говоря за първото
- как “нормалните” хора
виждат програмистите
Slide 26
Slide 26 text
типичния програмист, на работа
Slide 27
Slide 27 text
типичния програмист, когато го прекъснем за нещо
Slide 28
Slide 28 text
Все пак, това е много по-
добре от начина, по който ни
виждат другите програмисти
Slide 29
Slide 29 text
Истината е, че сме объркани
Slide 30
Slide 30 text
Като група, няма да постигнем
общо съгласие за почти нищо -
езици, добри практики,
философия
Slide 31
Slide 31 text
възпитан дебат между повече програмисти
Slide 32
Slide 32 text
Това е нормално, защото
занаята ни е безумно млад
Slide 33
Slide 33 text
Често правим
архитектурни
метафори, но
архитектурата е
нещо древно
(Turning Torso, Malmö, Sweden)
Slide 34
Slide 34 text
Имаме и аналогии с
математиката, но
нейните основни
принципи не са се
променяли от
хилядолетия
Slide 35
Slide 35 text
при нас има революция на всеки 5 години
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
“Аз съм неакредитиран психолог,
терапевт, механик, дипломат,
бизнесмен и учител, в индустрия,
която все още дефинира себе си
всеки ден.”
- Ka Wai Cheung
Slide 38
Slide 38 text
No content
Slide 39
Slide 39 text
No content
Slide 40
Slide 40 text
No content
Slide 41
Slide 41 text
Не споменава
писане на код
Slide 42
Slide 42 text
Като започвах, мислех че:
писане на код = програмиране
Slide 43
Slide 43 text
Оказа се, че писането на код
е най-лесната част. Всичко
останало е по-трудно и без
него не може.
Slide 44
Slide 44 text
Трудна истина №1
Писането на код е най-лесната
част. Ако не сте готови да се
изправите пред всичко останало,
не се захващайте с това.
Slide 45
Slide 45 text
обратно към моята история
Slide 46
Slide 46 text
как се вдъхнових да
се занимавам с програмиране?
Slide 47
Slide 47 text
No content
Slide 48
Slide 48 text
qbasic.exe
Slide 49
Slide 49 text
Змията хапе!
Slide 50
Slide 50 text
знаех:
.BAT файлове
малко Pascal
Slide 51
Slide 51 text
мога ли да направя
нещо такова?
Slide 52
Slide 52 text
отне ми седмица-две
Slide 53
Slide 53 text
бе страхотно преживяване!
Slide 54
Slide 54 text
интелектуална стимулация
Slide 55
Slide 55 text
No content
Slide 56
Slide 56 text
резултати
Slide 57
Slide 57 text
много по-забавно от която и да е игра
Slide 58
Slide 58 text
всичко това бе важно
1 2
Slide 59
Slide 59 text
Програмирането е креативно.
Има много по-малко
инженерство, отколкото
университетите ни карат да
мислим.
1
Slide 60
Slide 60 text
Трябва да превръщате
непознати проблем в ясен код,
докато сте под стрес и
постоянно учите нови неща
Slide 61
Slide 61 text
стресът е ГОЛЯМ
2
Slide 62
Slide 62 text
Steve Yegge
Slide 63
Slide 63 text
Единственият начин да
успеете е да обичате
това, което правите
Slide 64
Slide 64 text
No content
Slide 65
Slide 65 text
Представете си музикант,
който не обича музиката
и свири за пари
Slide 66
Slide 66 text
Не сме 80те. Работата не
трябва да е мъчителна и
неприятна. Трябва да ни
доставя удоволствие.
Slide 67
Slide 67 text
БУДЕН СЪЗНАТЕЛЕН ЖИВОТ
Работа Друго
Щастливия програмист
WebTech 2009
Slide 68
Slide 68 text
Ако работата е креативна,
не можете да я вършите, ако
тя не ви носи удоволствие
Slide 69
Slide 69 text
Трудна истина №2
Ако не обичате да програмирате
и всички аспекти свързани с
това, не се захващайте с този
занаят.
Slide 70
Slide 70 text
No content
Slide 71
Slide 71 text
No content
Slide 72
Slide 72 text
без твърд диск
4.77 MHz
360KB дискети
Slide 73
Slide 73 text
min. 500GB
3.5 GHz
дискети?
Slide 74
Slide 74 text
без твърд диск
4.77 MHz
360KB дискети
min. 500GB
3.5 GHz
дискети?
Slide 75
Slide 75 text
Машините са станали
порядъци по-мощни
Slide 76
Slide 76 text
No content
Slide 77
Slide 77 text
Всичко се променя
безумно бързо. Сравнете
с всяка друга наука.
Slide 78
Slide 78 text
1 + 1 = 2
(вярно от няколко хиляди години насам)
Slide 79
Slide 79 text
Днес пиша на Ruby и това е сигурно
Преди 7 години беше риск
7 години по-рано Java беше риск
Преди това управлявахме паметта
Slide 80
Slide 80 text
Единствената константа е
промяната. Трябва да учите
нови неща постоянно.
Slide 81
Slide 81 text
Училищата и университетите
не могат да ви подготвят за
истинската работа.
Slide 82
Slide 82 text
Това е занаят
Slide 83
Slide 83 text
В един занаят постоянно
трябва да се развивате, да учите
нови техники и да гледате
какво правят другите занаятчии
Slide 84
Slide 84 text
Трудна истина №3
Ако не сте готови да се
посветите на занаята, не се
захващайте с него
Slide 85
Slide 85 text
Дадох ви няколко причини
да не бъдете програмисти.
Сега ще опитам да съм
малко по-позитивен.
Slide 86
Slide 86 text
Power!
Slide 87
Slide 87 text
Jazz
Slide 88
Slide 88 text
3 уши
Slide 89
Slide 89 text
(clear)
(hint)
Slide 90
Slide 90 text
(clear)
(hint)
(define (flowers n)
....
Slide 91
Slide 91 text
No content
Slide 92
Slide 92 text
Направете така, че
програмирането да
стане част от живота ви.
Както семейството и
приятелите.
Slide 93
Slide 93 text
Иначе ще сте посредствени.
А това е депресиращо.
Slide 94
Slide 94 text
Не говоря за работохолизъм
- казах “програмирането”, а
не “работата”
Slide 95
Slide 95 text
работа ≠ занаят
Slide 96
Slide 96 text
Трудна истина №4
Програмирането не е работа от
9 до 5. Програмирането е начин
на живот. Ако не сте готови на
жертви, не се захващайте със
занаята.
Slide 97
Slide 97 text
1. Да бъдеш програмист и няколко
трудни истини
2. Неща, които ми се иска да знаех
преди 10 години
3. С какво може да започнете още днес
План
Slide 98
Slide 98 text
Ще ви кажа десет урока,
които ми се иска да бях
научил преди десет години
Slide 99
Slide 99 text
Урок №1: Текстов редактор
Изберете един текстов редактор и
станете майстори в него. Научете
как да променяте най-малките му
детайли. Ползвайте го за всичко.
Персонализирайте го агресивно.
Slide 100
Slide 100 text
Очаквайте това да
отнеме години
Slide 101
Slide 101 text
Прекарвате почти целия си
ден в редактора. Има голям
смисъл на го оптимизирате за
себе си.
Slide 102
Slide 102 text
Понякога ви трябва IDE.
Но ако без него сте с
вързани ръце, не струвате.
Slide 103
Slide 103 text
Пример: бях Java програмист
и ползвах Eclipse. Беше ми
трудно да пиша на каквото и
да е друго.
Slide 104
Slide 104 text
Когато учите нови неща,
много от познанието
остава в редактора -
snippets, commands, т.н.
Slide 105
Slide 105 text
Тони Старк, най-големия хакер
Slide 106
Slide 106 text
No content
Slide 107
Slide 107 text
Превърнете редактора си в
космически кораб
Slide 108
Slide 108 text
Урок №2: Процес и подход
Постоянно анализирайте процеса
си. Опитайте да го структурирате.
Подобрявайте го постоянно.
Slide 109
Slide 109 text
Ако сядате пред машина,
блъскате се X часа и накрая
магически произвеждате
резултат, правите нещо грешно
Slide 110
Slide 110 text
Дори артистите
имат процес
Slide 111
Slide 111 text
Мислете за следните неща
как тествате програмата си?
какво правите като има проблем?
кога правите дизайн?
кога правите рефакторинг?
над какво работите в момента?
кога се отказвате и пробвате друго?
как предавате подхода на други?
Slide 112
Slide 112 text
Test-Driven Development
Slide 113
Slide 113 text
— TDD
Slide 114
Slide 114 text
No content
Slide 115
Slide 115 text
Урок №3: Контрол на версии
Научете една система за контрол
на версии и я ползвайте за всичко,
което правите.
Slide 116
Slide 116 text
git е труден, но си струва
Slide 117
Slide 117 text
Системите за контрол на
версии са лесни. Безумно е
да правите архиви “на ръка”.
Slide 118
Slide 118 text
В историята на един
проект има много
познание, което ще искате
да погледнете по-късно
Slide 119
Slide 119 text
Правенето на редовни,
малки commit-и въвежда
структура в процеса ви
Slide 120
Slide 120 text
Това е единствения
разумен начин, по който
обменяте код с други хора
Slide 121
Slide 121 text
No content
Slide 122
Slide 122 text
Урок №4: Дисциплина
Най-важното нещо докато
програмирате е да бъдете
дисциплинирани. Програмирането
е невероятно сложно и ако не
разчитате на навици, бързо ще се
загубите.
Slide 123
Slide 123 text
Когато човек е под стрес, той
прибягва до предишните си
навици. Ако нямате
дисциплина, стреса ще ви убива.
Slide 124
Slide 124 text
Кодът ви трябва да е
идеално подравнен,
имената ви трябва да са
супер дескриптивни
Slide 125
Slide 125 text
Broken Window Theory
Slide 126
Slide 126 text
Варене на живи жаби
Slide 127
Slide 127 text
С дисциплината трябва да
започнете рано. Навиците
се променят трудно и
бавно.
Slide 128
Slide 128 text
Урок №5: Водете си бележки
Разработете си система за водене
на бележки. Описвайте всичко,
което научите. Четете ги редовно.
Направете това част от процеса си.
Slide 129
Slide 129 text
Мозъците ни са твърде малки. Не
могат да съберат всичко, което
искаме да наблъскаме в тях.
Slide 130
Slide 130 text
wiki
тефтери
блог
vim-notes
Slide 131
Slide 131 text
Пътят, който сте извървяли
Slide 132
Slide 132 text
споделяйте с други?
Slide 133
Slide 133 text
Приемете го на доверие: две
години по-късно ще сте
благодарни, че имате бежелки
Slide 134
Slide 134 text
Урок №6: Ритуал за развитие
Изградете си стриктен процес,
с който научавате нови неща.
Спазвайте го фанатично.
Ревизирайте го периодично.
Slide 135
Slide 135 text
Ученето не е спринт, а
маратон. Отнема време
и иска постоянство.
Slide 136
Slide 136 text
Разберете как учите
най-ефективно
Slide 137
Slide 137 text
No content
Slide 138
Slide 138 text
No content
Slide 139
Slide 139 text
1 нов език на година
1 нова книга на месец
Slide 140
Slide 140 text
Това е ритуал -
отнасяйте се сериозно
Slide 141
Slide 141 text
Урок №7: Научете много езици
Научете много езици за
програмиране. Научете ги
в дълбочина. Трябва да са
разнообразни.
Slide 142
Slide 142 text
“You can write FORTRAN
in any language”
Slide 143
Slide 143 text
Всеки език е ви дава нов начин
на мислене. Той е много по-
важен от синтаксиса.
Slide 144
Slide 144 text
Когато сте в Рим,
правете като
римляните
Пишете идиоматично
на всеки език, който
научите
Slide 145
Slide 145 text
Как Ruby ме направи по-добър
Java програмист?
Slide 146
Slide 146 text
Езиците прогресират. На
всяко десетилетие
парадигмата се променят.
Ще научите полезни идеи.
Slide 147
Slide 147 text
не бъдете консервативни
Slide 148
Slide 148 text
Чували сме един тон глупости
“Ruby е твърде бавен и не става за големи неща”
“Java е твърде бавна и не става за големи неща”
“Релационните бази данни са хубаво академично
упражнение, но не стават за истински проекти”
“Структурираното програмиране е хубаво
академично упражнение, но не става за истински
проекти”
“C е твъре бавен и не става за реални неща”
Slide 149
Slide 149 text
Все пак, Haskell няма да стане
голям
...твърде бавен и не става за големи неща
...хубаво академично упражнение, но не става за
истински проекти
Урок №8: Направете си dotfiles
Повечето unix инструменти могат да
се персонализират. Правете го
агресивно. Дръжте настройките във
version control.
Slide 152
Slide 152 text
bash
zsh
vim
git
tmux
Slide 153
Slide 153 text
Персонализацията на
инструментите е част от
процеса ви. Ще ги развивате
повече, ако имате лесен
начин за това.
Slide 154
Slide 154 text
Превърнете средата си в
космически кораб
Slide 155
Slide 155 text
Споделяйте dotfile-овете
си публично
Slide 156
Slide 156 text
Разглеждайте чужди
dotfiles за вдъхновение.
В GitHub има много.
Slide 157
Slide 157 text
http://github.com/skanev/dotfiles
Slide 158
Slide 158 text
Урок №9: Правете OpenSource
Занимавайте се с отворен код. Ще
научите много. Ще се запознаете с
интересни хора. Ще придобиете
много умения.
Slide 159
Slide 159 text
срещате се с други програмисти
Slide 160
Slide 160 text
GitHub: участието в
OpenSource никога не
е било по-лесно
Slide 161
Slide 161 text
Може да видите как опитни
програмисти решават реални
проблеми. На курс ще ви
искат пари за по-малко.
Slide 162
Slide 162 text
Кодът не е единствения
начин, по който може да
участвате
Slide 163
Slide 163 text
Ако пишете
документация, ще
разберете проекта
по-добре и всички
ще са ви благодарни
Slide 164
Slide 164 text
Ако отваряте bug
report-и, ще направите
проекта по-добър
Slide 165
Slide 165 text
Ако отговаряте на
въпроси в пощенските
спъсици, ще научите
много и упражнявате
комуникация
Slide 166
Slide 166 text
Урок №10: Пазете здравето си
В работата ни има здравословни
рискове. Седенето и стресът са
убийствени. Мислете за това отрано.
Появят ли се проблемите, ще е
твърде късно.
Slide 167
Slide 167 text
No content
Slide 168
Slide 168 text
Този съвет се подминава с
лека ръка. Всички чуваме
това, но не го вземаме
насериозно.
Slide 169
Slide 169 text
Аз имам проблеми с ръцете
от три години. Бях на 23.
Slide 170
Slide 170 text
На 23 се случват и
по-лоши неща
Slide 171
Slide 171 text
занаята ни е опасен
1 2
Slide 172
Slide 172 text
1
Slide 173
Slide 173 text
Седенето по цял ден е
опасно. Поддържайте правилна
стойка. Намирайте време за
спорт. Спете достатъчно.
Хранете се здравословно.
Slide 174
Slide 174 text
2
Стрес
Slide 175
Slide 175 text
Стресът е след най-големите
убийци на 21 век. Не се
претоварвайте. Ако имате
нужда от почивка - направете
го. Здравето ви е по-важно.
Slide 176
Slide 176 text
Ако работата ви сдухва,
сменете я - невероятно
просто е
Slide 177
Slide 177 text
Когато се появят проблеми,
ще бъде твърде късно
Slide 178
Slide 178 text
Най-важното:
пълноценен живот
Отделяйте време на важните
неща. Ако не сте щастливи, няма
да вършите добра работа.
Slide 179
Slide 179 text
Програмирането е
креативно, но за разлика от
музиката, страданието не
води до добър софтуер
Slide 180
Slide 180 text
No content
Slide 181
Slide 181 text
No content
Slide 182
Slide 182 text
Направете програмирането
част от живота си - не целия
Slide 183
Slide 183 text
Намирайте време за
семейство, партньори,
приятели и хобита. Ако ги
жертвате твърде често за
работата си, тя ще страда.
Slide 184
Slide 184 text
Щастливите хора вършат
по-добра работа
Slide 185
Slide 185 text
Ако работата ви прави
нещастни - сменете я.
Няма значение какво сте
инвестирали.
Slide 186
Slide 186 text
“Бъди щастлив за да
работиш, а не работи,
за да бъдеш щастлив”
- @if__fi
Slide 187
Slide 187 text
ОК е това да
не е вашето
нещо
Slide 188
Slide 188 text
искам да се върна малко
по-назад...
Slide 189
Slide 189 text
1.Как ни виждат “нормалните”
хора
2.Как ни виждат другите
програмисти
3.Как виждаме себе си
Slide 190
Slide 190 text
No content
Slide 191
Slide 191 text
1. Текстов редактор
2. Процес и подход
3. Контрол на версии
4. Дисциплина
5. Водете си бележки
6. Ритуал за развитие
7. Научете много езици
8. Направете си dotfiles
9. Правете OpenSource
10. Пазете здравето си
Slide 192
Slide 192 text
1. Да бъдеш програмист и няколко
трудни истини
2. Неща, които ми се иска да знаех
преди 10 години
3. С какво може да започнете още днес
План
Slide 193
Slide 193 text
1
2
3
4
5
Slide 194
Slide 194 text
Днес. Създайте си профил.
Качете каквото можете. Почнете
да следите интересни проекти и
хора.
1 Регистрирайте с в Github
Slide 195
Slide 195 text
Изберете си Vim или Emacs и
започнете да го учите днес.
Ползвайте го навсякъде. Не се
подавайте на изкушението да
ползвате стария си редактор.
Започнете с редактор
2
Slide 196
Slide 196 text
$ mkdir dotfiles
$ cd dotfiles
$ git init .
Направете си dotfiles
3
Slide 197
Slide 197 text
Един език за тази година
Първите няколко книги за
идните месеци
Харесайте си книги и език
4
Slide 198
Slide 198 text
Харесайте си един проект,
който да търкаляте постоянно
Направете си pet project
5
Slide 199
Slide 199 text
Съмнявам се да имам време
за въпроси, но все пак...
Slide 200
Slide 200 text
Благодаря ви!
Стефан Кънев
http://skanev.com/
@skanev
OpenFest Габрово
6 май 2012
Габрово