Славик и GMT+3 или польза для людей

    Это Славик — обычный ПХП-программист. Не джуниор и не сеньор, а парень из тех, кого раньше называли «веб-мастерами». Славик может и ЦМС поковырять, и свою написать, и шаблон сверстать, и сервер поадминить.

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

    Славик обрадовался. Оплата неплохая, стабильная, всегда есть что делать. А главное, наконец-то будет явная польза для людей. Славику всегда хотелось понимать, как его работа кому-то принесёт пользу. Так он туда и устроился.

    Однажды утром Славик увидел в Джире новую задачу:



    Славик — хороший программист, тем более, что рвения у него теперь стало больше, ведь это полезно людям. Поэтому он ответственно подошёл к задаче: нашёл добротный СМС-гейт, протестировал на номерах телефонов из нескольких стран. Всё работало отлично.

    Начальство одобрило. И вот в продакшн среди прочих попадает примерно такая строчка кода:

    sendmsg(ticket->loc->from . ': ' . date('d M Y', ticket->date) . '; Bus Nr.' . ticket->bus_number . '; Ticket:' . ticket->id . '; You’re welcome aboard! NLINES team');
    

    Славик с чувством выполненного долга закрывает ноутбук, складывает в сумку, набрасывает куртку и идёт в сторону большой буквы M у подземного перехода.

    ***


    В полутора тысячах километров от Славика студент Володя решил ехать к папе в гости — из польского Вроцлава в российскую Москву.

    Володя как всегда купил билеты в интернете, на сайте «N-лайнз», — удобно ведь. Правда, рейс оказался с пересадкой в Риге. В день отправления Володя обратил внимание, что в билете есть время отправления — 28 апреля, 01:00, но нет ни слова о часовом поясе:



    Володя напрягся. Дело в том, что билет он покупал из Украины, но через версию сайта для России. А маршрут проходил через ещё три страны и три часовых пояса. Ещё и пересадка. Да и слышал от знакомых историю о том, как можно опоздать на автобус из-за неместного часового пояса.

    Володя решил, что нужно обязательно убедиться, что указали именно местное время. Перекликал весь сайт — нету. Ткнулся в чатик с живым консультантом — так тот уже превратился в форму отправки эмейла. В 00:03 по местному времени (01:03 по Москве) Володя, уже и так весь на нервах, получает СМС:



    Он звонит в самую быструю службу такси, прилетает на вокзал за пятнадцать минут и… Полтора часа сидит и ждёт автобус, потому что тот всё-таки должен был приехать в час ночи по местному, да ещё и опоздал.

    ***


    Дорогие программисты, дизайнеры, и все работники ИТ!

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

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

    Если бы вместо даты и «Добро пожаловать на борт», Славик написал часовой пояс, время и «Автобус отправляется во столько-то», то времени он бы больше не потратил. Но у одного Володи в мире осталось бы побольше нервов.

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

    P.S. Славик — это абстракция. А СМС-ка из поста — реальная, от реального перевозчика. И ситуация с такси и вокзалом — тоже. Не важно, накосячил именно Славик, или его тимлид, если таковой был. Важно то, что никто из цепочки разработки не поставил себя на место клиента и в продакшн выпустили именно такое сообщение. Поэтому я адресую этот пост всем — и программистам, и тимлидам, и UX, и дизайнерам. Если в вашей работе вы увидите то, что можно сделать лучше для людей — пробуйте.
    Поделиться публикацией
    Комментарии 329
      +19
      А еще иногда есть желание заслать некоторых программистов (ну и не только их) привыкших к теплому офису и отсутствию злых юзеров и постоянному интернету, в какую-нибудь глухомань, где до ближайшего стабильного 3G «три дня на оленях» — чтобы, во-первых начали оптимизировать свои неуёмные амбиции по размерам софта или оберток, а во-вторых поняли что такое падающий софт на медленном канале и без возможности быстро загуглить, или пересобрать и получить от него новую версию с исправлением.офт
        +23
        Когда программист говорит начальнику «могут быть проблемы на медленном соединении, надо потестировать дня 2-3, и недельку на исправление», начальник шлет его лесом (дескать, напишем тикет, а когда будет время...)

        А вот если пользователи сообщают, что программа у них глючит, а особенно включают это в бизнес-требования, то тут же время находится.
          +13
          Если пользователей миллион, а пожалуется всего 1000 пользователей из глухих деревень, вполне возможно что и на них тоже забьют. Если только компания не занята в данный момент оптимизацией каждой доли процента прибыли.
            0
            Даже если 600К из глухих деревень, но дают 0.1% прибыли, то тоже могут забить. Или если нет конкурента.
              0
              blablacar — яркий пример: чуть хреновый интернет — сразу вываливается с неизвестной ошибкой, в группе в вк их уже забомбили, а толку ноль.
            +3
            А ещё есть иногда желание сделать кому-нибудь что-нибудь плохо. А, вдруг, в этот раз, от того, что кому сделал плохо, себе лучше станет?
              0
              В этом случае больше показать, что надо заботиться о пользователях, и вытащить из уютного мирка где комфортно и всё есть буквально сразу (пицца, пиво, софт, сервисы любые, услуги любые, скоростной интернет и т.д.), а то сильно искажается восприятие мира. А ведь есть деревни, к примеру, где электричества нет и не будет, причем не так далеко от Петербурга всего лишь (ну пара сотен км то всего), и живут люди там.
              +4
              Но почему вы в этом вините программистов? Это всего лишь исполнители, реализующие требования.

              Заказчик ставит рамки по производительности и уровню проработанности (через сроки), аналитик их прорабатывает и разъясняет заказчику, заказчик утверждает. С заказчика и надо спрашивать.
                +3
                Это всего лишь исполнители, реализующие требования

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

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

                    +2
                    В итоге написание ТЗ по мнению программиста должно занимать на порядок больше времени, чем реализация

                    Для хорошего ТЗ на сложную задачу так и есть.


                    Он даже блин не предполагает, что в оповещении о событии надо проставить время события?

                    В ТЗ написано, что надо проставить. Наверное же человек, который писал ТЗ, подумал?

                      0

                      Сложная задача это смс-опоповещение о наступающем событии.
                      Любой адекватный человек предполагает, что в оповещении о событии есть дата и время этого события.
                      Или у вас оповещение, что собрание в переговорке, заходите про собрание через час это норма жизни? Элементарно же! Ну через час же а не сейчас, ты чё, тупой?
                      Диалог забавен сам по себе. Можете прислать любое ТЗ на элементарную задачу и я найду десяток способов как ее запороть в рамках вашего ТЗ. Вы мне пытаетесь доказать, что такое поведение — норма.

                        +2
                        Любой адекватный человек предполагает, что в оповещении о событии есть дата и время этого события.

                        Нет. Это вы так предполагаете, и думаете, что ваше предположение верно для всех вокруг. А в задаче в посте даже не сказано про оповещения о событии, там сказано "уведомления о посадке". И знаете, что? Когда я сижу в аэропорту, уведомления о посадке на борт таки звучит в виде "началась посадка на борт, пройдите к гейту", а не "во столько-то началась посадка на борт".


                        Вы мне пытаетесь доказать, что такое поведение — норма.

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


                        Вон у меня в соседнем окне открыт график доставки покупки с Амазона. Эта покупка уже пересекла три часовых пояса, а я на нее смотрю из четвертого. Так вот, там в заголоке написано "arriving tomorrow at 8 PM". И пока вы не нажмете see all updates, и не прочитаете там мелкий шрифт в самом конце страницы, вы так и не узнаете, что это местное время (причем все уведомления указаны в местном времени, угадывайте сами, какой это часовой пояс).

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

                          Наверное потому, что вы сидите в аэропорту?
                          1) Вам упало несколько оповещений о регистрации на рейс, о будущем рейсе и тд.
                          2) В аэропорту собственно везде терминалы со временем посадки.
                          3) Вы должны быть в аэропорту минимум за час до вылета.
                          А теперь сравните с оповещениями на вокзале, что больше подходит под ситуацию с автобусом.
                          Типичное оповещение на вокзале — Поезд номер 201, отправляющийся в город Архангельск, отправляется с третьего пути в 20-20. Нумерация вагонов с «хвоста».
                          Нет, я пытаюсь доказать, что выполнение задачи строго по ТЗ не означает, что человек не блещет умом. В описанной ситуации вообще никто не знает, какие диалоги были между исполнителем и заказчиком.

                          Я считаю, что при общении двух адекватных людей можно не писать ТЗ «для идиотов». Судя по реакции хабра — типичному программисту НАДО объяснить как делать оповещения о событии. Примеров из реальной жизни ему не достаточно. Сделать как в других сферах и провести аналогии типичный программист не способен.
                          Вон у меня в соседнем окне открыт график доставки покупки с Амазона. Эта покупка уже пересекла три часовых пояса, а я на нее смотрю из четвертого. Так вот, там в заголоке написано «arriving tomorrow at 8 PM». И пока вы не нажмете see all updates, и не прочитаете там мелкий шрифт в самом конце страницы, вы так и не узнаете, что это местное время (причем все уведомления указаны в местном времени, угадывайте сами, какой это часовой пояс).

                          Вы в каком часовом поясе будете посылку принимать? В трех, которые она пересекла, или в четвертом где сидите, или вы все-таки примете посылку по МЕСТНОМУ времени? Или, если вы, условно, в Австралии и звоните маме сказать, что ей домой в условный NY должна прийти посылка — вам надо показать Австралийское время прихода этой посылки? Или все-таки время NY будет адекватно?
                          Я еще раз пишу — на сайте и билетах на транспорт всегда указывается отправление по местному времени. Единственный недостаток — можно было бы указать часовой пояс. А вот оповещение за час — садитесь в автобус. Это муть.
                            +1
                            Наверное потому, что вы сидите в аэропорту?

                            Не "я сижу в аэропорту", а "предполагается, что я сижу в аэропорту".


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

                            Это вы считаете, что больше похоже. А я не считаю. И да, вы хотите сказать, что приведенные вами выше пункты не применимы к вокзалу? Да нет, они точно такие же.


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

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


                            типичному программисту НАДО объяснить как делать оповещения о событии.

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


                            Примеров из реальной жизни ему не достаточно

                            Я вам привел пример из реальной жизни, который совпадает с посланным сообщением.


                            Сделать как в других сферах и провести аналогии типичный программист не способен.

                            Способен. Но снова, почему вы думаете, что ваши и его аналогии совпадают?


                            Вы в каком часовом поясе будете посылку принимать?

                            Я вообще не буду ее принимать, ее принимает отель.


                            Я еще раз пишу — на сайте и билетах на транспорт всегда указывается отправление по местному времени. Единственный недостаток — можно было бы указать часовой пояс.

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


                            А вот оповещение за час — садитесь в автобус. Это муть.

                            Это, несомненно, муть. Вопрос в том, что должно было быть — и вы, в отличие от постановщика задачи, не знаете правильного ответа на этот вопрос.

                              –1
                              Не «я сижу в аэропорту», а «предполагается, что я сижу в аэропорту».

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

                              Вы сейчас серьезно?
                              Вы на поезде ездили хоть раз?
                              Если вы считаете, что полет на самолете = поездке на поезде — приезжайте в аэропорт за 15 минут до вылета и улетайте. Или что-то все-таки не так?

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

                              Как раз опыт показывает, что 90+% программистов не хотят думать головой. И особенно они не хотят читать правила работы компании, что бы по этим самым правилам продумать оповещения. Они искренне считают, что поездка на автобусе это тоже самое, что полет на самолете и пытаются свой опыт полетов на самолете переложить на совершенно другой транспорт.
                              А согласно этим самым правилам клиент НЕ ДОЛЖЕН приходить за час с лишним к автобусу и сидеть ждать у моря погоды. Более того, у многих автобусных компаний автобус подается за 15 минут до отъезда. Он должен быть в автобусе в момент отправки — не более того.
                              Нет, ему надо объяснить, какие конкретно оповещения нужны в конкретном случае.

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

                              Я вам привел пример из реальной жизни, который совпадает с посланным сообщением.

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

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

                              Какая разница? Вы отель предупреждать по Австралийскому времени будете?

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

                              Обычно, во всех адекватных компаниях, эту информацию указывают под сноской.
                              Что-то вроде:
                              «Время отправления и прибытия указано московское»
                              Либо есть выбор (на сайте РЖД, например)
                              Время: Московское/Местное — для поездов из Москвы.
                              Это, несомненно, муть. Вопрос в том, что должно было быть — и вы, в отличие от постановщика задачи, не знаете правильного ответа на этот вопрос.

                              Оповещение клиенту, что его автобус из Вены выезжает в час ночи по времени города Вена? Это сверх-сложно?
                                0
                                Вы про голосовое оповещение диктором?

                                Именно про него.


                                Вы реально сравниваете полет на самолете и поездку на автобусе или поезде? Ничего, что это два абсолютно разных сценария?

                                Для целей оповещения — одинаковые.


                                Как минимум тем, что на вокзал можно прийти за 3 минуты до отправления и сесть в поезд за минуту до отправки,

                                Ну вот попробуйте это провернуть с крупным скоростным поездом типа Ave, и узнаете, что нет, нельзя.


                                Вы сейчас серьезно? Вы на поезде ездили хоть раз?

                                Да, я совершенно серьезно. Да, ездил.


                                Если вы считаете, что полет на самолете = поездке на поезде

                                Нет, я считаю, что в рамках перечисленных пунктов отличия несущественны.


                                приезжайте в аэропорт за 15 минут до вылета и улетайте.

                                В аэропорте типа Соньдаля это прекрасно сработает.


                                Как раз опыт показывает, что 90+% программистов не хотят думать головой.

                                90% людей не хотят думать головой.


                                И особенно они не хотят читать правила работы компании, что бы по этим самым правилам продумать оповещения.

                                Какие такие правила работы компании?


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

                                Ну так вы комментом раньше предлагали "cделать как в других сферах и провести аналогии". Теперь, когда сделали именно так, это вам тоже не нравится.


                                Ну то есть надо:
                                1) Написать ТЗ на оповещения
                                2) Написать тексты оповещений в соответствии с правилами компании
                                3) Написать время оповещений
                                4) Передать все программисту, что бы он собственно сделал тупо шаблоны — я правильно понял?

                                Да, вы все правильно поняли. Еще вы забыли тестирование, архитектуру и несколько других маленьких вещей. За пункты 1 и 3 отвечает аналитик, за пункт 2 — технический писатель. За тестирование — QA. Удивительно, правда?


                                Да, кстати, а полную грамотность на всех языках, на которых работает компания, вы тоже от программиста ожидаете?


                                Может тогда из зарплаты программиста вычесть зарплату человека, который пишет ТЗ, тексты, время и тд?

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


                                И собственно проблема в том, что программист не хочет разбираться в правилах,

                                Да, не хочет, это нормально. Он хочет разбираться в языках программирования, архитектуре ПО, принципах разработки и еще сотне других вещей, в которых разбирается только он (а заказчик разбираться не хочет). Это называется "специализация". А разбираться в, скажем, требованиях PCI DSS — это отдельная работа на полный оклад.


                                Например, провести аналогию автобус=поезд через объединение «наземный транспорт».

                                Почему вы считаете, что именно эта аналогия — самая правильная? Такси — тоже наземный транспорт, скажем.


                                Какая разница? Вы отель предупреждать по Австралийскому времени будете?

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


                                Обычно, во всех адекватных компаниях, эту информацию указывают под сноской.

                                В СМС сносок не бывает.


                                Время отправления и прибытия указано московское

                                Только что было местное. Правда, круто?


                                Оповещение клиенту, что его автобус из Вены выезжает в час ночи по времени города Вена? Это сверх-сложно?

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

                                –1
                                А вот оповещение за час — садитесь в автобус. Это муть

                                Это, несомненно, муть.

                                Напоминалки в календаре — тоже муть?
                                  0

                                  Нет, они — не муть. А вот смска "добро пожаловать на борт" без указания времени, пришедшая за час до отправления — муть.

                                    +1
                                    Воот. Муть не сама смс, а идиотский текст, вместо 'не пролюби автобус через час'
                                      0

                                      Мы не знаем, каково было назначение СМС, поэтому мы не можем сказать, муть в тексте или во времени прихода.

                                        0
                                        А у вас никогда такого не было, что СМС приходит через пару дней после отправки?
                                  +2
                                  >Я считаю, что при общении двух адекватных людей можно не писать ТЗ «для идиотов».
                                  Напрасно вы так считаете.
                                  Посмотрите на тытрубе «Забудь слово “ошибка” / Григорий Петров (Voximplant)» и вы по крайней мере уясните причины, по которым вот такие ляпы — возможны. Мало этого, благодаря неумению управленцев толком управлять, в ряде случаев такие ляпы неизбежны.
                                  Я не пытаюсь выгораживать программистов или кодеров, одним из которых считаю себя, но мне неблизко ваше желание потыкать программистов носом в грязь.
                                  Вы считаете их настолько умными ребятами, которые не подвержены никаким человечьим когнитивным искажениям? Ошибка. Причём ваша ошибка, не их, потому что они не подписывались соответствовать вашим личным представлениям о них.
                                  Попробуйте быть человечнее; не нужно пытаться доказывать другим людям что они хуже чем вы о них думаете, это ни к чему не приведёт.
                            +2
                            Вы серьезно сейчас? То есть программист типа не знает ничего про часовые пояса?

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

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

                            Ваш надменный тон здесь неуместен.
                              0
                              Какой календарь?
                              Топик про СМС оповещение, в котором нет времени события, которое к тому же пришло не вовремя.
                              Про время билета на сайте без часового пояса (хотя тут есть сложившаяся логика — время отправления транспорта всегда указывают по времени места отправления).
                              Какие блин аналитики вам нужны, что бы сообщить клиенту, что его автобус из Вены выезжает в час ночи по времени города Вена? Это сверх-сложно?
                                0
                                На практике практически всегда шаблоны текстов таких сообщений составляют не программисты, они указываются в задаче, а часто при попытке поменять что-то по своей инициативе, даже явную ошибку, задача режется QA.
                          0

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

                          +4

                          Используй UTC время для всего и вся, а конвертировать из UTC не проблема.

                            –6

                            Вы забыли уточнить "UTC-время и смещение на момент события", правда же?

                              +4
                              Смещение как раз таки у каждого своё, и его нужно на клиенте проверять. А вообще самый лучший вариант это UNIX формат, он всегда идёт в UTC, да и на клиенте получить из него поясное время это как 2 пальца по клавиатуре.
                                +22
                                Живо представил себе СМС:
                                Ваш автобус отправляется в 1524884400. Счастливого пути.
                                  +2
                                  Зачем представлять если всё спокойно переводится в нужный формат.
                                    –1
                                    Кем? пользователем на калькуляторе?
                                      0
                                      Программистом при формировании сообщения, этот же формат задумывался для удобства хранения, и с ним в дальнейшем можно делать всё что угодно и отображать в каком угодно формате. Просто как показывает практика время ни сколько не постоянная величина, выводимый формат во всех странах отличается, часовые пояса и т.д. Unix прекрасно решает эти проблемы. p.s. поясное время в данном случае спокойно получается если клиент передаст свою тайм зону вместе с запросом на заказ автобуса.
                                        –1
                                        ну так datetime (или как его там в php) и хранит внутри себя дату в чем-то аналогичном unix timestamp со свистелками и перделками.
                                        Чем от этого легче пользователю, получаещему SMS 'ваш автобус отправляется в 01:00 УгадайСамКакогоВремени'?
                                          +2
                                          Нет, суть в том что у нас 2 источника времени, сервер и клиент, они находятся в разных полушариях. Сервер ни чего не знает о времени клиента пока тот ему этого не сообщит и хранит даты в unix формате(а оно всегда utc, и всегда в едином числовом формате). Клиент соответственно заказывает автобус и со своими данными отправляет свой часовой пояс, сервер же когда формируем смс конвертируем unix формат в человекопонятный например 06.09.2018 13:00 и подгоняет дату под часовой пояс который отправил нам клиент. Клиент доволен и не опоздает на свой автобус
                                            0
                                            Ничего страшного, что в данном конкретном случае 'клиент' это телефон, умеющий принимать СМС?
                                              –1
                                              А как это влияет на цены на масло?
                                                –1
                                                Приблизительно так же, как ваше (гениальное в своей очевидности) предложение на решение затронутой в посте проблемы.
                                                  –1
                                                  Не понимаю с чего такая язвительность, я вроде бы вас лично не оскорблял и не задевал, это лестно конечно, но данная концепция не моя. Если вы видите проблему в том что клиентская часть это телефон умеющий принимать СМС то я с радостью её выслушаю и если она действительна такова, то пересмотрю её или исправлю недочёты
                                                    0
                                                    Ну так вы поймите для начала проблему, а потом решения предлагайте.
                                                    Ошибка не в обработке времени в программном коде, а в пользовательском интерфейсе.
                                                    Сначала пользователю не сообщают, что 'времена отправления и прибытия указаны местные', затем в смс-ке напоминалке вместо времени вообще пишут 'welcome aboard', что создает легкую панику.
                                                      +1
                                                      Данный диалог возник из комментария пользователя касательно формата даты, я хоть слово сказал про пользовательский интерфейс?
                                                        +2
                                                        Вы, к примеру, сказали, что время сообщит клиент. Как телефон, который может работать только с СМС, сообщит вам время? А если мы берём время клиента, то скажите, в случае ситуации из поста, мы должны взять российское время, украинское или местное на момент совершения заказа? А если на клиенте таймзона была неправильная? А вот теперь мы выбрали какой-то вариант и придерживаемся его, как пользователь об этом узнает?
                                                        Нужно просто при формировании СМС указывать часовой пояс.
                                                          –3
                                                          Билеты же тоже не по смс заказаны были
                                                            +4
                                                            Как с вами тяжело) Ну вот я же говорю, возьмите ситуацию из поста. Билеты заказывали с компьютера с кривой геозоной (добавление от меня), находящегося в Украине через версию сайта для России. Какого времени в СМС я, по-вашему, как пользователь должен ждать?) Российского? Украинского? Того непонятного времени в кривой геозоне, которую я даже не запомнил? А почему именно этого, а не какого-то из оставшихся? А если я забыл, откуда я делал заказ, т.к. бронировал за полгода, находясь в кругосветке? Столько вопросов и никаких ответов) Вместо того, чтобы просто написать часовой пояс в СМС)
                                                              0
                                                              В сложившейся практике заказов билетов время всегда указывается местное для пункта отправления, не надо никаких часовых зон и прочего. Человек должен быть на вокзале к моменту, когда часы на вокзале покажут время отправления.
                                                              Очень часто агрегаторы, заказывающие билеты в разных городах получают от продавца билета только время отправления без конкретизации часового пояса. К тому же гипотетическая «Баба Маня» при появлении в билете GMT+5 будет обрывать телефон службы поддержки чтобы выяснить что это и к скольки же ей действительно нужно на автобусную станцию.
                                                                0
                                                                РЖД совсем недавно перешла на местное время.
                                                                До августа сего года часы на вокзалах по всей стране показывали московское.
                                                                  +1
                                                                  Ну так в этом случае можно написать «местного времени». Или просто указать это самое местное время. А «сложившаяся практика» может отличаться. Вот откуда я должен знать, что РЖД дату отправления пишет (точнее, писала, но об этом позже) по МСК? Мы для РЖД как будем указывать? В местном? А если я знаю об особенностях РЖД, и подумаю, что это МСК? По Москве? Но я же привык, что этот сервис везде по местному времени посылает. Т.е. я уже потерялся, а тут ещё бац! РЖД внезапно начала указывать время не по Москве, а местное. Я это как должен был предугадать? А сервис-то у нас международный. Мне как клиенту перечень таких РЖД по всему миру с такими особенностями вести и отслеживать? Нет ведь.
                                                                  Просто. Укажите. Пояс. В СМС. Хоть как GMT / UTC +5, хоть «МСК», хоть «местного времени», как-нибудь.
                                                                    0
                                                                    Вы всё здорово говорите! Однако агрегатор знать не знает в каком часовом поясе указано время на билете продавца. Тот же РЖД ведь этого не указывал. Да и все как-то мирно спокойно ездили на поездах. Даже несчастные бабульки из глубинки, которые ведать не ведали о разных часовых поясах. Массового опоздания ни разу не наблюдалось. Вот реально тема проблемы выдумана на пустом месте.
                                                                      0

                                                                      Ну так а я как должен об этом узнать?) вот я турист из Исландии, заказал через онлайн-сервис билеты РЖД (в том числе) до августа этого года. И как я, исландский турист, должен понять, что вот это время, которое мне прислали – Московское, а не местное? Бабки об этом знают, потому что они русские, и так было десятилетиями. А я? И сколько таких РЖД по миру? Наверное, логичнее со всем этим безобразием разобраться один раз сервису, для которого это профессиональная обязанность, чем каждому клиенту на всякий случай перед каждой поездкой лазать по гуглам и выяснять особенности каждого конкретного поставщика услуг.
                                                                      Насчёт того, что проблема на пустом месте – так вон же пост наверху, человек на этом обжёгся. Хорошо, что раньше приехал, а не опоздал. А если вы считаете, что всё равно сильно опоздать / долго ждать не получится, а все приезжают заранее, то напомню, что РЖД использовали московское время и во Владивостоке ;)

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

                                                        Клиент — прошитое приложение СМС на Нокии 3310. Оно тупее школьника :)

                                                          0
                                                          СМС генерируется на сервере, я выше описал по какому принципу, в данном случае клиент получает готовый текст с нужной датой и тут ничего даже высчитывать не надо
                                                            +2
                                                            Так не может клиент — смс приложение — отправить на сервер свой часовой пояс.
                                                              –6
                                                              Конечно может, это же смс приложение
                                                                +1
                                                                Вы сообщения читаете? Телефон Нокия 3310. Он ничего не отправляет. И нет там смс приложения. Езжайте лучше в поля и поработайте в службах эксплуатации. Засиделись в офисе… Пользователь в данном случае никакого приложения не будет ставить и не может.
                                                                  –2
                                                                  Это был сарказм, надо было всё таки указать для тех кто не понял, и вызван он как раз из ходя из «СМС приложение». Концепции тут совсем разные, тут обычный XMLHttpRequest а в СМС передача данных по GPS. Я конечно понимаю, что для неосведомлённого человека это одинаковые вещи, но это далеко не так.
                                                                    +1
                                                                    А по глонасс не передают?
                                                                      –1
                                                                      Я очень далёк от протоколов по которым передаются СМС, у меня сфера другая, но даже я знаю, что это разные вещи и их сравнивать нельзя. Что и доказывает ru.wikipedia.org/wiki/SMPP
                                                                        0
                                                                        Поверьте, спутниковая навигация — ещё более разная вещь
                                                                          0
                                                                          SMPP — больше для партнёров оператора и самого оператора для подключения внутренних сервисов к смс центру по IP. Абонентские устройства с сетью общаются по сигнальным протоколам.
                                                                        +1

                                                                        Всё, что вы знаете о клиенте — это его билет и номер телефона. Как вы определите его часовой пояс?

                                                                          0
                                                                          Часовой пояс точки отправления?
                                                                            +1

                                                                            Ну да, и это подтягивается по билету, а СМС тут ни при чём.

                                                                              0

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

                                                                          0

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


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

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

                                                                                Вот реально где находится покупатель перевозчику, и тем более агрегатору без разницы. Перевозчик работает по своим правилам, агрегатор по своим. Каждый что-то умалчивает и возлагать на агрегатора обязанности ментального медиума глупо, бессмысленно. Агрегатор передаёт в точности то, что ему дал перевозчик. Остальное от лукавого.
                                                    +1
                                                    Ну а заморочка-то в том, что откуда программист при отправлении сообщения будет знать, в каком часовом поясе находится клиент? Ладно если речь про автобус — можно взять часовой пояс места отправления автобуса. А если о веб-конференции?
                                                      +3
                                                      Допилить одну строчку:
                                                      Отправление в 18-00 по МСК.
                                                      брать мск или какой нибудь украинский часовой пояс по адресу места, откуда человек отправляется. Причем именно так грубо — по МСК, по киевскому времени, по времени хабаровска…
                                                      Все.
                                                        0

                                                        Именно так. А если не охота привязываться к какому-то городу — можно указать по GMT+00, только обязательно на этом обратить внимание. Тогда у юзера будет меньше головной боли.

                                                          0
                                                          И потом всякой бабульке объяснять что это такое GMT+00. Ездят не только программисты и инженера, но и люди из глубинки, которым глубоко фиолетово на все часовые пояса, их жизнь и без этой информации очень насыщенная.
                                                          Честно, тема выглядит как перфекционист опоздал на самолёт, а остальные, купившие такие же билеты, улетели вовремя, без проблем и возмущений.
                                              +1
                                              Смещение как раз таки у каждого своё

                                              Как раз поэтому и надо хранить время в UTC.
                                              Но только времени в UTC недостаточно. Точнее его недостаточно для отдалённых дат в будущем. Вот для таких дат и надо хранить «смещение на момент события».

                                              Ещё добавлю, что в некоторых БД можно вообще хранить время с временной зоной и работать будет нормально, насколько я знаю. Я имею ввиду, прям встроенный формат.
                                                0
                                                Для будущих дат да, смещение необходимо. На счёт формата в БД трудно сказать, мне лично гораздо проще работать с числовым форматом, да и тот формат про который вы говорите подходит только для личной информации 1 пользователя (Заказ пиццы и т.д.)
                                                  0
                                                  Да, с форматом в БД согласен.
                                                    0
                                                    Где-то читал про создание календаря с напоминаниями (чуть ниже andreymal дал ссылку). Если даты достаточно далеко в будущем, очень полезно ещё и хранить приблизительное местоположение события (город, область, район и т.п.): правила часовых поясов могут успеть смениться до того, как наступит событие. За примером теперь далеко ходить не надо.
                                                    0

                                                    А как вы сразу определите смещение на момент события в отдалённом будущем?

                                                      +2
                                                      Вспоминаю древний пост на хабре, кажется, от Яндекса, где они писали, что хранят вместе с датой и временем город.
                                                      Почему не часовой пояс?
                                                      Потому, что был прецедент, когда город сменил временную зону.
                                                      +1

                                                      На каком-таком клиенте?


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


                                                      Или вот еще веселее: есть у вас запись в БД про момент Очень Важного события: "31.12.2017 23:50:05". В UTC, как вы просили, или даже в unix timestamp, пожалуйста. Внимание, вопрос: в каком году произошло Очень Важное событие?

                                                        0
                                                        А что нам мешает отправить в данном случае время в unix и свой часовой пояс? Этого вполне достаточно что бы высчитать дату отправки смс для конкретного пользователя
                                                          0
                                                          А что нам мешает отправить в данном случае время в unix и свой часовой пояс?

                                                          Кому "нам"? Отправить куда?


                                                          Ну и да, перечитайте, что ли, тот коммент, на который вы отвечали, и в котором написано "UTC и смещение", и объясните мне, чем это отличается от того, что вы сейчас предлагаете.

                                                            0
                                                            На сервер. Ни чем кроме формата unix, про это речь и шла и только. Я как бы и не спорил, а дополнил.
                                                              0

                                                              Отправить мало, надо сохранить. А в этот момент это превратится ровно в описанную мной схему.

                                                    +4

                                                    Использовать UTC для времени в будущем — тоже так себе идея

                                                      +10
                                                      Здравствуйте, в г. Кемерово часовой пояс UTC+7, а ваша система считает, что он — UTC+6, из-за чего возникает комичная ситуация в билете в виде 5-часового перелета Москва-Кемерово и 3-часового в другую сторону — Кемерово-Москва. Пожалуйста, обновите tzdata.
                                                      Добрый день.
                                                      Благодарим за обращение в Службу заботы о клиентах Kupibilet.ru.
                                                      Часовые пояса загружаются из международной системы бронирования.
                                                      На данный момент Кемерово стоит в часовом поясе UTC +6:
                                                      Возможно, изменением часового пояса произошло недавно, и данные еще не успели обновиться в системе бронирования.
                                                      В данном случае изменить часовой пояс вручную не будет корректно.
                                                      Мы учтем ваше сообщение и будем стараться решить эту проблему.
                                                      Всего доброго!
                                                      Часовой пояс UTC+7 в г. Кемерово используется с конца октября 2014 года.
                                                      Добрый день.
                                                      Возможно, и так, но данные в международной системе бронирования обновить с нашей стороны невозможно.
                                                      Мы уточняем, что можно сделать с этой проблемой.
                                                        0

                                                        Использование локального времени вместо UTC эту проблему не только не решит, а ещё и усугубит

                                                          +2
                                                          Я в Сбер как-то написал, что в их смс о поступлении денег, неправильно указывается время. Скорее всего из-за неправильной зоны.
                                                          Ответ Сбера: Пусть владелец карты явится с паспортом и картой в то отделение банка, где получал карту.
                                                            0
                                                            Здравствуйте. Я не клиент банка.
                                                            Сбербанк Онлайн недоступен с моего домашнего IP-адреса x.x.x.x. Нет никакого ответа при попытке захода на online.sberbank.ru (страница пытается загрузиться бесконечно), также с этого адреса не приходят ICMP Echo Reply (ответы ping).
                                                            Предполагаю, это из-за того, что на этом IP-адресе поднята Relay-нода сети Tor. Relay-ноды не позволяют другим пользователям сети Tor пользоваться моим IP-адресом для выхода в интернет (такое возможно только с Tor Exit Node).
                                                            Если вы хотели заблокировать возможность входа в Сбербанк Онлайн через Tor, то вы сделали это неправильно.
                                                            Уважаемый клиент, ваше обращение рассмотрено. Предложение передано в ответственное подразделение и будет реализовано в случае соблюдения экономической рентабельности.
                                                          +1
                                                          Только не надо забывать, что в UTCшной минуте не всегда 60 секунд. Бывает и 61 секунда, а теоретически — может быть и 59.

                                                          Поэтому для «всего и вся» лучше использовать монотонное время, например TAI или GPS Time, а в UTC — пересчитывать только для вывода

                                                          Кроме того, конвертируя из UTC вы становитесь заложником аккуратности и своевременности обновления tz database.

                                                          См. пост чуть выше — про актуальность tzdata/
                                                          +28
                                                          У Славика есть product owner Пётр, business analyst Варвара и Леночка из QA team… Ну вы поняли.

                                                            0
                                                            Обе истории — и Славика и Володи — реальные события из моей жизни, объединённые в одно. Не всегда есть product owner и business analyst :)
                                                              +16
                                                              Значит Славик носит семь шапок — product owner, business analyst, QA, UI, UX, developer, admin.

                                                              Мультфильм про семь шапок тоже все помнят.

                                                              В вашем конкретном случае не очень понятно почему вопрос к шапке «программист»
                                                                0
                                                                Вопрос не к шапке, а к голове, которая придумала текст сообщения. Это мог быть Славик, мог быть штатный редактор, или дизайнер. Тут так сложилось, что Славик.
                                                                  +13
                                                                  Просто статья навевает легкий привкус фразы «ты-же-программист».

                                                                  Без понимания деталей проекта судить сложно. Если это локальная транспортная компания, то в принципе это рабочий момент, Вова просто не их клиент и если есть форма обратной связи, чтобы Владимир сообщил что он об этом всё думает, то это ок. Если это большая компания, должен быть общепринятый формат вывода данных и правильный процесс.

                                                                  Кто-то создал тикет в джире, вот этот человек должен понимать бизнес реалии.

                                                                  У меня один из product owner-ов как раз в подобном стиле тикеты вояет. Как раз с посылом — «ты умный, разберёшься»
                                                                    0
                                                                    Тост

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

                                                                    Думал, думал и надумал

                                                                    1. Хочу быть белым
                                                                    2. Хочу чтобы вокруг было много женщин
                                                                    3. Хочу чтобы никогда не было недостатка воды

                                                                    Рыбка, взмахнула хвостиком и сделала его унитазом в женском туалете.

                                                                    Так давайте выпьем за правильную постановку техзадания.
                                                                  +7
                                                                  Это значит одно — на продукте экономят. Я ещё не видел, чтобы экономия на чём-то когда-либо привела к чему-то хорошему здесь и сейчас, особенно в разработке.
                                                                +19

                                                                Знаете, я вот был таким Славиком, который получив такую задачу немедленно спросил "а что с часовыми поясами". И знаете, какой ответ я получил? Гробовое молчание и "ну делайте как-нибудь".

                                                                  +2
                                                                  Поэтому я и обращаюсь ко всем Славикам. Нужно чтобы после такого ответа голова не отключалась, а включалась, и думала, как это сделать лучше.
                                                                    0

                                                                    А толку-то от того, что она включилась? Ни ответа на вопрос, как надо, ни времени сделать правильно все равно не дадут.


                                                                    Обратите внимание, что в вашем примере начальство одобрило. Почему вы думаете, что Славик будет знать, как надо, лучше начальства?

                                                                      +2
                                                                      Если бы вместо даты и «Добро пожаловать на борт», Славик написал часовой пояс, время и «Автобус отправляется во столько-то», то времени он бы больше не потратил.

                                                                      Здесь просто разница в том, поставил ли он себя на место клиента-получателя смс, или нет.
                                                                      Обратите внимание, что в вашем примере начальство одобрило. Почему вы думаете, что Славик будет знать, как надо, лучше начальства?

                                                                      Нипочему. Зависит от подхода. Начальству пофиг, Славик тоже не вник, никто не вник. А люди в итоге испытывают проблемы.

                                                                      Эта СМС-ка — настоящая, от настоящего перевозчика. Кто там накосячил — Славик или его тимлид — не важно. Важно, что эта смс-ка вышла в продакшн именно такой. Из-за того, что на место клиента никто из всей цепочки себя не поставил.
                                                                        +19
                                                                        Здесь просто разница в том, поставил ли он себя на место клиента-получателя смс, или нет.

                                                                        Поставил. Его, как получателя, проблема часового пояса никогда не волновала, он всегда считал, что везде всегда указывается местное время. Так и сделал. Откуда ему взять часовой пояс, если в БД его нет?


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


                                                                        Из-за того, что на место клиента никто из всей цепочки себя не поставил.

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

                                                                          +1
                                                                          Поставил. Его, как получателя, проблема часового пояса никогда не волновала, он всегда считал, что везде всегда указывается местное время. Так и сделал. Откуда ему взять часовой пояс, если в БД его нет?

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

                                                                          Просто написать «Прибытие в 01:00 по местному времени». Всё, времени потратится ровно столько, сколько нужно на написание шести слов. Всегда можно найти оправдание, вместо того, чтобы сделать хорошо. Правда может не хватить опыта и знаний на несколько слов с заботой?
                                                                            +4
                                                                            Просто написать «Прибытие в 01:00 по местному времени».

                                                                            Это же очевидно. Зачем писать очевидные вещи?


                                                                            Всё, времени потратится ровно столько, сколько нужно на написание шести слов.

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


                                                                            Знаете, я тут как-то делал маленький GPS-трекер и с удивлением выяснил, что никто из постановщиков задачи ничего не знает про системы координат. Им просто не приходило в голову, что это нужная информация, хотя они занимаются задачей полгода.


                                                                            Правда может не хватить опыта и знаний на несколько слов с заботой?

                                                                            Да.

                                                                              0
                                                                              Это же очевидно. Зачем писать очевидные вещи?

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

                                                                              Грустно.
                                                                                +6
                                                                                «Добро пожаловать на борт» — не очевидный показатель прибытия автобуса?

                                                                                Нет, форма вежливости.

                                                                                  +2
                                                                                  Форма вежливости не должна вызывать таких сомнений
                                                                                    +10

                                                                                    У того, кто писал, и не вызывала.


                                                                                    Слушайте, у вас вообще там такая постановка задачи и такое количество допущений (например, в задаче не указано, когда должно отправляться сообщение), что вообще неизвестно, что реализовано правильно, а что — нет. И тут дело не в том, что не подумали о людях, а в том, что не умеют работать с требованиями. Я не удивлюсь, если в БД хранится местное время, но рассылка думает, что это время сервера, и рассылает по нему (это, кстати, прекрасно объясняет ситуацию "автобус в час, смс-ка в полночь" — разница во времени между Москвой и Вроцлавом ровно такая). И отсюда начинается такое змеиное гнездо вопросов "как правильно", что формулировка смс-ки будет там наименьшей проблемой.

                                                                                      0
                                                                                      Если углубляться в технические детали, вы правы. Допущений о причинах много, а результат реальный. И я хотел сделать ударение на результате используя абстрактный пример, в общем-то.
                                                                                        +5

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

                                                                                          0
                                                                                          Можно сделать логичный вывод, что когда «думать не умеют», то «подумать о людях» тем более не получится
                                                                                            +5

                                                                                            Э нет. "Подумать" — не означает "хорошо подумать".


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

                                                                                              +5
                                                                                              Вспомнил соревнования по спортивным танцам. Там была такая устойчивая шуточная фраза-пожелание тренеров ученикам перед соревнованием «Танцуйте хорошо. Плохо не танцуйте».
                                                                                                0
                                                                                                Из этой же оперы: «пишите код сразу без багов».
                                                                                +2
                                                                                >Это же очевидно. Зачем писать очевидные вещи?
                                                                                Это не очевидно. Прежде чем такое написать, надо проверить, что остальная система действительно выдаёт числа во времени автовокзала, а не времени места покупки билета, времени датацентра, времени места рождения водителя автобуса или даже внезапно по времени Гринвича…
                                                                                  +1
                                                                                  Это не очевидно.

                                                                                  Кому и что не очевидно?


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

                                                                                  Я ровно про это и написал.

                                                                                  0
                                                                                  Это же очевидно.

                                                                                  Каким образом из этой смс очевидно, что отправление в 1:00? Из билета — да. А в смс это не написано.

                                                                                    0
                                                                                    Каким образом из этой смс очевидно, что отправление в 1:00?

                                                                                    А должно быть? В исходной задаче про время отправления нет ни слова.

                                                                                      +1

                                                                                      Вы написали — "Это же очевидно. Зачем писать очевидные вещи?".


                                                                                      Зачем вы пишете "это же очевидно", если на самом деле это не очевидно?

                                                                                        0

                                                                                        "Очевидно", что сообщения в СМС достаточно. В смысле, разработчику очевидно, что оно удовлетворяет поставленной задаче.

                                                                                          0

                                                                                          Но не очевидно, что в смс указано местное время. Пользователи тупее, чем мы о них думаем. Для них нужно писать и то, что кажется нам очевидным.

                                                                                            +1
                                                                                            Но не очевидно, что в смс указано местное время.

                                                                                            Кому не очевидно? Во-первых, там вообще не указано время. А во-вторых, разработчику вполне очевидно, что если указано, то местное.


                                                                                            Пользователи тупее, чем мы о них думаем.

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

                                                                                  +6
                                                                                  По-хорошему — этот текст должны писать люди, далёкие от кода. Это текст. UX, если хотите. В вашем примере, от Славика требуется уметь абсолютно всё помимо программирования, и желательно сразу качественно. Но тот кто ставил задачу мог подумать о бренном, и ему вовсе не обязательно уметь для этого в PHP.
                                                                                    0
                                                                                    Безусловно. Но по итогу имеем только кривую смс-ку и не знаем, кто виноват.
                                                                                      +4
                                                                                      если не знаем кто виноват — то значит виноваты архитектор (или тот кто его заменял, когда проектировал) данного бизнес-решения, и тот кто его туда назначил.
                                                                                        +5
                                                                                        Поэтому на всякий случай обвиним программиста, а PS к статье напишем «ну может и не программист виноват, не важно».
                                                                                      +1
                                                                                      Конкретно по текстам смс или писем — бывает, что разработчик не вправе изменить даже одну букву в тексте, который утвердил какой-нибудь совет директоров, на который разработчика, естественно не приглашали.
                                                                                    +6
                                                                                    Кто там накосячил — Славик или его тимлид — не важно.

                                                                                    Тогда пишите историю про маркетолога Петю, который решил, что в смс обязательно должно быть "Добро пожаловать на борт". И потом в послесловии напишите, что неважно, кто накосячил — маркетолог Петя, или студент Володя, важно, что смска вышла в продакшн именно такой.

                                                                                      +2
                                                                                      Думаю, за кадром были не только маркетологи, но экономисты. И они не забыли подумать про экономию символов при отправки смс, чтобы счет был поменьше. И Славику вообще было не разгуляться.
                                                                                        +2
                                                                                        И они не забыли подумать про экономию символов при отправки смс, чтобы счет был поменьше.

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

                                                                                          +2

                                                                                          На дату, что забавно, символов хватило. А на время — нет. Хвала маркетологу за правильно расставленные приоритеты.

                                                                                  +4
                                                                                  Кажется, на Славика хотят повесить не только реализацию задумки, но и обдумывание деталей и тонкостей реализации. Вот тут не ясно, зачем тогда таск оформили без участия Славика. Можно было всем вместе подумать. И у Славика поинтересоваться, как хранятся днные в БД, насколько усложнится задача при учёте часового пояса, и трудно ли выдавать это всё в коротком сообщении. Ах, да, кто в команде ездил межгородом?
                                                                                  Позиция автора мне понятна. Миру мир, дружба и жвачка.
                                                                                  Но давайте не будем полагаться на универсальных людей. Давайте сами научимся головой думать, и не ожидать от других, что они будут додумывать за вас, пока у вас тут более важные дела, чем у них. Пожалуйста.
                                                                                    +3
                                                                                    Вообще это важная часть работы программиста — сообщать о тонкостях, выясненных в процессе разработки. Потому что из нее состоит около 50% работы.
                                                                                      0
                                                                                      У меня так и написано. Но постановщику в этом примере так не кажется.
                                                                                  +3
                                                                                  А вот делаю сейчас проект один — там часть вещей завязана на дату/время. Так заказчик прямо говорит — часовыми поясами — не заморачиваться совсем, считать, что у пользователя стоит правильный часовой пояс на мобильном устройстве и что от сервера время в нем же прилетает.
                                                                                  У них клиенты именно из этого пояса. Правда ничего не мешает клиенту в поездке по России быть и то что из-за этого мобильное устройство покажет не совсем верные данные/не даст сделать операцию хотя должно — не учитывается.
                                                                                    +2
                                                                                    считать, что у пользователя стоит правильный часовой пояс на мобильном устройстве и что от сервера время в нем же прилетает.

                                                                                    А есть какой-то другой вариант? Если у пользователя стоит неправильный часовой пояс — узнать правильный, в общем, нельзя.

                                                                                      +4
                                                                                      Можно писать часовой пояс в сообщениях. Если пользователь в Мурманске, а у него в смске «Грузите апельсины бочками в 7:00 Asia/Yekaterinburg» (или «7:00 MSK-2») то он может что-то заподозрить.
                                                                                        0
                                                                                        Можно писать часовой пояс в сообщениях. Если пользователь в Мурманске, а у него в смске «Грузите апельсины бочками в 7:00 Asia/Yekaterinburg» (или «7:00 MSK-2»)

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

                                                                                          0
                                                                                          Показать ему часовой пояс, в котором он вводит время, каким временем воспримет его программа.
                                                                                        +1
                                                                                        Геолокацией?
                                                                                          0

                                                                                          Геолокация может быть отключена.
                                                                                          Автоматическая установка часового пояса по сети оператора не всегда срабатывает корректно. И тоже может быть отключена

                                                                                            0
                                                                                            Тут я даже больше скажу — у оператора «Мегафон — Поволжье» уже лет десять часовой пояс сети приходит как «Europe/Moscow». То есть, GMT+3.

                                                                                            Не то чтобы я очень сильно хотел в этом разобраться, правда, — на всех виденных мной мобильных устройствах за этот период я не видел «Europe/Samara» в списке доступных зон, а обновить на них (на андроиде) tzdatabase — поленился.

                                                                                            Так что, может, сам виноват. Но анекдот такой присутствует.
                                                                                          +1
                                                                                          Если у пользователя стоит неправильный часовой пояс — узнать правильный, в общем, нельзя.
                                                                                          Если в телефоне стоит "[+] брать часовой пояс у сотового оператора", то он может иметь никакое отношение к реальности.
                                                                                          Мне 2ГИС отказывался показывать транспорт, потому что думал, что тот уже сегодня не ходит.
                                                                                            +1
                                                                                            Речь немного про другое — все временные отметки что используются — по умолчанию считаются локальными. Таймзона/UTC/MSK-время вообще нигде не передается.
                                                                                            Пример 1 — если текущее время в интервале от 10 до 19 то приложение должно показывать часть данных одним способом, иначе другим. Если пользователь в другом часовом поясе — используется его локальное время для определения способа. Ладно, эти данные все равно фактически справочные для тех кто НЕ в этом поясе потому что жесткая привязка к местности.
                                                                                            Пример 2 — есть данные, валидные до (или после) определенной временной метки (тут уже и дата и время важны). Если они уже/еще не валидны — это надо отражать в интерфейсе. При этом использование этого набора данных — возможно и имеет смысл из любого часового пояса. Пользователь в принципе может принять решение на базе не совсем правильных данных.

                                                                                            Да, если пользователю не понравится — жалоба в поддержку (скажем так) и пользователю возможно компенсируют потери из-за неправильных данных. Может быть. После подачи заявления в письменном виде.
                                                                                            А нам потом прилетит запрос оценить сколько будет стоить сделать учет поясов.

                                                                                            А насчет того что нельзя узнать правильный пояс (хотя тут это не особо важно, с учетом что мы вообще не учитываем его). С чего это вдруг? GPS приложению в одном из режимов нужен, можно его же и использовать для определения локации (либо попробовать по IP и если подозрение что по IP не родной пояс — запускать GPS/просить пользователя дать разрешение если он еще не дал).

                                                                                              0
                                                                                              GPS не содержит пояса, содержит координаты и точное стандартное время. Думаете, это простая задача по координатам выдать пояс?
                                                                                                0
                                                                                                А нам и надо координаты и время.
                                                                                                Речь про подход из поста mail.ru habr.com/company/mailru/blog/242645 (варианты №4(для которого пояс вообще не нужен — его определять надо в этом случае) и №3(где координаты страхуют от проблем с тем что у пользователя — сменился пояс, причем возможно — не очевидным образом).
                                                                                                Ну да — нужна база для определения поясов по координатам, хоть какая то.
                                                                                                  0
                                                                                                  Бггг) В том и фокус, что ее нет и не будет.
                                                                                          +2

                                                                                          Ну вот я постоянно получаю такое молчание, поэтому делаю как считаю нужным. Люди вообще плохо понимают время, причем все — начиная с бизнес-аналистов и кончая финальными пользователями.


                                                                                          И история не выдуманная: был проект онлайн системы продажи билетов в кинотеатры, в которой люди с островов не могли купить билет за час до сеанса, потому что там внезапно на час меньше, чем на континенте. Еще эпичнее выглядел фикс: вместо введения таймзоны во всем коде понатыкали что-то вроде: if (Canarias) hour = hour — 1;

                                                                                            0
                                                                                            Ну вот я постоянно получаю такое молчание, поэтому делаю как считаю нужным.

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


                                                                                            Люди вообще плохо понимают время, причем все — начиная с бизнес-аналистов и кончая финальными пользователями.

                                                                                            Дадада, люди плохо понимают время, но вот конкретно вы-то его понимаете хорошо, парвда же?

                                                                                              0
                                                                                              Еще эпичнее выглядел фикс: вместо введения таймзоны во всем коде понатыкали что-то вроде: if (Canarias) hour = hour — 1;

                                                                                              Возможно, придётся перетыкивать обратно. Испания думает отказаться от переходов на летнее/зимнее время и заодно вернуть Канары в тот же пояс, где остальная страна. Фраза «una hora menos en Canarias» может кануть в Лету.

                                                                                                0

                                                                                                Ну да, есть такое. И впринципе поддерживаю. Астрономически постоянный GMT+1 будет для Испании оптимальным. Другое дело, после такого перехода как всегда начнется всеобщий месячник хаоса. Кое-что сломается сразу (как с Канарскими), кое-что будет глючить втечение месяца (ОС апдейтнула tzdata, а БД еще в старой зоне), а что-то затаится, выжидая следующего перехода на летнее/зимнее время.

                                                                                                  0

                                                                                                  А где можно почитать про планы Испании? Я думал, что выгода от летнего времени все еще ощутима, даже там где и так солнечно и тепло.

                                                                                                    0

                                                                                                    Ну, в Испании, солнечно далеко не всегда и не везде, да и тепло тоже :)
                                                                                                    Почитать можно ну, например, тут. GMT+2 в свое время ввел еще Франко, чтобы быть в одном часовом поясе с Германией времен Гитлера. В итоге дневная жизнь сильно сместилась: испанцы в отличие от европейцев поздно начинают работать, поздно обедают и поздно ужинают. Сейчас в правительстве обсуждают вернуться в зону GMT+1 без перевода на летнее время. Кстати, уже вроде бы доказано, что ущерб от перевода на летнее/зимнее время превышает выгоду.

                                                                                              +8
                                                                                              Непонятно, почему ответственный сервис придумывает и запускает в одиночку программист, без никакого тестирования. Программист — он пишет программы, он не может по умолчанию знать специфику всех на свете задач, и он человек, то есть делает ошибки. Про важность часовых поясов ему должны были напомнить на этапе постановки задачи, либо было у кого спросить в процессе. Ошибку/недоделку должно было выявить тестирование кем-то помимо него, до выхода обновления в люди. А тут получается просто история, как Славик стал крайним.
                                                                                                0
                                                                                                ответственный сервис
                                                                                                Ответственность данного сервиса — это стабильные и рабочие автобусы, в которых всё работает. Очевидно, ИТ-часть там только-только появилась.
                                                                                                0
                                                                                                Не ясно почему этот пост на Гиктаймс, он должен быть на Хабре (да, я знаю про недавнее слияние).
                                                                                                Еще я бы посоветовал atamanenko не браться за серьезны проекты если у вас в коллективе между Славиком и «начальством» никого больше нет. Наймите людей и не будьте Славиком.
                                                                                                  +2
                                                                                                  Вот смотрю я в таск, перечитываю и не вижу упоминаний про часовые пояса, точного формата сообщения, или хотя бы критериев, которые не учёл наш «Славик». Может постановщика для разнообразия потыкать палкой? «Славик» свою задачу выполнил. И вообще, он — программист, а программисты исполняют, а не думают. Думают постановщики. Тестеры тестят. И вообще, вы там команда или каждый сам за себя? Если хочется хорошего продукта, надо всем его делать, а не на «Славиков» всё вешать и потом собак спускать. Из таких компаний уйдут все «Славики». А руководству отдуваться за три короба обещанного перед заказчиками.
                                                                                                    +3
                                                                                                    «Исполняют, а не думают» — действительно, зачем кому-то думать. Менеджеры должны управлять а не думать, программисты — программировать а не думать, QA — проверять что написано в соответствии с требованиями а не думать, редакторы — писать тексты а не думать, дизайнеры — приду… эээ… рисовать картинки а не думать. А думать зачем, за это деньги не плотят, правда? А потом берешь условную смску или условный скайп и думаешь почему никто в большой компании не утруднил себя подумать секунд десять.
                                                                                                      +1
                                                                                                      Выдираете слова из контекста. Суть в том, что думать о постановке задачи должен постановщик. В постановке описаны инструкции к исполнению, думать о которых программисту за других не должно быть профессиональной необходимости. Программист думает о коде. Тестер думает о возможных проблемных местах, сочиняет синтетические тесты. И да, каждый думает о своей части. Деньги платят за работу по профилю, верно? А не «ты же умный, догадаешься».
                                                                                                        0
                                                                                                        Т.е. программист это тот, кто берет инструкции к исполнению и печатает эти инструкции к исполнению, но уже на языке программирования? А зачем тогда программистам вообще думать?
                                                                                                          +4
                                                                                                          Действительно. Зачем продумывать архитектуру и структуру баз данных, думать о поддержке и красоте кода, отлавливать баги, найденные тестерами. Зачем улучшать производительность? Зачем знать паттерны программирования, уметь командно разрабатывать и поддерживать продукт?
                                                                                                          Вы серъёзно думаете, что программисты просто переписывают из текста в код?
                                                                                                            +1
                                                                                                            А зачем тогда программистам вообще думать?

                                                                                                            pewpew не прав, использовав слово "Думать". Вместо нее лучше взять фразу "Нести ответственность". Потому что думать на самом деле должны все. На каждом этапе разработки: На анализе, на разработке, на тестировании. Если они видят какой-то упущенный ньюанс, то должны сообщать о нем вверх по цепочке. Вот только принятие решения о том, как именно реализовывать — лежит не на разработке и не на тестировании. Эта ответственность на постановщике задач.


                                                                                                            Делать крайним разработчика в этом случае неправильно.

                                                                                                            +2

                                                                                                            Вообще говоря, нормальная практика — уточнять постановку задач.
                                                                                                            Другое дело, что требовать это в 100% случаях нельзя, т.к. читать мысли никто не умеет.

                                                                                                              +1
                                                                                                              Суть в том, что думать о постановке задачи должен постановщик.

                                                                                                              Нет. Постановщик не знает о технических деталях. Например, про смс-гейт в задаче тоже ничего не написано, но Славик нашел гейт протестировал на номерах телефонов из нескольких стран. То есть видно, что он не 60 тыс получает. Часовой пояс может быть очень объемной задачей, но как минимум обратить на это внимание Славик может.

                                                                                                                +1
                                                                                                                Например, про смс-гейт в задаче тоже ничего не написано

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

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

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

                                                                                                                      +4

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


                                                                                                                      Программист, когда отвлекается, работает менее эффективно и допускает больше ошибок.

                                                                                                                      Он добавил в смс дату (видимо по своему самостоятельному решению), но не добавил время. Это ошибка. Про дату в ТЗ ничего не было, зачем он её добавил? Если решил, что так лучше, то значит мог подумать и про время. Я уж не говорю про время отправки смс. За час её отправлять? За два? За 15 минут? Все эти, фактически, не технические решения он принял. Между строк он прочитал или нет, я не знаю.


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

                                                                                                                        +1
                                                                                                                        По вашим словам, постановщику надо урезать зарплату за нечёткость, а Славику добавить за многозадачность и инициативность (тот же подбор гейта). Опять же пост о том, что думать о деталях нужно.
                                                                                                                        А вот кому — об этом и спор.
                                                                                                                        Моё мнение совпадает с мнением классика:
                                                                                                                        Беда, коль пироги начнет печи сапожник,
                                                                                                                        А сапоги тачать пирожник,
                                                                                                                        И дело не пойдет на лад.
                                                                                                                        Да и примечено стократ,
                                                                                                                        Что кто за ремесло чужое браться любит.
                                                                                                                        Тот завсегда других упрямей и вздорней:
                                                                                                                        Он лучше дело все погубит,
                                                                                                                        И рад скорей
                                                                                                                        Посмешищем стать света,
                                                                                                                        Чем у честных и знающих людей
                                                                                                                        Спросить иль выслушать совета.
                                                                                                                      0

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

                                                                                                                    +1

                                                                                                                    Есть ТЗ и работать нужно по нему. Делать больше, чем в ТЗ — это нецелевое расходование времени и средств работодателя.


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

                                                                                                                  0
                                                                                                                  Не знаю, почему всем не понравился именно Славик, посыл-то совсем другой. Добавил пост скриптум с объяснением.
                                                                                                                    +10
                                                                                                                    Не знаю, почему всем не понравился именно Славик, посыл-то совсем другой.

                                                                                                                    Потому что когда вы писали "Думайте о людях. Всегда" вы не подумали о тех людях, которые будут читать ваш пост и не поставили себя на их место.

                                                                                                                      –5
                                                                                                                      Вы неплохо язвите, но ошибаетесь. Это развлекательно-информационный пост для аудитории крупнейшего русскоязычного ИТ-ресурса. Нормально, что кому-то что-то не нравится. Не сравнивайте мягкое с тёплым.
                                                                                                                        +3

                                                                                                                        Вы сначала пишете "не знаю", а потом пишете "нормально, что". Плохо, плохо сочетается.

                                                                                                                          –7
                                                                                                                          Отлично сочетается. Гомосексуализм — это тоже нормально, но я не знаю, почему становятся гомосексуалистами.
                                                                                                                        0

                                                                                                                        Вот это было хорошо. Этот пост теперь — рекурсивный пример про "Славика". :)

                                                                                                                        +8
                                                                                                                        Ну как же так — 'неважно, кто накосячил'? Есть ключевые должности, зона ответственности у каждого своя. Важно, что именно тимлид и тестеры ничего не заметили, или их даже не было вовсе.

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

                                                                                                                          В этом я сомневаюсь. У них тут это в теге title написано, на самом-то деле. А в смс — нет
                                                                                                                            0
                                                                                                                            эти участки могли быть написаны тремя разными Славиками: тот Славик, который в тег тайтл шлет — делал медленно, его таску перекинули на Славика-мидла, который ездит межгородом. А смс — сделал качественно и в срок третий Славик, и потом даже QA ничего не смог возразить — надпись согласно ТЗ.
                                                                                                                            +1

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

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

                                                                                                                              Обычно фразу «Ну да, я не сказал, но и ты не спросил, в итоге оба виноваты» можно слышать от самого виновного, пытающегося эту ответственность размазать.
                                                                                                                          +5

                                                                                                                          А бывает наоборот — делает твоя большая контора большой сайт, тебе говорят — Славик, нарисуй кнопочку "ОК" во всплывающем окне.


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


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

                                                                                                                            +2
                                                                                                                            Самое простое решение проблемы: добавляем в СМС время и слова «по Москве».
                                                                                                                              +2
                                                                                                                              Вот это решение одно из самых правильных с точки зрения юзабилити. Во-первых, из сообщения понятно, что программист подумал о часовых поясах, и учёл их. Во-вторых, сообщение «по местному времени» (как предлагает автор статьи) — абсолютно неинформативное, потому что сразу возникают вопросы, что за местное время имеется в виду. Время у меня на телефоне? В смс-центре? В точке отправления автобуса? А вдруг Славик посчитал местным время на сервере? Совсем хорошо было бы указать действительно местное время (для точки отправления), и тут же назвать часовой пояс.
                                                                                                                                +6

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

                                                                                                                                  0

                                                                                                                                  Предлагаете человеку, который выезжает из Владивостока самому пересчитывать "время по Москве" во время Владивостока? Ненависть — это первое и единственное, что вы получите от такого пользователя. :)


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


                                                                                                                                  Ну а если взрослый человек, который собрался проехаться на междугороднем автобусе (пересекая часовые пояса), не понимает что такое "местное время", то для него очень плохие новости. Может такому придется еще дополнительно объяснить значение слова "автобус"?

                                                                                                                                    0
                                                                                                                                    Возражу вам прямо по пунктам:
                                                                                                                                    1) Человек, который живёт не в московском поясе, скорее всего имеет этакий встроенный навык перевода времени из местного в московское. Это связано с тем, что большинство написанных гиками (здесь это слово имеет негативную коннотацию) сервисов никак не учитывают временные пояса, либо делают это неправильно (что каждый раз мне подтверждают смски из банка).
                                                                                                                                    2) В транспортных услугах принято время указывать когда как. Железная дорога, например, указывает всегда и везде московское время.
                                                                                                                                    3) Речь не о взрослом человеке, который собрался проехаться, а о гике (том самом из п.1), создающем на коленке онлайн-сервис, и вполне возможно не имеющим никакого понятия ни о том, где находится место отправления, ни о том, где находится место прибытия, а о часовых поясах он просто читал как о модной фиче, не поддерживаемой во фреймворке (шутка, но с долей правды).
                                                                                                                                  0

                                                                                                                                  Это если в базе действительно хранится время по Москве, а не по местному времени, где автобус уже лет 30 отправляется со станции в 01:00 летом и зимой… Конвертировать же местное время в московское — тоже очень неблагодарная задача.

                                                                                                                                    0

                                                                                                                                    Знаете, да, что у каждой задачи есть простое, понятное и неправильное решение? Откуда вы возьмете время по Москве (и какая, кстати, от него польза получателю СМС)?

                                                                                                                                    +2
                                                                                                                                    О, помню как раз делал проект, где нужно было вывести время «ровно через n часов от сейчас» (бронирование). Как раз в эту пору в большой прекрасной стране, где приложение, в основном использовалось, устроили реформу часовых поясов… а немного позже — еще одну.
                                                                                                                                      +4
                                                                                                                                      На Хабре уже вроде все привыкли к несменяемому московскому часовому поясу на сайте.
                                                                                                                                        +4
                                                                                                                                        Надо бы еще добавить, что если бы Славик был из другого региона, он бы обязательно вспомнил о часовом поясе. Почти всю жизнь я пробыл в Москве, практически никогда не возникало мыслей про часовой пояс. Год назад переехал в Пермь, ни разу не возникло ситуации, когда бы я про себя не задавал вопрос (это по местному времени или МСК?)
                                                                                                                                          +2
                                                                                                                                          В регионах про часовые пояса знают практически все, хоть часто и путаются со сдвигами относительно других регионов (кроме Москвы).
                                                                                                                                          И кстати, практически все уверены, что москвичи даже не в курсе понятия «часовой пояс».
                                                                                                                                            0
                                                                                                                                            И кстати, практически все уверены, что москвичи даже не в курсе понятия «часовой пояс».


                                                                                                                                            Наверное эти практически все часто сталкиваются с москвичами, которые указывают время созвона, выхода в чат и т.п. без указания часового пояса. Да и шутка про «default city» не на пус