Това какво е 1/12/2006? Дата ще каже всеки. Повечето хора ще я определят като първи декември 2006 година. Някой ще рекат, че е дванадесети януари 2006 година. Всички ще са прави.

За много софтуерни програми обаче 1/12/2006 не е дата или поне е невалидна дата. Така е с електронното банкиране на банка Алианц. Наскоро станах клиент на тази услуга. Имам няколко застраховки, които плащам всеки месец и прецених, че ще е по-изгодно да ги плащам през банка Алианц. Ще минават като вътрешни преводи и така ще спестявам от такси. (Още не съм направил нито един превод, но то е по друга причина. За нея може да пиша друг път, когато разбера защо.)

В конкретния случай с датите, исках да направя „справка за движения“. На банков език това означава да проверя какво е влизало и какво е излизало от сметката ми, кога е ставало това и откъде. Цъкнах необходимата връзка. Пред мен се разкри формуляр. Не показвам целия формуляр, а само датите:

Снимка 1: Дати – начално състояние
Две полета с еднакви дати - 16/12/2006 - начално състояние на формуляра
Забележете, че датите в двете полетa показват една и съща дата. Това не е твърде умно дизайнерско решение – потребителят насила трябва да избере период. Нейсе, да беше само това. Реших, че искам да видя движението от 1 декември насам. Най-лесното беше да изтрия шестицата в полето Начална дата. Изтрих го и получих 1/12/2006.

Снимка 2: Дати – след промяната
Две полета с дати - в едното датата е 1/12/2006, а в другото 16/12/2006

Цъкнах ОК.

Да, ама софтуерът не се съласи с мен. Каза ми „невалидна дата“.

Снимка 3: Съобщение за невалидна дата
Съобщение за невалидност на датата

Добре, че се боря със софтуер от доста време и знам какво да очаквам. Веднага се досетих. Ама разбира се, че валидната дата се изписва 01. Как можах и да си помисля, че може да напиша 1 и софтуерът да разбере какво означава това. Та нали полето е форматирано да приема два знака и ако се подаде низ от един знак, ще се счупи нещо. Леле какъв съм глупав!

От подобни изпълнения страдаме ежедневно. Недопечени програмисти, кодери, дизайнери непрекъснато ни налагат да работим като машини. Да машината е тъпа и се бърка когато и се подаде 1 вместо 01. Ама нали затова има разработчик, за да направи връзката между човека, който може да подаде датата в различни варианти и тъпата машина, която може да приеме само един вариант. В случая програмистът е бил мързелив. Предпочел е да напише след полето за датата дд/мм/гггг, сиреч така показва на потребителите как да изписват датата. Това означава, че полето приема стойности, форматирани точно в този порядък и с точно толкова символа: ден/месец/година. Денят се изписва с два знака, месецът се изписва с два знака, а годината с четири знака. Разделителят може да е единствено наклонена черта.

Това обаче не е интуитивно, не е удобно и не е лесно. Сиреч имаме пример за калпаво свършена работа. Добре поне че има календар, от който датата може да се избере – не се налага да се мисли за форматиране.

А не е трудно. На програмиста няма да му отнеме много време да направи различни варианти за приемане на дата. Има софтуерни продукти, които разпознават дори някои думи. Потребителят може да напише „вчера“ или „онзи ден“ и софтуерът го превръща в дата, без да плаче или да се жалва. Една от големите разлики между добрите и смотаните продукти е точно в тези дребни неща.