6 октября 2008 г.

Сага о X, Y и Z...

...или о том, как же важно правильно формулировать, чего мы хотим.

Однажды Новичок захотел сделать X. Но поскольку Новичок был новичком, X с ходу у него сделать не получилось...

Ну, бывает, ничего в этом плохого нет: все мы были когда-то новичками. Чтобы решить проблему, Новичок решил воспользоваться форумом по программированию. Вы думаете он создал там тему вида: "Я хочу получить X. Пытаюсь сделать 111, получаю 222. Как сделать X?"? Нет! Новичок решил (ошибочно, т.к. Новичок пока не обладает достаточным знанием), что если он сумеет сделать Y, то с помощью Y он получит и X. Поэтому он написал: "Делаю 111, получаю 222. Как получить Y?" (ещё бывает, что Новичок задаёт только "Как сделать Y?").

Примечание: если вы зашли сюда по ссылке, оставленной в ответе на ваш вопрос на форуме, то это значит, что вы создали тему "Как сделать Y?" или "Как сделать Y? Использовать Z не предлагать!" (про Z см. ниже).

Чаще всего, Y бывает невозможным, некорректным, сложным или вообще страшно извращённым и нелогичным действием. У всех Понимающих людей вопрос "как сделать Y?" вызывает недоумение: зачем это нужно? Это же бессмысленно. Всеми силами (иногда с привлечением утюга!) пытаются выпытать у Новичка Понимающие, что же ему на самом деле нужно. Но не сдаётся Новичок: он же хочет узнать, как сделать Y. Каких только Слонов не рождали глубокие умы, пытаясь постичь неисповедимые пути Новичка! Иногда даже бывает так, что Понимающие знают ответ на вопрос "как сделать Y?", но специально его не говорят, потому что эти действия лишены смысла. Они ещё надеются наставить Новичка на путь истинный.

Но вот, используя шаманский бубен, миелофон, шестое чувство, телепатор и прочие БС (Божественные Силы) кто-то из Понимающих вопрошает:
- А, может быть, вы хотите сделать X?
- Да, я хочу получить X. Как мне сделать Y?
- Аааа! Ну тогда вам не нужно Y! Вам нужно Z! Если вы сделаете Z так и сяк, то потом с помощью Z вот так и вот этак вы получите X.
- Ой, правда. Спасибо!

Что ж, вот пример хорошей и доброй концовки, когда все остаются довольными.

Но бывает и так, что кто-то из начинающих Понимающих (вчерашний Новичок), думая, что этим он помогает Новичку (или же сам Понимающий, но уже от безысходности, в надежде, что Новичок разумно распорядится даруемой в его руки Божественной Силой), даёт ответ на вопрос "как же сделать Y". Ура! - кричит Новичок и убегает доделывать Страшного Монстра, при встрече с которым потом даже самым смелым Понимающим целый месяц снятся кошмары. Тёмные Силы празднуют победу в этот день. Душа Новичка обречена гореть в геенне огненной за грехи свои.

А ещё бывает так, что Новичок думает, что ему отвечает другой новичок. И кажется ему, что ответ с Z неверен. И тогда он говорит: "мне не нужен Z! Мне нужно сделать Y!". И если переубедить Новичка в том, что ему нужен Z, не удаётся, Новичок уходит на другой форум, где задаёт вопрос: "Мне нужен X! Как мне сделать Y? Использовать Z не предлагать!!!!!!"

Вот так-то.

P.S. Наглядный и простой пример: "Как программно очистить все изменения на форме? Т.е. мне нужно пересоздать форму и соответственно она вернётся к начальному состоянию". В итоге: "В общем-то мне нужно вернуть нулёвое значение для ComboBox2. Может это можно как-то проще сделать?". Называется: "приехали!".

P.P.S. Проблема XYZ также известна в англоязычном интернете как The XY Problem.

20 комментариев :

  1. Полезная ссылка в продолжении темы:
    http://www.citforum.ru/howto/smart-questions-ru.shtml#intro - как правильно задавать вопросы технарям.

    ОтветитьУдалить
  2. великолепно!

    ОтветитьУдалить
  3. Очень сага понравилась :)

    ОтветитьУдалить
  4. Имею честь проверить на практике изложенные тезисы, поэтому специально решил найти эту ветку и оставить комментарий.
    В общем, есть у меня три стажера (хорошо, что не больше...) несколько месяцев назад дал им почитать эту статью. Пришел к выводу, что все это без толку. Т.е. вещи написаны правильно, но это не есть проблема, а только проявление проблемы. В принципе, подавляющая часть вопросов, которые мне были заданы после прочтения статьи, относятся к описываемой проблеме, и я каждый раз после ответа на вопрос говорил, что мол видите все как в статье про x, z и z, т.е. спрашивать надо было не это, а то-то...
    Короче, мне кажется, что профи с этим согласятся, но им от этого ни мягко, ни холодно. А новички реально не понимают в чем проблема. И они вместо того, чтобы усиленно изучать используемые технологии пытаются этим технологиям навязать свои правила игры...
    Интересно узнать, удалось ли кому-нибудь при помощи этой статьи вправить мозги?

    ОтветитьУдалить
  5. Мне редко удаётся :)

    Обычно человек продолжает талдычить своё и приходится брать с полки утюг.

    ОтветитьУдалить
  6. А некоторые при этом ещё и возникать пытаются... "тебе чего не понятно в моём вопросе?!"

    ОтветитьУдалить
  7. Мда... сам на том же попадался :( очень жизненно, отметил [v]супер

    ОтветитьУдалить
  8. Ну не хочется говорить X...
    И даже знаю Z, только не умею так делать...(
    А так хочется свой луна-парк с привычным Y.....)

    http://www.delphimaster.ru/cgi-bin/forum.pl?id=1294441804&n=18

    ОтветитьУдалить
  9. текст редкостного зануды

    ОтветитьУдалить
  10. Вот это вот, чуть выше, про зануду, не я сказал. Честно-честно. Это какой-то Новичёк себя узнал, и стало стыдно. Сам модерирую пару неслабых разделов на далеко не самом последнем портале рунета. Ух-х...
    Надо в избранном ссылку запомнить, буду часто ссылаться.

    ОтветитьУдалить
  11. http://bash.org.ru/quote/410956

    111: у меня комп глючит, что делать???

    ответы:
    222: у меня машина не заводится, в чем причина?
    333: хочу похудеть, но не получается, что делать?
    444: я поссорился с женой, не понимаю, почему?
    555: сварил пельмени, получилось невкусно, почему так?
    666: я заболел, как мне вылечиться?

    111: вы что дибилы штоль? это форум про кампы а не для тупых домахозяек как вы!!!! мне нужен конкретный ответ на конкретный вопрос!!

    ОтветитьУдалить
  12. Чувак, не забивал бы ты интернет такой хренью.
    Какова цель вот этой "Саги"?
    Лечить пятикласников ёжику понятными вещами?

    И вообще это не сага, если следовать описанию этого термина. Сага предполагает что есть сказитель, и публика которая будет слушать.
    А вот эту твою туфту я думаю даже трёх человек не получится заставить слушать.
    Никаких легендарных героев ты тут не упомянаешь, принцип саги не выдержан.

    Если это предполагалось как гипербола, то нужно было слово сага в ковычки заключить.

    ОтветитьУдалить
  13. ...оказывается в мире полно зануд без FUN-центра в головном мозге...

    ОтветитьУдалить
  14. Дай что просят. Если человек пытается сделать сам - это всегда лучше Ctrl+C Ctrl+V. И Y может оказаться лучше Z. Собственный опыт - знания, готовое решение - лишь знание о знаниях(в лучшем случае). Придет время, и человек сам поймет что делал через Ж

    ОтветитьУдалить
  15. Придет время, и человек сам поймет что делал через Ж
    Вовсе не обязательно. Даже скорее при получении ответа через Y таковое знание не приходит никогда. Единственное решение проблемы новичка, о каковой этот новичок не подозревает, это показать ему аналог. Но показать так, что-бы было доходчиво и понятно, что решение в корне неправильно и вообще через задницу. Но как известно многим профессионалам, большинство решений и так через задницу, возможности каковой практически не ограничены. И это очередная засада на пути вразумления : "Почему вам можно, а мне нельзя все делать задом наперед и так, как хочется мне?!!!"

    ОтветитьУдалить
  16. Часто бывает совсем по-другому.
    Не Очень Новичок задает вопрос "мне нужно сделать X, я решил для этого сделать Y. Как мне сделать Y?", умалчивая множество деталей почему был выбран Y, т.к. если их приводить все - начальный пост окажется размером со средневековую библию со всеми комментариями.
    После этого толпы Не Особо Понимающих в предметной области сообщают своё экспертное мнение "Вам не нужен Y для получения X, это слишком сложно. Почему бы вам не сделать Z1...Zn?". После чего Не Очень Новичёк на каждое такое предложение вынужден объяснять почему не подходит Z1..Zn, вступать в споры и жалеть какого же его чёрт дёрнул вообще упомнуть про X в первом посте...

    ОтветитьУдалить
  17. Полезная инфа, поучительная

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

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и (опционально) ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку.

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

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

Примечание. Отправлять комментарии могут только участники этого блога.