Category: мода

Верхний пост :)

Основной мой вид деятельности на данный момент - разработка ПО в области embedded. Опыт работы - с 2001 года. Сайт-визитка по этой теме: http://avl2.info/.

Кроме этого, есть еще несколько направлений, мне интересных, в которых я в той или иной степени "продвинулся". Никак не связанных с программированием.

1. Естественные роды. Все - на основании собственного (почти :)) опыта рождения двух детей. Я оба раза присутствовал на родах, во второй раз мы вместе с женой составляли план родов, выбирали и общались с акушерками, ходили на курсы подготовки и многое-многое другое :) Опыт вылился в сайт http://ru.naravniporod.com/. Буду рад ответить на вопросы, если кого-то мой опыт заинтересует подробнее.

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

2. Фотография. Началось это увлечение еще с 1996 года, с фотоаппарата "Смена 8М" и черно-белой пленки, проявки ее в бачке и печати фотографий в ванной под увеличителем и красным фонарем. Кое-что из того, что получается сейчас, можно увидеть здесь по тегу "Фото". Коммерческое предложение с ценами и вариантами - на еще одном моем сайте http://www.lepitrenutki.com/, который, правда, на словенском языке - для целевой аудитории.

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

3. Гимнастика для новорожденных. С первым ребенком я открыл для себя динамическую гимнастику. Со вторым - познакомился с абсолютно другим подходом, автором которого является словенка Андрея Семолич, и который она назвала "Педокинетика". (Сайт тоже на словенском). Подход очень и очень интересный, отлично дополняет собой динамическую гимнастику, со вторым ребенком я прошел всю ее методику, начав с 6 недель и закончив моментом, когда малыш начал делать первые шаги. И очень доволен результатом. В мае 2013 года я получил сертификат инструктора "Педокинетики" первого уровня (после двух лет обучения, в том числе более 200 часов практики с реальными детьми и 6-часового экзамена на реальных и непростых группах). Впереди еще минимум три года обучения :) Так что в ближайшее время появится еще одно направление в моей деятельности :) По которому я тоже буду рад помочь тем, кого это заинтересует!

58. Послание в будущее

(В оригинале - A Message to the Future)

В течении многих лет я обучала программистов, и за эти годы у меня сложилось впечатление, что большинство из них мыслят примерно следующим образом: «Раз я решаю очень сложную проблему, то и ее решение должно быть столь же сложным для понимания для всех остальных, в том числе и для меня, если я вдруг решу взглянуть на него спустя пару месяцев»

Я помню один случай со своим студентом Джо, пришедшим однажды показать мне то, что он написал, со словами «Держу пари, вы не догадаетесь, что делает этот код!».

«Да, ты прав», - сказала я, не вдаваясь в подробности написанного, а вместо этого задумавшись, как бы лучше донести до него то, что я хочу сказать. «Я уверена, ты старался, делая этот код. Но я не уверена, что ты при этом не забыл об одной важной вещи. Джо, у тебя ведь есть младший брат?»

«Да, конечно есть! Его зовут Фил, и он как раз пошел на ваш вводный курс. Он тоже изучает программирование!» - гордо ответил Джо.

«Отлично!» - ответила я. «Я вот только не уверена, что он сможет разобраться в твоем коде».

«Ни шанса!» – ответил Джо. – «Это слишком сложно!».

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

«Можешь это представить? Чтобы этот способный программист из будущего увидел твой код и сказал: «Вау! Великолепно! Я понимаю все, что здесь написано и я впечатлен тем, насколько это сделано элегантно. Я должен показать это всем в команде! Это писал настоящий мастер!»».

«Джо, как ты думаешь, мог бы ты написать код, который бы и задачу решал, и при этом был бы столь элегантным? Который бы звучал как красивая мелодия? Я думаю, что вы все, решающие разные задачи, могли бы написать столь же элегантный код, не так ли? Может, мне стоит начать оценивать код за красоту? Что ты думаешь, Джо?»

Джо посмотрел на меня, по его лицу гуляла улыбка. «Я понял, профессор, я постараюсь сделать этот мир лучше для Фила. Спасибо!».

Автор оригинала - Linda Rising

Перевод мой, при использовании ссылка на мой живой журнал обязательна!

54. Нет ничего более постоянного, чем временное

(В оригинале - The Longevity of Interim Solutions)

Почему мы создаем временные решения?

Обычно возникает какая-то срочная проблема. Она может быть внутренней – нехватка какого-либо инструмента для выполнения работы. Она может быть внешней, видимой конечным пользователям.

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

Однако, временные решения обладают большой инертностью и устойчивостью. Они уже есть, они работают и почти всех устраивают, нет необходимости что-то менять прямо сейчас. Когда принимается решение о том, что сделать на следующем шаге, чтобы получить максимальную отдачу, наверняка найдется множество более важных вещей, чем замена временного решения на нормальное. Почему? Потому что оно уже есть, оно работает, оно всех устраивает. Единственная проблема – оно не соответствует тем или иным стандартам и требованиям, однако за исключением некоторых ниш этим обычно пренебрегают.

И таким образом временные решения остаются навсегда.

И если с временным решением возникнет какая-нибудь проблема, вряд ли стоит ожидать, что в этот момент оно будет полностью переписано «как надо». Скорее всего, будет сделано временное решение проблемы временного решения, которое опять-таки всех устроит.

Есть ли здесь проблема?

Ответ зависит от конкретного проекта и вашего отношения к стандартам кодирования. Если в системе слишком много временных решений, ее энтропия (или внутренняя сложность) возрастает, а сопровождаемость снижается. Однако, это не тот вопрос, который следует задавать в первую очередь. Мы сейчас говорим о решениях. Возможно, это не является вашим предпочтительным решением (вряд ли это решение предпочтительно для кого-либо), однако это – решение, и мотивация для его переделки будет низкой.

Что же мы можем сделать, если столкнемся с такой проблемой?

  1. Избегать временных решений с самого начала
  2. Поменять силы, влияющие на решения менеджера проекта
  3. Оставить все так, как есть

Давайте рассмотрим все три варианта подробнее.

  1. Избежать временного решения получится не всегда. Есть реальная проблема, которую надо решить, а стандарты слишком жесткие и сделать этого не позволяют. Вы можете потратить какое-то количество энергии на попытку поменять стандарты. Достойно уважения, хотя и утомительно. И неэффективно с точки зрения вашего проекта и проблемы.
  2. Упомянутые силы основаны на культуре проекта, что затруднит изменения. Возможно, это и получится, особенно если проект маленький и вы можете сами все разгрести без чьего-либо одобрения. Или же если проект уже настолько погряз во временных решениях, что это уже видно и снаружи, и на его расчистку официально выделяется время.
  3. Если же вы не сделаете ни первое, ни второе, то существующее положение вещей таковым и останется.

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

Автор оригинала - Klaus Marquardt

Перевод мой, при использовании ссылка на мой живой журнал обязательна!