Переписывание, рефкторинг — это понятно.
У меня тоже не очень много кода, который без изменений прожил десяток лет(хотя и такой есть).
Но речь именно о том, чтобы брать решение и возможно слегка его модифицировать — использовать его.
Ну чтобы уж не быть голословным — давайте конкретную задачу, которая не может сгенерировать код приемлемый для использования в другой задаче. Мне как-то не верится, что вообще в природе бывают такие задачи, которые на 100% уникальные. Да даже на 50% в уникальность не могу поверить. Так что буду благодарен за пример.
Наверно, если я буду каждый раз браться за совершенно новую задачу: сегодня игра про колобков, завтра веб сайт интернет магазина, после завтра клиент-банк, после-после завтра система видеонаблюдения — у меня тоже не будет реюза…
Но, собственно, с чего мне дергаться между разными областями, если я специалист в одной и могу эффективно внутри этой области решать задачи, в частности за счет огромной кодовой базы собранной на предыдущих проектах.
В качестве послесловия: в этом году 10 лет как фрилансер.
Если вы спросите меня, в каком из своих проектов я использовал готовый код из других, то я отвечу предсказуемо
У меня наверно процентов 80 кода с минимальными изменениями кочует между проектами. Вплоть до того, что это все оформляется в некий фреймворк, который везде и используется.
Может быть у меня задачи такие(разработка игр)… Хотя я рыпался в совершенно левые области ради развлечения(разработка терминалов, например) и там реюз кода также был на уровне 80%.
Единственное что не поддаются реюзу — это собственно логика самого приложения. Взаимодействие объектов и прочие мелочи.
Но в любом проекте с которыми мне приходилось иметь дело(начиная от мелких тетрисов и заканчивая системами работающими в кластере) — логика это мизер. А вся основная работа делается кодом, который можно использовать много раз.
Это я к тому, что в легальном поле BSA никаких новых инструментов давления на конкурентов не создали(или я не вижу).
А в поле нелегальном и так миллиард способов конкурента подставить.
Мы(сторонники подхода «а давайте напишем универсальный расширяемый код») в первую очередь пишем такой код не для того, чтобы клиент рад был. А для того чтобы потом самим было проще его поддерживать и расширять.
Эмуляция клавиатуры и мыши через тач интерфейс.
Для работы с играми использующими клавиатуру и мышь на планшетах, где клавы и мыши нет, а есть только тач.
Мышиный курсор не должен перемещаться на саму кнопку. При нажатии он должен оставаться на месте.
То есть игра на которой все это запущена не должна вообще видеть реальную мышь или тач интерфейс.
Все события ей должны от самописной системы приходить.
Кстати, если кто-то шарит в эмуляции мыши(нужно отлавливать нажатие мыши на экране на кнопку и двигать курсор. сложность в том, что само нажатие на кнопку не должно генерировать мышиных событий. это нужно для эмуляции мыши через тач интерфейс) — напишите в личку, я вас сведу с этим заказчиком. Возможно ему задача еще актуальна. А мне груз с плеч.
2. Оплата по итерациям
Вариант 2 предпочтительней для заказчика.
Да ничего подобного.
Это оставляет риски, что на середине проекта не получится договориться с исполнителем и проект окажется не завершенным.
Не завершенный проект — это почти всегда выкинутые на ветер деньги без результата.
К сожалению, сам был в такой ситуации, причем на месте исполнителя.
Заказчик описал задачу, я оценил ее и мы договорились о сроках и стоимости.
Когда я ее закончил, оказалось, что это был первый этап, а второй(мелочь по мнению заказчика) — только предстоит.
Вот только оказалось, что задача совершенно за рамками моей специализации(написание драйвера, хотя первоначально задача касалась только компьютерной графики). Я согласился попробовать, но предупредил, что задача для меня новая и я не уверен что справлюсь. Предоплату за вторую часть не брал, естественно. В итоге понял, что за разумные сроки с написанием драйверов такого уровня не разберусь и отказался от исполнения.
Что же имеет заказчик в итоге? Он имеет систему, которая не решает задачи для которых создавалась.
Он в итоге наверняка не удовлетворен сотрудничеством со мной(хотя эта тема никогда не поднималась, но наверняка это так).
Я чувствую себя виноватым, хотя уже год прошел(по факту вины моей нет, я изначально на совершенно другую задачу подписывался).
У меня тоже не очень много кода, который без изменений прожил десяток лет(хотя и такой есть).
Но речь именно о том, чтобы брать решение и возможно слегка его модифицировать — использовать его.
Но, собственно, с чего мне дергаться между разными областями, если я специалист в одной и могу эффективно внутри этой области решать задачи, в частности за счет огромной кодовой базы собранной на предыдущих проектах.
В качестве послесловия: в этом году 10 лет как фрилансер.
У меня наверно процентов 80 кода с минимальными изменениями кочует между проектами. Вплоть до того, что это все оформляется в некий фреймворк, который везде и используется.
Может быть у меня задачи такие(разработка игр)… Хотя я рыпался в совершенно левые области ради развлечения(разработка терминалов, например) и там реюз кода также был на уровне 80%.
Единственное что не поддаются реюзу — это собственно логика самого приложения. Взаимодействие объектов и прочие мелочи.
Но в любом проекте с которыми мне приходилось иметь дело(начиная от мелких тетрисов и заканчивая системами работающими в кластере) — логика это мизер. А вся основная работа делается кодом, который можно использовать много раз.
А в поле нелегальном и так миллиард способов конкурента подставить.
Ведь то что пишешь для одного проекта можно потом использовать и в другом.
Так что врядли они будут так рисковать на основе только слов сотрудника.
С таким же успехом можно любым другим способом саботировать производство конкурента.
Зато знаю, что никто в здравом уме не будет судиться не имея доказательств правонарушения.
Какую?
Для работы с играми использующими клавиатуру и мышь на планшетах, где клавы и мыши нет, а есть только тач.
То есть игра на которой все это запущена не должна вообще видеть реальную мышь или тач интерфейс.
Все события ей должны от самописной системы приходить.
Да ничего подобного.
Это оставляет риски, что на середине проекта не получится договориться с исполнителем и проект окажется не завершенным.
Не завершенный проект — это почти всегда выкинутые на ветер деньги без результата.
К сожалению, сам был в такой ситуации, причем на месте исполнителя.
Заказчик описал задачу, я оценил ее и мы договорились о сроках и стоимости.
Когда я ее закончил, оказалось, что это был первый этап, а второй(мелочь по мнению заказчика) — только предстоит.
Вот только оказалось, что задача совершенно за рамками моей специализации(написание драйвера, хотя первоначально задача касалась только компьютерной графики). Я согласился попробовать, но предупредил, что задача для меня новая и я не уверен что справлюсь. Предоплату за вторую часть не брал, естественно. В итоге понял, что за разумные сроки с написанием драйверов такого уровня не разберусь и отказался от исполнения.
Что же имеет заказчик в итоге? Он имеет систему, которая не решает задачи для которых создавалась.
Он в итоге наверняка не удовлетворен сотрудничеством со мной(хотя эта тема никогда не поднималась, но наверняка это так).
Я чувствую себя виноватым, хотя уже год прошел(по факту вины моей нет, я изначально на совершенно другую задачу подписывался).