Size: a a a

2020 September 05

SK

Sergey Kapralov in JUG NN
Romian Makhline
хорошо спроектированная система, как ты предлаегаешь, даже если она будет спроектирована по каким то иным принципам при этом удовлетворяющим целям всегда будет давать такой ответ за ограниченное время. проблема в том, что это просто не возможно. ты предлагеашь подход с проектированием на перед всего до мелочей(через интерфейсы и соответственно контракты) это не только "надо подумать" это надо еще сделать и что бы оно работало быстро и что бы... в общем этого что бы много бывает. особенно начнутся проблемы над компксными данными, вдля которых сложно выделить хорошие абстракции. собственно абстракции и то, что они прямо завязаны на мышление разработчика это самое слабое место этой теории. твое и мое виденьего одного и того же объекта сильно разняться, мы оба выделим в какой то момент разные абстракции, они обе будут для нас хороши, но ужасны для другого. мне сложно привести сейчас какой то простой пример, но уверен, что он существует. мы как минимум можем допустить его существование и тогда стройная взаимозаменяемая система с использованием всех благородных принципев резко оказывается довольно сложно управляемой машиной. начинают течь абстракции в том смысле что происходит логический взрыв роста, это не избежно я бы даже сказал основываясь на том, что с течением времени любая программа которая претендует на моделирование действительности сталкивается с тем, что реальность слишком сложна, для упоковывания в байтики на диске на данный момент. это в свою очередь приводит к двойной работе - пока я рефакторю то, что наколякал Вася(я на самом деле врят ли буду рефактироить а как нибудь поверх впилю), ты в свою очередь будешь выделять абстракции.
что то, что это на мой взгляд одно и тоже, толкьо ментальных сил ты потратил больше, а я меньше
> ты предлагеашь подход с проектированием на перед всего до мелочей

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

RM

Romian Makhline in JUG NN
можно выделить цели сиюминутные и цели "на будующее" - цель сиюминутная - операция над данными которую нужно добавить, цель на будующее - класс данных
источник

RM

Romian Makhline in JUG NN
класс тут в смысле вид
источник

SK

Sergey Kapralov in JUG NN
Sergey Kapralov
> ты предлагеашь подход с проектированием на перед всего до мелочей

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

SK

Sergey Kapralov in JUG NN
С первыми билдами станет проглядываться некий паттерн в поведении бизнеса. Тогда можно попытаться сделать предположения об абстракциях, выделить цели.
источник

SK

Sergey Kapralov in JUG NN
На раннем этапе, пока кода мало, ошибка в целях стоит не дорого.
источник

SK

Sergey Kapralov in JUG NN
А на позднем этапе вероятность впороться по целям будет уже мала.
источник

RM

Romian Makhline in JUG NN
наверное не понимаю, что подразумевается под словом "цель". на мой взгляд "цель" это то, куда стремится проект и/или его часть. наприимер у сервиса UserService вероятно цель в обработке запросов связанных с пользователями. мы закладываем эти цели исходя из наших весьма и весьма субьективных представлений о некой модели. если мы говорим именно о моделировании. в моем понимании UserService не обрабатывает никаких запросов, это структура данных описывающая набор действий над классом User, то есть над видом. в моем понимании на класс надо смотреть как на некий вид данных сгруппированных по некотороемому признаку. например мы выделим класс User, то есть сущность обладающая, но не ограниченная, пользователем системы. в таком случае сам User это не более чем дто, набор признаков. все действия над пользователем выполняются соответствующим сервисом и это выглядит стройно и логично.
если мы посмотрим с этой стороны на архитектуру приложения, мы увидем, что для нас легко из данных извлечь виды и легко определить операции над этими данными
источник

RM

Romian Makhline in JUG NN
вот о чем я говорю, когда говорю о целях - данные и операции над ними
источник

SK

Sergey Kapralov in JUG NN
Romian Makhline
наверное не понимаю, что подразумевается под словом "цель". на мой взгляд "цель" это то, куда стремится проект и/или его часть. наприимер у сервиса UserService вероятно цель в обработке запросов связанных с пользователями. мы закладываем эти цели исходя из наших весьма и весьма субьективных представлений о некой модели. если мы говорим именно о моделировании. в моем понимании UserService не обрабатывает никаких запросов, это структура данных описывающая набор действий над классом User, то есть над видом. в моем понимании на класс надо смотреть как на некий вид данных сгруппированных по некотороемому признаку. например мы выделим класс User, то есть сущность обладающая, но не ограниченная, пользователем системы. в таком случае сам User это не более чем дто, набор признаков. все действия над пользователем выполняются соответствующим сервисом и это выглядит стройно и логично.
если мы посмотрим с этой стороны на архитектуру приложения, мы увидем, что для нас легко из данных извлечь виды и легко определить операции над этими данными
Под целью я подразумеваю потребность *клиента* в определенной функциональности. Цель существует только в контексте клиента. Клиентом может выступать на высших уровнях — потребитель (юзер, кастомер), либо компонент (в примере с лампочками таким клиентом был скедулер). Именно клиент определяет цель.

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

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

RM

Romian Makhline in JUG NN
писал писал и передумал писать, лол.
короч, я чот устал и пожалуй свернусь.
у меня нет опыта проектов на ранних стадиях, помимо моих пет проектов, поэтому мне сложно судить как это выглядит. хотя был один проект, но там я сразу занимался одной кокретной задачей в отдельном загоне сам по себе, поэтому н могу и не буду судить а как оно в начале пути. но на скольких проектах бы я не был(7мь) всегда одно и тоже - границы между всем размыты, разработчики условно поделены на комманды, реального раздления нигде нет. мы одна большая шведская семья.
источник

RM

Romian Makhline in JUG NN
вообще все очень условно у нас в индустрии. и по моему опять же опыту - это хорошо
источник

SK

Sergey Kapralov in JUG NN
Romian Makhline
вообще все очень условно у нас в индустрии. и по моему опять же опыту - это хорошо
Ну вот те хорошо, а мне интересно разобраться в первопричинах. Мои разбирательства привели меня к определенным выводам, которые пересеклись с ЕО-коммьюнити местами. И то что те хорошо, еще не значит что я религиозный сектант и должен быть запрещен. Обидно, ппц как.
источник

RM

Romian Makhline in JUG NN
условность хорошо потому что все всегда находиться в движении. эти размытые границы позволяют как раз благополучно преживать серьезные "штормы", завтра сгорят сроки, срочные правки, изменения требований и все такое с минимальными время затратами. костылишь и ничего тебя не сдерживает кроме растущего технического долга.
источник

RM

Romian Makhline in JUG NN
Прочитал половину книги кстати уже.  Много вещей на уровне коммон сенс, но столько же и вещей с которыми лично я оч не согласен. А какие то вещи вызывают у меня и вовсе приступы. Например та часть про юнит тесты и фейк объекты.
источник

RK

Roman Khlebnov in JUG NN
Мне кажется что вы, господа, просрали вечер пятницы
источник

SK

Sergey Kapralov in JUG NN
Romian Makhline
Прочитал половину книги кстати уже.  Много вещей на уровне коммон сенс, но столько же и вещей с которыми лично я оч не согласен. А какие то вещи вызывают у меня и вовсе приступы. Например та часть про юнит тесты и фейк объекты.
Что не так с фейкаим?
источник

SK

Sergey Kapralov in JUG NN
Roman Khlebnov
Мне кажется что вы, господа, просрали вечер пятницы
Мне это вообще было не нужно. Просто я заебался уже, сыт по горло оскорблениями подобного рода. Вспылил.
источник
2020 September 07

SS

Sergey Smyshlyaev in JUG NN
Romian Makhline
Заходят однажды социолог, искусствовед и инженер в бар. Кто из них вероятнее всего террорист? По мнению двух британских исследователей Диего Гамбетты и Стефена Хертога, это инженер. В относительно недавней книге они показывают, что вероятность для инженера стать радикальным (исламским) террористом – в 3-4 раза выше, чем у выпускников по другим специальностям. И разгадка тут не в том, что инженеры просто нужнее для террористов, потому что умеют конструировать вещи. Основываясь на статистике, авторы говорят, что разгадка - в особом «инженерном мировоззрении». Это мировоззрение имеет одну решительную черту, которая, вероятно, сближает инженеров и террористов: стремление к когнитивному замыканию (closure), или, иначе говоря, предпочтение порядка и нелюбовь к двойственности и неоднозначности. Та же черта характерна и для членов организаций с радикальными правыми взглядами, пишут авторы, и инженеров среди них тоже довольно много.

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

Лично я согласен с критикой некоторого единого инженерного мировоззрения. К примеру, беглый анализ образования террористов-революционеров в конце XIX в Российской империи показывает, что там были и люди с техническим образованием, и с гуманитарным. Но в то же время я согласен и с тем, что в современных разработках и внедрении технологий нужно как из аксиомы исходить из разных перспектив, разных интересов, разных представлений. И об этом – уже в защиту инженеров – есть чудесная книга Гуру Мадхавана «Думай как инженер». Вроде бы тоже о мировоззрении, но совсем иначе.
Звучит странно, ведь если ты принимаешь какую-то религию, то количество противоречий в твоей голове резко возрастает
источник

SS

Sergey Smyshlyaev in JUG NN
При условии что ты образованный человек
источник