Регистрация  |  Вход

Проблема архитектуры которая встречается очень часто!

Привет.

Наболело, хочу высказаться.

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

Вот типичная ситуация. У клиента есть форма на их сайте где пользователи что-то вводят и сопровождают это своими личными данными. На основании этих личных данных мы должны создать объект Contact к которому впоследствии привязать введенную информацию.

Вот тут и кроется свинья. Так как известно мы боремся за чистоту данных то дубликаты контактов недопустимы. Поэтому кто чисто по email, кто по email + lastname просит находить существующие контакты, апдейтить их обновленной инфой и привязывать с этим существующим контактам данные из формы.

Разве это не бред?

К примеру
пришел Вася - ввел свои данные и засабмитил форму.
Создался Контакт.
Пришел Петя после вчерашнего и ввел свои данные, при этом проипался и ввел email Васи.
Контакт Васи проапдейтился Петеными данными.
Кому теперь принадлежит Контакт?

Хорошо. Не будем апдейтить контакт а просто будем прикреплять к нему данные.
Пришел Вася и вводит новые данные о себе (переехал скажем) и вводит свой email.
Данные не проапдейтились и подарок поехал другому Васе в другой город

Ок, пусть будут всегда новые контакты - тоесть появляются дубликаты. Вся учетка идет по пи... Никакой статистики. Ничего.

Нафига вообще такое придумывать и тем более реализовывать? Ну конечно, бабки клиент заплатил.

Нафига на нормальных сайтах есть система регистрации с подтверждением email чтобы четко идентифицировать пользователя и обновлять и привязывать данные куда надо? Может Facebook лохи и достаточно было просто сделать форму ввода сообщения с полем email отправителя????

Привет.

Наболело, хочу высказаться.

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

Вот типичная ситуация. У клиента есть форма на их сайте где пользователи что-то вводят и сопровождают это своими личными данными. На основании этих личных данных мы должны создать объект Contact к которому впоследствии привязать введенную информацию. 

Вот тут и кроется свинья. Так как известно мы боремся за чистоту данных то дубликаты контактов недопустимы. Поэтому кто чисто по email, кто по email + lastname просит находить существующие контакты, апдейтить их обновленной инфой и привязывать с этим существующим контактам данные из формы.

Разве это не бред? 

К примеру 
пришел Вася - ввел свои данные и засабмитил форму. 
Создался Контакт. 
Пришел Петя после вчерашнего и ввел свои данные, при этом проипался и ввел email Васи. 
Контакт Васи проапдейтился Петеными данными. 
Кому теперь принадлежит Контакт?

Хорошо. Не будем апдейтить контакт а просто будем прикреплять к нему данные. 
Пришел Вася и вводит новые данные о себе (переехал скажем) и вводит свой email.
Данные не проапдейтились и подарок поехал другому Васе в другой город

Ок, пусть будут всегда новые контакты - тоесть появляются дубликаты. Вся учетка идет по пи... Никакой статистики. Ничего.

Нафига вообще такое придумывать и тем более реализовывать? Ну конечно, бабки клиент заплатил.

Нафига на нормальных сайтах есть система регистрации с подтверждением email чтобы четко идентифицировать пользователя и обновлять и привязывать данные куда надо? Может Facebook лохи и достаточно было просто сделать форму ввода сообщения с полем email отправителя????

Или я чего-то не понимаю?

Или я чего-то не понимаю? :D 

Я бы, конечно, Contact не создавал, а делал как все - создавал Lead. Но это вопрос поставленных процессов в компании.

Dmitry Shnyrev
Пришел Петя после вчерашнего и ввел свои данные, при этом проипался и ввел email Васи.
Ну, знаешь ли. Это такой редкий случай. Один на миллион, я бы сказал.

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

Я бы, конечно, Contact не создавал, а делал как все - создавал Lead. Но это вопрос поставленных процессов в компании.  
[quote="Dmitry Shnyrev"]Пришел Петя после вчерашнего и ввел свои данные, при этом проипался и ввел email Васи. [/quote]Ну, знаешь ли. Это такой редкий случай. Один на миллион, я бы сказал.  

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

Ну как не архитектуры?
Клиент ожидает видеть результатом работы "правильные" данные на орге.
А если создается возможность для появления "неправильных" данных это проблема!

Я кстати как то давно видел одну архитектуру которая работала с деньгами. И самое интересно что там куча манипуляций и каждая имела случаи при которых данные могли "потеряться". Это для меня вообще нонсенс!!!

Когда я читаю многостраничные доклады по поводу того как просто сделать проводку (списать в одном месте и добавить в другом) и это считается реально проблемой которую люди решают потом и кровью. А тут просто на ровном месте позволяют просто в трех шагах алгоритма или нажатии кнопки на UI потерять важные данные. Я этого не понимаю.

Для меня как программиста прежде всего данные а не бизнес процессы. Если контакт(пользователь) отождествляется с Email. То это надо установить максимально точно! И данные должны быть достоверными и быть привязанными к тому контакту который их ввел.

Andrii Muzychuk
Ну, знаешь ли. Это такой редкий случай. Один на миллион, я бы сказал.

Вот именно! если появляется такой случай, то это камень в мой огород.

Ну как не архитектуры?
Клиент ожидает видеть результатом работы "правильные" данные на орге.
А если создается возможность для появления "неправильных" данных это проблема!

Я кстати как то давно видел одну архитектуру которая работала с деньгами. И самое интересно что там куча манипуляций и каждая имела случаи при которых данные могли "потеряться". Это для меня вообще нонсенс!!!

Когда я читаю многостраничные доклады по поводу того как просто сделать проводку (списать в одном месте и добавить в другом) и это считается реально проблемой которую люди решают потом и кровью. А тут просто на ровном месте позволяют просто в трех шагах алгоритма или нажатии кнопки на UI потерять важные данные. Я этого не понимаю.

Для меня как программиста прежде всего данные а не бизнес процессы. Если контакт(пользователь) отождествляется с Email. То это надо установить максимально точно! И данные должны быть достоверными и быть привязанными к тому контакту который их ввел.

[quote="Andrii Muzychuk"]Ну, знаешь ли. Это такой редкий случай. Один на миллион, я бы сказал.[/quote]
Вот именно! если появляется такой случай, то это камень в мой огород.

Dmitry Shnyrev
Клиент ожидает видеть результатом работы "правильные" данные на орге.
А если создается возможность для появления "неправильных" данных это проблема!

Клиент тебе объясняет его понятие "правильные" данные. Именно он для своего бизнеса решает, как должны они должны выглядеть.
Dmitry Shnyrev
Andrii Muzychuk
Ну, знаешь ли. Это такой редкий случай. Один на миллион, я бы сказал.
Вот именно! если появляется такой случай, то это камень в мой огород.

Это камень в огород клиента. И вообще, не камень и ни в чей огород.

Итаг.
Если тебе говорят "хочу красиво", то ты делаешь белую страничку с черным квадратом по-средине. Молча ;-)
Если тебе говорят "надо целостность данных", то ты спрашиваешь "Алена Ковалева с алена.ковалева@мыло.ру" и "Алена Петрова с алена.ковалева@мыло.ру" это один и тот же человек, просто сменивший фамилию, или мы создаем нового человека? Все. Дальше программист реализует ту бизнес логику, которую желает клиент.

[quote="Dmitry Shnyrev"]Клиент ожидает видеть результатом работы "правильные" данные на орге. 
А если создается возможность для появления "неправильных" данных это проблема![/quote]
Клиент тебе объясняет его понятие "правильные" данные. Именно он для своего бизнеса решает, как должны они должны выглядеть.
[quote="Dmitry Shnyrev"]Andrii Muzychuk
Ну, знаешь ли. Это такой редкий случай. Один на миллион, я бы сказал.
Вот именно! если появляется такой случай, то это камень в мой огород.[/quote]
Это камень в огород клиента. И вообще, не камень и ни в чей огород.

Итаг.
Если тебе говорят "хочу красиво", то ты делаешь белую страничку с черным квадратом по-средине. Молча ;-)  
Если тебе говорят "надо целостность данных", то ты спрашиваешь "Алена Ковалева с алена.ковалева@мыло.ру" и "Алена Петрова с алена.ковалева@мыло.ру" это один и тот же человек, просто сменивший фамилию, или мы создаем нового человека? Все. Дальше программист реализует ту бизнес логику, которую желает клиент.

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

Вот как раз переношу сообщение с другой ветки (хз как она туда попала конечно)

--------------
Как вижу это я.

Если хочется собирать данные с формы от анонимных пользователей то я бы делал это просто в отдельный Custom Object (так сказать в RAW формате) без каких либо созданий других объектов (или как ты отметил Андрей - можно использовать Lead).

Посадил бы девочку за специальную страницу чтобы она получала карточки с данными из формы и уже звонила по указанному номеру уточнять данные. Все равно половину из этих форм придут с неполными/недостоверными данными. А возможно нужно будет получить от клиента доп инфу. После этого будут производиться какие либо действия по постобработке этих данных и созданию других объектов.

Если нужно реально автоматизировать. Тогда пусть после сохранения данных в RAW отсылать письмо на мыло с подтверждением последующего процессинга данных. Тогда Петя не сможет переписать данные Васи без разрешения Васи.

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

А если я плохой человек(конкурент). Я могу за пару минут обрушить все красоту просто нахерачив кучу POST запросов под данные из формы. Кто потом будет разгребать тысячи фейковых контактов на орге?

А клиенты не всегда мелкие попадаются.

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

Вот как раз переношу сообщение с другой ветки (хз как она туда попала конечно)

--------------
Как вижу это я.

Если хочется собирать данные с формы от анонимных пользователей то я бы делал это просто в отдельный Custom Object (так сказать в RAW формате) без каких либо созданий других объектов (или как ты отметил Андрей - можно использовать Lead).
 
Посадил бы девочку за специальную страницу чтобы она получала карточки с данными из формы и уже звонила по указанному номеру уточнять данные. Все равно половину из этих форм придут с неполными/недостоверными данными. А возможно нужно будет получить от клиента доп инфу. После этого будут производиться какие либо действия по постобработке этих данных и созданию других объектов.

Если нужно реально автоматизировать. Тогда пусть после сохранения данных в RAW отсылать письмо на мыло с подтверждением последующего процессинга данных. Тогда Петя не сможет переписать данные Васи без разрешения Васи.

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

А если я плохой человек(конкурент). Я могу за пару минут обрушить все красоту просто нахерачив кучу POST запросов под данные из формы. Кто потом будет разгребать тысячи фейковых контактов на орге?

А клиенты не всегда мелкие попадаются.

Проблема что пока не работаю напрямую с клиентами и задачи уже падают в сформированном виде.
А мне больно видеть что система пилится откровенно кривая и дырявая.

Проблема что пока не работаю напрямую с клиентами и задачи уже падают в сформированном виде. 
А мне больно видеть что система пилится откровенно кривая и дырявая.

Сегодня данные это золото бизнеса!!!

Сегодня данные это золото бизнеса!!!

Dmitry Shnyrev
Посадил бы девочку за специальную страницу чтобы она получала карточки с данными из формы и уже звонила по указанному номеру уточнять данные.
Дима, так и делается ;-)

[quote="Dmitry Shnyrev"]Посадил бы девочку за специальную страницу чтобы она получала карточки с данными из формы и уже звонила по указанному номеру уточнять данные.[/quote]Дима, так и делается ;-)

А, ну тогда я спокоен за наше будущее

А, ну тогда я спокоен за наше будущее :D 

Dmitry Shnyrev
Но вот так сразу брать и раскладывать по системе непонятные данные из непроверенных источников?
Для этого и существует объект Lead. Он никто и звать его никак пока его не конвертнули в Account/Contact.
В большинстве случаев Лиду высылается письмо или звонят на телефон, и если он на него отвечает, то с таким Лидом дальше работают и конвертят его в Account/Contact.
Если нет ответа, то и остается он Лидом.

[quote="Dmitry Shnyrev"]Но вот так сразу брать и раскладывать по системе непонятные данные из непроверенных источников?[/quote]Для этого и существует объект Lead. Он никто и звать его никак пока его не конвертнули в Account/Contact.  
В большинстве случаев Лиду высылается письмо или звонят на телефон, и если он на него отвечает, то с таким Лидом дальше работают и конвертят его в Account/Contact.  
Если нет ответа, то и остается он Лидом.

Dmitry Shnyrev
Проблема что пока не работаю напрямую с клиентами и задачи уже падают в сформированном виде.
А мне больно видеть что система пилится откровенно кривая и дырявая.

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

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

И очень жаль, что когда на основном проекте я говорю: ребята ваша идея полное гавно, которое будет тормозить, будет неюзабельным да и вообще лютый треш который решает проблемы всего 1% конечных пользователей, из-за которого мы будем в дерьме рано или поздно и все равно это снесем. Мне в ответ говорят: 1) они хотят за это заплатить, они за это заплатят, поэтому твое мнение никого не волнует. 2) мы наняли крутого спеца с кучей сертификатов, он говорит что так будет нормально, быстро, удобно и не займет 40 часов времени

Поэтому вывод: если ты простой девелопер - твое мнение никому не интересно.

UPD: и это как не печально касается любой конторы, технологий и проектов.
Помню работал с одним очень классным человеком, который любит делать все красиво, у которого был опыт в .net и он пришел с этим опытом в salesforce и хотел все делать по уму, но очень быстро понял, что его громаднейший опыт тут никому не пригодится, потому что основная задача всех контор, в которых больше 5 человек - выкачать бабло, а не сделать красиво.

[quote="Dmitry Shnyrev"]Проблема что пока не работаю напрямую с клиентами и задачи уже падают в сформированном виде. 
А мне больно видеть что система пилится откровенно кривая и дырявая.[/quote]

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

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

И очень жаль, что когда на основном проекте я говорю: ребята ваша идея полное гавно, которое будет тормозить, будет неюзабельным да и вообще лютый треш который решает проблемы всего 1% конечных пользователей, из-за которого мы будем в дерьме рано или поздно и все равно это снесем. Мне в ответ говорят: 1) они хотят за это заплатить, они за это заплатят, поэтому твое мнение никого не волнует. 2) мы наняли крутого спеца с кучей сертификатов, он говорит что так будет нормально, быстро, удобно и не займет 40 часов времени

Поэтому вывод: если ты простой девелопер - твое мнение никому не интересно.

UPD: и это как не печально касается любой конторы, технологий и проектов.
Помню работал с одним очень классным человеком, который любит делать все красиво, у которого был опыт в .net и он пришел с этим опытом в salesforce и хотел все делать по уму, но очень быстро понял, что его громаднейший опыт тут никому не пригодится, потому что основная задача всех контор, в которых больше 5 человек - выкачать бабло, а не сделать красиво.

В этом релизе вроде классы появились для поиска дубликатов от Salesforce

В этом релизе вроде классы появились для поиска дубликатов от Salesforce

Интересно узнать как это проблема решается в других CRM и вообще любых систем учета клиентов (ну 1c там например). Проблема типовая, но очевидно просто решения нет. 100% кто-то как-то решает.

Интересно узнать как это проблема решается в других CRM и вообще любых систем учета клиентов (ну 1c там например). Проблема типовая, но очевидно просто решения нет. 100% кто-то как-то решает.

Maxim Elets
они хотят за это заплатить, они за это заплатят, поэтому твое мнение никого не волнует
Вот так работают в старапах до 50 человек :)

[quote="Maxim Elets"] они хотят за это заплатить, они за это заплатят, поэтому твое мнение никого не волнует[/quote] Вот так работают в старапах до 50 человек :)

Mike V
Вот так работают в старапах до 50 человек :)

да так по-моему везде работают)

а стартапы которые маленькие, наоборот до момента пока не вырос до 50 человек, они гнут именно свою идею

[quote="Mike V"]Вот так работают в старапах до 50 человек :)[/quote]
да так по-моему везде работают)

а стартапы которые маленькие, наоборот до момента пока не вырос до 50 человек, они гнут именно свою идею

Maxim Elets
да так по-моему везде работают)
а стартапы которые маленькие, наоборот до момента пока не вырос до 50 человек, они гнут именно свою идею

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

[quote="Maxim Elets"]да так по-моему везде работают)
а стартапы которые маленькие, наоборот до момента пока не вырос до 50 человек, они гнут именно свою идею[/quote]
Это не совсем так, у маленького стартапа как правило денег немного и основная задача это дожить до следующего раунда инвестиций, поэтому и гнуться под каждого клиента. Опять таки, у маленькой компании бизнес модель может существенно меняться, следуя за клиентом. Это у большой компании денег уже дохрена, и они могут в каком-то смысле могут класть на кастомеров делая что-то новое. 

Mike V
Maxim Elets
да так по-моему везде работают)
а стартапы которые маленькие, наоборот до момента пока не вырос до 50 человек, они гнут именно свою идею

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

Ну я просто из опыта стартапа в которм работаю говорю. И не претендую на 100% правду по поводу остальных стартапов.
Когда мы были молодыми(и трава зеленее)мы интересовались тем что хочет клиент, но! не всегда это делали потому что клиент у нас не один. Сейчас же когда пошли в гору, когда мы начали выбирать клиентов с большими годовыми оборотами, мы начали так сказать продавать свою жеппу этим клиентам, делать абсолютно все что им надо. И получается что если у нас к примеру 3 клиента, но 2 из них не платят нам за свои хотелки, то их мнение практически не учитывается, и получается что продукт ушел в сторону "хотелки клиента который платит за эти хотелки", и мне иногда боязно что те 2 клиента с громадным оборотом скажут: ребята вы начали пилить чачу которая совсем не ложится в наши бизнес процессы, и мы с вами больше не будем работать. ПС: все клиенты действительно крупные и при деньгах.

[quote="Mike V"][quote="Maxim Elets"]да так по-моему везде работают)
а стартапы которые маленькие, наоборот до момента пока не вырос до 50 человек, они гнут именно свою идею[/quote]
Это не совсем так, у маленького стартапа как правило денег немного и основная задача это дожить до следующего раунда инвестиций, поэтому и гнуться под каждого клиента. Опять таки, у маленькой компании бизнес модель может существенно меняться, следуя за клиентом. Это у большой компании денег уже дохрена, и они могут в каком-то смысле могут класть на кастомеров делая что-то новое.[/quote]

Ну я просто из опыта стартапа в которм работаю говорю. И не претендую на 100% правду по поводу остальных стартапов.
Когда мы были молодыми(и трава зеленее)мы интересовались тем что хочет клиент, но! не всегда это делали потому что клиент у нас не один. Сейчас же когда пошли в гору, когда мы начали выбирать клиентов с большими годовыми оборотами, мы начали так сказать продавать свою жеппу этим клиентам, делать абсолютно все что им надо. И получается  что если у нас к примеру 3 клиента, но 2 из них не платят нам за свои хотелки, то их мнение практически не учитывается, и получается что продукт ушел в сторону "хотелки клиента который платит за эти хотелки", и мне иногда боязно что те 2 клиента с громадным оборотом скажут: ребята вы начали пилить чачу которая совсем не ложится в наши бизнес процессы, и мы с вами больше не будем работать. ПС: все клиенты действительно крупные и при деньгах.