13 главных ошибок, мешающих разрабатывать игры


Оглавление (нажмите, чтобы открыть):

Вылетают игры без ошибок.

В общем проблема такая. Некоторые игр (не все, в основном те, что потребовательнее) вылетают, без ошибок, просто закрываются и все. Иногда такая же фигня может быть и с некоторыми приложениями, например ФШ может взять и просто внезапно закрыться. Причем, вылеты абсолютно рандомные, вот например играю в игру, ни лагов ни фризов, фпс 60-120 и хоп, вылет (бывает что не вылетает, а просто экран темнеет и выходит сообщение типа»программа не отвечает», закрыть можно только через диспетчер задач).

В общем мне бы понять, в чем может быть причина? С оперативкой все в порядке, видеокарта и процессор не перегреваются. Единственное могу думать только на HDD, бывает он регулярно нагружается и лампочка непрерывно горит несколько секунд, при этом в играх например могут наблюдаться небольшие фризы\подергивания. Ну и Винда уже больше года стоит, может ли быть в ней дело? Хотя я всегда чищу вирусы, чищу мусор CCleaner’ом, насчет HDD: дефрагментацию делаю каждые полгода-год (в зависимости от кол-ва установленных игр\программ, файлов). Может у кого встречалась подобная проблема?

Организация игровых процессов в многопользовательской игре

Как обеспечить игрокам возможность играть одновременно и при этом тогда, когда они захотят? Это главная организационная сложность, с которой сталкивается разработчик при создании многопользовательских игр.

Мы наблюдаем расцвет новаторских многопользовательских систем. В прежние эпохи существовало несколько стандартных моделей взаимодействия, которые могли применяться в играх (матчи, игра по почте). Сегодня в играх встречаются самые разнообразные модели: от полностью одновременного взаимодействия до совершенно асинхронного (и их различные комбинации). Игра типа Dark Souls рассчитана преимущественно на одного пользователя, однако включает в себя асинхронные (отправку сообщений и смерть) и одновременные (вход игрока в ваш игровой мир для схватки с вами или кооперативной игры) взаимодействия.

Мы находимся на пороге золотой эры многопользовательского игрового процесса. Затраты на сервера значительно снижаются, при этом наступила эпоха облачных вычислений. Во всем мире наблюдается быстрое распространение высокоскоростного интернета и постоянное подключение к нему мобильных устройств. Благодаря развитию таких коммерческих моделей, как внутриигровые платежи, краудфандинг (народное финансирование проектов) и ориентированность на продажу услуг, стало возможным финансово содержать множество долгоживущих игровых сообществ. Разработчики пользуются всеми этими современными возможностями, чтобы создавать новые формы многопользовательских игр.

Однако создать многопользовательский режим сложно, к тому же есть высокий риск провала. Часто команды вкладывают от 50 % до 100 % бюджета развития в создание многопользовательского режима. Кажется, что это того стоит. В процессе разработки игры команда с таким удовольствием играет в нее по пятницам, что убеждается — именно многопользовательский режим превратит их игру в новую League of Legends или Counter Strike.

Настоящая проверка идеи происходит, когда в игру приходят «живые» игроки. После запуска проекта во многих многопользовательских играх активное взаимодействие игроков наблюдается только первые несколько недель. Людей сначала слишком много. А потом их недостаточно. Игроки заходят лишь время от времени, и невозможно быть уверенным в получении хороших игровых впечатлений. Активные матчи потихоньку сходят на нет. Традиционные «комнаты» ожидания матчей (разработка родом из 1990-х) пустеют навсегда. Многопользовательский режим в этой игре с треском подходит к печальному концу.

Я считаю, что проблема заключается в организации игровых процессов. Были те, кто хотел играть. Однако игровые механизмы объединения игроков привели к образованию слабого сообщества, которое не могло само поддерживать свое существование.

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

Понятия, касающиеся многопользовательских игр

Вот некоторые понятия, которые я учитываю при разработке многопользовательской игры.

Любую многопользовательскую систему можно разбить на цепочку взаимодействий. Взаимодействие — любое действие игрока по отношению к другому игроку, осуществляемое посредством игровой системы («находиться в чате», «наносить взаимные удары» и т. д.). Эти глаголы описывают взаимодействие игроков внутри игры. Обычно в игре есть набор глаголов, описывающих действия одного пользователя, и другой набор, включающий многопользовательские взаимодействия. У взаимодействий есть широкий ряд характеристик, таких как частота, масштаб, режим и т. д.

Если составить схему взаимодействия, то выглядеть она будет примерно так:

  • Игрок начинает взаимодействие.
  • Игрок заканчивает взаимодействие.
  • Ждет ответа.
  • Если скорого ответа не предвидится, игрок уходит.

Взаимодействия не являются чем-то новым. Их структура сходна с той, которую находят в элементарных игровых циклах. Однако, при участии как минимум двух игроков, вместо одиночной петли там будет скорее что-то близкое к числу 8. Эти понятия восходят к теории коммуникации, которую в 1980-х годах приспособил к теории игрового дизайна Крис Кроуфорд. Все это — базовые идеи, с которыми должны быть знакомы все профессиональные игровые дизайнеры.

Запуск цикла игроком А

Reciprocated by B

Ответная реакция игрока Б

Reciprocated by A

Ответная реакция игрока А

  • Модель для игрока А: игрок определяет действие и выбирает цель — игрока или группу игроков.
  • Действие игрока А: игрок выполняет действие.
  • Правила: результаты действия устанавливаются в соответствии с игровой логикой.
  • Ответ игрока А: игрок А видит немедленные результаты, как только их создаст игра.
  • Ответ игрока Б: игрок Б видит немедленные результаты, как только их создаст игра. Заметьте, что то, что видит игрок Б, скорее всего отличается от того, что происходит для игрока А. Это естественным образом приводит к образованию различных ментальных моделей и дает проявиться таким игровым механизмам как скрытая информации или предугадывание (как в игре Yomi).
  • Модель для игрока Б; его действия; правила; ответ игрока Б: выбранные игроки пытаются понять, что произошло, и выработать ответные действия.
  • С этого момента цикл «прыгает» между участниками, словно теннисный мячик.
  • Какова должна быть частота взаимодействия, чтобы для игроков сохранялось ощущение одновременности? Может оказаться, что в стратегической игре типа Цивилизации необходимость во взаимодействии возникает раз в 5 минут, тогда как для создания того же эффекта в рассчитанных на быструю реакцию боевиках типа Counter-Strike взаимодействовать необходимо каждые 200 мс. Подробнее об этом читайте в статье «Циклы и дуги».

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

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

    Взаимодействия в режиме реального времени

    • Взаимодействия в режиме реального времени: игроки воспринимают взаимодействия происходящими в режиме реального времени тогда, когда частота принимает значения, при которых: игрок А начинает и заканчивает взаимодействие и видит ответ до того, как переключится на другие задачи; взаимодействия «перекрываются». Например, от общения в чате возникает ощущение реального времени, хотя между репликами часто может пройти больше минуты. В системах реального времени менее востребовано долговременное хранение данных, но создание и эксплуатация таких систем часто обходятся дороже.
    • Асинхронные взаимодействия: Частота, при которой игрок может начать и завершить взаимодействие, а затем выйти из игры, не получив ответную реакцию, считается асинхронной. Обычно в систему встраивается более-менее долговременное хранение данные, чтобы игрок, который войдет в игру позже, мог получить результаты взаимодействия и выработать ответные действия.

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

    • Пространственное взаимодействие персонажей: два или более персонажей взаимодействуют друг с другом. Классический пример — стрельба друг по другу в игре Quake. Другой пример — сопровождение игроков друг друга в игре Journey.
    • Пространственное взаимодействие с окружающим миром: игроки взаимодействуют также посредством предметов окружения. В игре Minecraft игроки строят замки, которые затем исследуют другие игроки. Вот пример с более высокой частотой взаимодействия: в игре Bomberman игроки размещают бомбы, от взрывов которых открываются проходы или страдают другие игроки.
    • Внешний вид и демонстрация: игроки показывают свой статус, связи и историю посредством костюмов, украшений для оружия или питомцев, отделкой домов.
    • Экономика: игроки отдают, продают или обменивают некие ресурсы, чтобы преобразовать их или передать другому игроку. Это может быть обычная продажа другому игроку меча за игровое золото. Или трата маны на укрепляющее заклинание, которое увеличит запас здоровья ближайшего игрока. За дополнительной информацией по этой теме обращайтесь к работе Йориса Дорманса (Joris Dormans) по экономическим эффектам, обусловленным внутренними факторами.
    • Текст: самый распространенный способ введения языка в онлайн-игры — посредством текста. Обычно затраты на это низкие, и для решения распространенных проблем есть богатый набор инструментов (спам-фильтры, соглашения стилистического характера). Лучше всего это взаимодействие осуществляется при наличии клавиатуры.
    • Голос: благодаря голосу проявляются дополнительные нюансы: эмоции, возраст, пол и другие. Здесь возникают ограничения по размеру группы и пропускной способности канала, и печально известно, что для фильтрования содержимого возможности здесь очень слабые.
    • Язык тела: находясь в общем пространстве (на диване или вокруг стола), мы подмечаем сигналы, относящиеся к разным каналам коммуникации — выражение лица, поза, рост и внешний вид. Когда вам в глаза смотрит высокий, красивый юноша и просит продать ему редкий и ценный предмет, вы получаете такие сигналы, которые не встречаются в других видах взаимодействий. Так создается богатый, развивающийся игровой процесс. Однако такое взаимодействие сложно точно и подробно встроить в игровую систему.

    Размер игрового сообщества

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

    • Один игрок: в качестве средств разработки доступны повышение личного мастерства, развитие, исследование мира и сюжетные линии.
    • Два игрока: становятся доступны общение, взаимоотношения, статус, подарки, торговля, кооперация и конкуренция.
    • Три-четыре игрока: становятся доступны союзы, политика, слухи, формирование стереотипов и противопоставление своих чужим.
    • Маленькая группа (больше пяти игроков): взаимодействия групп между собой, официальное лидерство, ролевая специализация, официальные наказания.
    • Средняя группа (больше двенадцати игроков): формирование фракций, бартерная экономика и возможность изгнания.
    • Большие группы (больше сорока игроков): возникновение иерархии (лидеры и их заместители), денежная экономика, требования к соблюдению ролей. Специальные системы управления, закрепление социальных норм в обществе.
    • Очень большие группы (свыше двухсот игроков): введение торговых классов, рыночное регулирование цены, закрепленные системы управления, подклассы, наличие знаменитостей, использование пропаганды. С этого этапа игроки точно не знакомы со всеми другими игроками, и для выполнения социальных норм требуются официальные структуры. (см. число Данбара)
    • Огромные группы (свыше тысячи игроков): опросы, выработка ресурсов на уровне города. На таком уровне происходит немного такого, что не было бы уже отмечено для групп размером свыше двухсот или даже сорока человек.

    Я даю определения этим группам, исходя из ситуации взаимодействия игроков. Реальная численность игроков может быть намного больше. Например, в игре Realm of the Mad God мы видим примеры торговых взаимодействий между всего лишь двумя игроками, при том что общая численность игроков превышает тысячи людей. Для грубых подсчетов размера группы подойдут ответы на два хороших вопроса:

    • Кого затрагивает это действие, на кого оно направлено? Так вы получите примерный размер группы, который должен поддерживаться вашей системой.
    • Необходима ли для проявления этого поведения группа большего размера? Если нет, то обычно можно обойтись разработкой множества объектов, рассчитанных на группы меньшего размера.

    В действительности переходы из одного состояния в другое зависит от сопутствующих условий. Например, переход на уровень взаимоотношений «очень большой группы» может произойти уже при численности игроков в 60-70 человек, если в игре слабые каналы общения, из-за чего особый упор делается на способность игрока поддерживать взаимоотношения.

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


    Риски, возникающие из-за большого размера групп: создание многопользовательских игр с возможностью взаимодействия тысяч игроков, которые теоретически могут одновременно находиться в одном и том же пространстве, может показаться заманчивым. Однако затраты на разработку и стоимость технологий высоки, а выгоды — малы. При достижении групп размера в 150-250 игроков игра переходит границы предложенного Данбаром биологически обусловленного предела поддержания полноценных взаимоотношений. Кончится тем, что другие игроки просто будут относиться ко всем «лишним» людям как к неким знакам или абстракциям. Простая имитация или система опросов часто могут принести те же основные выгоды, что и группа более крупного размера.

    В многопользовательскую онлайн-игру Realm of the Mad God было удобно играть уже на уровне последовательных действий групп из 40-80 игроков и торговых и посреднических взаимодействий 150 игроков. Игроки и не замечали, что вокруг нет тысяч других игроков.

    Благодаря этим фактам возникают серьезные сомнения в необходимости таких подходов к разработке, в которых делается упор на получение опыта «масштабных взаимодействий». То, что подобная концепция звучит восхитительно («миллион людей строит новое общество!»), еще не значит, что это умный подход. Человеческие возможности к общению ограничены, и мы можем (а так уже и происходит!) слишком усложнить многопользовательские системы.

    На сколько людей оказывает влияние одно взаимодействие? Игрок может взаимодействовать с одним человеком или с одной из указанных выше групп.

    • Цель взаимодействия игрока — маленькие группы: с группами меньшего размера взаимодействие похоже на беседу. Здесь наблюдается ярко выраженный цикл, который может быстро стабилизироваться при помощи общего словарного запаса и социальных норм.
    • Цель взаимодействия игрока — более крупные группы: в более крупных группах наблюдается большее разнообразие сценариев и более разнообразные взаимодействия, менее привязанные к отдельным личностям. При взаимодействии с крупными группами обычным делом является получение участником взаимодействия в результате мощной ответной реакции слишком большого количества информации. Также при разговорах и случайных встречах чаще встречается неадекватное поведение.
    • Параллельное взаимодействие: игроки могут вести себя независимо. Фантом гоночного автомобиля редко влияет на другого игрока. Обычно главное достоинство этого уровня — ощущение присутствия других игроков, хотя этот уровень может также переходить в редкие взаимодействия антагонистического типа, например, в виде турнирных таблиц.
    • Игра с нулевой суммой (антагонистическое взаимодействие): действия одного игрока мешают действиям другого игрока или снижают их эффективность. В игре Habbo Hotel движение является антагонистическим действием, поскольку размещение персонажа на какой-либо ячейке мешает другому персонажу ее занять. Как известно, это использовалось в качестве вредительской тактики для блокирования игроков.
    • Игра с ненулевой суммой (неантагонистическое взаимодействие): действия одного игрока приносят пользу другому. В игре Realm of the Mad God стрельба по противнику облегчает другим игрокам его убийство. Убийство противника дает очки опыта всем, кто находится рядом.

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

    Это очень широкое определение подбора, но оно полезно в условиях, когда действуют различные многопользовательские системы. Например, чтобы играющих на традиционной консоли можно было собрать в группу, требуется, чтобы игроки из общей «комнаты» ожидания вручную присоединились к определенной игре. В игре Realm of the Mad God игроки видят группы других игроков на общей карте и переносятся к ним. Все это виды «подбора», но игрокам они кажутся совершенно различными.

    С теоретической точки зрения можно относиться к подбору игроков как к виду взаимодействия со временем ожидания.

    Какие типичные ошибки в программировании совершают новички — отвечают эксперты

    Нам в редакцию Tproger пришел вопрос от подписчика, которым мы хотим поделиться с вами:

    «Какие типичные ошибки в программировании совершают новички?»

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

    Ильназ Гильязов , эксперт курса «Профессия веб-разработчик» университета digital-профессий Нетология

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

    Сегодня существует большое количество источников информации различной степени качества: начиная от классики Computer Science, написанной 10-15 лет назад, до современных школ обучения, где преподают практики. Я бы рекомендовал с особой осторожностью относиться к современным инфо-бизнесменам, за неделю обещающих из вас сделать программиста.

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

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

    Ключевые критерии: наличие практики по изучаемому материалу и приближенность практики к реальной жизни.

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

    В разработке программных продуктов нужно же больше анализировать конкурентов, т.к. они уже проделали работы по решению задачи до вас. Приведу очень простой пример – если вы поставите начинающему программисту задачу сделать сервис по подбору дебетовых карт, допустим по % на остаток, то он сделает вам сервис, в котором процент будет одним числом. Если же посмотреть на реальные продукты, которые решают подобную задачу, то процент может быть не только одним числом. Поэтому учиться этому нужно сразу, а для этого решать не игрушечные задачи, а задачи, которые встречаются в реальном мире (пусть и в упрощенном варианте).

    Андрей Коваленко , со-основатель и CTO Voximplant

    Главная ошибка новичка заключается в том, что он спешит. Вместо того, чтобы изучать язык, платформу или фреймворк, он вводит вопрос в Google/Stack Overflow и просто копирует результат. Это плохо не только потому что без системных знаний невозможно понять новые технологии «изнутри», но и просто потому что в скопированных ответах могут быть ошибки. Если не разобраться досконально, вместо кода получится «лоскутное одеяло» из кусков Stack Overflow, в котором сам автор разбирается крайне поверхностно. Как следствие, развивать это решение дальше будет крайне сложно.

    Михаил Субботин , преподаватель израильской высшей школы IT и безопасности HackerU

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

    Андрей Кузьмичев , заместитель генерального директора RU-CENTER

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

    Какие же основные ошибки могут совершать начинающие программисты?
    1. Не пытаться искать информацию. Если вы начинающий программист, наверняка кто-то уже сталкивался с вашим вопросом, и решение есть в открытом доступе, мануалах, FAQ и т/ д. Поиск ответа также может показать выбранное решение проблемы с другой стороны. И возможно, это решение только ухудшит ваш проект. Очень полезно использовать опыт других программистов.
    2. Не бросать неверное решение. Если Вы поняли, что выбранное решение – не самое лучше, смело отбрасывайте его и начинайте заново. Плохой код и много “костылей” в программе не сделают её удобной для эксплуатации, даже если в итоге она заработает.
    3. Ошибка вытекает из пункта два – ухудшать, а не улучшать код. Всегда нужно стараться, пусть и понемногу, улучшать код, но не ухудшать его временными решениями.
    4. Не планировать. В этом вопросе важно найти оптимальный вариант, т.к. чересчур подробное планирование может только затруднить подготовку проекта. Нет идеальных планов, но, особенно для крупных проектов, планирование необходимо.

    Также начинающему программисту стоит обратить внимание на некоторые моменты, касающиеся уже непосредственно написания кода: инкапсуляция, правильно подобранные инструменты, тестирование (а лучше автотестирование) и т. п. Как говорится, все приходит с опытом, но если заранее учесть возможные ошибки – опыт вы получите намного быстрее.

    Диана Гомонова , руководитель отдела маркетинга в веб-студии Craft Group

    Статус новичков в программировании наши разработчики перешагнули уже давно. Однако даже тем, кто стал гуру, есть что вспомнить. Ведь все они тоже были когда-то на заре своей карьеры и совершали ошибки. И вот какие: использование в работе непроверенной информации, нежелание углубляться в проблему, поверхностное ее изучение, выбор некорректного источника для обучения (что потом плохо сказывалось на результатах работы), разработка новой фичи ради фичи (увидел что-то новенькое, и принялся делать, забывая о нюансах и подводных камнях) и лишние, бесполезные вложенности в HTML.

    Сергей Вересов , руководитель проектного офиса «Павелецкая» компании «Первый БИТ»

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

    2. Склонность к «красивым» решениям. Если есть возможность решить задачу сложно и красиво или просто и утилитарно, новичок выберет «красоту». Естественно, такие «решения» сложнее поддерживать, масштабировать и использовать вторично. Избавиться от такой склонности поможет работа в команде и получение регулярной обратной связи от коллег, которые вынуждены мучиться с такой «красотой».

    3. Использование объектов не по назначению. Связано также с недостатком опыта. Это можно исправить регулярной практикой в команде и постоянным изучением инструментов работы.

    4. Пренебрежение стилю написания кода, форматированию, названию переменных и объектов. Конечно же, коллегам не приносит радости читать такой код. Работа в команде и обратная связь с куратором поможет искоренить у новичка это пренебрежение.

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

    Резюме. Нужно понимать, что все эти ошибки относятся к программированию за деньги. Если вы программируете для удовольствия, то это другое. Ошибок в программировании, которые относятся к работе, довольно много. Выше перечислены только основные. Можно упомянуть еще пренебрежение к «юзабилити», недостаточное тестирование и отрицательное отношение к оценке кода коллегами, да и многое другое. Но новичку не стоит унывать, так как работа в команде позволит ему избавиться от всех этих недостатков.

    Кирилл Меженцев , программист группы разработки карты рассрочки «Совесть»

    Говоря о типичных ошибках новичков в программировании, как правило, смотрят на профессиональные знания и навыки и упускают из внимания возможные ошибки в самом рабочем процессе. Основываясь на своем опыте могу сказать, чего делать новичку точно не стоит:

    Бояться подойти с вопросом, когда что-то непонятно. Всем людям свойственен страх выглядеть глупо, задав очевидный вопрос. Мы надеемся, что сами разберёмся во всем. Но один простой вопрос на stackoverflow или коллеге может сэкономить пару дней. Это не значит, что не надо разбираться в проблеме самому, конечно надо, и полезно. Но объять необъятное крайне сложно, а вокруг вас много разносторонних людей и многие задачи удастся решить быстрее с их помощью.

    Считать, что раз ты новичок, то все вокруг умнее тебя. Это круто (и так должно быть), когда в коллективе есть люди гораздо более опытные и знающие, готовые помочь и подсказать. Но не всегда стоит стопроцентно полагаться на их слова. Скорее – как на мнение. Например, у тебя возникла проблема и тебе сказали: «а, ну это здесь не так». Ты идешь разбираться, не можешь найти ошибку в указанном месте и считаешь, что просто недостаточно изучил тему, ты же джуниор. Но может случиться, что сам сеньор не очень понимает, о чем идет речь. Полностью погрузиться в контекст, не упуская ни одной детали, бывает сложно. Все мы люди. Поэтому полагаться на сеньора как на «истину в последней инстанции» не нужно, руководствуйтесь еще и фактами, доказательствами.

    Перерабатывать. Работая с утра до полуночи, не отдыхая и не высыпаясь, вы берете у себя здоровье и силы в долг. Когда-то придётся его вернуть. Если я не справляюсь с нагрузкой за рабочие

    8 часов, значит: а) я не настолько компетентен и переоценил свои способности, б) у меня проблемы с тайм-менеджментом, и я взял больше работы, чем реально выполнить за это время. Оба варианта – повод задуматься и исправить положение. Перерабатывая вы делаете хуже не только себе, но и работодателю. Кому нужен неделями не высыпающийся сотрудник, который от усталости не может перевернуть бинарное дерево? Да, бывают случаи, когда дедлайн горит, все пошло не так и «надо было вчера». Но после таких ситуаций обязательно нужно отдохнуть и провести оценку: что я должен сделать, чтобы не допускать этого в будущем?

    Мастер Йода рекомендует:  Light Field Lab и OTOY объединились для создания голографических изображений

    Алексей Рузин , ведущий разработчик Kokoc Group


    1. Боязнь контакта.
    Начинающие программисты часто стараются все делать самостоятельно или наоборот боятся решать задачи в одиночку. В первом случае человек может допустить большое количество ошибок, которых можно избежать, если обратиться за помощью к коллегам. Вторая крайность чревата тем, что программист не сможет проявить себя, так и останется начинающим. Лучший способ справиться с излишней самоуверенностью или страхом – заручиться поддержкой опытного коллеги, который может выступить в роли наставника. Прежде всего программисту стоит попытаться найти решение задачи самостоятельно, а если не получится, обратиться к коллеге. При этом важно не бояться и задавать дополнительные вопросы до тех пор, пока решение не будет понятно.

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

    3. Непрозрачные названия переменных или функций.
    Чтение кода занимает в 10 раз больше времени, чем написание, поэтому важно, чтобы он хорошо читался и программист быстро понимал, что именно этот код делает. Возьмем для примера язык Python.
    Неопытные программисты могут назвать переменные так:

    Но лучше написать так:

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

    Например, такой код:

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

    5. Погоня за модными технологиями.
    Как правило, новые технологии имеют превосходство в одних областях за счет проигрыша в других. До тех пор, пока у начинающего программиста нет понимания этих особенностей, лучше использовать проверенные временем универсальные решения. Например, если программист разрабатывает приложение, которое хранит какие-то данные, не стоит спешить использовать самое последнее NoSQL-решение, только потому, что это модно. В большинстве случаев подойдет обычная SQL база-данных (MySQL, PostrgreSQL, SQLite) с большим объемом документации, стандартизированными подходами, описанными и давно решенными проблемами.

    Напоследок:
    • Всегда тестируйте свой код, в идеале, пишите автоматизированные тесты;
    • Делайте бэкапы данных, в том числе, систему контроля версий кода;
    • Не выкладывайте новый код на продакшн-сервер в пятницу вечером, потому что есть вероятность, что придется провести выходные, исправляя ошибки.

    Александр Донсков , системный архитектор REG.RU

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

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

    Многие начинающие разработчики используют технику copy-paste. Мы живем в прекрасное время, где любая проблема может решиться за несколько секунд с помощью поисковика. Но не стоит этим злоупотреблять. Бездумное копирование решений со stackoverflow не только не добавит в вашу копилку опыта, но и может что-то сломать в проекте. После того, как вы нашли проблему, постарайтесь ее решить с помощью документации, если это не получается сделать за вменяемый срок, то уже можно обращаться за помощью к великому Google. После того, как было найдено решение, необходимо понять, как оно работает, и только после этого, можно использовать его в коде.

    Бывают ошибки с использованием неподходящих инструментов. Многие джуниоры, не успев дописать свой первый hello world, уже бегут осваивать новые технологии и прорывы в мире ПО,при этом не желая изучать фундаментальные вещи, которые являются основой всего современного стека технологий и кардинально не меняются десятилетиями. Как следствие появляется несколько значительных проблем:

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

    Непонимание, где, как, а главное зачем использовать ту или иную технологию или инструмент, негативно сказывается на качестве кода и проекта в целом.

    Приверженность к одному конкретному языку/технологии/OS/IDE и попытки навязать их другим (евангелизм), тоже часто говорит о том, что человек не понимает или не может объективно сравнить тот или иной инструмент для решении конкретной задачи.

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

    Еще есть зацикливание на проблеме и боязнь критики. Всем нам тяжело признавать свои ошибки и провалы. А начинающему разработчику тяжелее вдвойне: он хочет максимально проявить себя, доказать, что может самостоятельно работать. Частой ошибкой является негативная реакция на комментарии коллег по поводу качества кода новичка. Нужно понимать, что каждая найденная ваша ошибка, делает вас сильнее, и что коллеги не издеваются над вами, а хотят помочь.

    Или начинающий программист не всегда может решить проблему в короткие сроки, и начинает зарываться в неё, пишет велосипеды или вовсе ничего не пишет и очень грустит. Главная ошибка тут не в том, что разработчик не знает как решить проблему — все начинали с этого уровня, а в том, что он не обратился за помощью после первых 3-4 неудачных попыток. Стоит акцентировать внимание, что сразу бежать к ментору или на форум не стоит, ошибки — это опыт.

    ТОП-13 ошибок, мешающих учить грамматику английского языка

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

    Советуем вам посмотреть вебинар нашего методиста Марии на тему «Учим английский на чужих ошибках».

    Основные трудности при изучении грамматики английского языка и методы избавления от них

    Не бойтесь грамматики: с нашими советами вы справитесь со всеми сложностями. Русские студенты зачастую боятся грамматики в иностранном языке. Давайте рассмотрим наиболее популярные «закавыки» и сформулируем несколько советов, которые помогут справиться с ними.

    1. Отсутствие глагола to be

    Новички часто забывают про глагол to be в утвердительном предложении. Мы привыкли говорить по-русски «Я свободен», «Она сейчас в школе» и т. д. Поэтому и по-английски так и хочется сказать “I free” вместо “I am free” и “She at school now” вместо “She is at school now”. Как приучить себя использовать вспомогательный глагол?

    • Запомните главную мысль: в предложении на английском языке ВСЕГДА есть глагол.
    • Выучите самые распространенные случаи употребления глагола to be, он используется:
      1. когда нужно сообщить, КТО вы или другой человек (например, по имени или профессии): “My name is Sam”;
      2. когда нужно сообщить, ГДЕ вы или кто-то находится: “He is at the hospital”;
      3. когда нужно сообщить, КАКОЙ вы или другой человек (качество): “You are beautiful”.

    2. Отсутствие вспомогательного глагола do/does

    Следующая ошибка — отсутствие вспомогательного глагола do/does в отрицательном или вопросительном предложении в настоящем простом времени. Мы говорим «Она не ходит в школу», поэтому так и хочется сказать “She not go to school” вместо “She does not go to school”. А предложение «Ты знаешь Джима?» хочется перевести “You know Jim?”, а правильный вариант — “Do you know Jim?”. Как не забывать о глаголе?

    • Запомните легкое правило: в общих вопросах и отрицательных предложениях ВСЕГДА есть вспомогательный глагол (исключение, если в предложении стоит модальный глагол), даже если его не было в утвердительном предложении.
    • Еще одна «основа основ» грамматики английского языка — порядок слов: в общем вопросе на первом месте ВСЕГДА стоит вспомогательный (или модальный) глагол, после него подлежащее (субъект) и только после этого сказуемое (действие), например: “Does she go to school?” («Она ходит в школу?») — на первом месте стоит вспомогательный глагол — does, затем подлежащее — she (она), затем сказуемое — go (ходит).

    3. Неправильный порядок слов в утвердительном предложении

    Великий русский язык позволяет нам говорить и «Я люблю английский», и «Английский я люблю», и «Люблю я английский». А этот самый любимый нами английский язык не балует нас таким разнообразием вариантов. Поэтому вместо “Love I English” мы вынуждены обойтись неоригинальным и единственно правильным “I love English”.

    • В данном случае вам нужно навсегда запомнить схему построения предложения в английском языке: подлежащее — сказуемое — остальная часть предложения. Поэтому, если вы переводите предложение с русского на английский, сначала определите, ЧТО является подлежащим, а ЧТО — сказуемым.
    • Грамматико-переводные упражнения — отличная возможность отточить навык построения предложения на английском языке. Как можно чаще выполняйте подобные упражнения.

    4. Отсутствие -s/-es

    Также часто забывают про -s/-es в глаголах, употребляемых после местоимений и существительных в третьем лице и единственном числе (he, she, it, Tom, car, park, cat и т. п.) в настоящем простом времени (Present Simple). Эту ошибку допускают не только те, кто недавно начал учить грамматику английского языка: в разговорной речи мы так сосредоточены на том, ЧТО сказать, что иногда забываем о том, КАК сказать. Пример: мы говорим «Я играю в шахматы» и «Она играет в шахматы». Переводим как “I play chess”, так и хочется сказать аналогично “She play chess”, вместо верного варианта “She plays chess”. Как не потерять окончание?

    • Во-первых, не торопитесь говорить. Как правило, студенты отлично помнят, что нужно добавить окончание -s/-es, но так спешат выразить свою мысль, что забывают о нем. Беглость речи вы еще успеете приобрести, а вот грамматические ошибки нужно исправлять по мере их появления.
    • Во-вторых, рекомендуем установить на планшет или смартфон приложение «Полиглот» ( iOS , Android ). Оно бесплатное, не требует соединения с Интернетом. Выучить английский за 16 часов, как обещают авторы одноименной программы, конечно, не получится. Зато вы отточите навыки использования времен группы Simple и окончание -s/-es будете произносить автоматически.

    5. Неверное употребление указательных местоимений

    Еще одна распространенная ошибка — неправильное использование указательных местоимений that (тот, та, то), this (этот, эта, это), these (эти), those (те). Единственная причина, по которой мы допускаем путаницу — незнание этих слов и редкое употребление их в речи.

    • Совет будет простым и надежным: нужно просто запомнить, что this и these говорят о предметах, которые находятся рядом с нами, в непосредственной близости к говорящему. А that и those мы говорим об отдаленных предметах. This и that говорим о предметах в единственном числе, а these и those — во множественном числе.
    • Потренируйтесь на окружающих предметах, приучите себя говорить эти слова так, чтобы при разговоре с англоязычным собеседником вы уже не раздумывали, какое местоимение говорить, а произносили нужное слово автоматически.

    6. Отсутствие артиклей

    В русском языке их нет, поэтому кажется, что хитрые англичане придумали их специально, чтобы мы ломали голову, когда говорить a dog, а когда the dog. Даже на таких уровнях, как Pre-Intermediate или Intermediate, ученики забывают об артиклях. Они часто объясняют это тем, что «не хочется его тут ставить», «чутье языка не подсказало». Некоторые считают артикли мелочью, необязательной частью речи. Это заблуждение: носитель языка, конечно, поймет, о чем вы говорите, но ему придется догадываться, имеется в виду какой-то конкретный предмет или нечто общее. Кроме того, если вы пропустите артикль, некоторые слова (например, hand или fly) из существительных могут превратиться в глаголы, что совсем недопустимо.

    • Чтобы проще было изучить употребление артиклей, можно запомнить простые ассоциации. Артикль a/an произошел от английского числительного one, именно поэтому он ставится только перед исчисляемым существительным (то, которое можно посчитать) в единственном числе. Некоторые филологи предлагают ассоциировать его со словом any, то есть a/an обозначает «какой-нибудь, любой» предмет. Артикль the эволюционировал из слова that, поэтому он означает какой-то конкретный предмет, который хорошо знаком собеседникам.
    • Чтобы проверить, насколько вы усвоили правила, пройдите тесты на употребление артиклей в английском языке, представленные в нашем блоге.


    7. Неправильное употребление слов any/some, a few/little, many/much

    Казалось бы, эти пары слов похожи. Но если мы хотим спросить «Как много чая ты пьешь?», предложение “How many tea do you drink?” будет неверным, а правильно будет сказать “How much tea do you drink?” или “How many cups of tea do you drink?” В чем разница? Чай — неисчисляемое понятие, а кружки чая можно посчитать. Как облегчить себе жизнь? Воспользуйтесь нашей таблицей, она простая и понятная.

    Слово С исчисляемыми существительными С неисчисляемыми существительными
    В утвердительных предложениях с существительными во множественном числе:

    I have some cups.

    В отрицательных и вопросительных предложениях с существительными во множественном числе:

    I don’t have any cups.

    Do you have any cups?

    Aren’t there any cups?

    Употребляется в значении «несколько»:

    I read a few newspapers every day.

    Не употребляется Употребляется в значении «много» в утвердительном, отрицательном и вопросительном предложении:

    I have many cups.

    I don’t have many cups.

    Aren’t there many cups?

    Не употребляется 8. Неправильный выбор времен

    Начнем с того, что времен в английском языке всего лишь три (настоящее, прошедшее и будущее). Однако есть еще аспекты этих времен, а также «великий и ужасный» пассивный залог. При изучении грамматики английского языка студенты довольно часто путаются во временах.

    • Не пытайтесь «выучить» времена, простая зубрежка ничего не даст. Попытайтесь ПОНЯТЬ их, тогда ваши старания принесут плоды.
    • Некоторые филологи предлагают запоминать, что обозначает то или иное время. Так, времена группы Simple значат регулярное действие, факт. Времена группы Continuous выражают процесс, времена группы Perfect — результат какого-то действия, а Perfect Continuous — процесс, который длится на протяжении указанного количества времени.
    • Не забывайте о контексте и нестандартных способах обучения, например, вы можете учить времена английского языка при помощи песен. Когда слушаете песню, читаете текст или смотрите видео, обращайте внимание, как носители языка используют то или иное время.
    • Периодически проверяйте себя при помощи различных тестов на времена английского языка.

    Разобраться во всех 12 временах и научиться правильно выбирать их в той или иной ситуации поможет наш видеокурс «Система времен английского языка».

    9. Ошибка в использовании неправильных глаголов

    Совершенно непонятно, почему некоторые глаголы во второй и третьей форме просто будут получать окончание -ed: closeclosedclosed, некоторые совсем не будут меняться: putputput, а некоторые будут меняться не по правилам: speakspokespoken.

    • Учить таблицу неправильных глаголов обязательно. На первый взгляд это кажется объемной и непростой работой, но на деле вы можете значительно облегчить себе жизнь, если воспользуетесь советами из статьи нашего преподавателя Ирины «Правильный подход к неправильным глаголам английского языка». Грамматика английского языка в стихах учится легко и быстро.

    10. Неверное употребление предлогов

    Правила употребления глаголов, прилагательных и существительных с предлогами в русском и английском языках не совпадают. Совершенно непонятно, почему «злиться НА кого-то» будет “to be angry WITH”, а «концентрироваться НА чем-то» — “to concentrate ON”. А как вам такой пример: «уверенный В себе» — “confident OF himself”?

    • Правила употребления предлогов нужно учить наизусть, на самом деле это не так уж сложно. Трудности у студентов возникают, когда они пытаются выучить их без контекста. Поэтому имеет смысл не просто зубрить определенные конструкции, а выписывать предложения, в которых они употребляются, и почаще читать их. Лучше всего составлять такие предложения самостоятельно: напишите короткий текст и периодически просматривайте его.
    • Филологи единодушно выделяют 83 наиболее часто используемых выражения в фиксированной связке с предлогами, так что имеет смысл изучить их. Можно сделать это онлайн на специальном тренажере. Например, здесь .

    11. Непонимание разницы между условными предложениями второго и третьего типа

    Возьмем предложение второго типа: “If I had money, I would buy a house”. И аналогичное третьего типа: “If I had had money, I would have bought a house last year”. В английском языке они сильно отличаются, но на русский переводятся одинаково: «Если бы у меня были деньги, я бы купил дом». Эти «трудности перевода» смущают многих студентов. Как с ними бороться?

    • Второй тип условных предложений — это гипотеза, предположение, малореальные события, касающиеся настоящего или будущего времени. Часто так говорят о мечтах: если бы у меня были деньги, я бы купил дом. Третий тип относится к неосуществленным событиям, мы говорим о прошлом, его изменить невозможно: если бы у меня в прошлом году были деньги, я бы купил дом. То есть это наши мысли, мечты, предположения, относящиеся к ПРОШЛОМУ.
    • Еще одна небольшая подсказка: в условном предложении второго типа во второй части будут два глагола “If. I would do . ”. В предложении третьего типа — три глагола “If. I would have done . ” (вместо do — любой глагол).

    12. Неправильное согласование времен

    Наиболее распространенный пример согласования времен — косвенная речь. По-русски мы спокойно можем перефразировать «Я сказал: «Я иду в библиотеку»» в «Я сказал, что иду в библиотеку». И в первом, и во втором случае глаголы не меняют времени: в первой части предложения — прошедшее, во второй — настоящее. В английском языке такое недопустимо: “I said: “I am going to the library”” перефразируем в “I said I was going to the library”.

    • Запомните, если первая часть предложения стоит в прошедшем времени, то вторая часть (придаточное предложение в кавычках) не может стоять в настоящем времени, нам надо «отодвинуть» ее в прошедшее время. Руководствуйтесь правилом one step back (один шаг назад). То есть придаточное предложение нужно переместить на один шаг назад в прошлое.
    • При перефразировании прямой речи в косвенную, если в главном предложении (до кавычек) глагол стоит в прошедшем времени, то глагол в придаточном предложении меняет время по такому алгоритму:
      Прямая речь Косвенная речь
      Present Continuous Past Continuous
      Past Simple Past Perfect
      Past Perfect Не меняется
      Future Continuous Future Continuous in the Past
      Present Perfect Continuous Past Perfect Continuous
      Past Perfect Continuous Не меняется
    • Легко запомнить случаи, когда глагол в придаточном предложении менять не надо. Во-первых, не меняются модальные глаголы must, should, ought. Во-вторых, когда мы рассказываем об общеизвестных фактах, глагол остается в том же времени, ведь довольно странно прозвучит “He told me that Earth WENT around the Sun” («Он сказал мне, что Земля ВРАЩАЛАСЬ вокруг Солнца»).

    13. Неверное использование инфинитива и герундия

    Какая разница, сказать “I like to read” или “I like reading”? Перевод одинаковый. Однако не со всеми глаголами так можно поступать, иначе у предложения может появиться другой смысл. Как понять, когда и что использовать?

    • Выучить, после каких глаголов ВСЕГДА употребляется инфинитив, после каких — герундий. Это должен знать каждый студент, изучающий английский язык.
    • Есть глаголы (forget, remember, regret, stop, go on) после которых вы можете употребить и инфинитив, и герундий. Что из них выбрать? Если слово на русский язык переводится инфинитивом, то и в английском языке будет инфинитив. Если же слово можно перевести как отглагольное существительное (курение, написание, согласование, чтение и т. п.), используется герундий. Давайте рассмотрим на простых примерах:

    I remember to read this chapter. — Я помню, что надо прочитать (инфинитив) эту главу.

    I remember reading this chapter. — Я помню чтение (существительное) этой главы.


    I stopped to write this letter. — Я остановился, чтобы написать (инфинитив) это письмо.

    I stopped writing this letter. — Я бросил написание (существительное) этого письма.

    Вы можете также ознакомиться со статьей «Герундий vs инфинитив. Трудности перевода», размещенной на страницах нашего сайта engblog.ru.

    The greatest mistake we make is living in constant fear that we will make one.

    Самая большая ошибка — жить в постоянном страхе совершить ошибку.

    Надеемся, наши простые рекомендации помогут вам избавиться от ошибок в английском языке и продолжить учить грамматику английского языка. Боритесь с трудностями, чаще говорите по-английски, не молчите в страхе совершить ошибку. Только при постоянной практике вы сможете закрепить теоретические знания. Успешной борьбы с ошибками!

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

    Поймать на крючок по науке

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

    Несколько дней назад «Лента.Ру» писала, как ученым удалось приспособить геймеров для решения одной из сложнейших задач биологии — определения структуры белков. Специалисты из университета штата Вашингтон разработали онлайн-игру Foldit, участники которой должны вручную подбирать конфигурацию белков. Этому трудоемкому занятию геймеры посвящают часы, дни и месяцы — ни один ученый не готов потратить столько времени на такое скучное и утомительное, хотя и очень важное занятие.

    Корреспондент «Ленты.Ру» связался с одним из разработчиков игры и одновременно соавтором вышедшей в журнале Nature статьи о ней Зораном Поповичем (Zoran Popovic) и попросил рассказать, как создавалась игра, и что авторы делали для того, чтобы привлекать и удерживать новых пользователей. Вот что ответил Попович: «Мы использовали множество достаточно эффективных приемов, которые позволяют удерживать людей самых различных психологических типов. В частности, мы дали возможность игрокам соревноваться друг с другом, получать социальное признание за свои достижения. Кроме того, мы задействовали комплексную систему вознаграждений — участники получают их как за небольшие, так и за крупные свершения».

    Еще один автор статьи Сет Купер (Seth Cooper) уточнил, что при создании Foldit ученые не консультировались с психологами, но зато советовались с разработчиками игр, а также опирались на собственный геймерский опыт. Автор решил разобраться подробнее, как же именно разработчики игр завлекают в свои сети людей всех возрастов. Один из людей, которые профессионально занимаются созданием игр, посоветовал начать знакомство с трюками игровиков с вот этой статьи американского колумниста и писателя Дэвида Вонга (David Wong). Предлагаем читателям полный перевод этой заметки, в которой очень доступно (и в то же время по-научному) объясняется, почему игры вызывают зависимость, и как разработчики достигают этого.

    Пять гадких способов, при помощи которых игры сажают вас на иглу

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

    В чем же дело? Лично я вовсе не хочу сказать, что компьютерные игры – это наркотик вроде героина, а то и похуже. Я абсолютно уверен, что в жизни у тех, кто пал жертвами игр, было конкретно что-то не так, отсюда и итог. Но как минимум половина тех, кто сейчас читает эти строки, по себе знают, что такое зависимость от World of Warcraft, да и врачи говорят, что игровая зависимость – вполне реальная вещь. Так, может быть, некоторые игры намеренно сделаны так, что заставляют вас судорожно играть даже тогда, когда этот процесс не приносит вам реального удовольствия?

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

    Метод номер 5. Превратить игрока в лабораторную крысу

    Если вы на собственном опыте знаете, что это такое – впасть в зависимость от игры, или среди ваших друзей есть заядлые геймеры, – то ни в коем случае не читайте вот эту статью — она вряд ли доставит вам удовольствие. Дело в том, что автор статьи работает в Microsoft, и его работа заключается в том, чтобы заставить как можно больше людей подсесть на игры, независимо от того, нравится им это или нет. Более того, автор делает это вполне профессионально – он защитил кандидатскую диссертацию по поведению и наукам о мозге.

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

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

    Разработчики игр строят свои козни на основании работ американского психолога Берреса Фредерика Скиннера, который показал, что поведение человека можно контролировать при помощи простых стимулов и системы вознаграждений. Для проверки своих теорий Скиннер придумал специальное устройство, позже названное в его честь камерой Скиннера. Устройство это представляет собой клетку для небольшого животного, например крысы, в которой есть кнопка. Нажимая на кнопку, крыса получает вознаграждение в виде кусочков сухого корма.

    Сразу оговорюсь: я вовсе не утверждаю, что этот парень из Microsoft считает всех геймеров горсткой крыс, которые возятся в камере Скиннера. Я всего лишь обращаю ваше внимание, что этот разработчик иллюстрирует свои соображения по созданию «цепляющих» игр картинками с камерами Скиннера. Один из разработчиков игр, Ник Йи (Nick Yee), безусловно, знакомый с рассуждениями такого рода, как-то назвал Everquest виртуальной камерой Скиннера.

    Подход к созданию игр здорово изменился со временем. Раньше разработчики продавали вам игру за 50 долларов, и их абсолютно не заботило, сколько времени вы потратите на нее. Основной задачей создателей игр было сделать игрушку, которая вам понравится, чтобы назавтра вы пришли к ним за следующей. Сейчас основная масса игр – это ММО-игры (Massive Multiplayer Online Game, или многопользовательские онлайн-игры), которые должны заставлять игроков сидеть у компьютера, не отрываясь, как можно больше времени, в идеале – до тех пор, пока Солнце не превратится в сверхновую.

    Никакой фантазии не хватит для того, чтобы придумать столько приключений и историй, чтобы их хватило на те тысячи часов, которые игроки должны провести у монитора. Поэтому разработчики сменили тактику – теперь они заставляют игроков выполнять одни и те же действия снова и снова, не заботясь, получают ли игроки при этом хоть какое-то удовольствие. Иными словами, разработчики всерьез обратились к опыту Скиннера.

    Хотя стоит отметить, что в среде разработчиков игр отношение к скиннеровским технологиям неоднозначное. Создатель Braid Джонатан Блоу (Jonathan Blow) считает, что игры, построенные по принципу камеры Скиннера, – это не что иное, как эксплуатация геймеров. «Не то чтобы такие игры совсем не доставляли удовольствия. Просто они изначально разработаны так, чтобы держать игроков на крючке в те моменты, когда игра неинтересна, заставляя их совершать повторяющиеся действия по технологии Скиннера, то есть выдавая им за это вознаграждение через тщательно продуманные промежутки времени».

    Самое интересное во всем этом – вознаграждение отлично работает, даже несмотря на то, что его не существует в реальности. Казалось бы – это ведь всего лишь виртуальные образы. Не все так просто.

    Метод номер 4. Создать для игроков виртуальный сухой корм

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

    Люди все время смеются над этим фактом (“Ты проводишь все свое свободное время, пытаясь заполучить меч, которого даже не существует?”) и смеются только по той причине, что они глупцы. Если на то, чтобы заполучить некий предмет, вы потратили время, усилия и умения, то он для вас становится ценным независимо от того, что это – бриллиант, набор «ноликов» и «единичек» или же говяжья отбивная.

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

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

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

    В своей статье игровик из Microsoft убедительно доказывает: разработчики прекрасно понимают, что предметы, которые они заставляют геймеров собирать, — это те самые куски сухого корма, которые получают крысы в камере Скиннера.

    Метод номер 3. Заставить игрока нажимать на кнопку

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

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

    Самый изощренный пример использования этого принципа я встречал в корейской MMO ZT Online – в этой игре повсюду разбросаны закрытые сундуки, внутри которых лежат (или не лежат) какие-нибудь предметы. Чтобы открыть сундук, вам нужен ключ. А где его взять? Правильно, купить за деньги. Я имею в виду, за реальные деньги, такие, за которые вам продают жетоны для одноруких бандитов. Но это еще не все – создатели ZT Online додумались до одной штуки, о которой владельцы реальных казино даже и не мечтают: в конце каждого дня они награждают специальным призом игрока, открывшего больше всех сундуков.

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

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

    Б.Ф. Скиннер знает правильный ответ на этот вопрос. Он называет такое поведение «формирование условных рефлексов путем последовательного приближения к конечной цели». Выдавайте вашим хомячкам небольшие порции корма, кусочек за кусочком. Предположим, вы играете в World of Warcraft, и хотите получить обалденную броню Tier 10. Она состоит из пяти частей. Для того чтобы собрать их все, вы должны достать более четырех сотен Эмблем Холода (Frost Emblems), которые можно получить по две штуки за раз, убивая некоторых врагов. После того как вам это удалось, нужно проапгрейдить каждую из частей брони при помощи Знаков посвящения покорителя (Marks of Sanctification). А потом еще и при помощи Геройских знаков посвящения покорителя (Heroic Marks of Sanctification). Чтобы сделать все это, вы должны повторять и повторять одинаковые действия в течение – нет, не часов — дней. До обнаженных ли женщин тут?

    Когда вы достигли этой стадии, разве можно назвать то, что вы проделали, невинным словом «игра»? Это гораздо больше похоже на расчесывание комариного укуса. Который зудит все сильнее с каждым почесыванием.

    Метод номер 2. Заставить игрока жать на кнопку всегда

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

    Сухой корм нужно выдавать хомячкам неравномерно: пусть сначала кусочки сыплются быстро, но с течением времени скорость их подачи нужно уменьшать. Это очень эффективная технология, и именно потому, что она работает, в MMO вам поначалу очень просто прокачиваться, но на каждом следующем уровне количество затраченных времени и усилий возрастает экспоненциально. Помня лихорадку легкого перехода с уровня на уровень в начале, геймер испытывает намного большее удовольствие от каждого следующего успеха, который стоил ему серьезного труда. Уже знакомый нам парень из Microsoft выяснил, что с каждым новым уровнем геймеры играют все более фанатично.

    Убрать все стоп-сигналы

    Разработчики нашли очень простой способ удержать геймера в игре и заставить его ввязываться в долгие миссии (как миссии в World of Warcraft) – если человек выходит из игры – он теряет очки или наработанные потом и кровью достижения.

    Впрочем, такой подход может оказаться для многих слишком жестоким, и поэтому в некоторых играх используется ровно противоположная стратегия. Например, в New Super Mario Bros. Wii все уровни сделаны очень короткими. Пройти такой уровень – все равно что съесть одну чипсину. Уровни настолько короткие, что игрок неосознанно переходит с одного на другой и сам не замечает, как съедает всю пачку, в смысле проходит всю игру целиком.

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


    Играй или проиграешь

    Вот это по-настоящему гадкий ход. Собственно говоря, а зачем вознаграждать хомячка за то, что он давит на кнопку? Не проще заставить его стоять на кнопке на задних лапах и наказывать всякий раз, когда он пытается присесть в естественную позу?

    Специалисты по поведению называют такой метод «методом избегания». Они проводят в клетку ток, и если хомячок в течение 30 секунд не давит на кнопку, то получает электрический разряд. Хомячки очень быстро учатся стоять на кнопке, стоять постоянно, и все время жать и жать на нее. Все время жать и жать.

    Почему ваша мама как одержимая выращивает капусту в Farmville? Потому что если она перестанет ухаживать за ней, капуста завянет и сгниет. В игре Ultima Online ваш дом или замок начнут приходить в запустение, если вы не будете регулярно посещать их. Игроки в Animal Crossing знают, как быстро весь город зарастает сорняками, а в домах заводятся тараканы, если они долго туда не заглядывают. Этот прием – козырный туз всех разработчиков: нужно заставить геймера все время возвращаться к игре, чтобы не потерять все то, что он с такими усилиями заполучил.

    У каждой из описанных выше технологий есть свои недостатки, поэтому для того, чтобы создать по-настоящему цепляющую игру, разработчики стараются включить в нее как можно больше этих приемов, по-всякому сочетая их между собой. Дополнительно в игры практически всегда включают тот самый трюк со «случайным» появлением разных предметов, о котором я писал выше (сосчитайте на досуге, сколько всего разных приемов используется в World of Warcraft). Благодаря такой массированной психологической атаке хомячки будут прыгать с кнопки на кнопку и нажимать, нажимать, нажимать на нее.

    Выше мы спрашивали, можно ли назвать игрой маниакальный сбор предметов путем непрерывного кликания на одну и ту же картинку. Теперь пришло время поставить вопрос в более общей форме: а что вообще такое «игра»?

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

    Предыдущий параграф объясняет, почему в своей статье я не приводил вам в качестве примеров игры вроде Guitar Hero. На них вполне можно подсесть, но все мы понимаем, почему это происходит. Для человека очень естественно желание чувствовать себя специалистом в каком-нибудь деле. Точно так же соревновательные игры наподобие Modern Warfare 2 – это просто спорт для тех, кто в реальной жизни не очень-то спортивен. Здесь нет ничего загадочного – все мы любим побеждать.

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

    Из-за этих приемов некоторые авторы осуждали компанию Blizzard, когда в World of Warcraft пару лет назад внедрили новую систему достижений. Теперь для того, чтобы получить вознаграждение, игрокам нужно снова и снова выполнять всякие бессмысленные задания (например, удить рыбу до тех пор, пока вы не вытащите тысячную рыбешку). Никакого нового содержания, никакой практической пользы, никаких новых достижений. Просто виртуальная беговая дорожка. Или колесо для хомячка.

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

    Метод номер 1. Заставить хомячка считать камеру Скиннера домом

    Вы любите свою работу?

    Уверен, что как минимум половина из вас читает эту статью на работе. И этот факт объясняет, почему зависимость от игр – и вообще любую зависимость – так трудно преодолеть.

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

    Почему же в жизнях у такого огромного числа народа зияет пустое место? Ответ на этот вопрос можно найти у эксперта по всему Малкольма Гладуэлла (Malcolm Gladwell). По его мнению, для того чтобы человека удовлетворяла его работа, она должна отвечать трем критериям (могу поспорить, что у большинства из вас не наберется и двух из них):

    Независимость (возможность принимать самостоятельные решения)

    Сложность (в смысле, что на работе вы занимаетесь не только тупым повторением одних и тех же действий)

    Связь между прилагаемыми усилиями и получаемым результатом (вы видите непосредственный итог ваших тяжких усилий)

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

    Вы сами выбираете миссии, которые будете выполнять в игре, или овощи, которые хотите выращивать на своей виртуальной ферме. Черт, да вы даже сами выбираете собственное тело, видовую принадлежность и набор талантов.

    Геймеры будут заниматься монотонным повторением одних и тех же действий именно потому, что они не ощущают, что заняты монотонным повторением. Вспомните описанные выше танцы с бубном для добывания брони.

    Связь между прилагаемыми усилиями и получаемым результатом

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

    Самое замечательное, что разработчики игр научились использовать себе на пользу даже скуку. Как мы уже обсуждали выше, в том же World of Warcraft игрок должен долго работать только для того, чтобы получить возможность в будущем приобрести какой-нибудь классный предмет. И в том случае, когда эта работа особенно скучна, – например, когда вам нужно утомительно добывать золото, — ощущение удовлетворенности от получения заветного предмета только усиливается. И, кстати, скука в играх помогает избавиться от чувства вины, когда вы играете вместо того, чтобы сидеть в школе, работать или выполнять свои обязанности по дому. В конце концов, вы уже достаточно поработали – 12 часов, проведенные за добычей золота в прошлый четверг были явно менее забавными, чем стрижка газона. После такого напряжения вполне можно и немного развлечься.

    Разработчица компьютерных игр Эрин Хоффман (Erin Hoffman) очень хорошо объяснила, в чем заключается причина зависимости: «Когда мы говорим о зависимости – мы говорим не о том, что люди делают, а о том, чего они не делают, замещая неделание зависимым поведением». Ее слова относились к флэш-игрушкам вроде Bejeweled, притягательность которых возрастает прямо пропорционально вашему нежеланию выполнять свою работу.

    Ужасная правда состоит в том, что подавляющее большинство людей мечтают о личной камере Скиннера, куда они могли бы заползти и там остаться, потому что в реальном мире система вознаграждений работает гораздо медленнее и при этом бьет намного больнее, чем нам бы того хотелось. Так что игры – это просто еще одна форма психологического убежища, такая же, как спортивные фанатские клубы или любование лунным светом.

    Опасность игр кроется в том, что они стали настолько эффективным способом получения чувства удовлетворенности, что люди предпочитают их учебе или карьере. Маловероятно, что игровая зависимость однажды разрушит этот мир или покосит ряды молодых так же, как это сделал крэк в 90-х годах. Но совершенно не исключено, что игры взрастят поколение болванов, работающих в «Макдональдс», хотя у них достаточно способностей, чтобы заниматься чем-нибудь значительно более престижным. Их реальная жизнь не будет приносить им удовлетворения, потому что всю свою молодость они потратили на компьютерные игры, и, чтобы загасить это чувство неудовлетворенности, они будут продолжать играть в игры.

    И давайте посмотрим правде в глаза: сейчас вы думаете, что World of Warcraft очень эффективно вызывает зависимость, но подумайте о том, какие игры появятся через десять лет. Разработчики хорошо делают свою работу и со временем только оттачивают свои навыки.

    Не фича, а баг: тестировщик о классификации игровых глюков

    Сид Мейер как-то сказал, что «Игра — это последовательность интересных выборов». А значит, перед выпуском игры в массы тестировщик должен убедиться, что все выборы в игре интересные и работают правильно. Да и вообще работают!

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

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

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

    Чтобы успешно заводить баги, нужно их систематизировать. Разделить и властвовать.

    Итак, баги в играх можно условно классифицировать по следующим категориям.

    Баги, связанные с самой игрой

    • Баги функциональности. Не работают или неправильно работают какие-то функции в игре. Например, при переходе в настройки приложения происходит аварийное завершение работы.
    • Баги интерфейса. Искажается графика, элементы не находятся на своих местах, текст не вписывается в отведенные ему рамки.
    • Баги локализации. Ошибки в текстах, присутствие непереведённых строк. Скажем, вместо перевода выводятся заглушки, вроде «russian_text_001».
    • Баги производительности. Приложение на устройстве работает медленно. Например, во время анимации атаки персонажа FPS заметно «проседает» на устройствах high-end сегмента.
    • Баги логики и баланса. Выставленные настройки баланса и игровой логики не позволяют пройти игру или достигнуть нужных целей. К примеру, персонаж наносит урон в 100 единиц, вместо 150 обещанных в игре.
    • Технические баги. Игра неправильно работает в условиях нестабильного интернет-соединения, как вариант, приложение не может подключиться к серверу в 3G сетях.

    • Баги совместимости. Игра попросту не работает на совместимом устройстве или запускается с критическими ошибками.

    Багам присваивается степень критичности: какие-то устраняются в первую очередь, а какие-то можно даже оставить в финальном релизе:

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

    Баги различают по затрагиваемой стороне. То есть кому они будут больше всего мешать использовать продукт:

    • баги, затрагивающие пользователей. Влияют на популярность приложения, средний рейтинг в магазинах приложений;
    • баги, затрагивающие бизнес. При этом могут не мешать пользователям. Например, игра слишком простая: это радует игроков, но не побуждает их вкладывать деньги;
    • баги, затрагивающие команду разработки. Если функционал реализован не так, как задумывала команда, что не замечают пользователи (они не знают, как задумывалось) и не мешает приложению зарабатывать деньги.

    От чего зависит число багов в игре

    Действительно, от чего? Почему в одних играх их просто огромное количество на альфа-тестах (привет, No Man’s Sky), а в других — практически нет? Всё довольно очевидно.

    1. В первую очередь это зависит от опытности команды разработки.
    2. На втором месте стоит техническая сложность проекта. Шансы появления багов прямо пропорциональны количеству кода и числу используемых библиотек.
    3. На третьем месте — количество возможностей в игре и разнообразие игрового процесса в целом.
    4. Серьёзная статья — это сетевой режим и пути взаимодействия игроков друг с другом. Для сетевого режима разработчики зачастую даже в играх, уже прошедших тестирование на этапе производства, запускают закрытые тестирования для настройки баланса и поиска неочевидных багов.
    5. Ну и конечно, прямая зависимость от эффективности тестирования именно на раннем этапе разработки. Дело в том, что чем больше багов будет найдено как можно раньше, тем меньше шансов, что эти баги позже приведут к появлению новых.

    Привязка выявляемого количества багов к жанрам

    • RPG с сетевым режимом. Большой мир, масса сценариев взаимодействия игроков друг с другом;
    • Игры с открытым миром. Очень много возможностей поведения игрока, которые надо тщательно тестировать;
    • Любые игры с мощной графической составляющей. Практически невозможно одинаково оптимизировать игру под все устройства, если речь не о консольных тайтлах.

    Сравнительно проще тестировать игры, где действия игрока ограничены, их реально проверить все за обозримое время теста. В основном, это казуальные игрушки:

    • игры в жанре match-3. Здесь игрок ограничен только игровым полем и комбинациями фишек, бонусов и количеством игровых механик;
    • игры в жанре hidden objects (поиск предметов), в которых, как правило, свобода игрока ограничена;
    • файтинги;
    • казуальные игры, действие которых происходит на одном экране — тайм-менеджеры, кликеры, shoot’em up и т.д.

    Такова классификация багов с нашей точки зрения. В ходе написания материала мы нашли интересное видео с выступлением Дмитрия Химиона про «Тестирование игровой механики в компьютерных играх». Он утверждает, что есть ещё одна классификация ошибок в игре.

    Ошибки дизайна уровней

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

    Ошибки обратной связи

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

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

    Ошибки игрового баланса

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

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

    А с какими багами сталкивались вы? Присылайте нам в комментарии — похохочем, что ли.

    Если вдруг вы разработчик и хотите, чтобы подобных ошибок в вашем проекте было поменьше, пишите нам на order@inlingogames.com — мы придумаем что-нибудь вместе.

    И вообще, доверяйте свои игры профессиональным тестировщикам, да поменьше багов вам в готовых продуктах: далеко не все из них станут легендарными, вроде знаменитого «geddan».


    Материал опубликован пользователем.
    Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

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

    Требования — это старый миф. Наиболее олдовые айтишники на древних форумах пишут, что существуют такие мифические существа как аналитики. По легенде, они подпускают к себе только девственниц и ПМов. Говорят, что когда Луна находится в нужной фазе, а звезды сходятся под верным углом, аналитик может окуклиться у себя на рабочем месте. Если правильно ухаживать за этой куколкой, то спустя 3-5 рабочих дней погружения в астрал и взаимодействия с эфиром, куколка аналитика раскрывается и тогда у проекта появляются записанные на священных скрижалях заветы — требования.
    К сожалению, из-за вырубки лесов и вмешательства человека в экологию, сейчас этих дивных существ почти не встретишь, а потому труд обычного тестировщика тяжел и неблагодарен, поскольку приходится работать без требований.

    Наверное я не обычный игрок, но я так не считаю.

    На работе пишу про баги, на ДТФ читаю про баги.

    Если исключить из статьи всё от методологии тестирования «обычного» софта, то остальное в статье выглядит немного очевидным. Только часть про «влияют на способность приложения приносить деньги» в высоком приоритете показалась занимательной.

    И почему-то файтинги записаны в «казуальные игрушки».

    Наверное большинство играет в них казуально в компании, иногда под пивко

    У меня почему-то сходу ассоциации с выдрачиванием таймингов и комбо, хех.

    Наверное имеются в виду какие-нибудь мобильные файтинги, где надо пошагово выбирать один из трёх ударов и посмотреть что получилось. Как камень ножницы.
    Браузерки такого рода были одно время популярны.

    выглядит немного очевидным

    Так и должно быть, более важная задача как тестирощика — умение четко и ясно описать суть бага в одном предложении, а потом шаги воспроизведения без лишних красивых фраз, ибо программистам приходится после всего этого ещё и исправить это.

    Смотрите, тут вопрос и правда интересный. Потому что казуальные и хардкорные игрушки могут быть любыми по сути — сегодняшние игры имеют несколько слоёв и уровней сложности: их можно проходить ради сюжета, pressing X to win, или же мучить каждый тайтл на платину. То же касается и файтингов. Аркадная жанровая принадлежность мало о чём говорит. Наверное, и правда не стоило относить к казуальным играм файтинг, потому что такое разделение весьма субъективно.

    А тиммейты-дауны считаются за игровой баг высокого приоритета? Просто, судя по описанию — да..

    Тиммейты-дауны это баг матчмейкинга. Либо развития.

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

    А как же баги, которые стали фичами (как возможный этап их «развития»)?
    Можно вспомнить хотя бы L4D+L4D2, где многие баги так удачно появились, что в какой-то мере влились в механику?
    Или, например, Warhammer: End Times — Vermintide, когда разработчики, основываясь на мнении комьюнити оставляли баги функционала.
    Вообще наверное потянет на отдельную статью рассказ про такие баги.

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

    Тут надо учитывать важный момент. Баг в сознании обывателя — это некая прям ошибка, что-то неработающее. При этом для разработчиков и тестировщиков багом является всё, что фактически расходится с тем, как систему описывают аналитики. То бишь, даже готовый, но неучтенный функционал де-факто является багом, пока его не «примут».

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

    «Да ты достал одним ударом бить!»

    Скажи это марвел и капком.

    Так можно сказать про любую игру с нормальным управлением — TES, GTA, X-COM, NFS, FIFA, CoD, шахматы, Starcraft.

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

    Страурафт явно не для новичков. Извини. Но я видел как многие люди месяцами не могут выполнить простейший порядок команд за минимум времени

    Чтобы играть в SC, совсем не надо выполнять простейший порядок команд за минимальное время

    Видел людей для которых безостановочный заказ рабочих — уже проблемма. Они просто не понимают логику : рабочий ->больше ресурсов.
    Больше речурсов-> больше войск.

    В комментарии было о низком пороге входа для того, чтобы ИГРАТЬ, а не ВЫИГРЫВАТЬ.
    Т.е для того, чтобы провести бой нужно потратить пару минут и понять основную механику. Все остальное — опыт и скилл.

    Ничего нового для себя как для тестировщика не узнал, но было интересно.
    Спасибо!

    😀 смешанные чувства) Спасибо, буду уходить в детали в следующих публикациях.

    Отлично, буду ждать!)

    В Doom BFG довольно баганутая .(BFG+замедло)
    На ней основываться спидраны.

    А у вас в написании текст стринг поехал (:

    Это не поехал, это я рукожоп_

    Добрый день. На сайте среди услуг нашел только тестирование локализации. Это идет несколько вразрез с тем, что вы написали тут. Вы занимаетесь другими видами тестирования?

    Добрый день!
    Да, занимаемся, на сайте ещё не обновили инфу. Напишите на нашу почту order@inlingogames.com и мы ответим на все ваши вопросы.

    Спасибо, я свяжусь с вами.

    За сотни часов в скайриме встретил багов меньше за несколько в рдр2 :/

    Если пользователь не донатит на игру — то это баг? Ох лол.

    «Ваша гипножаба не работает. Пользователи не кидают деньгами в монитор- исправьте!»

    Какие типичные ошибки в программировании совершают новички — отвечают эксперты

    Нам в редакцию Tproger пришел вопрос от подписчика, которым мы хотим поделиться с вами:

    «Какие типичные ошибки в программировании совершают новички?»

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

    Ильназ Гильязов , эксперт курса «Профессия веб-разработчик» университета digital-профессий Нетология

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

    Сегодня существует большое количество источников информации различной степени качества: начиная от классики Computer Science, написанной 10-15 лет назад, до современных школ обучения, где преподают практики. Я бы рекомендовал с особой осторожностью относиться к современным инфо-бизнесменам, за неделю обещающих из вас сделать программиста.


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

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

    Ключевые критерии: наличие практики по изучаемому материалу и приближенность практики к реальной жизни.

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

    В разработке программных продуктов нужно же больше анализировать конкурентов, т.к. они уже проделали работы по решению задачи до вас. Приведу очень простой пример – если вы поставите начинающему программисту задачу сделать сервис по подбору дебетовых карт, допустим по % на остаток, то он сделает вам сервис, в котором процент будет одним числом. Если же посмотреть на реальные продукты, которые решают подобную задачу, то процент может быть не только одним числом. Поэтому учиться этому нужно сразу, а для этого решать не игрушечные задачи, а задачи, которые встречаются в реальном мире (пусть и в упрощенном варианте).

    Андрей Коваленко , со-основатель и CTO Voximplant

    Главная ошибка новичка заключается в том, что он спешит. Вместо того, чтобы изучать язык, платформу или фреймворк, он вводит вопрос в Google/Stack Overflow и просто копирует результат. Это плохо не только потому что без системных знаний невозможно понять новые технологии «изнутри», но и просто потому что в скопированных ответах могут быть ошибки. Если не разобраться досконально, вместо кода получится «лоскутное одеяло» из кусков Stack Overflow, в котором сам автор разбирается крайне поверхностно. Как следствие, развивать это решение дальше будет крайне сложно.

    Михаил Субботин , преподаватель израильской высшей школы IT и безопасности HackerU

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

    Андрей Кузьмичев , заместитель генерального директора RU-CENTER

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

    Какие же основные ошибки могут совершать начинающие программисты?
    1. Не пытаться искать информацию. Если вы начинающий программист, наверняка кто-то уже сталкивался с вашим вопросом, и решение есть в открытом доступе, мануалах, FAQ и т/ д. Поиск ответа также может показать выбранное решение проблемы с другой стороны. И возможно, это решение только ухудшит ваш проект. Очень полезно использовать опыт других программистов.
    2. Не бросать неверное решение. Если Вы поняли, что выбранное решение – не самое лучше, смело отбрасывайте его и начинайте заново. Плохой код и много “костылей” в программе не сделают её удобной для эксплуатации, даже если в итоге она заработает.
    3. Ошибка вытекает из пункта два – ухудшать, а не улучшать код. Всегда нужно стараться, пусть и понемногу, улучшать код, но не ухудшать его временными решениями.
    4. Не планировать. В этом вопросе важно найти оптимальный вариант, т.к. чересчур подробное планирование может только затруднить подготовку проекта. Нет идеальных планов, но, особенно для крупных проектов, планирование необходимо.

    Также начинающему программисту стоит обратить внимание на некоторые моменты, касающиеся уже непосредственно написания кода: инкапсуляция, правильно подобранные инструменты, тестирование (а лучше автотестирование) и т. п. Как говорится, все приходит с опытом, но если заранее учесть возможные ошибки – опыт вы получите намного быстрее.

    Диана Гомонова , руководитель отдела маркетинга в веб-студии Craft Group

    Статус новичков в программировании наши разработчики перешагнули уже давно. Однако даже тем, кто стал гуру, есть что вспомнить. Ведь все они тоже были когда-то на заре своей карьеры и совершали ошибки. И вот какие: использование в работе непроверенной информации, нежелание углубляться в проблему, поверхностное ее изучение, выбор некорректного источника для обучения (что потом плохо сказывалось на результатах работы), разработка новой фичи ради фичи (увидел что-то новенькое, и принялся делать, забывая о нюансах и подводных камнях) и лишние, бесполезные вложенности в HTML.

    Сергей Вересов , руководитель проектного офиса «Павелецкая» компании «Первый БИТ»

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

    2. Склонность к «красивым» решениям. Если есть возможность решить задачу сложно и красиво или просто и утилитарно, новичок выберет «красоту». Естественно, такие «решения» сложнее поддерживать, масштабировать и использовать вторично. Избавиться от такой склонности поможет работа в команде и получение регулярной обратной связи от коллег, которые вынуждены мучиться с такой «красотой».

    3. Использование объектов не по назначению. Связано также с недостатком опыта. Это можно исправить регулярной практикой в команде и постоянным изучением инструментов работы.

    4. Пренебрежение стилю написания кода, форматированию, названию переменных и объектов. Конечно же, коллегам не приносит радости читать такой код. Работа в команде и обратная связь с куратором поможет искоренить у новичка это пренебрежение.

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

    Резюме. Нужно понимать, что все эти ошибки относятся к программированию за деньги. Если вы программируете для удовольствия, то это другое. Ошибок в программировании, которые относятся к работе, довольно много. Выше перечислены только основные. Можно упомянуть еще пренебрежение к «юзабилити», недостаточное тестирование и отрицательное отношение к оценке кода коллегами, да и многое другое. Но новичку не стоит унывать, так как работа в команде позволит ему избавиться от всех этих недостатков.

    Кирилл Меженцев , программист группы разработки карты рассрочки «Совесть»

    Говоря о типичных ошибках новичков в программировании, как правило, смотрят на профессиональные знания и навыки и упускают из внимания возможные ошибки в самом рабочем процессе. Основываясь на своем опыте могу сказать, чего делать новичку точно не стоит:

    Бояться подойти с вопросом, когда что-то непонятно. Всем людям свойственен страх выглядеть глупо, задав очевидный вопрос. Мы надеемся, что сами разберёмся во всем. Но один простой вопрос на stackoverflow или коллеге может сэкономить пару дней. Это не значит, что не надо разбираться в проблеме самому, конечно надо, и полезно. Но объять необъятное крайне сложно, а вокруг вас много разносторонних людей и многие задачи удастся решить быстрее с их помощью.

    Считать, что раз ты новичок, то все вокруг умнее тебя. Это круто (и так должно быть), когда в коллективе есть люди гораздо более опытные и знающие, готовые помочь и подсказать. Но не всегда стоит стопроцентно полагаться на их слова. Скорее – как на мнение. Например, у тебя возникла проблема и тебе сказали: «а, ну это здесь не так». Ты идешь разбираться, не можешь найти ошибку в указанном месте и считаешь, что просто недостаточно изучил тему, ты же джуниор. Но может случиться, что сам сеньор не очень понимает, о чем идет речь. Полностью погрузиться в контекст, не упуская ни одной детали, бывает сложно. Все мы люди. Поэтому полагаться на сеньора как на «истину в последней инстанции» не нужно, руководствуйтесь еще и фактами, доказательствами.

    Перерабатывать. Работая с утра до полуночи, не отдыхая и не высыпаясь, вы берете у себя здоровье и силы в долг. Когда-то придётся его вернуть. Если я не справляюсь с нагрузкой за рабочие

    8 часов, значит: а) я не настолько компетентен и переоценил свои способности, б) у меня проблемы с тайм-менеджментом, и я взял больше работы, чем реально выполнить за это время. Оба варианта – повод задуматься и исправить положение. Перерабатывая вы делаете хуже не только себе, но и работодателю. Кому нужен неделями не высыпающийся сотрудник, который от усталости не может перевернуть бинарное дерево? Да, бывают случаи, когда дедлайн горит, все пошло не так и «надо было вчера». Но после таких ситуаций обязательно нужно отдохнуть и провести оценку: что я должен сделать, чтобы не допускать этого в будущем?

    Алексей Рузин , ведущий разработчик Kokoc Group

    1. Боязнь контакта.
    Начинающие программисты часто стараются все делать самостоятельно или наоборот боятся решать задачи в одиночку. В первом случае человек может допустить большое количество ошибок, которых можно избежать, если обратиться за помощью к коллегам. Вторая крайность чревата тем, что программист не сможет проявить себя, так и останется начинающим. Лучший способ справиться с излишней самоуверенностью или страхом – заручиться поддержкой опытного коллеги, который может выступить в роли наставника. Прежде всего программисту стоит попытаться найти решение задачи самостоятельно, а если не получится, обратиться к коллеге. При этом важно не бояться и задавать дополнительные вопросы до тех пор, пока решение не будет понятно.

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

    3. Непрозрачные названия переменных или функций.
    Чтение кода занимает в 10 раз больше времени, чем написание, поэтому важно, чтобы он хорошо читался и программист быстро понимал, что именно этот код делает. Возьмем для примера язык Python.
    Неопытные программисты могут назвать переменные так:

    Но лучше написать так:

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

    Например, такой код:

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

    5. Погоня за модными технологиями.
    Как правило, новые технологии имеют превосходство в одних областях за счет проигрыша в других. До тех пор, пока у начинающего программиста нет понимания этих особенностей, лучше использовать проверенные временем универсальные решения. Например, если программист разрабатывает приложение, которое хранит какие-то данные, не стоит спешить использовать самое последнее NoSQL-решение, только потому, что это модно. В большинстве случаев подойдет обычная SQL база-данных (MySQL, PostrgreSQL, SQLite) с большим объемом документации, стандартизированными подходами, описанными и давно решенными проблемами.

    Напоследок:
    • Всегда тестируйте свой код, в идеале, пишите автоматизированные тесты;
    • Делайте бэкапы данных, в том числе, систему контроля версий кода;
    • Не выкладывайте новый код на продакшн-сервер в пятницу вечером, потому что есть вероятность, что придется провести выходные, исправляя ошибки.

    Александр Донсков , системный архитектор REG.RU

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

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

    Многие начинающие разработчики используют технику copy-paste. Мы живем в прекрасное время, где любая проблема может решиться за несколько секунд с помощью поисковика. Но не стоит этим злоупотреблять. Бездумное копирование решений со stackoverflow не только не добавит в вашу копилку опыта, но и может что-то сломать в проекте. После того, как вы нашли проблему, постарайтесь ее решить с помощью документации, если это не получается сделать за вменяемый срок, то уже можно обращаться за помощью к великому Google. После того, как было найдено решение, необходимо понять, как оно работает, и только после этого, можно использовать его в коде.

    Бывают ошибки с использованием неподходящих инструментов. Многие джуниоры, не успев дописать свой первый hello world, уже бегут осваивать новые технологии и прорывы в мире ПО,при этом не желая изучать фундаментальные вещи, которые являются основой всего современного стека технологий и кардинально не меняются десятилетиями. Как следствие появляется несколько значительных проблем:

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

    Непонимание, где, как, а главное зачем использовать ту или иную технологию или инструмент, негативно сказывается на качестве кода и проекта в целом.

    Приверженность к одному конкретному языку/технологии/OS/IDE и попытки навязать их другим (евангелизм), тоже часто говорит о том, что человек не понимает или не может объективно сравнить тот или иной инструмент для решении конкретной задачи.

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

    Еще есть зацикливание на проблеме и боязнь критики. Всем нам тяжело признавать свои ошибки и провалы. А начинающему разработчику тяжелее вдвойне: он хочет максимально проявить себя, доказать, что может самостоятельно работать. Частой ошибкой является негативная реакция на комментарии коллег по поводу качества кода новичка. Нужно понимать, что каждая найденная ваша ошибка, делает вас сильнее, и что коллеги не издеваются над вами, а хотят помочь.

    Или начинающий программист не всегда может решить проблему в короткие сроки, и начинает зарываться в неё, пишет велосипеды или вовсе ничего не пишет и очень грустит. Главная ошибка тут не в том, что разработчик не знает как решить проблему — все начинали с этого уровня, а в том, что он не обратился за помощью после первых 3-4 неудачных попыток. Стоит акцентировать внимание, что сразу бежать к ментору или на форум не стоит, ошибки — это опыт.

    Вылетают игры без ошибок.

    В общем проблема такая. Некоторые игр (не все, в основном те, что потребовательнее) вылетают, без ошибок, просто закрываются и все. Иногда такая же фигня может быть и с некоторыми приложениями, например ФШ может взять и просто внезапно закрыться. Причем, вылеты абсолютно рандомные, вот например играю в игру, ни лагов ни фризов, фпс 60-120 и хоп, вылет (бывает что не вылетает, а просто экран темнеет и выходит сообщение типа»программа не отвечает», закрыть можно только через диспетчер задач).

    В общем мне бы понять, в чем может быть причина? С оперативкой все в порядке, видеокарта и процессор не перегреваются. Единственное могу думать только на HDD, бывает он регулярно нагружается и лампочка непрерывно горит несколько секунд, при этом в играх например могут наблюдаться небольшие фризы\подергивания. Ну и Винда уже больше года стоит, может ли быть в ней дело? Хотя я всегда чищу вирусы, чищу мусор CCleaner’ом, насчет HDD: дефрагментацию делаю каждые полгода-год (в зависимости от кол-ва установленных игр\программ, файлов). Может у кого встречалась подобная проблема?

    Основные ошибки ведущего игры и как их избежать

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

    Ошибка номер раз: « Я ‎ лучше знаю как вам жить! »‎

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

    Иногда ведущему, да и другим участникам игры, настолько все очевидно, что они даже начинают многозначительно переглядываться, мол, видал как оно там все? И тут же хочется что-нибудь присоветовать! А как не присоветовать, когда со стороны виднее? Но ведущий игры он не подружка на кухне, которая точно знает как лучше, особенно после третьего бокала вина. Ведущий игры это тот, кто все видит и не мешает хорошим людям играть и получать свой опыт. Все, что он может, это задать направляющий вопрос, который создаст такие условия для игрока, в которых он сможет увидеть то, что уже видно всем остальным, сделать соответствующие выводы и принять решения.

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

    Ошибка номер два: «Сейчас я вас всех вылечу! »‎

    Когда человек садится за игровой стол, он не ждет, что его будут “лечить”. Он может не знать до конца, что его ждет, но он точно не записывался на прием к психологу. Однако, часто случается, что ведущий, который скорее всего имеет отношение к психологии, пренебрегает форматом игры и с порога начинает залечивать игрока, который на это не подписывался. Почему? Потому что он уже совершил ошибку номер раз.

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

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

    Ошибка номер три: « Я ведущий, все остальное — спам! »‎

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

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

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

    Проверка пунктуации текста онлайн

    Для того, чтобы проверить пунктуацию текста онлайн, в Интернете существует множество сервисов. Все они утверждают, что могут проанализировать введённый текст на русском языке на правильную расстановку запятых. В результате собственной проверки самых популярных ресурсов, был выявлен только один сервис — Оnline.orfo.ru, очень близкий по результатам к проверке в программе Microsoft Word .

    Проверка пунктуации русского текста онлайн (расстановка запятых)

    Детально изучив каждый из существующих сервисов, было выявлено, что кроме Оnline.orfo.ru других качественных программ по проверке русского текста на правописание просто нет (это не касается проверок по другим критериям, например, по ошибкам в тексте). Подтверждается это большим количеством положительных отзывов. На некоторых сайтах проверки пунктуации текста онлайн вообще отсутствует место вставки текста.

    Оnline.orfo.ru — лучший сервис бесплатной онлайн-проверки текста на пунктуацию

    Оnline.orfo.ru выполняет проверку текста на пунктуацию, как на русском, так и на других языках. Разработана программа ООО «Информатик». Данная организация начала свою деятельность по разработке лингвистических технологий ещё в 1989 году. В 1994 году компания Microsoft произвела созыв лучших экспертов, для определения самых качественных инструментов, которые можно использовать в качестве инструмента по экспертизе проверяемого текста и дальнейшего внедрения модульных пакетов в Microsoft Word. Было принято решение о выделении лицензии модулям проверки текста ООО «Информатик». С 1995 года их внедрили в русские пакеты текста Microsoft Office.

    Проверка текста на данном сервисе ограничена 4000 символами, а значит, для проверки более длинных текстов, придётся вводить частями поочерёдно.

    Приступить к проверке текста на правильность расстановки запятых и орфографии (бесплатно)

    В ходе проверки нескольких текстов на данном сервисе, были найдены (пример на картинке) следующие вероятные ошибки отсутствия знаков препинания.

    Такие же результаты показывает проверка текста в Microsoft Word.

    ! Другие популярные сервисы отсутствующих запятых не определили , только выявили несколько грамматических и орфографических ошибок.

    Конечно, при наличии Microsoft Word, проверка пунктуации в тексте онлайн не потребуется, но не всегда удобно использовать данную программу.

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

    Мастер Йода рекомендует:  Крупные компании поддержали экосистему для разработки ИИ от Microsoft и Facebook
    Добавить комментарий