Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

вторник, 3 марта 2009 г.

Программист он же Создатель

Как то раз я написал в своей программе (в окне про себя), которую написал к дипломной работе: "Создатель такой-то такой-то". Мне мой научный руководитель намекнул, что Создатель, причем с большой буквы у нас только один.

В моей программистской деятельности часто проскакивают аналогии между реальным миром и тем что мы программируем. Мы оперируем каждый день моделями и стараемся как можно точнее описать ими реальный мир. Создатели, блин :)... Увлекаясь параллельно психологией и идеей мироздания я свободно могу провести аналогии между моей каждодневной работой и тем что происходит вокруг. Это просто (после некоторой практики). Думаю программисту куда легче понять идею мироздание чем кому бы то ни было.

Работа у нас не пыльная. лучше про это расскажет одна офисная шутка "зарядка для программиста":
1. Упражнение с приложением
Запустили приложение, сняли приложение
Запустили приложение, сняли приложение,
Продолжаем упражнение с приложением.
Подняли приложение, упало приложение,
Снова подняли приложение, лежит приложение,
снимаем приложение, завершаем упражнение.

2. Упражнение-тестирование
Исходное положение: запустили приложение.
Находим баг, фиксим баг,
находим баг, фиксим баг,
находим баг, не можем пофиксить?
Это фича! Завершаем упражнение.

3. Упражнение со шнурочком.
Исходное положение: пропал звук.
Нагнулись, поправили шнурочек,
Поднялись - пропал звук, матюкнулись,
нагнулись, поправили шнурочек.
Повторяем упражнение.

4. Упражнение со светом.
Кодим, выключается свет, матюкаемся,
Повторяем упражнение.

5. Упражнение с чайником.
Поднимаем зад, включаем чайник, опускаем зад,
Поднимаем зад, делаем чай, опускаем зад.
Упражнение завершено.

6. Упражнение с почтой при проекте.
Приняли почту, удалили спам, отложили почту,
Завершили упражнение.

7. Упражнение с почтой без проекта.
Приняли почту, удалили спам, прочитали почту,
Завершили упражнение.

8. Упражнение с почтой совсем без проектов.
Приняли почту, почитали почту, почитали спам,
Приняли почту, повторяем упражнение.

9. Упражнение на общение с заказчиком/постановщиком - упражнение перед зеркалом.
Убедительно говорим фразы с обвиняющим выражением:
"Почему?" "Ну так а вы?" "Ну и мы, но а вы же вообще." "Мы вообще, но и вы.".
Повторяем упражнение.

10. Упражнение с хорошо поставленной задачей
Прочитали задание, уточнили задание,
делаем задание, уточняем задание,
сделали, показали, повторяем упражение.

11. Упражнение с очень хорошо поставленной задачей
Прочитали задание, покурили, прочитали задание,
уточнили что курили постановщики, покурили,
уточнили задание, далее как в 10.

На сегодня всё, расходимся по местам, здоровья вам и вашим проектам!

Лирическое отступление... :)
Так вот "Находим баг, фиксим баг, находим баг, фиксим баг, находим баг, не можем пофиксить? Это фича!" и так каждый день. Я часто прошу сотрудников своих не расстраиваться когда что-то идет не так как они хотят. Наученный опытом я могу сказать, что в компьютере возможно всякое, даже самое невероятное. Просто нужно хорошенько попыхтеть. Рад, если это кому-то кроме меня приносит удовольствие, программирование это. Говорю "так это наша работа! от нее надо получать удовольствие. Ведь если не будет багов, зачем тогда программисты? Ошибка - это опыт, а опыт в нашем деле самое интересное."

А если посмотреть на нашу жизнь. Чем не "находим баг, фиксим баг, находим баг, фиксим баг, находим баг, не можем пофиксить? Это фича!". По моему тут действуют те же правила. Хавать ее надо а не матюкать. Другой у нас нет и не будет никогда. Видимо Главный Создатель вкусил кайф программирования и наделил нас теми же способностями. А мы матюкаемся...

А вот как я поступаю когда у меня не получается пофиксить багу известным мне способом? Я просто ищу другой способ. А в жизни все всегда усложняю. Стена стоит на карте моей нарисован проход, я ей верю и долблюсь об стену вместо того, чтобы просто найти другой способ попасть на другую сторону здания.

А начав использовать разработку, управляемую тестированием я понял еще одну фундаментальную вещь. Нету ошибок (багов), нету пожеланий (фичей) есть только система которая не работает та как бы нам хотелось. Бага она тогда бага, когда мы что-то сделали и это что-то как бы работает (мы так думаем) а потом оно проявляет себя в неожиданный для нас момент. А фича, когда пожелание на уровне идеи - его нет в системе.

Система, которая не работает так как бы хотелось. Узнаем это мы основываясь на обратной связи - то как действительность (как работает система) отличается от реальности (как по нашему мнению система должна работать). В моей работе в день таких не стыковок чрезвычайно много порядка тысячи. Делаю. Думаю что работает. Оказывается нет. Переделываю другим способом. Думаю что работает. Оказывается нет. Снова переделываю. И так до тех пор пока не заработает так как захочу. Потом, со временем, снова что-то вылазит. Снова открываю дебаггер и снова исправляю.

А вот почему в жизни все усложняю? Быть может потому что в жизни причина и следствие разделены во времени на более длительные промежутки времени чем, пару минут-час? Возможно. Мы что-то делаем. А когда получаем обратную связь уже забываем что мы делали. Хорошо когда обратная связь такова что система работает как хотели, а что если не так? Как часто мы меняем инструмент?

Какое бы простое правило из этого извлечь? Всегда делать все так как не делал раньше. Никогда не повторяться. В любом случае. На любой фидбек реагировать только новым инструментом. Благо методов много...

А еще жизнь и программирование сходны вот в чем:
- все заканчивается сдачей проекта.
- разработка ведется продуктивнее, если идея твоя личная.
- в паре программировать всегда веселее.
- когда программист четко знает результат - разработка ведется (иначе модно сказать, что она стоит).
- занимаясь новым направлением в проекте всегда результативность программиста выше.
- командами разработка ведется быстрее.
- знания программиста устаревают очень быстро.
- рынок меняется очень быстро - за ним не успеть.
- в разработке хорошая идея всегда на вес золота.
- программирование это творчество...

Уверен это не полный перечень. Вроде как все... Дальше только матюки :)

Спасибо Папа, что увлек научил меня играть в Создателя.

И еще. Жизнь классная штука как ни крути.

2 комментария:

  1. Спасибо :)))))
    Проведу такую аналогию-комплимент.

    Саня - ты электро-МИКСЕР нашей компании.

    Что-то пытется устояться, вернуться в обчное нудное буденное русло. А ты то тут то там подмешиваешь, взбиваешь массу - ну чтоб не завонялось и болото не случилось. Ну мне оно так видится, кто-то возможно по другому это видит, или не видит.

    Ну такое, жизнь...

    Спасибо за энергию :)

    ОтветитьУдалить
  2. Энергией питаюсь от вас всех. Завожу собственный реактор, независимый со сроком службы без перезарядки 101 год. Вообще как советуют: "давай больше чем берешь". Но когда делаешь так, то фидбек получаешь еще больше. Снова применяем правило. Снова фидбек превышает. Обороты вскоре становятся миксерными. Оно само собой так получается. И наверное это хорошо, раз оно приносит удовольствие не только мне.

    Спасибо за заводящие комментарии.

    ОтветитьУдалить