Здравствуйте, jhfrek, Вы писали:
ПМ>>>1. Если человек не в состоянии обратить список, способен ли он вообще написать что-нибудь разумное или сразу нафиг?
J>вообще, это задачка с первых семинаров на ВМик МГУ Если не умничать, пытаясь сразу написать программу, а нарисовать список в виде прямоугольничков, решение становиться тривиальным и очевидным
Вот именно. И если человек не пытается разработать какой-нибудь способ решение (например, не пытается что-то нарисовать, дать говорящие имена переменным, описать задачу словами, свести её к более простой, например, с помощью рекурсии) — значит человек не в состоянии решать никакие задачи. Максимум что он может — это как робот перевести ТЗ на сишарп, не думая. Как правило в результате такого перевода получается говнокод. Говнокодеры нам не нужны.
Здравствуйте, b-3, Вы писали:
b-3>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, b-3, Вы писали:
b-3>>>Здравствуйте, gandjustas, Вы писали:
G>>>>Я не перепутал, я именно их и имел ввиду. Потому что в твоем способе разница нужна между парой рядомстоящих локальных экстремумах. b-3>>>Ну, значит после второго фейла идём гуглить. Более того: вообще в жизни алгоритм ищется, а не придумывается. Вот только чтоб знать, что искать, нужно проблему идентифицировать, упростить, обобщить, и в нескольких эквивалентных вариантах представить) Потому что алгоритмов, если верить старику Дейкстре, всего лишь примерно сто, а алгоритмически сложных задач сто раз по сто, и одно к другому свести уметь надо) G>>Не умничай, задачу то ты не решил. b-3>Я инициировал процесс разработки, который на ранней стадии дал прототип, что уже приятно для заказчика и который, в конечном счёте, после тестирования и переписывания кода, приведёт к решению задачи.
Бла-бла-бла, в итоге никуда не приведет. Ты так своему ПМу рассказывай почему ты так долго пишешь.
b-3>Ты объективно оценил свои возможности и написал дубовый код с n проходами, а то и вовсе отказался решать задачу.
Я-то знаю как эту задачу решить. А если бы не знал, то сделал бы в несколько проходов,. И вот уж если бы не устроило, то гуглил бы как решить задачу более оптимальным способом.
b-3>Соискатель должен понимать, в какую фирму он устраивается. Если б я устраивался конфигурации для 1с писать, боже меня упаси сложные алгоритмы на собеседовании придумывать. А если б в игродев, так понимал бы, что после слов "без готового фреймворка я это писать не буду!" со мной распрощаются) Я себе новую подпись придумал, кстати.
Для программиста очень важно быстро выдавать результат. Результат должен быть корректен, хотя может быть и неполным.
А ты предлагаешь долгий процесс разработки, который выдает некорректный результат и лишь надежду на то что результат станет станет когданить корректным.
Здравствуйте, samius, Вы писали:
S>Ты неимоверно пафосно облажался с этим решением. Думаю, что вряд ли такое понравилось бы собеседующим. Одно дело — просто не решить. Другое — не решить ТАК Хоть бы извинился...
Не собираюсь я извиняться перед тем, кто код даже не написал и всем перед этим нахамил Ну ниже своего достоинства для MVP двигать немытые указатели.
Ну пусть ищет работу там, где от программиста ничего, кроме straightforward кода, знания мелкомягких API и умения быковать не требуется, мы вряд ли с ним конкурентами окажемся)
Я принял заведомо неравный вызов: "я заранее знаю решение, а вы пишите код и я покритикую, да заодно вопить, без ссылки на страницу, что я его не нагуглил, а прочитал у Кнута". Это вообще любимое занятие, он уже тут начал интересоваться, как я буду делать вставки в сортированный (20 лучших фильмов) массив Вполне достойно выступил. И если в аналогичном коде на Haskell не будет этих ошибок, то это только потому, что этот код никто не стал писать
Перед людьми, отказывающимися думать, пробовать и ошибаться, извиняться не в моих правилах, уважаемый
Забанен с формулировкой "клинический дисидент".
Re[25]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, b-3, Вы писали:
b-3>>>Здравствуйте, gandjustas, Вы писали:
ПМ>>>>>Постоянно — это всегда. Программирование — это и есть написание алгоритмов. G>>>>Неверно. Современное программирование — комбинирование существующих алгоритмов. b-3>>>Так задачу на комбинирование (именно комбинирование, а не вызвать готовую функцию API) ты ж тоже завалишь G>>Комбинирование — и есть вызов готовых функций. У тебя какое-то другое понимание комбинирования?
ПМ>Задача обращения списка и строится из вызова готовых фунций (главным образом функций присваивания), если человек не может скомбинировать эти функции надлежащим образом, то и более сложную программу он не напишет.
Присваивание не является реализацией какого-либо алгоритма.
Ты вообще-то можешь не продолжать отстаивать свою точку зрения, так как уже признал что она является лишь капризом, а не необходимостью.
Здравствуйте, b-3, Вы писали:
b-3>Перед людьми, отказывающимися думать, пробовать и ошибаться, извиняться не в моих правилах, уважаемый
Если с этой фразы начинать собеседование, то сэкономишь время и себе и собеседователям.
Re[23]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Нет, это способ отсеять тех кто не писал разворот списка последние полгода.
ПМ>Нет, это именно способ отсеять тех, у кого голова соображает настолько плохо, что они не могут решить эту задачу. ПМ>Если человек помнит, как решать эту задачу (т.е. писал её в последние полгода), я дам другую и отсею его, если выяснится, что он не соображает, а разворот списка просто выучил наизусть.
Уж проверили что ты сам сядешь на второй такой задаче.
Кстати не надо учить разворот списка чтобы писать его. Нужен навык. Если ты пишешь такое регулярно, то вполне можешь написать разворот списка или другую подобную задачу.
Если же не писал его, то хрен напишешь, потому что алгоритм сложный.
Здравствуйте, gandjustas, Вы писали:
G>Бла-бла-бла, в итоге никуда не приведет. Ты так своему ПМу рассказывай почему ты так долго пишешь.
Ну да, ты своему ПМу не рассказываешь про сроки — зато рассказываешь, почему так резко упали продажи. Дураки-клиенты то домен у себя не имеют, то маки к рабочей сети подключают, то ещё что нибудь препятствует.
Хотя, если не ошибаюсь, у тебя нет ПМа. Что такое? Никто не хочет в тебя деньги вкладывать?
Здравствуйте, samius, Вы писали:
b-3>>Перед людьми, отказывающимися думать, пробовать и ошибаться, извиняться не в моих правилах, уважаемый S>Если с этой фразы начинать собеседование, то сэкономишь время и себе и собеседователям.
А что будет?
Мне, правда в ближайшее время не предстоит проходить собеседование. Всё больше приходится участвовать в качестве ведущего специалиста (читай, "умного ботаника"). Могу, если хотите, в этой роли процитированную фразу сказать Какой Вы ждёте ответной реакции?
Забанен с формулировкой "клинический дисидент".
Re[33]: Задача на собеседовании - обращение списка.
Здравствуйте, b-3, Вы писали:
b-3>Здравствуйте, gandjustas, Вы писали:
b-3>Ты решил ответить на все мои сообщения сразу?
b-3>>>Дай на собеседовании задачу "напишите сортировку 20-элементного массива вставками", пол-рсдна будет кричать, что подобное никогда не надо, потому что есть List.Sort и Linq.EnumerableQuery G>>И они будут правы b-3>С точки зрения "программирования отчётов" конечно да.
С любой точки зрения будут правы.
b-3>>>Как философия разработки linq — плоха. Потому что подязык запросов философией разработки никогда, как вы понимаете, не являлся. G>>Что значит "философия разработки"? Что ты понимаешь под этим словосочетанием? b-3>Подразумеваю набор убеждений разработчика, который влияют на его результат. Ты его уже замечательно поскипал: b-3>
b-3>должен быть только один способ сделать это
b-3>если можно сделать иммутабельно — делай иммутабельно
b-3>ФП лучше всего, а linq — почти ФП, нафиг думать, пишем на linq!
b-3>могу всё это хорошо расширить, добавив cюда kiss, но это нужно начинать отдельную тему
Так это ты сам придумал. Ты уверен что кто-то придерживается такой философии?
b-3>Если подобные убеждения приводят к тому, что видеоплеер начинает требовать базу данных, .NET 4.5 и небазовую версию Windows, значит в этом случае с этими убеждениями не всё правильно.
Причем тут linq? Такого эффекта и без linq добиться можно.
G>>Если ты искренне считаешь что для сортировки 20-элементов надо писать что-либо кроме .sort или .orderby, то ты зря тратишь деньги твоего работодателя. b-3>Прочитай ветку, которую мы обсуждаем, на примере B2B — сервиса и видеоплеера) Если ты считаешь, что ради сокращения подобного кода до .sort или .orderby можно делать 10 тыщ запросов к вебсервису или сканировать список из дохрена файлов — ты будешь прав далеко не всегда)
Не понял, почему для сортировки 20 элементов может понадобиться 10000 запросов к вебсервису? Объясни этот момент, я не понимаю какую проблему ты пытаешься описать.
b-3>>>Соответственно, linq не позволяет решить задачу вышеописанным способом, а только предлагает "загрузить всё и отсортировать". Можно не применять здесь linq, конечно. G>>А что применять? b-3>Уже писал
Это ортогональные вещи. Приведи задачу, где не надо применять linq, а надо применять что-то другое. И покажи что.
Re[26]: Задача на собеседовании - обращение списка.
Здравствуйте, gandjustas, Вы писали:
G>Ты вообще-то можешь не продолжать отстаивать свою точку зрения, так как уже признал что она является лишь капризом, а не необходимостью.
Нет, умение писать алгоритмы хотя бы на уровне старшеклассника является необходимостью для человека, который работает программистом. Неумение программировать — профнепригодность.
Здравствуйте, b-3, Вы писали:
b-3>Здравствуйте, gandjustas, Вы писали:
G>>Бла-бла-бла, в итоге никуда не приведет. Ты так своему ПМу рассказывай почему ты так долго пишешь. b-3>Ну да, ты своему ПМу не рассказываешь про сроки — зато рассказываешь, почему так резко упали продажи. Дураки-клиенты то домен у себя не имеют, то маки к рабочей сети подключают, то ещё что нибудь препятствует.
Это тебя окончательно не в ту степь понесло. Причем тут маки?
b-3>Хотя, если не ошибаюсь, у тебя нет ПМа. Что такое? Никто не хочет в тебя деньги вкладывать?
У меня и ПМ есть, и сам себе ПМ бываю.
b-3>Несерьёзно это всё.
Да, ты что-то постоянно от темы уходишь.
В сухом остатке: задачу не решил, даже направление решения не угадал, так еще и не признал что неправ, а начал увиливать. Низачот однозначно, я бы на работу не взял.
Re[5]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Но сеньёр-девелопер, не могущий решить задачку по программированию для первокурсников — это ведь просто смешно. Зачем он такой нужен? Лучше сразу взять первокурсника, писать SQL-запросы он научится быстрее (т.к. соображает лучше).
Не, все не так просто. Что бы первокурсник мог решить эту задачу, у него в курсе должны быть эти списки. Далеко не все программисты не то что не закончили программистский факультет, но и вообще имеют высшее образование. Да и далеко не все программистские факультеты имеют подробный разбор внутренностей АТД в своих курсах.
А первокурсник без опыта и знания подводных камней может вам нагородить таких SQL запросов...
Re[24]: Задача на собеседовании - обращение списка.
Здравствуйте, gandjustas, Вы писали:
G>Если же не писал его, то хрен напишешь, потому что алгоритм сложный.
Если голова работает — то напишешь. Если настолько тупой, что не можешь решить даже такую простую задачу — иди найди работу, требующую меньших интеллектуальных возможностей (например, сторожем или вахтёром).
Здравствуйте, b-3, Вы писали:
b-3>Здравствуйте, samius, Вы писали:
b-3>>>Перед людьми, отказывающимися думать, пробовать и ошибаться, извиняться не в моих правилах, уважаемый S>>Если с этой фразы начинать собеседование, то сэкономишь время и себе и собеседователям. b-3>А что будет?
Сэкономишь время
b-3>Мне, правда в ближайшее время не предстоит проходить собеседование. Всё больше приходится участвовать в качестве ведущего специалиста (читай, "умного ботаника").
Извини, фич, характерных для умного ботаника я пока в тебе не приметил. Пафос, кстати, совсем не обязательная черта умного ботаника. b-3> Могу, если хотите, в этой роли процитированную фразу сказать Какой Вы ждёте ответной реакции?
Например, что у ведомых найдется повод прикинуть перспективы и сэкономить время и нервы.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>... не пытается что-то нарисовать, дать говорящие имена переменным, описать задачу словами, свести её к более простой, например, с помощью рекурсии) — значит человек не в состоянии решать никакие задачи. Максимум что он может — это как робот перевести ТЗ на сишарп, не думая.
а вот с этим подходом согласен. Т.е. суть не в самой задаче, а суть в том, как человек ее решает.
Собственно на зачетах и экзаменах на этом все и валятся, когда кидаются отвечать, писать программу, и т.п. не подумав и не порассуждав, выдавая первое, что пришло в голову.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Почему 9 из 10 соискателей не могут её решить?
Условно всех людей можно поделить на 2 категории. Первая (их больше пресловутых 95%) познают мир путем запоминания фактов,
в результате чего картина у них получается весьма разрозненной. Вторые не тянут в голову всякую мелочь (запас памяти ограничен),
а держат в кеше только фундаментальные сущности с их свойствами и связями, подгружая в случае необходимости конкретную
информацию из внешних источников. Данные свойства мышления — системные, т.е. они распространяются на любую деятельность человека.
Другими словами, системно мыслящий человек мыслит так всегда независимо от решаемых им задач; он не разделяет работу/дом,
важные/неважные задачи и прочее с т.з. выбора применяемых методов мышления. За подробностями пожалуйте к Курту Голдштейну,
Хьюллингсу Джескону и прочим отцам неврологии и психологии.
В данном обсуждении также есть два лагеря с полюсами Паблик Морозов (ПМ) и gandjustas (gj). Скажу сразу — они оба правы.
Но давайте проанализируем ситуацию. Мыслят они по-разному, это факт. Морозов входит во вторую группу (или старается
туда входить) — это прямо следует из его постов, gandjustas — в первую (из его высказываний прямо это не следует,
но с некоторыми весьма малыми допусками это так). Вывод очень простой — они могут бесконечно спорить, т.к. их точки зрения
ортогональны. Они пересекаются только в одном месте — в точке результата (надеюсь, что хоть там пересекаются). Под результатом
здесь я понимаю работающий код, с хорошими храктеристиками, простой в понимании/поддержке и т.д.
Углубимся. Контекст данных веток — собеседование. Посылка: каждый собеседующий берет на работу людей, которые мыслят схожим
с ним образом. Даже не так, каждый ДОЛЖЕН брать людей, которые мыслят схожим с ним образом. Иначе они тупо не сработаются — это
очевидно. Именно поэтому методы ПМ и gj должны быть разными (хотя и могут пересекаться). Именно поэтому "задавание задачек"
на собеседовании для ПМ — один из работающих инструментов, а для gj — бессмысленная херня.
С т.з. работодателя ситуация иная. Цель каждой коммерческой фирмы (я специально тут редуцирую множество работодателей) — получать
прибыль. В близкой/средней/далекой перспективе. Для этого нужно решать задачи, в т.ч. и технические. Для некотрых задач нужна
команда из gj, для некоторых — из ПМ. Смешанных команд на низком уровне быть не может, это тоже очевидно. Поэтому работодатель должен
правильно выбирать "зерно" из которого растет команда.
философия. Какой подход лучше? Ответа нет. Да, подход ПМ потенциально может решить бОльшее количество задач, с более широким спектром.
С другой стороны, подход gj выигрывает в краткосрочной перспективе и в среднем дает больше денег для исполнителя. Но есть еще
другие ниши — медицина/авиация/космос, даже обычная промышленность, где gj отфильтруются по определению.
Резюме. ПМ, вам уже дали ответ на ваш вопрос — "1. 95% идиоты. 2. да". Вы все правильно делаете, продолжайте набирать людей по
собственным критериям, которые вы считаете важными, тем более, что они весьма разумны. И никого не слушайте )) Аналогичный совет
я позволю сделать gandjustas.
И для молодых — самое прибыльное инвестирование — в себя. Чем ты моложе, тем долгосрочнее вложение ты можешь сделать. Учитесь
думать головой, в конце концов, это основной инструмент программиста.
Re[34]: Задача на собеседовании - обращение списка.
Здравствуйте, gandjustas, Вы писали:
b-3>>Подразумеваю набор убеждений разработчика, который влияют на его результат. Ты его уже замечательно поскипал: b-3>>должен быть только один способ сделать это b-3>>если можно сделать иммутабельно — делай иммутабельно b-3>>ФП лучше всего, а linq — почти ФП, нафиг думать, пишем на linq! b-3>>могу всё это хорошо расширить, добавив cюда kiss, но это нужно начинать отдельную тему G>Так это ты сам придумал. Ты уверен что кто-то придерживается такой философии?
Так это я не сам придумал, а регулярно вижу на практике. Даже мой визави ganjustas этим грешен и пишет свои Sharepoint solutions, по слухам, приблизительно так.
b-3>>Прочитай ветку, которую мы обсуждаем, на примере B2B — сервиса и видеоплеера) Если ты считаешь, что ради сокращения подобного кода до .sort или .orderby можно делать 10 тыщ запросов к вебсервису или сканировать список из дохрена файлов — ты будешь прав далеко не всегда) G>Не понял, почему для сортировки 20 элементов может понадобиться 10000 запросов к вебсервису? Объясни этот момент, я не понимаю какую проблему ты пытаешься описать.
Задача простая: есть коллекция (скажем, набор фильмов, или данные веб-сервиса), нужно выбрать 20 элементов, которые чаще всех других обрабатываются. Счётчики к элементам приделывать можно. Перечислять всю коллекцию или загружать её в память — нельзя.
Мутабельным решением, без linq, является массив из 20 наиболее часто используемых (т.е. с наибольшими значениями счётчика), в который делается (или не делается) вставка при открытии очередного элемента коллекции.
Решением на linq является... Да, собственно ничего не является, заведение СУБД (в видеоплеере, LOL!) или загрузка всей коллекции в память (дофига дисковых операций или запросов к веб-сервису).
Здравствуйте, samius, Вы писали:
b-3>>>>Перед людьми, отказывающимися думать, пробовать и ошибаться, извиняться не в моих правилах, уважаемый S>>>Если с этой фразы начинать собеседование, то сэкономишь время и себе и собеседователям. b-3>>А что будет? S>Сэкономишь время
Кандидат развернётся и убежит со словами "как вы смеете! я никогда не ошибаюсь! А думать — так это вообще не моё" ?
Здравствуйте, b-3, Вы писали:
b-3>Здравствуйте, samius, Вы писали:
S>>Сэкономишь время b-3>Кандидат развернётся и убежит со словами "как вы смеете! я никогда не ошибаюсь! А думать — так это вообще не моё" ?
В случае когда ты собеседователь, лучше для кандидата будет убежать. Любому. Вне зависимости от знаний и умений. ИМХО.
Re[6]: Задача на собеседовании - обращение списка.
Здравствуйте, jhfrek, Вы писали:
J>Здравствуйте, Паблик Морозов, Вы писали:
J>Не, все не так просто. Что бы первокурсник мог решить эту задачу, у него в курсе должны быть эти списки.
Ну то, что в IT полно каких-то непонятных людей с улицы, без образования, фундаментальных знаний и навыков написания программ мне и так известно. Таких и следует отсеивать.
J>А первокурсник без опыта и знания подводных камней может вам нагородить таких SQL запросов...
Человек, который не соображает, еще быстрее нагородит фигни. Написание SQL-запросов — это типичная задачка на логику.