Thursday, 24 December 2009

За что я люблю программирование

Когда я был маленьким, я очень любил писать программы. Интерес был вызван, скорее, обидой. Почему это компьютер умнее меня? И игрой. Игрой, заставить его, компьютер, делать то что я хочу. Ты нажимаешь кнопку, а он говорит что не так, ты правишь ошибку, а он говорит что опять не так… И вот оно запустилось. А счастья нет. Ты начинаешь разбираться… искать… Ты чувствуешь себя строителем мира, так мне тогда казалось. Мне казалось что я создаю свою вселенную… Свой маленький мир…

Со временем, количество ошибок уменьшается, и сводятся к «oops» и «typo» с разными не нормативными словами в истории scm вследствие того, что кто-то отвлек, или ты хотел спать. Разочаровался ли я в программирование? И да, и нет. Детские ошибки ушли. Программировать оказалось очень просто и очень скучно, действительно сложные и интересные задачи попадаются все реже и реже и это было незаметно ребенку, который чувствовал себя богом, который путается в клавишах и радуется, когда все запустилось. Но с возрастом и изменились проекты. Отлаживать pet project — хоть и не просто, но интересно. Правда нет ответственности. И нет ограничения по времени…

То ли дело — работа. Проект, зависит от очень большого количества сторонних проектов, разной степени открытости и дружелюбности сообщества. Появляются баги в железе, компиляторах, окружении. Появляются пользователи, ответственность и первый миллион строк кода. Появляется непонимание как это работает… И появляются баги. И не просто баги, а баги в рамках. В рамках бюджетов и сроков. И появляется новая ответственность, ответственность потопить, вместе с собой, с своими багами, не только себя, но еще несколько человек. Может быть даже десятков. А если проект крупный — то и сотен. И большая часть из них твои друзья, ибо проводишь ты с ними весь осознанный день. Появляется риск, что люди окажутся на рынке труда, если ты не пофиксишь вот этот мерзкий баг, и еще те 5 штук до конца недели, а если пофиксишь — будут бонусы и роялти и обложки в журналах и слава и почет. А может и не будет. Риск большой, но и место для надежды есть.

Каждый баг — это research. И чем больше проект, тем он занимательней. Я думаю, что не так много дипломов написано с таким же напряжением ума в вузах, честно, как попытки отловить баг, который воспроизводится каждое первое воскресенье месяца на одной машине из десятка в кластере… Но самое важное в багах — это ценный духовный опыт, который большинство людей не получали ни разу в жизни — программист увидел свою ошибку. Признался в ней для себя, для окружающих… И исправил ее.

Люди в большинстве своём живут с мыслью: «я ошибся только тогда, однажды, да и тогда, я подумал, что я неправ, в то время как на самом деле, я был прав!»

Я имею ввиду серьезные ошибки. Когда сам искренне веришь что прав, а оказывается, что нет. Когда признаешь, себе, действительно такое, получаешь немного просветления, и получив его несколько тысяч раз, перестаешь вообще считать себя в чем-то правым. А чья-то уверенность в правоте вызывает только смех. В процессе, можешь заметить как изворотлив моск в попытке защитить свою веру. Можно ли получить подобный опыт в других профессиях? Да. Но в случае программиста этот опыт ускоряется. Да и в программировании, когда один, ты сможешь найти десятки аргументов, что бы замаскировать свою багу в фичу, или почему это не твоя вина. Да и сейчас я сам, мозгом, сопротивляюсь признавать свою ошибку. Хочется верить в глюк окружения или космические помехи, которые ломают биты в проводах…

Можно сказать, что это и есть акт самосохранения человека. Ведь признать, что твой разум выбрал ошибочную истину — нанести удар по себе, по своему «Я».

Когда берешь новый баг, его в начале нет. Ты ищешь кусты, кусты в которых есть кролик. Тебе могут сказать что он тут есть. Или сказать в каких кустах на вашей полянке он есть. Ты находишь его. Ловишь. Даешь морковку. Он мягкий пушистый. Подходит человек и говорит что это не кролик никакой, это покрышка, которую соседские мальчишки выкинули в кусты. Что ты ему скажешь? Как на него посмотришь? А что почувствуешь, когда окажется, действительно, что это покрышка от велосипеда, и внутри лежит «съеденная» морковка, а нежная шерстка, это просто твои перчатки…

Вот точно такое же просветление чувствуешь, когда понимаешь баг. Когда ты находишь свой кусок кода, за который ты готов положить голову, что он верен… а он… и хорошо что не положил… и сам ты лопух… И вот он, момент, в который перешла ценность программирования для меня.

Write on: 5:02 | 0 comments | | tags: , , | permalink |
Add post to:   Delicious Reddit Slashdot Digg Technorati Google


Add comment

Comments

No comments for this post

Comment form for «За что я люблю программирование»

Required. 30 chars of fewer.

Required.