среда, 26 октября 2011 г.

[life.flame] Хорошая иллюстрация одного из подходов к оценке своих высказываний

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

  1. Я все сказал правильно (точно, исчерпывающе), но меня не так поняли.
  2. Что-то я сказал не так (чего-то не сказал), раз уж меня не правильно поняли.

Первый вариант я нахожу самым неконструктивным. К сожалению, весьма умные люди зачастую пользуются только им. Поскольку они считают, что тщательно выверяют свои слова из-за чего их высказывания должны восприниматься однозначно. Забавно (и неприятно одновременно), что после длительного последующего анализа так и оказывается. Т.е. если хорошо вдуматься в их слова, то действительно выясняется, что их нельзя интерпретировать иначе. Но, это если вдумываться. Я же, например, ленюсь думать лишний раз ;)

Второй вариант, по-моему, как раз конструктивный. Поскольку заставляет говорящего “настраиваться на волну” собеседника. И говорить так, чтобы у слушателя было как меньше возможностей понять слова неправильно даже без лишних усилий. И если говорящий учится на своих ошибках, начинает ставить себя на место слушателей, то ему удается быстрее передавать информацию. Ведь цель не в том, чтобы высказаться (первый вариант), а в том, чтобы быть услышанным (второй вариант).

Пример применения первого варианта – это упомянутая мной вчера вакансия. По следам горячего обсуждения которой появилось дополнение. С характерным комментарием (выделение жирным мое):

Надеюсь, я исправил ошибку с зарплатой.

Требования к человеку у нас простые: ему должно быть интересно у нас работать. Всё то, что я рассказал в предыдущем посте, это не требования, а рассказ о возможностях. Я старался показать, чего человек может получить в профессиональном плане, придя к нам работать.

К сожалению, большинство возбудившихся читали ровно то, что хотели читать.

Первопричина всех споров и обсуждений в упомянутых заметках в том, что автор публикации о вакансии не подумал о том, как вакансии вообще воспринимаются читателями. Это ведь достаточно специфическая вещь с уже сложившимися стереотипными подходами к ее восприятию (вплоть до перечня вещей, которые потенциальные соискатели хотят там видеть сразу). И игнорирование данных стереотипов черевато. Последствия чего как раз видно в разразившихся говносрачах.

вторник, 25 октября 2011 г.

[prog.bugs] Наткнулся на странное поведение в Ruby 1.9.2

Был код:

  def parse_string
    start_line_no = line_no
    result = ''
    while nil != ( n = @lexer.next )
      case n
        when '"'
          return [ result, :tok_string ]
        when '\\'
          char, tok = parse_escape_seq
          result << char
        else
          result << n
      end
    end

    raise UnclosedStringEx.new(
        stream_name, line_no,
        "unclosed string started at: #{stream_name}:#{start_line_no}" )
  end

Просто в цикле из лексера доставался очередной символ и анализировался. Если двойная кавычка, то разбор завершается. Если escape-последовательность, то она анализируется отдельно, если что-то другое, то просто добавляется в результирующий буфер.

Работал код под Ruby 1.8.* и под Ruby 1.9.1. Под Ruby 1.9.2-p136 работать перестал. По двойной кавычке не выходил из функции. Вместо этого кавычка добавлялась к result. Т.е. в case ветка when ‘”’ просто престала работать.

Заработало только когда я переписал код так:

  def parse_string
    start_line_no = line_no
    result = ''
    while nil != ( n = @lexer.next )
      if '"' == n
        return [ result, :tok_string ]
      elsif '\\' == n
        char, tok = parse_escape_seq
        result << char
      else
        result << n
      end
    end

    raise UnclosedStringEx.new(
        stream_name, line_no,
        "unclosed string started at: #{stream_name}:#{start_line_no}" )
  end

Что это было – понять не могу. Как и не могу понять, каким образом со старым вариантом кода под Ruby-1.9.2-p136 успешно проходили все unit-тесты (более сотни test cases).

Но еще больше я не понимаю другого – внося изменения я вместо elsif написал elseif (лишняя буковка). Но при запуске unit-тестов не получил от Ruby-1.9.1-p430/Ruby-1.9.2-p136 ни одной синтаксической ошибки. Вместо этого просто unit-тест обломился из-за несовпадения результатов в одном из test cases. Как так? Может просто rake перехватывает сообщения об ошибках в исходниках? Загадка, однако.

[work.flame] Накопилось реплик на тему работы…

…и нашлось несколько минут чтобы их зафиксировать. Слегка матерно.

Во-первых, в конце прошлой недели довелось просмотреть статейку “5 ways to keep your rockstar employees happy”. Самое интересное было не в ней, а в том, что по ходу чтения я ловил себя на мысли, что меня эти способы “поощрения” могли бы зацепить лет 10 назад. Теперь все стало намного проще – размер зарплаты и отсутствие мозгоёбства – вот и все, что нужно. Хотя, с другой стороны, я и сам уже далеко не rockstar employee :(

Во-вторых, наткнулся на ссылку “Программист, который отвлекается”. Заметка начинается со слов “Автор статьи — программист с шестнадцатилетним стажем работы…” В очередной раз с горечью подумал, что надцатилетний стаж в программировании – это фигня, это слова ни о чем. Такая уж у нас профессия, что молодой специалист с 2-мя годами опыта может работать в разы продуктивнее и качественнее, чем человек с 20-тью годами. И если кто-то через шестнадцать лет у нас (в смысле на просторах СНГ) все еще программирует, то либо он настолько любит свою работу, что не хочет ни на что ее менять, либо же от него вообще нигде нет толку, в программировании в том числе.

В-третьих, вчера вечером в своем блоге Сергей Зефиров (aka thesz) опубликовал объявление о вакансии разработчика на C# и Haskell в Москве. С заявленной вилкой зарплат в 60-70K RUR. В Москве. Для разработчика, которому хватило мозгов освоить Haskell. Всего 60-70K. Бля. Но это только первое бля. Второе Бля! заслуживает сам текст и стиль объявления. Когда-то видел очень справедливое высказывание Артемия Лебедева – программистов, математиков и физиков нельзя допускать к дизайну логотипов. Хочется это правило расширить и дополнить: к составлению объявлений о приеме на работу их (т.е. нас) допускать так же нельзя.

Вот, собственно, и все реплики. Чой-то я злой сегодня.

воскресенье, 23 октября 2011 г.