Как бы вы делали эту задачу (переходим к конкретике)...
От: Shmj Ниоткуда  
Дата: 28.08.22 07:29
Оценка: :)
В продолжение темы: https://rsdn.org/forum/job/8342543.flat
Автор: Shmj
Дата: 24.08.22

Многие думают, что главное собрать требования а остальное легко — что требования собрать — это большая часть времени а разработка типа 15%.

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

1. https://rsdn.org/forum/dotnet/8335182.flat
Автор: Shmj
Дата: 14.08.22

2. https://rsdn.org/forum/alg/8340088.flat
Автор: _FRED_
Дата: 21.08.22


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

Вот мое видение на скорую руку: https://rsdn.org/forum/dotnet/8338266.1
Автор: Shmj
Дата: 18.08.22


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

Но! Прав ли я? Во-первых, мое решение не доделано — там сортируется сначала по цифре, потом по строке (но это ладно, можно поменять местами). Второе — не учитываются дубликаты (можно прибавить к каждой записи счетчик или задействовать Berkeley DB, вроде там дубликаты разрешены, но это не точно).

Как бы вы это решали? Искали бы сначала готовую библиотеку или же писали бы с нуля?

Ну и как думаете — если мое решение с LevelDB довести до ума — будет ли быстрее чем предложенные самописные решения на сотнях гигабайт данных? Ведь больше 2-3 Гб. никто проверять не хочет, а это размер, который полностью вмещается в ОЗУ. Когда в ОЗУ перестанет влазить — цифры могут быть другими.

Вот я реально не знаю. Нужно только проверять. А проверить с 50 Гб. данных — уже час времени.
Отредактировано 28.08.2022 7:37 Shmj . Предыдущая версия . Еще …
Отредактировано 28.08.2022 7:31 Shmj . Предыдущая версия .
Отредактировано 28.08.2022 7:30 Shmj . Предыдущая версия .
Re: Как бы вы делали эту задачу (переходим к конкретике)...
От: DiPaolo Россия  
Дата: 28.08.22 07:40
Оценка: +1
S>В продолжение темы: https://rsdn.org/forum/job/8342543.flat
Автор: Shmj
Дата: 24.08.22

S>Многие думают, что главное собрать требования а остальное легко — что требования собрать — это большая часть времени а разработка типа 15%.

Ну и смотрите сами:

S>Ну и как думаете — если мое решение с LevelDB довести до ума — будет ли быстрее чем предложенные самописные решения на сотнях гигабайт данных? Ведь больше 2-3 Гб. никто проверять не хочет, а это размер, который полностью вмещается в ОЗУ. Когда в ОЗУ перестанет влазить — цифры могут быть другими.


И потом вы сами пишете:
S>Вот я реально не знаю. Нужно только проверять. А проверить с 50 Гб. данных — уже час времени.

Даже на простом примере вы, кажется, сами показали, что сколько отнимает времени на конкретно этом примере.

И еще раз, в пятый уже, кажется: вы говорите про задачу, одну фичу в рамках продукта. Этих фич в продукте — десятки и сотни. И помимо разработки этих фич нужно эти фичи придумать, продать, обернуть в красивую оболочку, поддерживать, писать документацию...
Патриот здравого смысла
Re[2]: Как бы вы делали эту задачу (переходим к конкретике)...
От: Shmj Ниоткуда  
Дата: 28.08.22 07:46
Оценка: :)
Здравствуйте, DiPaolo, Вы писали:

S>>Вот я реально не знаю. Нужно только проверять. А проверить с 50 Гб. данных — уже час времени.

DP>Даже на простом примере вы, кажется, сами показали, что сколько отнимает времени на конкретно этом примере.

Это время относится к исследованиям.

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


Продать и пр. — я не считаю, это мне не интересно.
Re: Как бы вы делали эту задачу (переходим к конкретике)...
От: DiPaolo Россия  
Дата: 28.08.22 07:51
Оценка: 2 (1) +1
Чтобы предметнее говорить, и так как вы не можете или не хотите разглашать конкретные примеры продуктов/проектов, вот вам пример ТЗ на рефакторинг готовой системы, рассчитанный на год, находящийся в публичном доступе.

https://dashif.org/docs/Joint-Conformance-Software-InvitationtoBid-V1.01.pdf

Код проекта находится тут https://github.com/Dash-Industry-Forum/DASH-IF-Conformance.

Цели:

3.1 Refactoring
This section describes the refactoring goals at a high level.


3.2.1 Develop the test environment


3.2.2 Code quality metrics


3.2.3 Management structure


3.2.4 Release management


3.2.5 Support documentation


3.2.6 Management reporting


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

Срок исполнения: 1 год.

Заказчик весьма крупный: DVB — комитет, занимающийся вопросами разработки, внедрения и регулирования цифрового телевещания по всей Европе.

Это пример реального ТЗ от реального заказчика. Причем это — не разработка нового, то есть это не продукт. Это — проект в рамках продукта.
Патриот здравого смысла
Отредактировано 28.08.2022 9:49 DiPaolo . Предыдущая версия .
Re[3]: Как бы вы делали эту задачу (переходим к конкретике)...
От: DiPaolo Россия  
Дата: 28.08.22 07:53
Оценка: -1
DP>>И еще раз, в пятый уже, кажется: вы говорите про задачу, одну фичу в рамках продукта. Этих фич в продукте — десятки и сотни. И помимо разработки этих фич нужно эти фичи придумать, продать, обернуть в красивую оболочку, поддерживать, писать документацию...

S>Продать и пр. — я не считаю, это мне не интересно.


Я поражаюсь вашей неспособностью или упорному нежеланию слушать собеседников.
Патриот здравого смысла
Re[2]: Как бы вы делали эту задачу (переходим к конкретике)...
От: Shmj Ниоткуда  
Дата: 28.08.22 08:01
Оценка:
Здравствуйте, DiPaolo, Вы писали:

DP>Заметьте: там нет ничего про новый функционал. По сути, это про наведение порядка и подготовка площадки под дальнейшее активное использование.


А причем тут сбор требований? Наведение порядка — это как раз и есть имплементация. И это реально сложно и долго.
Re[4]: Как бы вы делали эту задачу (переходим к конкретике)...
От: Shmj Ниоткуда  
Дата: 28.08.22 08:02
Оценка:
Здравствуйте, DiPaolo, Вы писали:

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

S>>Продать и пр. — я не считаю, это мне не интересно.
DP>Я поражаюсь вашей неспособностью или упорному нежеланию слушать собеседников.

Речь была о том, что сбор и анализ требований — это основная часть работы. Причем тут продажи и документация?
Re[5]: Как бы вы делали эту задачу (переходим к конкретике)...
От: DiPaolo Россия  
Дата: 28.08.22 08:23
Оценка:
S>Речь была о том, что сбор и анализ требований — это основная часть работы. Причем тут продажи и документация?

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

Итак, изначально была тема (https://rsdn.org/forum/shareware/8324184
Автор: Vlad_SP
Дата: 30.07.22
) в разделе Shareware и бизнес. Это раздел, где обсуждают разработку продуктов и их бизнес-составляющие.

Изначальный вопрос ТСа:

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


Ответ от меня:

Удаленка практически ничем в этом смысле не отличается от работы в офисе. При грамотном менеджменте (управлении) все будет тип-топ и вин-вин. Поясню.

[тут пункты]

Ну и еще раз вернусь к своему тезису в другом треде: стоит все же начать с хорошего руководителя/консультанта.


На что ТС просит совета:

Спасибо, интересно. Расскажи пож как ты видишь такого руководителя/консультанта? Какой опыт/стоимость? Фултайм или можно на несколько часов в неделю именно для выстраивания правильных процессов?

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


Тут вступаете вы:

D>Спасибо, интересно. Расскажи пож как ты видишь такого руководителя/консультанта? Какой опыт/стоимость? Фултайм или можно на несколько часов в неделю именно для выстраивания правильных процессов?

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

Если он этого не сможет — то как как сможет оценить то, чего еще нет?

D>Разработчики как я понимаю предполагаются на полном доверии, интересно.

Как разрешать конфликты внутри команды, когда один из разработчиков говорит что второй ничего не делает. Без умения оценить реальную работу — код — ничего не выйдет

D>Изначально каждая задача переводится в часы на этапе планирования?

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

D>Да и в целом это будет тот еще гемор каждую задачу в часах заранее расписывать.

Не геммор а дурная работа.


Дальше вам говорят, что это не только про кодирование. Вы сказали, что ТС спрашивал про кодирование, на что обращают ваше внимание на раздел форума и то, о чем спрашивал ТС.
Патриот здравого смысла
Re[3]: Как бы вы делали эту задачу (переходим к конкретике)...
От: DiPaolo Россия  
Дата: 28.08.22 08:25
Оценка:
S>А причем тут сбор требований? Наведение порядка — это как раз и есть имплементация. И это реально сложно и долго.

http://rsdn.org/forum/job/8345884.1:
Автор: DiPaolo
Дата: 28.08.22

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

Патриот здравого смысла
Re: Как бы вы делали эту задачу (переходим к конкретике)...
От: Gt_  
Дата: 28.08.22 14:46
Оценка: 15 (1)
Я бы для начала попробовал spark, он даже локально распараллелит чтение
Re[4]: Как бы вы делали эту задачу (переходим к конкретике)...
От: Shmj Ниоткуда  
Дата: 28.08.22 15:03
Оценка:
Здравствуйте, DiPaolo, Вы писали:

DP>

DP>Пишу вам в 5й, и уже последний раз. Дальше мне неинтересно общаться с человеком, который не слышит собеседника.


В той теме вам ответил — здесь обсуждаем другой вопрос — как бы вы решили конкретную задачу. Что-то требования то собрали, а вот как решить — никто сказать не может. Уже 2 недели обсуждаем.
Re[5]: Как бы вы делали эту задачу (переходим к конкретике)...
От: DiPaolo Россия  
Дата: 28.08.22 15:19
Оценка:
S>В той теме вам ответил — здесь обсуждаем другой вопрос — как бы вы решили конкретную задачу. Что-то требования то собрали, а вот как решить — никто сказать не может. Уже 2 недели обсуждаем.

Если нет никаких других требований, то уже в той теме было как минимум 2 решения: от ТСа и от вас. Вот и берем любое. Юзаем. Потому, если вдруг надо будет — оптимизируем. Если изначально было требование по скорости: сразу прикидываем по скорости. Если ни у кого в команде не было очень близкого опыта, чтобы сразу сказать, какое стоит выбрать решение, то создаем специальную задачу на рисерч. Даем ей 3-5 дней на выполнение. На выходе будут несколько рассмотренных вариантов, репорт с цифрами, и уже наброски решения. Потом, исходя из полученных знаний, выбираем окончательное решение и расписываем дальнейшие задачи. После чего делаем финальное решение.

Тут все очень зависит от контекста команды и проекта: какой стек знаний, какой стек CI/CD и прочие подобные вопросы. Одно дело — решить задачу с собеседования, другое — реальная задача в реальном окружении. Это окружение уже задает некоторые рамки, которые также влияют на скорость реализации и принятие решения.
Патриот здравого смысла
Re[6]: Как бы вы делали эту задачу (переходим к конкретике)...
От: DiPaolo Россия  
Дата: 28.08.22 15:28
Оценка:
DP>Если нет никаких других требований, то уже в той теме было как минимум 2 решения: от ТСа и от вас. Вот и берем любое. Юзаем. Потому, если вдруг надо будет — оптимизируем. Если изначально было требование по скорости: сразу прикидываем по скорости. Если ни у кого в команде не было очень близкого опыта, чтобы сразу сказать, какое стоит выбрать решение, то создаем специальную задачу на рисерч. Даем ей 3-5 дней на выполнение. На выходе будут несколько рассмотренных вариантов, репорт с цифрами, и уже наброски решения. Потом, исходя из полученных знаний, выбираем окончательное решение и расписываем дальнейшие задачи. После чего делаем финальное решение.

DP>Тут все очень зависит от контекста команды и проекта: какой стек знаний, какой стек CI/CD и прочие подобные вопросы. Одно дело — решить задачу с собеседования, другое — реальная задача в реальном окружении. Это окружение уже задает некоторые рамки, которые также влияют на скорость реализации и принятие решения.


Дополню: в качестве решения можно элементарно выделить тачку с 128 Гигами РАМа (она может быть в компании) и считать все в памяти. Что еще раз говорит о том, что нужно смотреть на контекст в реальности. А он может быть очень разным. А в другой компании это будет выгоднее считать где-то в кластере облаке.

Еще вопросы, которые я бы задал: насколько часто это нужно делать? На каком железе? Может это надо раз в месяц — можно мощный сервер на это время арендовать (да, тут будет вопрос, как туда сотню гигов закинуть). Может — это надо АРМовом мобильном проце делать на слабой железке, используемой для сетевого сниффера или для НАСа.
Патриот здравого смысла
Re: Как бы вы делали эту задачу (переходим к конкретике)...
От: vsb Казахстан  
Дата: 28.08.22 15:49
Оценка:
Почитал бы про алгоритмы внешней сортировке, выбрал бы оптимальный по скорости работы и реализации, реализовал бы на жава.
Re[2]: Как бы вы делали эту задачу (переходим к конкретике)...
От: Shmj Ниоткуда  
Дата: 28.08.22 19:11
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Почитал бы про алгоритмы внешней сортировке, выбрал бы оптимальный по скорости работы и реализации, реализовал бы на жава.


Почему не применить уже готовое решение, на которое у другого разработчика с зарплатой 200 тыс. долларов в год ушло много месяцев работы? Считаешь что ты умнее?
Re[3]: Как бы вы делали эту задачу (переходим к конкретике).
От: vsb Казахстан  
Дата: 28.08.22 19:17
Оценка:
Здравствуйте, Shmj, Вы писали:

vsb>>Почитал бы про алгоритмы внешней сортировке, выбрал бы оптимальный по скорости работы и реализации, реализовал бы на жава.


S>Почему не применить уже готовое решение, на которое у другого разработчика с зарплатой 200 тыс. долларов в год ушло много месяцев работы? Считаешь что ты умнее?


В целом да, я очень редко встречаю код, которым бы я восхищался. Не знаю, умней ли я, или просто у того разработчика были задачи/требования, отличающиеся от моих (более вероятно). Но в целом я редко надеюсь найти подходящий для меня код. Вот недавно искал bloom filter для JS. Посмотрел несколько реализаций — все отстойные. Написал свою, мне она нравится, работает, ничего лишнего не делает, потратил пару часов, получил немножко фана, выучил 2 алгоритма, ну и нормально. Можешь поглумиться над велосипедистом: murmur332.js, BloomFilter.js
Отредактировано 28.08.2022 19:22 vsb . Предыдущая версия . Еще …
Отредактировано 28.08.2022 19:22 vsb . Предыдущая версия .
Re[7]: Как бы вы делали эту задачу (переходим к конкретике)...
От: Shmj Ниоткуда  
Дата: 28.08.22 19:18
Оценка:
Здравствуйте, DiPaolo, Вы писали:

DP>Еще вопросы, которые я бы задал: насколько часто это нужно делать? На каком железе? Может это надо раз в месяц — можно мощный сервер на это время арендовать (да, тут будет вопрос, как туда сотню гигов закинуть). Может — это надо АРМовом мобильном проце делать на слабой железке, используемой для сетевого сниффера или для НАСа.


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

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

Вместо того, чтобы подобрать хорошее решение — никто не будет закачивать файл по 100 Гб, потом скачивать обратно.
Re: Как бы вы делали эту задачу (переходим к конкретике)...
От: Dym On Россия  
Дата: 28.08.22 19:50
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Ну ок, чтобы далеко не ходить, давайте популярную задачу, которую уже дважды на днях поднимали:

Чего за задача-то? Видео не смотрел и не буду.

S>Требования собраны, всем все понятно.

Хотелось бы их увидеть (в текстовом варианте, Кирилл и Мефодий даровали нам письменность).

S>Идея такая, что для такой задачи не оптимально писать все с нуля а правильнее найти готовое решение.

Идея правильная.

S>Как бы вы это решали? Искали бы сначала готовую библиотеку или же писали бы с нуля?

Мммм, надо смотреть требования.

S>Ну и как думаете — если мое решение с LevelDB довести до ума — будет ли быстрее чем предложенные самописные решения на сотнях гигабайт данных? Ведь больше 2-3 Гб. никто проверять не хочет, а это размер, который полностью вмещается в ОЗУ. Когда в ОЗУ перестанет влазить — цифры могут быть другими.

Вообще не важно. Важно чтобы удовлетворяло требованиям.
Счастье — это Glück!
Re[2]: Как бы вы делали эту задачу (переходим к конкретике)...
От: Shmj Ниоткуда  
Дата: 28.08.22 19:57
Оценка:
Здравствуйте, Dym On, Вы писали:

S>>Ну ок, чтобы далеко не ходить, давайте популярную задачу, которую уже дважды на днях поднимали:

DO>Чего за задача-то? Видео не смотрел и не буду.

Вторая ссылка — там чел. привел под катом в текстовом виде.


S>>Ну и как думаете — если мое решение с LevelDB довести до ума — будет ли быстрее чем предложенные самописные решения на сотнях гигабайт данных? Ведь больше 2-3 Гб. никто проверять не хочет, а это размер, который полностью вмещается в ОЗУ. Когда в ОЗУ перестанет влазить — цифры могут быть другими.

DO>Вообще не важно. Важно чтобы удовлетворяло требованиям.

Запустят на среднестатистическом компе с 8 Гб. памяти, половина из которых занято, и выберут самое быстрое решение, которое отработало 100 Гб. данных.
Re[3]: Как бы вы делали эту задачу (переходим к конкретике)...
От: Dym On Россия  
Дата: 28.08.22 20:09
Оценка: +1
Здравствуйте, Shmj, Вы писали:

DO>>Вообще не важно. Важно чтобы удовлетворяло требованиям.

S>Запустят на среднестатистическом компе с 8 Гб. памяти, половина из которых занято, и выберут самое быстрое решение, которое отработало 100 Гб. данных.
Вот, отсутствуют требования к аппаратному обеспечению, на котором будут проводиться приемо-сдаточные испытания, нет требований по времени, не прописан регламент испытаний. А это все приведет к тому, что заказчики будут мотать вам нервы и шантажировать мотивированными отказами в приемке работ.
Счастье — это Glück!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.