Миф об обязательном поле

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

    Речь пойдет о практически любых системах, использующих для ввода информации формы. Обязательное поле — это поле формы, без заполнения которого система не примет у вас информацию. Среди подавляющего большинства разработчиков ПО бытует мнение, что обязательными полями должны быть:
    1. Все необходимые с точки зрения предмета поля (например, ФИО и дата рождения человека, если речь о паспортном столе);
    2. Все необходимые для функционирования системы поля (те, без которых не будут работать алгоритмы — например, дата, с которой начинается предоставление услуг, чтобы делать по ним начисления);
    3. Важные поля — такие, которые не необходимо, но желательно заполнить (например, обоснование вносимого изменения) — с той мотивацией, что пусть лучше пользователь попотеет, когда не нужно, чем забудет ввести значение, когда будет нужно.
    Как видите, тут целый комплекс мифов, развеивать которые нужно скрупулезно и планомерно. Поэтому начнем с двух других заблуждений.

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

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

    Что на это имеет сказать современная наука проектирования взаимодействия с пользователем? Во-первых, стало ясно (уж не знаю, кому и когда, но достаточно давно точно, см. [1] и [2]), что все-таки программы разрабатываются для пользователей. В этом смысле программист уже не диктует условия, а скромно создает сугубо утилитарный продукт, инструмент, которым будут пользоваться люди для решения своих задач и достижения своих целей. Как утюг — если тебе нужно что-то погладить, ты его включаешь. Если он будет вместо того, чтобы гладить, модально предлагать скачать обновления из интернета, понятно, куда такой утюг полетит. Алан Купер [1] рекомендует представлять пользователей вашего продукта как очень умных, но очень занятых людей. Они, мол, не тупые и поймут, как вашим продуктом пользоваться, главное, вы только не вставайте у них на пути.

    Я вообще считаю, что каждому программисту (дизайнеру, менеджеру, аналитику) следует проделать медитацию, упомянутую Сергеем Бодровым-мл.:
    Ты становишься на углу оживленной улицы и представляешь, что тебя здесь нет. Вернее, тебя нет вообще. Пешеходы идут, сигналят машины, открываются двери магазинов, сменяются пассажиры на остановке. То есть в принципе мир продолжает жить и без тебя. Понимать это больно. Но важно...
    Я, конечно, вовсе не хочу сказать, что программист — профессия ненужная, я сам программист и совсем так не считаю. Просто это неблагодарная профессия. Никто не придет и не похвалит за хорошо реализованный алгоритм. Если программа хороша, ей будут пользоваться без дополнительных вопросов. Так и должно быть, просто, чтобы быть программистом, надо к этому привыкнуть. А эти вот люди, которые идут по улице и сменяются на остановке — это ваши пользователи. Они используют вещи так, как они им нужны. В том числе и ваш продукт. Без вас. Они ничего о вас не знают, не хотят знать и никогда не узнают. Сергею Витальевичу, когда он в полярной тундре пытается вбить в систему снятые со счетчика показания, совершенно не интересно, почему система говорит ему, что сперва требуется указать какой-то там тип тарификации, даже если в момент проектирования вам казалось, что без типа тарификации ну уж никак не обойтись. А что касается примера про утюг, скачивающий обновления, то он взят совсем не из пальца — обратите внимание, как ведет себя при включении браузер Файерфокс.

    Тут вообще будет что-нибудь про обязательные поля, спросит хабраюзер? Как раз сейчас начнется.

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

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

    Сколько обязательных полей должно быть на форме? В идеале, ноль. Всегда ли такое возможно? Для меня одним из примеров высшего пилотажа является операция создания папки в Виндоус. Казалось бы, уж меньше одного поля тут не сделаешь, однако нет, они умудрились реализовать создание так, что система не спрашивает ничего — даже несмотря на то, что технические ограничения не позволяют системе создать папку без имени. Это идеал, к которому нужно стремиться.

    Естественно, система должна быть минимально умной, спрашивая у пользователя только то, что имеет отношение к задачам пользователя, а не к потребностям самой системы. Система как инструмент, помните? Как раз про пример с Файерфоксом — Гугл Хром, например, решил проблему Файерфокса, обновляясь тихонько в тот момент, когда пользователь его перезагружает. Пользователю об этом знать совсем не нужно — он и не знает. Достойный пример для подражания. Я, признаться, даже сперва не понял, чегой-то он меня ни разу не спрашивал, когда ему обновляться?

    Еще был миф о важных полях (это те, которые необязательны, но желательны к заполнению). Здесь все еще проще — принудительно заставить заполнить поле нельзя. Следовательно, хоть помечай поле как обязательное, хоть не помечай — все равно напишут рыбу, чушь, отписку, если не захотят заполнять. Интерфейсного решения у этой проблемы нет. Важность полей нужно доносить до сотрудников на местах. А разработчику пометить поле как необязательное. И позволить редактировать.

    Литература:
    1. Алан Купер об интерфейсе. Основы проектирования взаимодействия. Символ-Плюс, 2009 г.
    2. Джеф Раскин. Интерфейс: новые направления в проектировании компьютерных систем. Символ-Плюс, 2005 г.


    UPD: В комментариях trijin и zhindetz понятнее сформулировали основную мораль топика: речь о системе черновиков, о снятии требования ввести все данные сразу и непротиворечиво. То есть да, делать необязательными даже те поля, без которых система не будет работать. Естественно, она и не будет работать, но пусть хотя бы данные похранит.

    UPD #2: Уточню еще одну вещь, которую я сам не осозновал ясно, когда писал топик. Я не обсуждаю здесь вопросов уместности тех или иных полей на форме (это важная, но все-таки немного другая тема, чем та, которую мне хочется донести). Я скорее предлагаю переосмыслить саму концепцию ввода информации с помощью форм, тот традиционный подход, когда нужно заполнить всю форму сразу и корректно. Вместо этого я предлагаю промежуточное состояние (неполное, некорректное, противоречивое) тоже позволять сохранять в БД, явным образом помечая такое состояние как неполное/некорректное/противоречивое. Таким образом все ситуации «я сейчас знаю не все, но завтра, может быть, узнаю», которые традиционно решаются записыванием на бумажку, можно обрабатывать с помощью информационной системы. Естественно, такие данные не нужно пускать в бизнес-процесс в силу их некорректности — тут все остается как раньше. Они просто полежат в БД до лучших времен — не пригодятся, ну и бог с ними.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 322

    • UFO just landed and posted this here
      • UFO just landed and posted this here
        • UFO just landed and posted this here
          • UFO just landed and posted this here
              +33
              Ага, и предположим это программа по переписи населения. В стране «БезНазвания1» проживает 150млн Ивановых Иванов Ивановичей 01.01.1970 года рождения.
                +4
                Бывает я регистрирую email для конкретного проекта (где пользователем ящика будет организация/филиал или рабочая группа или некий робот), тем не менее от меня неизменно требуют заполнить имя, фамилию и дату рождения.
                  +1
                  Это понятно. Но есть зайти дальше, и, допустим, сделать необязательным поле email-адрес для будущего почтового ящика, при регистрации. Пользователи, наверное, будут счастливы.
                  Идея достаточно хороша, но перегибать палку не стоит вовсе.
                    0
                    Почему бы и нет.
                    Бывает нужен просто ящик для технических целей, и не важно, какой у него будет адрес.
              • UFO just landed and posted this here
                • UFO just landed and posted this here
                  +1
                  Моё имя нужно только для осуществления платежа с помощью кредитной карточки. Всё. Даже для адреса оно не нужно — доставят с любым именем. А в остальных случаях и подавно.
                    0
                    При дистанционной оплате через интернет проверяется только номер карты, срок действия и cvv2. Так что даже здесь оплата пройдет с любым именем.
                  0
                  Если бы была программа для создания улиц, то там было бы именно так. «Новая улица» есть, кажется, в каждом городе :)
                  +1
                  Сыпать ошибками она будет только если вы такие неумелые, что не смогли с этим справится и спроектировать нормальную систему, а не невесть чего. А доброта тут не при чём.
                    0
                    Это значит, что на этапе проектирования сознательно не учли, что данные можно вводить неполностью. Подчеркиваю — сознательно. Потому что если несознательно, то проектировщику нужно менять работу вследствие профнепригодности. =)
                    • UFO just landed and posted this here
                        0
                        видимо, что база не начнет сыпать ошибками, если с самого начала это учитывать
                        • UFO just landed and posted this here
                            0
                            А вы думаете, что поля делают обязательными, чтобы программисты не начудили? Как трогательно. А не страшно таким программистам-то вообще в руки клавиатуру давать?
                            • UFO just landed and posted this here
                    +4
                    Соглашусь с автором, порой реально напрягает неслабое количество «обязательных» полей на некоторых сайтах и в программах.

                    P.S.: FF кстати, тоже давно обновляется «втихую».
                      +4
                      да я же не FF поругать, просто пример показательный — одна функция и два подхода к реализации.
                        +1
                        это я просто как пример того, что не всё потеряно, развитие к лучшему не позабыто. )
                        +3
                        Меня больше всего напрягает обязательная регистрация на многих ресурсов, для того чтобы посмотреть «скрытый текст», скачать картинку и т.д. Абсолютно неясно, для чего авторам ресурса копить «мертвые души»: мне-то не лень зарегаться если там что-то важное для меня, но я ведь туда никогда не вернусь
                          0
                          Причина на мой взгляд очесидна: письками рейтингом померится. мол у меня на форуме 500 рарегистрировавшихся, а у меня 501!..
                            0
                            Дык если в мозгах админа такая «школьность», что мешает ему ночи напролет регать новых юзеров?
                              0
                              природная лень?)
                              +3
                              Меня удалили с одного нужного мне форума, потому что я туда полгода не заходил.
                                +1
                                видать очень нужный форум был…
                              +1
                              Для рекламодателя.
                              • UFO just landed and posted this here
                                  +2
                                  Если это на сайте автора софта — то на мой взгляд это нормально. Любому автору интересно я думаю сколько скачало и хотя бы в двух словах кто эти люди.
                                  • UFO just landed and posted this here
                                      +2
                                      Так бы и делали — сначала давали скачать, а потом уже (пока скачивается) желающих форму заполнить опрашивали. На Vimeo.com похожим образом сделано — пока ты закачиваешь им видеофайл, тебе предлагают заполнить информацию всякую о нем. Я с удовольствием заполняю, все равно ждать.
                                        0
                                        На сайте Эпла, например, сделано хорошо. Там предлагают ввести почту и подписаться на рассылку, но можно сразу нажать «Скачать». Ещё на нескольких сайтах такое видел. Единственная проблема — нужно пробовать, сразу не понятно, можно ли не вводить данные.
                                          0
                                          Для того, чтобы узнать, сколько людей скачало файл, достаточно при отдаче файка цвеличивать счетчик ) думаю, не очень много найдется людей, которые буду закачивать повторно.
                                            0
                                            Тыканье по ссылку != скачивание, равно как неизвестно вообще кто тыкал: бот или человек. Вообще, говоря что это нормально, я имел ввиду что заполнение данных о себе — это безобидная «оплата» немалого труда разработчика. Подумайте, человек сделавший софт который вы себе бесплатно скачаете потратил месяцы, а то и годы времени, а вам жалко пару минут написать о себе?
                                        0
                                        ох, за больное прямо задели. У меня часто бывает такое — из поиска гугла попадаю на какой-то сайт, требуется регистрация на скачивание, пытаюсь зарегистрироваться — занят логин! Лезу в архив почты — точно, 2 года назад уже регался на этом ресурсе.
                                          +2
                                          Я на таких ресурсах сразу пробую аккаунты вида
                                          логин:1234567890
                                          пароль:1234567890
                                          в 7 случаях из 10 подходит! Если же такого нету акка, регаю сам. Ну бесит же просто! Если ресурс хороший, я и так нормально зарегистрируюсь, а ради одного действия(скачать/посмотреть/etc) нормально региться… Да ну нафиг.
                                            0
                                            Есть ещё www.bugmenot.com — тоже помогает.
                                              0
                                              Чето ниче не открывается…
                                              +1
                                              Слушайте, отличная идея! Надо придумать какую-то публичную пару «имя/пароль» для таких вот идиотов-админов с их манией обязательной регистрации для каждого чиха их «крутых» форумах. Предлагаю самый простой вариант: habr/habr Кому надо что-то скачать, логинится под ним. Если его нет — регистрирует (для себя, а в последствии для других)
                                                0
                                                Идея давно на поверхности лежит, но такие учетки будут быстро засраны спамом и забанены, как только заинтересованные люди просекут фишку.
                                                0
                                                Для полного счастью можно попотеть и написать авторегалку с этими данными =) причем все остальные поля заполняет произвольно, но правдоподобно (большинство таких полей можно ведь и угадать: фамилия там, mail...)
                                                И потом все, кто будут юзать эту программу, будут ходить под одним и тем же юзверем ) может быть, тогда создатели подобных сайтов задумаются?
                                                0
                                                Попробуйте bugmenot.com. Существует и как отдельный сайт, и как плагины к FF и Chrome. Позволяет решить проблему с «хочу посмотреть, но регистрироваться не хочу».
                                                  0
                                                  Упс, не увидел…
                                                +1
                                                А у меня постоянно чето спрашивает, просит перезапустится и показывает окошки что какой-то плагин проапдейтился. Это где-то настраивается? Вообще не понятно как такое возможно, он то ставится в Program Files, а туда запись запрещена.
                                                  0
                                                  У вас какая версия ФФ? А вторую часть вопроса я не понял )
                                                    +1
                                                    3.6.3 — последняя…

                                                    А во второй части вопроса, я преживаю по поводу как ФФ будет реализовывать авто-апдейт без вопросов. Они просто инсталятся в Program Files. Туда запись запрещена. Соотвевенно, каждый раз когда они захотят обновиться, как минимум UAC сработает. Гугль это обошл тем что Хром ставится в юзерскую директорию. А туда запись разрешена.
                                                      0
                                                      я с семеркой только недавно толкнулся — на работе обновили хрюшу. Но UAC я быстро и решительно выключил в первый день, ФФ с тех пор еще не обновлялся, не знаю как там будет чего, на хрюше фокс просто при очередном запуске говорил «идет установка обновления, подождите...» где-то секунд 15-20 и запускался обновленным. А дома на линуксе ФФ из репо обновляется, никаких вопросов, если настроить автоапдейт (но я подтверждаю ручками по старой привычке)
                                                        0
                                                        Некоторые программы пишут в пользовательскую папку, или Appliction Data, например )
                                                      0
                                                      Плагины FF ставятся в домашнюю папку пользователя. А под ограниченной учёткой FF уже не может самостоятельно обновиться.
                                                      0
                                                      С какой версии? У меня 3.x (не помню точно), и она спрашивает при запуске обновление дополнений. Хотя и не самого FF, но все равно надоедает.
                                                        0
                                                        речь шла не про дополнения, а про сам браузер. Меня не раздражает, т.к. сейчас он сам проверяет/устанавливает апдейты и к расширениям, ничего не спрашивая, если без ошибок обновилось.
                                                      +10
                                                      По-моему вы смешали в кашу две совершенно разные вещи:
                                                        +19
                                                        1. Когда в интерфейсе присутствуют обязательные поля, которые по логике никак не должны влиять на функционирование системы (например, требование ввести ФИО при регистрации на форуме). Тут я с вами согласен.
                                                        2. Поля, без которых вводимая информация не имеет смысла (например, поле «получатель» при отправке email-сообщения).
                                                          +2
                                                          Я бы сказал, что автор не осветил случаев, когда программа не является БД-клиентом, и на форму кроме корректного сохранения записи наложены другие обязанности.
                                                          Нет тут каши =) просто о другом.
                                                          То про что говорите вы, по сути является больше диалогом, когда от пользователя нужно не полное описание сущности, должной сохраниться в системе, а всего лишь один-два параметра, без которых дальнейшая работа алгоритма бессмысленна.
                                                            +2
                                                            Понял, о чем вы. Второй случай — это когда из-за нехватки информации нельзя выполнить какое-то действие. Тут ничего не поделаешь, действительно, нельзя.

                                                            Я же рассматриваю функцию хранения информации, что ли (наверное, есть какое-то название для такого класса систем), а именно тот нехороший случай, когда нехватка части информации мешает ввести в систему хотя бы ту ее часть, которая имеется в наличии.
                                                              +3
                                                              Я возможно сейчас процитирую Кэпа, но в целом, нормально спроэктированная программа кроме как во втором случае не должна отмечать поле как обязательное. Обязательные поля они не предполагают мучения пользователя на предмет извлечения информации, которую ему трудно добыть, их смысл как раз в том чтобы закрыть пробелы информации в критических по функционалу местах… не понимаю о чем вообще речь в посте? о том что не надо вытягивать из пользователя информацию которая никак и нигде не применяется? так такую и хранить вообще не надо и поля надо такие из структур БД выкидвать…
                                                              «Если функционал не критичен к полю, то поле не обязательно. Иначе поле обязательно» — вроде формула простая и понятная, ну мне по крайней мере.
                                                              Все это решается на стадии проектирования, зачем столько размусоливать не понял…
                                                                0
                                                                Тут ниже trijin и zhindetz понятнее сформулировали мысль — речь о системе черновиков, о снятии требования ввести все данные сразу и непротиворечиво.
                                                                  0
                                                                  Может, и простая, но вот зарегистрироваться на mail.ru, не введя персональных данных, помнится, нельзя ) причем регистрация у них аж на трех страницах сделана )
                                                                +7
                                                                Письмо без отправителя замечательно может полежать на полочке в виде черновика.
                                                                  0
                                                                  Обратите внимание:
                                                                  например, поле «получатель» при отправке email-сообщения

                                                                  От того, что оно полежит на полочке изначальная цель (отправка сообщения) выполнена не будет. Да, это дополнительное удобство для пользователя, что он может сохранить промежуточный результат. Но когда он захочет отправить сообщение от обязательности поля «получатель» никуда не деться. Следуя вашей логике можно, например, при регистрации сделать поля ФИО обязательным, а промежуточные даннные записывать в сессию пользователю. Например, пользователь вбил только фамилию (разумеется этого не достаточно чтобы закончить регистрацию) и ушел со страницы, на следующей день зашел опять в регистрацию, а там значение поля «фамилия» сохранилось с прошлого раза, он вбил недостающие «имя» и «отчество» и закончил регистрацию. Только, как ни крути, эти поля все равно обязательны к заполнению для завершения действия, потому как пока он не введет все необходимые данные он не выполнит необходимое ему действие, в данном случае — регистрацию.
                                                                  0
                                                                  >> Поля, без которых вводимая информация не имеет смысла (например, поле «получатель» при отправке email-сообщения).

                                                                  Хороший пример.
                                                                  Поле «получатель» при отправке email-а как раз, таки, опциональное. И я не хочу, чтобы почтовая программа проверяла его на валидность вынудив меня что-нибудь в него ввести. И приходится забивать там рыбу — собственный адрес.
                                                                    +2
                                                                    «Поля, без которых вводимая информация не имеет смысла (например, поле «получатель» при отправке email-сообщения)»

                                                                    Почему же не имеет? Я, к примеру, вечером написал письмо поставщику сувениров с новым заказом для своего магазина, но забыл контактные данные (email) поставщика в магазине. Письмо написал, сохранил, с намерением отправить утром с мобильного, как только узнаю email.

                                                                    Вот и пример реального Use-Case. Если бы не было возможность сохранить черновик письма, мне пришлось бы либо, взяв email-адрес, найти где бы написать письмо, либо, написав, сохранить его в файл, потом при отправке вытащить оттуда итд. Необязательность поля «Кому» в почте — предполагает удобное использование почтового интерфейса в реальном мире.

                                                                    Думаю, автор топика имел в виду именно это.
                                                                      +1
                                                                      2. Я бы другой пример привел. Например, поле «комментарий» при добавлении комментария.
                                                                        +1
                                                                        Даже этот вариант уже упростили. Если хочешь оставить комментарий, но писать сам комментарий не хочешь есть кнопки типа Лайк в Фейсбуке или «оцените этот материал» в блогах
                                                                    0
                                                                    Соглашусь с автором. Такие вот обязательные поля недавно послужили одной из причин отказа от покупки одной софтины, которая нужна была для работы, пришлось писать самому.
                                                                    Например, было поле ввода «IMEI», которое обязательно должно было состоять из 12 цифр, ни больше и не меньше. В теории так, но на практике не всегда можно было причитать этот IMEI с телефона целиком, или можно было прочитать только часть цифр. И приходилось считать нажатия клавиши «0» на клавиатуре, лишь бы программа это проглотила.
                                                                      0
                                                                      Не в тему, но *#06# могло помочь
                                                                        0
                                                                        для этого нужно расспаковать и включить. При оптовых покупках/продажах это проблематично.
                                                                          0
                                                                          не всегда можно было причитать этот IMEI с телефона

                                                                          так что я решил, что телефон уже не в коробке, а в руках.
                                                                          • UFO just landed and posted this here
                                                                              0
                                                                              ну на пример для регистрации в белых списках на таможне (у нас в Украине требуют регистрацию телефонов, иначе обещают отключать)
                                                                          0
                                                                          Ну вообще то тут прием телефонов на ремонт… Если телефон не включается, то никакие комбинации не помогут. А под батарейкой цифры могут быть банально затерты.
                                                                          Я привел реальный пример, который постоянно бесил в работе, а не выдуманный из головы.
                                                                            +1
                                                                            А я развел оффтоп. Сорри.
                                                                              +1
                                                                              Я в сервисе искал блок питания для видеокамеры домой. Так из система не могла мне выписать мне бланк без указания данных по оборудованию для которого он приобретался. Сама камера была за 1,5 тыс. км от меня. Так в результате работникам сервиса пришлось указать монитор Samsung, а блок питания для видеокамеры стал его запасной частью.
                                                                        • UFO just landed and posted this here
                                                                            +2
                                                                            Представьте себе, например, систему паспортного стола, в ней форма добавления человека и документов, и все поля — необязательные: фамилия, имя, отчество (особенно), дата рождения, номера паспорта, кем выдано и т.п.

                                                                            Т.е. ничего выдающегося. Тут про смену парадигмы мышления больше — разработчику пересилить себя и позволить не заполнять часть информации. Т.е. знаешь ты, например, только, что паспорт выдан был в 2005 году и отчество человека — Евгеньевич, — прекрасно, система это сохранит и не будет парить тебе мозг, что фамилия — это очень важно. Придет через месяц этот Евгеньевич — заполнишь недостающие данные, нет — ну а что тут можно поделать?
                                                                            • UFO just landed and posted this here
                                                                              • UFO just landed and posted this here
                                                                                  +3
                                                                                  Внести все данные при выдаче паспорта, а не «блин, народу много, завтра заполню, а пока только номер впишу» — и запись так и останется номером. потмоу что умными являются в основном только пользователи вбивающие информацию _для себя_, наемные же рабочие составляющие картотечные данные — отключают мозг, лишь бы поменьше утруждаться.
                                                                                  • UFO just landed and posted this here
                                                                                      –1
                                                                                      А вы им говорите, что оно обязательное. Я как раз об этом писал в заблуждении №3, по-моему, делать поле обязательным — это не выход. Разве что считать, что женщины системы боятся больше, чем начальника, и их пугает сообщение о незаполненном поле. Сделаете вы поле обязательным, но ничто не помешает им вбивать туда пробел, точку или еще какую отписку.
                                                                                      • UFO just landed and posted this here
                                                                                          0
                                                                                          Я, действительно, не разбираюсь, но два вопроса все же от дилетанта:
                                                                                          1. Если поле обязательное, а данных — нет?
                                                                                          2. Степень строгости проступка — разве не начальством определяется? И что мешает так же наказывать за незаполнение поля?
                                                                                          • UFO just landed and posted this here
                                                                                              +1
                                                                                              Регистрацию в бложике я вообще не имел в виду, заметьте, вопросы важности и уместности тех или иных полей я не обсуждаю вовсе. Хотя, судя по комментариям, не вы один меня неправильно поняли — моя вина, наверное, я что-то недостаточно ясно изложил. Мои идеи скорее о переосмыслении самого концепта ввода данных с помощью форм, когда нужно ввести либо все сразу и правильно, либо ничего — вводить вместо этого в несколько этапов, частями, только то, что есть сейчас, корректировать при последующем вводе и т.п.

                                                                                              Примеры, да и топик весь взяты из жизни, из корпоративных систем, в разработке интерфейсов которых я принимал участие. Наболевшее все это. Везде возможность ввода неполных данных давала дополнительную гибкость, свободу в использовании. Я же не к анархии призываю, не к подделке фактов или еще чего-то. Просто систему можно научить хранить неполные и некорректные данные, явным образом помечая их как неполные и некорректные. И пускать в работу такие данные я не предлагаю. Пусть просто полежат до уточнения. Они и в вашем случае полежат, только в вашем — на бумажке на столе, которая может потеряться и все такое прочее, а в моем они полежат в информационной системе.
                                                                                              • UFO just landed and posted this here
                                                                                                  0
                                                                                                  Мммм. А сколько человеко-часов придется потратить дополнительно, что бы проконтролировать, проверить, и при необходимости исправить данные? (Я опять же — про «промышленные приложения»)
                                                                                                  Ведь каждый день операторы, менеджеры и пр. могут вбивать в базу сотни и тысячи новых записей.
                                                                                                    0
                                                                                                    ну да, сделаем все поля обязательными и они их сразу все и правильно заполнят. Вы сами-то в это верите?
                                                                                                      0
                                                                                                      Честно говоря — через раз.
                                                                                                      Ведь если я на сайте интернет магазина не укажу (или неправильно укажу) адрес доставки, или хотя бы телефон. Думаю нет смысла говорить что свой заказ я буду ждать очень долго.
                                                                                                      А в пром системах у людей нет выбора. Каждая ошибка это время и деньги. Примеры: бухгалтерия, всевозможные программы для управления финансами.
                                                                                                        0
                                                                                                        по-моему, речь о том, что если пользователь не указал, например, адрес, то все данные сохранятся, но ему будет сказано, что без адреса доставки не будет.
                                                                                                  0
                                                                                                  1) зачем хранить данные на бумажке, когда их можно хранить в системе???
                                                                                                  2) Как обязательные поля защищают от ввода невалидных данных?
                                                                                                0
                                                                                                внесение отсебятины кстати, не ограничивается не на какой стадии, и на каждом уровне требет проверок ) так в рамках того о чем говорится в посте я думаю про валидность данных говорить бесполезно. если рассматривать в рамках пасспортного стола то валидация должна производится на основе сразу нескольких систем:
                                                                                                распознавание графического образа
                                                                                                сверение данных о рождении(с последующими проверками в ЗАГС на смену ФИО)
                                                                                                сверение данных о проживании и старых пасспортах.
                                                                                                Суммарные проверки выносят вердикт о верности заполнения полей.
                                                                                                ИМХО валидацию приписывать к тому о чем говорится в посте неверно…
                                                                                                  +1
                                                                                                  мы так делаем 2,5К проверок по клиентски полям. ТЗ 800 страниц=)
                                                                                            0
                                                                                            Эх, паспортному столу давно пора открыть сервис а ля Google Account, Facebook Connect и Live ID, с идентификацией при подтверждении владельца паспорта. Чтобы нигде и никогда не нужно было заново вбивать все данные, а аккаунт создается при выдаче паспорта.

                                                                                            И главное — подача заявки на паспорт онлайн :)
                                                                                              +1
                                                                                              Есть мнение, что они должны сами сделать первый паспорт в 16 лет, и делать новые каждые 20. После этого звонить и просить заехать забрать. Смысл вот этих вот очередей, заявлений, оплат госпошлин в банках, мне глубоко непонятен.
                                                                                            0
                                                                                            В итоге как я вижу имеем кучу паразитных записей таких вот Евгеньевичей, которые чисто гипотетически могут быть заполнены, но на деле так и останутся в таком вот состоянии. через год придет Евгенич и скажет, а я вот забыл, я заполнял или нет заполню ка я еще разок. Нецелесообразно. С другой стороны можно выбрать из кучи таких вот Евгеничей любую не заполненую и подходяющую под степень заполнения и вместо создания новой завести старую, только вот если Евгенич заполнит какое-либо полу-уникальное поле (пускай фамилию) получаем, запись попросту потеряется и возможно при высоком уровне заполнения без возможность вторичного использования. В общем в принципе труд человека переложить на программиста можно, но целесообразность этого труда несколько озадачивает…
                                                                                            0
                                                                                            Пример — afisha.ru. Не знаю, пользуетесь ли Вы или ТС вконтактом, Афиша сделала для него приложение, которое позволяет из вконтакта голосовать за фильмы, смотреть рекомендации и т.п. Приложение де-факто создаёт мне пользователя на сайте, под которым я потом могу спокойно зайти на сайт, авторизоваться, нагадить в комментариях оставить рецензию или ещё что-нибудь. Даже логин они мне генерируют — от меня не требуется вообще ничего. При этом любую информацию о себе я, естественно потом могу изменить.
                                                                                              +1
                                                                                              Разрабатывали систему для ЗАГС. Первый вариант ыбл по закону — почти все полоя в Актовых Записях обязательные. Когда начали внедрять, то выяснилось, что практика сильно расходиться с законом, и реально нужно было вводить а/з в практическими всеми неизвестными полями (анприме умер какой-нить бомж, о котором ничего не известно, но а/з составить нужно). В результате переделывали почти всю систему чтоб она корректно работало пустыми данными. Если б изначально следовали логике описанной в посте, проблем бы не было.
                                                                                                0
                                                                                                Вау, респект за отличный пример!
                                                                                              +21
                                                                                              Новая Папка (5)\Новая Папка (2)\Новая Папка\Новая Папка (2)\Документ Microsoft Word (3).doc

                                                                                              Годовой отчёт ОАО с оборотом в NNN миллионов рублей.
                                                                                              • UFO just landed and posted this here
                                                                                                  +1
                                                                                                  Гендиректора.

                                                                                                  Перед Новая Папка (5) там было что-то вида \\company\CEO\public_reports. Как понятно, это делал я. А дальше уж «кто-то там».
                                                                                                    0
                                                                                                    Ну а было бы «1111» и «2222», если бы не было умолчаний.
                                                                                                • UFO just landed and posted this here
                                                                                                  +3
                                                                                                  Аха, мне вот вспоминается та свинья, которую нам подложили разработчики Rambler ICQ и QIP, они видите ли заботясь о пользователе не сообщали, что максимальная длина пароля — 8 символов и спокойно позволяли вводить хоть 20 символьные пароли. А тут уже к нам на форум приходит чудо и начинает права качать мол «как же так, я пытаюсь ввести пароль, а мне не дают ввести больше 8 символов». Причем после указания на то, что это протокол такой нехороший, это чудо начало ссылаться на несчастную Рамблеровскую аську, которая дает ввести больше 8 символов, а на деле молча обрезает пароль до 8 символов.
                                                                                                  Ошибки должны быть выявлены как можно раньше и пользователь должен быть с ними ознакомлен, иначе он и дальше продолжить жить, находясь в счастливом неведении, пока что-то плохое не случится.
                                                                                                    0
                                                                                                    Про ошибки согласен, просто я несколько раз сталкивался со мнением, что нехватка информации — это ошибка. Что мягко говоря странно.
                                                                                                      0
                                                                                                      Ну если человек не вводит поле, которое является уникальным идентификатором в БД, то его нужно возращать и заставлять ввести это поле, в противном случае исправить ошибку будет уже чертовски сложно. А всякие там поля, которые не являются ключами, можно безболезненно делать необязательными.
                                                                                                        0
                                                                                                        а почему бы программе самой не сгенерировать это поле?
                                                                                                          –1
                                                                                                          Потому, что если программа сгенерирует это поле неправильно с точки зрения юзера, то придется развлекаться с обеспечением целостности базы данных. Это не сложно, но неприятно и затрачивает куда больше ресурсов, чем просьба ввести это значение правильно.
                                                                                                            +7
                                                                                                            — Здравствуйте! Я бы хотел назвать сына Сергеем.
                                                                                                            — Извините, но это имя уже занято, попробуйте другое. Свободны, например, Сергей2050, _Сергей_, Сер-Гей или Сергей-19.

                                                                                                            Это я к тому, что пользователь вообще не должен (за редким исключением) придумывать уникальный идентификатор.
                                                                                                              0
                                                                                                              Логику пользователя вы только не учли) Ему будет удобнее иметь свой собственный уникальный идентификатор в нативном для него виде. Потому что если иметь 500 идентификторов из разных под систем в виде набора символов, да еще из разных словарей то пользователю поплохеет. тут приходим к системе единого идентификатора, но это о другом )
                                                                                                                0
                                                                                                                Вы как раз говорите о тех самых редких исключениях :) И тут всё становится гораздо сложнее. Месяца полтора назад был топик как раз об этом.
                                                                                                                  0
                                                                                                                  просто в любой системе, в которой пользователю нужно будет отискать себя, как-либо, в случае неуникальности суммарной внесенной информации, пользователю нужно будет помнить свой ID в системе )
                                                                                                              +1
                                                                                                              Вот! Это я и пытался донести. Попробуйте встать на позицию пользователя, пожалеть его, помочь ему. Поверьте, они вам отплатят, косвенно, через успех вашего продукта. Программировать не так уж и сложно, генерировать идентификаторы — тем более.
                                                                                                      +18
                                                                                                      Проблема высосана из пальца ИМХО. Пока читал пример с перекрестком пришла такая аналогия: автор данного топика предлагает убрать светофоры с улиц города, как же — они мешают людям и задерживают их на пути к цели, люди не дебилы и как нибудь сами разберутся когда и как им переходить дорогу. Автор не задумывается над тем, что без некоторых обязательных полей обойтись никак нельзя — иначе появятся записи-призраки и множество других побочных багов, которые даже при хорошем изначальном проектировании будут появляться.
                                                                                                      Вторая крайность — это стремление программистов сделать универсальную систему, максимально близкую в реальной жизни. Стоит ли говорить что такие разработки растягиваются на годы и потом тихо умирают.
                                                                                                        +1
                                                                                                        … иначе появятся записи-призраки и ...

                                                                                                        а так они появятся на бумаге или в других системах ;-)
                                                                                                          +6
                                                                                                          Цитата:
                                                                                                          Аккуратные голландцы убрали с улиц все светофоры
                                                                                                          … Удаление светофоров с улиц Драхтена (Drachten) началось семь лет назад, и последние три светофора будут демонтированы в течение двух лет.
                                                                                                          — В «светофорные» времена ДТП со смертельным исходом в Драхтене имели место каждые три года, а вот после начала эксперимента на дорогах не погиб ни один человек.
                                                                                                          — Главный городской перекрёсток пропускает примерно 22 тысячи автомобилей в день, не считая нескольких тысяч велосипедистов и пешеходов. В «дни светофора» движение здесь было затруднено: водители стояли в пробках и без конца сигналили.

                                                                                                          Типичная ошибка дорожных инженеров состоит в том, что когда с дорогой начинаются проблемы, они всегда пытаются что-нибудь добавить, — поясняет Мондерман. — На мой взгляд, в таких ситуациях гораздо лучше что-нибудь убрать


                                                                                                          То есть я думаю, что «светофоры» нужны, но к месту, — как крайняя необходимость. Если делать город для людей и их удобства, а не потому как проще и надежнее для проектировщиков.

                                                                                                          Любая система служит человеку, а не ради своей целостности и надежности. Систему «для человека» сделать сложно или даже очень сложно. Но ведь надо стремиться. Если пользователь понимает, что более полное описание дает более качественный результат, то при заинтересованности в последнем он сам будет стараться.

                                                                                                          Но поскольку делать такие системы сложно и долго, мы мучаемся с «тупыми» программами и стоим в бесконечных пробках.

                                                                                                          А делать можно. Конечно, всему есть предел и крайностей надо избегать.
                                                                                                            +1
                                                                                                            Ага, заодно давайте глянем на этот город. Эдакая большая деревня переросток, с одной главной улицей. Я бы не считал удаление светофоров там большим достижением.

                                                                                                            ИМХО конечно, но по моему почти каждый светофор, каждый положенный на асфальт лежачий полицейский (особенно в нашей стране) спровоцировала чья то смерть или большое количество аварий. Приведу обратный пример в Новогиреево (в Москве) пару лет назад поставили светофоры на круговом движении, до этого, практически всегда, когда я проезжал это место (было это правда не часто) там кто то стоял с аварийкой и была пробка. Сейчас, со светофорами ситуация гораздо лучше. Так что, вопрос со светофорами довольно спорный и мне кажется это отдельная тема для беседы.
                                                                                                              +1
                                                                                                              Абсолютно согласен насчет светофоров. Действительно, они у нас обычно появляются реально по крайней необходимости. Плюс национальные особенности… Не факт, что аналогичный эксперимент в российском городке был бы успешен, когда некоторых даже светофоры не останавливают. У нас люди не готовы к такому. А уж Москва вообще особый случай. Забавно — я знаю этот круг в районе Новогиреево — сам нередко им пользовался, так что понимаю о чем речь.
                                                                                                              Однако, это не отменяет мнения, что хотелось бы иметь город в первую очередь для жителей, а не для гаишников, коммунальных служб, и т.д. В общем это действительно отдельная тема.
                                                                                                              Пример просто показывает, что даже такая красивая аналогия не оказывается железным доказательством того, что «Проблема высосана из пальца».
                                                                                                              Возможно она даже глубже, чем представлял себе автор топика.
                                                                                                              Обязательные поля могут быть злом не обязательно потому, что доставляют неудобство пользователю. Часто это признак слабости и низкого качества системы с точки зрения ее назначения. Поля формы — это описание ситуации, требующей решения (классификации). Нетривиальные задачи действительно отличаются тем, что описываемый объект «не виден» полностью. В то же время, обычно есть множество альтернативных способов решения, в зависимости от того, какая часть данных доступна. Хорошая система — компромисс между идеальной, и той, которую можно создать за разумные (поставленные) сроки разумными (имеющимися) силами.
                                                                                                              Другое дело, что для бизнеса, создающего системы, первостепенная задача не в том, чтобы лучше решить проблемы клиента, а в том, чтобы заработать побольше денег. И тут вариантов немало.

                                                                                                                +1
                                                                                                                Если говорить про обязательные поля, то я, в принципе, согласен — бесит, когда 100500 сайт хочет обязательно знать, где я живу, при этом, например, проверяет на сервере существование почтового индекса (особенно когда еще и проверка с багами для других стран...). Но пост мне просто показался этаким анархичным призывом отменить все обязательные поля вообще :) Тут у меня просто случился разрыв шаблона :)
                                                                                                                А вот с апдейтами в конце статья выглядит уже более логичной, есть над чем подумать.
                                                                                                          0
                                                                                                          Ето верно. Кстати, очень хорошая аналогия проводится с бумажным бланком — на бумаге мы не обязаны вписывать все поля. И это чертовски удобно.

                                                                                                          ЗЫ вообще много хорошего для разработки UI можно почерпнуть из реального мира.
                                                                                                            +1
                                                                                                            Да счас, не обязаны, у вас в противном случае бланк не примут. Просто нужно точно отдавать себе отчет в том, какие поля обязательны, а какие нет. Но вот давать пользователям возможность ошибочные данные вводить это делать им медвежью услугу
                                                                                                              +1
                                                                                                              Как вариант в форме можно добавить кнопку типа «Сохранить как есть». Данные сохранятся, но использоваться по дальнейшему назначению не будут. Пользователь сможет вернуться, дополнить данные и тогда уже их запустить в оборот.
                                                                                                                0
                                                                                                                Ну так на многих форумах есть кнопка «сохранить как черновик». Такой вариант годится и используется. В принципе я видел подобного рода расширения для Лисы, которые автозаполняли формы и могли сохранять черновики
                                                                                                                  +1
                                                                                                                  Это использование черновика. И пока они не используются — это и данными-то сложно назвать.
                                                                                                                    +1
                                                                                                                    Как я понимаю, tonsky и призывает почаще пользоваться черновиками, но делать это незаметно для пользователя.
                                                                                                                      +1
                                                                                                                      Пользователь должен знать, что пользуется черновиком, иначе он может оказаться обманутым
                                                                                                                  +1
                                                                                                                  По-моему как раз хорошая аналогия. Бланк можно взять домой и заполнить недостающие поля, а сдать на следующий день. То же самое предлагает и автор.
                                                                                                                    0
                                                                                                                    Что-то не похоже. Как я понял, автор предлагает оставить как есть. А потом если что — разбираться.

                                                                                                                    Пример из жизни: Пришли на почту, отправили письмо, но не заполнили получателя. Через месяц приходите, и спрашиваете «почему не дошло». И так далее…
                                                                                                                    А в электронном мере можно вообще следов не найти. Стерли «куку» и никто вас без пароля и не опознает.
                                                                                                                      +1
                                                                                                                      Автор как раз наоборот предлагает помечать неполные записи как неполные и не позволять их отправлять в работу, но оставлять на хранение, пока не появятся полные данные.
                                                                                                                        0
                                                                                                                        Ну так как вы тогда разберете чье это был конвертик без написанного адреса? Из сбивчивого рассказа что он такой розовенький с нарисованным цветочком?
                                                                                                                        Или в бухгалтерии написали что продал два грузовика водки за много денег. А подробности через неделю возможно донесу.
                                                                                                                  +1
                                                                                                                  Более того, форма бланка не фиксирована, в одном банке выдадут один, в другом — другой, а налоговая не примет ни тот, ни этот. Лепота )
                                                                                                                  +4
                                                                                                                  Искусство программирования как раз в том и состоит, чтобы найти компромисс между целостностью системы, ее удобством, затратами на разработку и много чем еще. А придерживаться какой-либо догмы неправильно.
                                                                                                                    –2
                                                                                                                    Я бы сказал, что искусство программирования состоит в том, чтобы максимально быстро, качественно и дешево получить результат от разрабатываемой программы.

                                                                                                                    А не просто создать программу, пусть быстро, дешево и с качественным кодом, — но ей никто не будет пользоваться.
                                                                                                                      0
                                                                                                                      «искусство программирования состоит в том, чтобы максимально быстро, качественно и дешево получить результат от разрабатываемой программы»

                                                                                                                      К сожалению, тут замешано далекоооо не только «программирование».
                                                                                                                        +1
                                                                                                                        По русски такие искусство называется шапкозакидательством. К программированию отношения не имеет.
                                                                                                                    +2
                                                                                                                    Это все прекрасно и очень верно, однако отсутствие обязательных полей усложняет систему, что в конечном итоге очень сильно сказывается на ее стоимости.

                                                                                                                    И если предложить заказчику продукт с обязательными полями и без таковых, но примерно в 1,5 раза дороже (представляете, во сколько раз увеличивается количество точек входа и разнообразие исходных данных?) — то, скорее всего, он выберет первый вариант.

                                                                                                                    Хотя, второй будет гораздо более для людей.
                                                                                                                      0
                                                                                                                      Слушайте, ну насчет стоимости, в 1,5 раза — это как-то чересчур. Речь о небольших, причем зачастую — психологических изменениях.

                                                                                                                      И вы натолкнули меня еще на одну мысль — ведь на самом деле, предположение о том, что данных может не быть, заставляет писать более «стрессоустойчивый», надежный код, поскольку обработку ошибок/нехватки информации придется писать сразу, by design.
                                                                                                                        +2
                                                                                                                        1.5 — это действительно явно неверная оценка. Я бы оценил примерно в 8-10. Основываясь на своем опыте разработки систем.

                                                                                                                        Ваше мнение об избыточности 1.5 основано на опыте разработки и внедрения или на представлениях о том, как должен быть устроен мир?
                                                                                                                          0
                                                                                                                          Тут ведь нет такой альтернативы — либо все, либо ничего. Моя оценка основана на опыте адаптации существующих интерфейсов, в предыдущей компании и вот в текущей (системы класса АСУ ТП и АСУП соотв.). Собственно, сам топик — из наболевшего возник. В большинстве случаев мы обходимся малыми трудозатами, туда, где все сильно переплетено, пока не лезем, что не мешает получать более чем удовлетворительный результат в большинстве случаев.
                                                                                                                            0
                                                                                                                            «продукт с обязательными полями и без таковых» — это именно все или ничего.
                                                                                                                              0
                                                                                                                              не, ну их количество же до нуля относительно гладко опускается.
                                                                                                                                0
                                                                                                                                Простите, я не понял смысла этой фразы.
                                                                                                                                  0
                                                                                                                                  «продукт с обязательными полями и без таковых» — это именно все или ничего.


                                                                                                                                  Я имел в виду, что чем меньше обязательных полей, тем лучше, не обязательно их количество строго до нуля доводить, удобство использования растет плавно с уменьшением количества обязательных полей.
                                                                                                                                    0
                                                                                                                                    Любое уменьшение количества обязательных полей — повышение по крайней мере нагрузки на аналитика при работе с требованиями и повышение рисков.
                                                                                                                              0
                                                                                                                              Кстати, в свете некоторых Ваших комментариев у меня возник конкретный вопрос: как именно Вы документируете в модели данных тот факт, что данное поле обязательно для бизнес-процесса X, но необязательно для бизнес-процесса Y? И как в дальнейшем управляете изменениями? В частности, как именно проверяете, что не возникает ситуации, когда на шаге N уже не осталось акторов, которые могут ввести данные, обязательные для шага N+1?

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

                                                                                                                                  Т.е. в модели данных у Вас НЕ документируется обязательность полей? А где документируется? В описании каждого отдельного бизнес-процесса?

                                                                                                                                  И дизайнер базы данных изучает каждый из них в отдельности при проектировании структуры БД?

                                                                                                                                  Я правильно понял Вашу концепцию проектирования?
                                                                                                                                    0
                                                                                                                                    В модели данных документируются обязательные для схемы данных поля. Обязательность поля для бизнес-процесса документируется в описании бизнес-процесса, потому как только там и используется.
                                                                                                                                      0
                                                                                                                                      Т.е. у Вас обязательность для схемы не определяется обязательностью для бизнеса, а формулируется по некоторым другим причинам? И Вы не используете средства обеспечения целостности БД, обрабатывая целостность на уровне приложения? Если не секрет — каков объем данных?

                                                                                                                                      Или все же зависит? Если да, то как эта информация попадает из документации на бизнес-процессы в документацию на схему БД и кто обеспечивает управление изменениями?
                                                                                                                                        0
                                                                                                                                        Ну да, не определяется. Ведь поле, обязательное для одного бизнес-процесса, может быть (и часто является) необязательным для другого. И на всякий случай повторю, что мы не доводим ничего до абсурда. Обязательные поля в схеме БД есть, и их обязательность определяется многими факторами, в т.ч. и бизнес-процессами. Но мы стараемся такие места минимизировать. Объемы — 105—106 учетных единиц.
                                                                                                                                          0
                                                                                                                                          Т.е. Вы НЕ используете средства БД по контролю целостности и никто конкретно не отвечает за то, чтобы информация по обязательности полей попала в структуру БД?

                                                                                                                                          Я правильно понял ту часть, на которую Вы не стали отвечать?
                                                                                                                                            0
                                                                                                                                            Средства по контролю целостности БД используем. Там, где поле на форме соответствует 1:1 полю в БД, иногда это ограничение заносится в схему, иногда нет, зависит от. Проверка обязательности на уровне приложения есть в обоих случаях.
                                                                                                                                              0
                                                                                                                                              Не уверен, что понял Вас правильно.

                                                                                                                                              Вашу фразу несколько выше я понял так: большинство полей в схеме Вы описываете как необязательные и контроль выполняете в конкретном компоненте бизнес-процесса на уровне приложения. Контроль на уровне базы — только в небольшом числе полей.

                                                                                                                                              Так ли это?

                                                                                                                                              Означает ли это также, что бОльшая часть проверок, соответственно, производится на уровне приложения?
                                                                                                                                                0
                                                                                                                                                Да, все правильно. За одним исключением — речь о большинстве полей из тех, что маппятся 1:1 в пользовательский интерфейс. В схеме БД еще много всяких чисто технических полей, которых не видно в интерфейсе, и их целостность обычно на уровне БД обеспечивается.
                                                                                                                            0
                                                                                                                            предположение о том, что данных может не быть, заставляет писать более «стрессоустойчивый», надежный код, поскольку обработку ошибок/нехватки информации придется писать сразу, by design

                                                                                                                            Как ни странно, для того, чтобы система работала с неполными данными, вовсе нет нужды повышать ее «стрессоустойчивость».

                                                                                                                            Принцип здесь гораздо более простой: поток данных делится на сегменты различной полноты. Переход в следующий сегмент — только по достижению нужного уровня наполненности и непротиворечивости. При этом в полный рост сохраняется возможность использовать ограничения баз данных.

                                                                                                                            BTW, работа с противоречивыми данными гораздо важнее и сложнее, чем работа с неполными данными. Проблема обязательных полей — только верхушка айсберга «data cleansing».
                                                                                                                              0
                                                                                                                              Проблема не в обработке ошибок, а в факториальном увеличении разнообразия входных данных.

                                                                                                                              Если у меня есть обязательные поля «имя, дата рождения, серияномерпаспорта», то для операции «выдача кредита» я должен запросить их у базы, выполнить мат. рассчет и записать информацию в базу, попутно выдав сообщение пользователю.

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

                                                                                                                                    «Оформляем паспорт… Петров не заполнил адрес и телефон… напомним Петрову… эээ… как? Выйдем на улицу и на всю страну закричим: ПЕ-Е-ЕТРОВ! Заполни адрес и телефон!»
                                                                                                                                      +1
                                                                                                                                      Нееет. Петров принес документы, не все, ок, мы их приняли и сказали Петрову, чтобы приносил остальные. Пока он ходил, мы внесли то, что есть. Когда он принесет остальные, и мы ему скажем, что всё, более ничего не нужно, Петров может идти гулять спокойно.

                                                                                                                                      Это и сейчас так работает, тут я ничего менять не предлагаю. Единственное, что уже принесенные документы не проваляются на полке, а будут частично занесены в базу, пока Петров ходит.
                                                                                                                                        +1
                                                                                                                                        Петрову сказали, а он не пришел. Петров забыл, что это нужно. Вы навязываете клиенту обязанность понимать ваши бизнес-процессы, а это куда хуже заполнения обязательных полей.

                                                                                                                                        Сейчас, кстати, это работает не так. Анкету у Петрова вообще не примут, пока он не заполнит ее корректно.

                                                                                                                                        Да, реализовать ввод неполной анкеты можно. Но нам придется ввести уже ТРИ типа полей: «совсем обязательные», «обязательные для приема анкеты и отпускания клиента» и «необязательные».

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

                                                                                                                                        В очередной раз обращаю внимание: заполнение форм — только часть реальной жизни, а не ее суть. Петров пришел не для заполнения анкеты, он пришел паспорт получить.
                                                                                                                                          0
                                                                                                                                          Вы правда видите разницу между

                                                                                                                                          «Пришел — проверили, отправили дозаполнять — исправил, вернулся — проверили, приняли, сказали жди паспорт»

                                                                                                                                          и

                                                                                                                                          «Пришел — проверили, приняли часть и отправили дозаполнять недостающее — исправил, вернулся — проверили, приняли, сказали жди паспорт»?
                                                                                                                                            +1
                                                                                                                                            Для комьютерной программы разница действительно колоссальная. Для реального бизнес-процесса ее фактически нет.

                                                                                                                                            Если Петров может быстро предоставить эти данные — его незачем гнать из кабинета, достаточно переспросить. И поля вполне срабатывает как обязательное.

                                                                                                                                            Если мы выгнали Петрова — мы обязаны добавить отдельный шаг в бизнес-процесса.

                                                                                                                                            Компьютерные программы и бизнес, который они обеспечивают — не одно и то же.
                                                                                                                                          0
                                                                                                                                          В реальном бумажном мире такая система не встречается.

                                                                                                                                          Она выросла не из плохих разработчиков, а из реальных бизнес-процессов.

                                                                                                                                          А в бизнес-процессах есть обязательные поля.
                                                                                                                                      0
                                                                                                                                      Отлично. Экспедитор приехал за товаром, кладовщик встал к терминалу — и радостно сообщил, что в накладной забыли ввести список закупленных товаров.

                                                                                                                                      Никаких проблем — нужно лишь дождаться, пока в родном для экспедитора Петропавловске наступит новый рабочий день и там дозаполнят форму.А машина пока постоит на улице, экспедитор поспит в кабине.

                                                                                                                                      «Данная конкретная операция» — не «нажать кнопку получения товара», а «получить товар, загрузить в машину и отправить». И банальное «донабрать недостающее» легко выливается в реальные потери.

                                                                                                                                      Так что будьте ближе к реальной жизни.
                                                                                                                                        0
                                                                                                                                        Как же люди жили до появления этой прекрасной информационной системы?
                                                                                                                                          0
                                                                                                                                          Они тупо приезжали с бумажками. Некоторые думают, что в бумажках нет обязательных полей — это не так. В которых, в общем случае, все поля являются обязательными, если не заявлено иное. Видели, как зигзагом зачеркивают незаполненный низ таблички в накладной?
                                                                                                                                          0
                                                                                                                                          Нет, вы путаете. Я не предлагаю запускать бизнес-процессы в условиях нехватки данных. Я предлагаю лишь возможность вносить эти данные в несколько присестов (прочитайте upd #2 к посту, я там пояснил).

                                                                                                                                          В вашем случае за экспедитором никто не пошлет, пока накладная не будет заполнена полностью. А вот заполнить ее можно будет или сразу целиком, или по частям, в разное время (но обязательно до запуска бизнес-процесса).
                                                                                                                                            0
                                                                                                                                            Коллега, определитесь с терминами: заполнение — это УЖЕ часть бизнес-процесса. Он начался в момент, когда клиент пришел в офис.

                                                                                                                                            Компьютерные программы и бизнес, который они обеспечивают — не одно и то же.
                                                                                                                                  0
                                                                                                                                  Идеал не вылепишь, все люди разные, у каждого свои «тараканы» в голове. Кто-то является идеальным пользователем — вводит данные во все формы ввода, кто-то заполняет лишь поля с пометкой, кто-то «левые» данные вводит, а кто-то вообще при виде такого просто отказывается от затеи. И пример, достойный подражания, про FF и Google Chrome не совсем корректен, потому как на моей памяти есть пример, как человек однажды отказался от использования этого самого «хрома» из-за того что тот его не оповещает о том, что обновляется. Так что тут надо стремиться к чему-то оптимальному, а не идеальному.
                                                                                                                                    –1
                                                                                                                                    Из мерфологии «Сделай программу которой сможет пользоваться даже дурак, и только дурак станет ей пользоваться».

                                                                                                                                    Так что вся статья — ерунда. Программы и есть имитации и модели мира. И обладать ограничениями, не свойственными реальному миру — их нормальное состояние.

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

                                                                                                                                    И таких примеров куча.

                                                                                                                                    Тот же Сергей Витальевич в своей тундре должен забивать правильные показания, а не «бла-бла-бла», если вдруг ему взбредет в голову. Он работает для данных, наравне с программой.
                                                                                                                                      +2
                                                                                                                                      Про модели — в информационных системах появляется еще один фактор, несвойственный реальности как таковой — доступность информации в данный конкретный момент. Т.е. в мире у человека есть паспорт и у этого паспорта есть номер, просто речь о том, что в данный конкретный момент мы его не знаем. В этом отличие.

                                                                                                                                      Необходимости обязательных полей для выполнения системой функций я не отрицаю не в коем случае. Я о требовании ввести все данные обязательно полностью и за раз — его надо убирать.

                                                                                                                                      И я не предлагаю отказаться от обработки ошибок. Просто иногда (в угоду целей пользователей!) имеет смысл принимать в том числе и некорректные данные. Предположим, система видит, что счетчик не может иметь таких показаний, какие вносит Сергей Витальевич. Что она должна делать? Правильная система — а) предупредить, что не так (Сергей Витальевич проверит, тот ли вообще счетчик он осматривает, правильно ли он переписал и т.п.), б) позволить сохранить данные, если пользователь ее попросит — просто потому, что в тундре как-то несподручно разбираться, что там раньше, возможно, не так внесли, и в) по возвращении напомнить СВ или ответственному лицу, мол, у нас тут лежат некорректные данные, помнишь? — разберись, пожалуйста.
                                                                                                                                      0
                                                                                                                                      Нужны ли обязательные поля — зависит от следующих моментов:
                                                                                                                                      1) А нужны ли вообще эти самые пользовательские данные системе?
                                                                                                                                      2) Проверяются ли в дальнейшем пользовательские данные вручную?

                                                                                                                                      Если на первый вопрос ответ «преимущественно нет», а на второй — «да, всегда», то обязательных полей будет столько, сколько нужно владельцу системы (именно владельцу, а не разработчику). Лучше не получить 100500 форм с ненужными данными, на проверку которых придется тратить драгоценное время.
                                                                                                                                      По-моему, следует все-таки различать интерфейсные формы и формы сбора данных. Если для первых обязательные поля зло (наверное? ИМХО, все-таки далеко не всегда), то для вторых — однозначно добро. Не располагаешь полными данными — не предлагай их для обработки. Пример форм сбора данных — формы добавления сайтов в каталоги. Кому будет тепло от того, что в каталог добавлен голый URL, без заголовка и описания? Уж точно не конечным пользователям каталога.
                                                                                                                                        0
                                                                                                                                        Сорри, «1) А нужны ли вообще эти самые неполные пользовательские данные системе?»
                                                                                                                                        +3
                                                                                                                                        На моей памяти, самым лучшим примером регистрации по-человечески был сайт Аймобилко. Не зарегестрированы или забыли как это было, попробуйте зарегестрироваться снова — у вас появится фейковый аватар, имя, фамилия и ещё какой-то набор данных, которые, по сути, не так важны для работы системы.

                                                                                                                                        Автору поста — спасибо.
                                                                                                                                          0
                                                                                                                                          > Для реальной жизни характерна скорее нехватка информации, чем ее наличие.
                                                                                                                                          Это вы немного лишнего взяли. Понимаю, что хотели сказать, но вышло не совсем верно.

                                                                                                                                          Для реальной современной жизни как раз характерен избыток информации, это вам любой историк в контексте работы с т.н. «историческими источниками» скажет.
                                                                                                                                            0
                                                                                                                                            Я думаю, автор имеет в виду конкретный контекст и конкретную информацию. В каждый момент времени может не оказаться под рукой именно той самой, нужной информации.
                                                                                                                                            +1
                                                                                                                                            Словоблудие какое-то. И так понятно что без необходимости обязательные поля лучше не делать.
                                                                                                                                              –2
                                                                                                                                              5 баллов! Но, по моему скромному мнению, основная проблема предложенного подхода — это сложность изменения стереотипов Заказчика. Особенно, когда этот заказчик — государство.
                                                                                                                                              Но уж если мы свободны в выборе — то только так и нужно делать!
                                                                                                                                                +8
                                                                                                                                                Поделюсь своим опытом отказа от обязательных полей (и регистрации в целом) на упомянутом уже сайте Аймобилко.

                                                                                                                                                Раньше была регистрация с фэйковыми данными, но сейчас ещё круче: регистрация не требуется вообще. Если пользователь хочет что-то купить, то мы автоматически создаём временную учётную запись и пишем «вечную» куку пользователю. В эту учётную запись складываются все покупки пользователя и остаток денег. При следующем заходе пользователь автоматом логинится и продолжает пользоваться сервисом. Причём, временные данные мы стараемся автоматически отправить пользователю: ответный СМС (при оплате СМС), детали платежа (Яндекс.Деньги), выписка на эл. почту (PayPal и пластиковые карты), показываем в явном виде при оплате через терминалы.

                                                                                                                                                Тем не менее, мы хотим достучаться до наших пользователей, поэтому ненавязчиво просим их зарегистрироваться (ввести эл. адрес и пароль). Зарегистрированные пользователи получают различные спец.предложения и подарки. При регистрации просто меняется статус учётной записи (временная→постоянная), сохраняя все оставшиеся деньги и покупки.

                                                                                                                                                Да, работы было очень много, да, были ошибки поначалу. Но всё это мелочи по сравнению с тем, что количество продаж на следующий день после открытия «моментальной регистрации» перманентно выросло в 2 раза (специально замеряли) и продолжает расти.
                                                                                                                                                  0
                                                                                                                                                  Согласен, зачем регистрация, если человек хочет 1 раз купить 1 вещь, а не заполнять эти огромные формы.
                                                                                                                                                  0
                                                                                                                                                  как правильно заметили выше — каша.
                                                                                                                                                  есть поля, для которых можно забить данные по умолчанию. (город на основании geoip при регитрации, аватарка с сереньким человеком).
                                                                                                                                                  есть поля которые можно заполнить позже и без этого данные можно сохранить. (без заголовка статьи, статью можно сохранить, но не публиковать)
                                                                                                                                                  есть поля которые необходимы, а форму нельзя заполнить позже (номер кошелька куда перевести деньги).
                                                                                                                                                    0
                                                                                                                                                    с точки зрения логики и последнее тоже можно ) просто транзакция отложится до момента занесения вами номера кошелька… Уникальным и обязательным останется id транзакции…
                                                                                                                                                      0
                                                                                                                                                      можно, если есть куда откладываться и есть возможность последующей идентификации.
                                                                                                                                                        0
                                                                                                                                                        целесообразность опять же остается под вопросом)
                                                                                                                                                    +5
                                                                                                                                                    Автор поста пишет что реальная жизнь не предсказуема и что программист не должен считать себя самым умным. Соглашаюсь на все сто. Однако, дальше в посте вы делаете как раз то, чего делать не следует: причесываете всех под одну гребенку, считая что поведение пользователей таки можно предсказать и именно вам виднее как лучше для ВСЕХ пользователей.

                                                                                                                                                    Меня, к примеру, раздражает имя по умолчанию в виндовс. Потому что иногда задеваешь кнопку «новая папка» в диалогах Save / Open и периодически я помогаю искать данные на компе, в котором папки на 90% имеют имена «новая папка X» :-) Я не раз пытался объяснить пользователям что «новая папка» — это дефолт, и его нужно изменить. Также как и «текстовый документ». Но народ реагирует на это по-разному: кто-то считает что это вообще единственно возможное имя для объекта, кто-то просто опасается переименовывать (мало ли что). То есть выходит, что никто не выигрывает от имени по умолчанию: малоопытный пользователь (или ленивый) оставит именно его, а опытный — в любом случае подумает и определит имя в момент создания. И какой же выигрыш пользователю от иерархии с ничего не говорящими именами?

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

                                                                                                                                                    Статья в целом правильная. Думаю что по дефолту любой интерфейс должен быть заточен под чайника, а где-то в настройках иметь кнопочку «экспертный режим». Тогда всем будет счастье.
                                                                                                                                                      0
                                                                                                                                                      Основная мысль кажись у вас такая: требуйте от пользователей те и только те данные, которые вам действительно необходимы для функционирования системы.

                                                                                                                                                      Иначе получается, что юзеры будут давать неполные данные, из-за которых продукт не сможет нормально работать, потом скажут, что нифига не работает и продукт сырой.
                                                                                                                                                        0
                                                                                                                                                        По мнению автора следует сохранять всю информацию, которую пользователь может предоставить на данный момент, даже если не хватает чего-то крайне важного. При этом компенсировать нехватку или некорректность данных дополнительными обработками. Т.е. это не повлечет за собой появление мнений о сырости продукта. Пользователь получит информацию, по какой причине что-либо работает не так как хотелось бы и варианты решения данной проблемы.
                                                                                                                                                        0
                                                                                                                                                        Неплохо это сделано в ВордПрессе (который в плане кода к слову мерзок и отвратителен, а также в нем куча ненудного СЕО-хлама типа меток): можно комментировать без рег-и, введя только имя, а можно —с регистрацией.

                                                                                                                                                        А недовольны те, кто начал прикидывать сколько кода им придется ради такого переписать :)

                                                                                                                                                        Кстати, в винде создание папок все же сделано неудобно, все время случайно попадаешь по кнопке и создаются эти дурацкие папки, а вот удалить ее так просто не получится.
                                                                                                                                                          0
                                                                                                                                                          Как это близко для меня! На этом же принципе строю свою CMS — внешне довольно минимальна и никаких технических терминов, а если начать рассказывать о внутреннем устройстве и скрытых фишках — и двух часов не хватит. К примеру резервное копирование всей базы данных (которая содержит не только содержание сайта, но и все шаблоны и css) каждый раз, когда заходит в админку админ (легкий юмор нечаянно получился...). Или возможность быстрого отката после редактирования страниц…
                                                                                                                                                            0
                                                                                                                                                            Не стоит забывать о тех случаях, когда обязательность ввода информации диктуется спецификой бизнес-процесса. Например, часто требуется обязательное комментирование вводимых фактов, и необходимость заполнения поля в данном случае не позволит свалить на программу свое нежелание думать/искать/печатать. Самой системе все равно, написал ли человек что-то или нет — эта информация исключительно описательная, но для пользователей крайне важна. Причем подойдет ведь любой человеческий комментарий. Если возникнут вопросы всегда можно попросить конкретизировать что именно там написано или объяснить причину ввода «рыбной» информации.

                                                                                                                                                            При этом схема с черновиками мне тоже кажется весьма удобной. Стараюсь использовать, если есть возможность.
                                                                                                                                                              0
                                                                                                                                                              Реальность такова что пользователь обычно стоит на месте далеким от первого.

                                                                                                                                                              Возьмем обычный сайт. Для кого он делается? В первую очередь для себя, потом для друзей — себя показать, потом для себя в какой-то ипостаси — программиста или дизайнера. Зачастую тут появляется мотив PROFIT — а значить раскрутка и прочее. Я вообще не уверен что забота о пользователе для обычного сайта когда-нибудь появляется в списке приоритетов в обозримом месте.

                                                                                                                                                              Возьмем стартап. Он делается в первую очередь для продажи. То есть для инвесторов. Он конечно нуждается в абонентской базе, но не настолько что бы думать об удобствах пользователя.

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

                                                                                                                                                              Да и если бесит очередная форма нужно просто отдохнуть…
                                                                                                                                                                0
                                                                                                                                                                Это просто хамство ставить пользователя не на первое место.
                                                                                                                                                                Стабильные неудобства, ппц.

                                                                                                                                                                Стабильность важна лишь в той степени, в которой она не мешает выполнять задачи пользователей.
                                                                                                                                                                А если стабильность постоянно мешает решать эти задачи, усложняет их, то от вашей программы или сайта для друзей быстренько откажутся.
                                                                                                                                                                  0
                                                                                                                                                                  Может быть. Но отрицать реальность — инфантильность :)

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

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

                                                                                                                                                                      Иногда связаны напрямую.
                                                                                                                                                                      «В общем» тут говорить не о чем — я могу представлять себе каталог в котором есть куча полей, которые просто обязательны — имя для поиска, описание для релевантности, мейл для обратной связи, адрес для гео-локации. А кто-то может представить себе сайт знакомств в котором все поля — лишь форматированные метаданные.
                                                                                                                                                                        0
                                                                                                                                                                        В случае вашего каталога достаточно предупреждать, что эти поля нужно заполнить, но не отказываться создавать запись.
                                                                                                                                                                          0
                                                                                                                                                                          А накой он в каталоге без этих полей?
                                                                                                                                                                            0
                                                                                                                                                                            На той чтобы дополнить, когда будут полные данные
                                                                                                                                                                              0
                                                                                                                                                                              Ну так там где-то и так есть, только без полей не в каталоге
                                                                                                                                                                                0
                                                                                                                                                                                Видимо, я устал и уже не понимаю вас
                                                                                                                                                                                  0
                                                                                                                                                                                  он как пользователь сам по себе есть. А в каталоге он есть только с полями.
                                                                                                                                                                          +1
                                                                                                                                                                          Вы говорите в общем нельзя и сами берете какой-то абстрактный каталог.
                                                                                                                                                                          Если вы имели ввиду каталог магазинов города в программе-справочнике, представьте секретаршу, которая забивает эти магазины из какого-то распечатанного ею списка. Если у каких-то магазинов не будет указан мейл — ей придется ставить галочки на листе у себя.
                                                                                                                                                                          Хотя она могла бы вбивать то, что есть, и затем, через время, когда она узнает эти мейлы, открыв таблицу, она бы увидела помеченные записи с недостающими данными.
                                                                                                                                                                          Естественно, если этот каталог как-то представлялся в вебе, то неполные записи не выводились-бы.
                                                                                                                                                                            –1
                                                                                                                                                                            А платить ей зарплату кто будет?

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

                                                                                                                                                                                собственно ответ очень простой — нет записи — нет проблемы. пустая запись абсолютно эквивалентно тому что нет записи. И это надо знать вводящему данные и это делается через обязательные поля.
                                                                                                                                                                                  0
                                                                                                                                                                                  Точно так, как фри-ланс.ру выводит проекты с неуказанной ценой
                                                                                                                                                                                    0
                                                                                                                                                                                    В данном случае аналогия — с неуказанным описанием и скилами. Которую никто не увидит когда «проект» уйдет с ленты.

                                                                                                                                                                                    Если учесть что в каталоге нет просто списка то пустая анкета просто нигде не появиться. Ну ни нафиг страдать фигней и давать возможность делать пустую анкету?
                                                                                                                                                                                      0
                                                                                                                                                                                      Ну если у вас каталог без списка, то нафиг конечно
                                                                                                                                                                                        –1
                                                                                                                                                                                        Ну вот и пришли к консенсусу. Теперь распространяем этот «нафиг» на все остальное и получается ляпота.

                                                                                                                                                                                        На самом деле юзеру невдомек как и где нужны данные и нефиг со своим самоваром ходить по сайтам. Написано — «требуется» значить требуется.

                                                                                                                                                                                        На самом деле я встречал только один сайт где требовались ну совершенно не нужные мне и сайту, на первый взгляд, данные. Как оказалось — они потом вежливый спам шлют.
                                                                                                                                                                                          0
                                                                                                                                                                                          Вот вы сами пришли к тому, что без каких-то данных какие-то функции не будут работать. Но ведь какие-то будут! Напишите прям на форме об этом, пользователь поймет, он же не тупой, пусть сам принимает решение, в конце концов он в этом лично заинтересован (иначе бы и знать не знал о вашей программе).
                                                                                                                                                                                            0
                                                                                                                                                                                            Ну во-первых пользователь тупой. Точнее он разный, но умный сам догадается и все сделает, а тупому сколько не говори — сделает по своему. И для таких и пишется защита от дурака. Одной из вариантов которой — требуемые поля.

                                                                                                                                                                                            Во-вторых зачастую писать что-то еще просто негде. Сообщения ужимаются до минимума, описания до слова в меню. Типс заполнены описанием формата принимаемого. Городит еще что-то всплывающее — будет совсем плохо. И все ради контента.

                                                                                                                                                                                            В-третьих конечно лень. Всем. И этим страдает куча сайтов — просто не понятно что в нем есть и чем он отличается, а подробно описать создателям лень. Но это совершенно другая история.
                                                                                                                                                                                              +1
                                                                                                                                                                                              Возьмем обычный сайт. Для кого он делается? В первую очередь для себя, потом для друзей

                                                                                                                                                                                              Ну во-первых пользователь тупой

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

                                                                                                                                                                                                    Когда тебе (или ему),
                                                                                                                                                                                                    Когда (ну, всё равно кому — только не мне!)

                                                                                                                                                                                                      0
                                                                                                                                                                                                      Так вы себя пользователем не считаете? Вы типа создатель?
                                                                                                                                                                                                        0
                                                                                                                                                                                                        На чужом сервисе я пользователь и легко делаю распространенные ошибки и бывает ломаю стройное представление о мире создателей сайта.
                                                                                                                                                                                                          0
                                                                                                                                                                                                          Так вы создаете под себя, считая себя тупым, или как? Разве это не странно?
                                                                                                                                                                                                            0
                                                                                                                                                                                                            Потрясающая логика! Можно еще? Чувствуете разницу между свой и чужой?

                                                                                                                                                                                                            ЗЫ. Был бы я тупым пользователем я бы горы золотые имел написав кучку скриптов для сайтов…
                                                                                                                                                                                                              0
                                                                                                                                                                                                              Как упоительно вы наслаждаетесь своей логикой.
                                                                                                                                                                                                              Только не могли бы повнятнее объяснить её другим?
                                                                                                                                                                                                              Все ваше объяснение пока что свелось к «нет, это не так».
                                                                                                                                                                                                              Вы делаете сайт для себя, это значит что вы пользователь сайта. Но пользователь тупой. Значит вы делаете, представляя себя тупым пользователем? Или делая для себя, вы считаете себя умным, а всех, кто будет этим пользоваться тупыми? Но если вы делаете для себя, в дальнейшем вы будете это использовать, вы себя будете считать тупым, или вы-исключение? Поконкретнее, вы делаете сайты для тупых или для умных? Вероятно для умных, но все пользователи тупые, но поскольку вы будущий пользователь, вы так-же войдете в их ряды.
                                                                                                                                                                                                              Простая дедукция:
                                                                                                                                                                                                              Люди — смертны. Сократ — человек. Значит сократ — смертен.

                                                                                                                                                                                                              Пользователи — тупые.
                                                                                                                                                                                                              Вы делаете — для себя, значит вы -пользователь.…