Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Основная статья: Разработка

Удалять или подождать — вот в чем вопрос

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

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

Ресурсы

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

Но это требование скоро может измениться. Создатели операционных систем в последнее время начали через обновления «убивать» старую технику. Мобильные пользователи вынуждены покупать новые гаджеты с лучшими характеристиками. Как минимум временно это решает проблему объема занимаемой памяти и ресурсов.

Сложность

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

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

Стимулирование

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

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

Ошибки

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

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

Не нативная реклама

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

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

Косность функционала

Технологии мобильных телефонов постоянно расширяются. 3D Touch, дополненная реальность, сканеры пальцев и сетчатки, Face ID — если это можно задействовать в приложении, то надо использовать. Это важно не только для владельцев продвинутых смартфонов, но и для тех, у кого подобных функций нет. Если приложение не предлагает повышенного удобства его использования, создается ощущение, что это не единственный урезанный момент.

Неряшливый дизайн

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

Скорость

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

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

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


19 июл 19, 19:16
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Бесплатные ресурсы для ваших игр

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

Искать лучшие ресурсы мне помогал Владимир Михайлов — энтузиаст инди-разработки, автор музыки и звукового оформления к играм Dragon’s Dungeon, Quest Hunter, One Helluva Day. Мы постарались охватить разные направления: от готовой к использованию графики и музыки до сообществ, где можно попросить совета и найти соавторов. 

Пост будет длинным. Начинаем!

Наборы материалов (Assets)

OpenGameArt.Org — один из самых известных сайтов с бесплатными игровыми ресурсами, доступными как Creative Commons. Но я хочу отметить раздел Collect. Готовые тематические подборки очень экономят время. Вот набор тайлов для изометрической игры и коллекция «изометрических» персонажей, как альтернатива программам по созданию персонажей. А вот вам пиксель-арт и графика в стиле NES и Game Boy.

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

Сraftpix, раздел Freebies — более 80 бесплатных пакетов 2D-графики для RPG, стратегий, аркад, платформеров и других типов игр. Тайлы, персонажи, GUI, иконки, фоны.

Open Game Graphics — гора плюшек для 2D-игр. Помимо дизайна интерфейсов, персонажей и уровней можно скачать 25 полных коллекций графики под игру конкретного жанра и антуража: мрачный Sci-Fi-платформер, красочный Top-down shooter, 8-битный рогалик и так далее. Много спрайтов в мультяшном стиле.

PixelGameArt — фэнтезийные и Sci-Fi-ассеты в стиле пиксель-арт с возможностью предпросмотра демок в браузере!

Персонажи и часть фона из набора GothicVania Town. Онлайн-демо

Kenney — поставщик игровых ресурсов и редакторов для создания игр, который предлагает около 60 бесплатных наборов ассетов, в том числе тайлы, изометрические спрайты, шаблоны-конструкторы для персонажей и построек, 3D-модели, музыку и звуки, элементы UI.

GameDevMarket — ярмарка ресурсов, созданных пользователями. Есть и уютный уголок «халявы». Чтобы попасть туда, откройте интересующий раздел (например, 2D > Characters) и в колонке слева выберите Type > Free.

Game Developer Studio — более 100 бесплатных 2D-ассетов, которые можно отфильтровать в магазине по принципу «сначала дешевые». Автор сайта и всех материалов — Роберт Брукс. Вы можете отправлять ему идеи нового контента и голосовать за чужие предложения в разделе Suggest an asset.

Game assets на itch.io — золотые россыпи 2D- и 3D-графики для ваших игр. Тысячи ассетов от участников сообщества. Много красивого пиксель-арта, выразительные персонажи, детализированные тайлы карт и уровней. Никакой рекламы на страницах. Именины сердца!

Renpy для чайников — русскоязычный блог с полезностями для тех, кто делает визуальные новеллы на движке Ren’Py. Скрипты, мини-игры, спрайты, нестандартные меню, GUI.

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

3D-графика

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

Мы говорим о бесплатных ресурсах для игр и инструментах, поэтому ориентироваться будем прежде всего на Blender и его сообщество. 

BlendSwap

Этот портал — моя первая остановка в поисках годного 3D. Тут собраны модели всех типов: персонажи, интерьеры, архитектурные сооружения, транспорт, оружие, одежда, еда, готовые сцены и пейзажи. Плюс низкополигональные меши, риги для скелетной анимации, текстуры и материалы, эффекты на основе частиц, node-заготовки для Blender, настройки стилей визуализации, скрипты на Python. 

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

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

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

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

Несколько интересных BlendSwap-аккаунтов:

  • izuzf — много оружия разного типа и разных эпох, персонажи, в том числе low poly.
  • Daren — персонажи, в том числе с полным ригом и лицензией CC0. Например, вот.
  • tastyfish — три набора объектов и декораций для RPG в мультяшном стиле плюс оружие. Лицензия — CC0.
  • Mutte — монстры, зомби, прочие враги и военная техника. 

  • RedFrost — 47 заготовок для игрового движка Blender Game Engine по лицензии CC0.
  • Коллекция пользователя JerryJury — 1000 роскошных моделей, с большинством которых можно делать что угодно. Бытовые мелочи, техника, оружие, боевые роботы, эффекты для Blender.
  • Коллекция papasmrfe — тут много симпатичных персонажей.

Другие сайты с 3D

ShareCG — основанный в 2007 году сервис, куда любители и профессионалы компьютерной графики загружают свой контент. Помимо бесплатных 3D-моделей, текстур и материалов, здесь есть стоковые фотографии, уроки, скрипты, программы и плагины для CG-творчества, музыка.

Thingverse — сообщество любителей 3D-печати, где можно найти оригинальные модели по лицензиям Creative Commons.

Текстуры

СС0textures — 529 реалистичных PBR-текстур, которые можно использовать где и как угодно без ссылок на авторов. Без регистрации. На всякий случай: PBR (Physically-Based Rendering) — это физически корректная визуализация. Варианты разрешения текстур: 2K, 4K, 8K. А еще можно скачать исходники в формате .sbsar — для редактирования в программе для создания дизайна игр Substance Designer.

TextureLibt — коллекция из 6500+ текстур для личных и коммерческих целей. Все это работы одного фотографа. Он просит вас о малости: не перепродавать его материалы и, по возможности, при использовании текстур указывать авторство.

Texture — большая коллекция текстур разного, но в среднем невысокого разрешения (примерно 1000–1300 пикселей по ширине). Условия: можно использовать в платной игре, но нельзя продавать сами текстуры (даже после редактирования) и выдавать их за свои.

Стоковые изображения

Stock Graphic Designs, раздел Freebies — наборы профессионально исполненных векторных изображений для коммерческого и личного пользования. Форматы: Ai (Adobe Illustrator) и EPS.

Рixabay, Pexels и Unsplash — я поставила их в один ряд, потому что эти три банка фотографий очень похожи. Они держатся на материалах от участников сообщества и на заимствованиях с аналогичных сайтов. Все бесплатно, в том числе для коммерческих проектов.

Поиск по DeviantArt

На портале DeviantArt, где обитают любители визуального искусства, среди тонн авторского контента можно найти бесплатные спрайты, 3D-модели и фотографии. Особенно много здесь фанатов аниме и пиксель-арта. Но далеко не все полезное попадает в раздел Resources & Stock Images. Вот несколько советов, которые экономят время на поиск ресурсов.

Следите за группами, которые раздают бесплатное. Примеры:

Game-Art — группа целиком посвящена игрострою. Здесь можно посмотреть, что делают другие, показать свои арты и концепты, запросить критику участников, а еще — скачать игровые ресурсы из раздела Resources & Tutorials. Будьте внимательны: не все можно использовать в коммерческих проектах. О правовых нюансах еще скажу ниже.

Clear-Cut — изображения объектов и персонажей на прозрачном фоне в форматах PNG и PSD. Здесь и аккуратные вырезки из фотографий, и рендеры 3D-моделей.

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

NoCreditStock — наборы материалов, которые можно использовать без упоминания автора.

Digital-Art-Club/Stocks and resources — бесплатные материалы и уроки по Digital Art.

Ориентируйтесь по хештегам. Залежи бесплатного добра вы найдете по тегам #unrestricted, #commons, #freetouse, #freesprites, #freebackgrounds, #freeresource, #freebies и другим. Экспериментируйте и обращайте внимание на теги к работам, которые вам нравятся.

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

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

Ищите работы с лицензией Creative Commons через Google. Введите в поисковик: 

"This work is licensed under a Creative Commons" site:deviantart.com

В списке результатов перейдите на вкладку «Картинки». Получилось! Если что-то нравится — переходим на страницу изображения и уточняем лицензию и авторство непосредственно под картинкой или под заголовком License в блоке справа.

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

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

Иконки

Game-Icons — сервис, где можно не только быстро найти подходящую иконку по тегу и названию, но и тут же отредактировать ее прямо в браузере и сохранить как SVG или PNG. Замечательно!

Iconmonstr — тысячи бесплатных черно-белых иконок для оформления мобильных и онлайн-приложений, сайтов, игр.

Шрифты

Ищем бесплатные шрифты на DaFont

Звук и музыка

GameAudioGDC Bundle — гигабайты аудио, записанного профессионалами, — для любых ваших проектов, в том числе коммерческих. Это щедрый подарок, который игроделы ежегодно получают по случаю Game Developer’s Conference. До сих пор объем «бандла» увеличивался с каждым годом. Выпуски:

FMA — интерактивная библиотека музыки и звуков, пополняемая кураторами со всего мира. Материалы публикуются с лицензиями Creative Commons.

FreeSound — огромная база бесплатного аудио от участников сообщества. Можно вести коллекции. Основатели проекта, Music Technology Group, — исследователи из Университета имени Помпеу Фабры (Барселона). 

Программы и утилиты для создания компьютерных игр

Для работы с 3D

Онлайн-конструктор 2D-персонажей для классической японской RPG (JRPG).

Synfig — отличный бесплатный редактор для создания игр и 2D-анимации для Windows, Linux и MacOS. Поддерживает скелетную анимацию, что избавляет от необходимости вручную перерисовывать позу персонажа из кадра в кадр. Программа автоматически рассчитывает преобразование исходной векторной формы в конечную. Вы можете  использовать разные типы слоев и эффектов и управлять их характеристиками.

Еще два популярных решения для 2D-анимации. Оба open-source и доступны под Windows и OS X:

Inkscape — бесплатный векторный редактор № 1. Приложение из тех, о которых все знают, но нельзя не сказать.

GIMP — редактор растровых изображений, который называют свободной альтернативой Photoshop, хотя он и не перекрывает всех возможностей продукта Adobe.

Для работы с 3D

Blender — великий и прекрасный 3D-редактор, которому трудно найти альтернативу. Позволяет не только создавать и анимировать модели, но и разрабатывать игры на встроенном движке Blender Game Engine.

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

World Machine — генератор ландшафтов с возможностью экспорта в Unity. Бесплатен для некоммерческого использования.

TreeIt — генератор деревьев разного типа. Прост в использовании, умеет экспортировать модели в OBJ, X, FBX и DBO, что делает его совместимым с разными движками.

XNormal — программа для запекания карт нормалей.

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

Аудиоредакторы

Cakewalk Sonar — звуковая рабочая станция с профессиональными инструментами для сочинения музыки, записи, редактирования, сведения и мастеринга аудио. В апреле 2018 года продукт Cakewalk Platinum стал бесплатным. Вдобавок у него активное сообщество: можно делиться своим творчеством, получать фидбэк, скачивать дополнения.

MuseScore — кроссплатформенный нотный редактор для создания музыки через работу с партитурой. Бесплатный, с открытым исходным кодом (GPLv2) и десятками плагинов. Удобно использовать в связке с Sonar.

Bosca Ceoil — программа-трекер, где вы создаете музыку методом расстановки семплов. Есть онлайн-версия и десктопные приложения для Windows, Linux, MacOS X.

FamiTracker — позволяет создавать музыку для восьмибитных приставок NES, Famicom и Dendy. Благодаря экспорту в формат NSF ваши композиции будут без проблем воспроизводиться не только в эмуляторах, но и на реальном «железе». А еще вы сможете сохранять музыку в WAV-файлы.

Wwise — система интерактивного звука для игр и приложений, в том числе AR/VR. Работает на всех основных десктопных и мобильных платформах, с устройствами виртуальной и дополненной реальности HTC, Oculus, Google, Sony, Microsoft, а также на консолях Xbox, PS (3, 4, Vita), Wii, Nintendo Switch. Инструмент не совсем для новичка — скорее «на вырост». WWise бесплатна в нескольких случаях:

  • при бюджете игры менее 150 000 $. Ограничение — можно использовать до 500 звуков;
  • для некоммерческих проектов. Лицензию присылают по заявке.

К системе можно прикручивать сторонние плагины.

FMOD Studio — набор инструментов, который охватывает весь цикл работы со звуком для игр на Unity, UE4 и других движках. Упрощает взаимодействие звукорежиссеров и программистов: те и другие могут быстро вносить в проект изменения, не мешая друг другу. Работает на ПК и Mac.

Audacity — простой кроссплатформенный звуковой редактор, функциональность которого можно расширять за счет плагинов, в том числе VST и LV2.

Русскоязычные сообщества игроделов

Для начала пройдемся по группам VK:

GGDev — новости игровой индустрии, уроки и статьи для разработчиков, обсуждение жанров и игровых механик, стримы мероприятий. Реклама своих проектов строго запрещена — админы говорят, что в этом «фишка» группы. 6000 подписчиков.

Инди игры | Indie Games — группа для продвижения ваших инди-проектов, а формально — паблик Indie-раздела на портале Game.ru. Участники могут предлагать свои материалы, но публикует что-либо только админ. Зато в обсуждениях подписчики делятся трейлерами и скриншотами, новостями и мнениями, ищут людей в команду.

Unity3D & CG / Unity 3D — группа взаимопомощи Unity-разработчиков. Основная масса публикаций — это вопросы участников по разным аспектам работы над игрой. Причем сообщество очень живо откликается и помогает, что и делает группу интересной. Более 32 000 участников.

Игровая вселенная — публикует познавательные материалы для игроделов и gamedev-вакансии. Подписчиков — 24 000.

Last Indie Standing — обсуждение инди-игр и их разработки, 5–10 постов в день. Иллюстрированные заметки по гейм-дизайну, новости, конкурсы, видео лекций и конференций. Около 4000 подписчиков.

GameDev — Создание игр — группа с лозунгом «Научим запускать однообразные провальные проекты». :) Основа ленты — ссылки на познавательные материалы (в основном с Хабра). Реже появляются анонсы мастер-классов и конференций по играм. Участников — 7000.

Обязательно загляните в «Лигу разработчиков видеоигр» на Pikabu! Кстати, там вы можете встретить преподавателей GeekBrains, но об этом в другой раз. А пока предлагаю полистать красочные посты в ленте Лиги или даже написать туда о вашем проекте.

Новости, советы, конкурсы

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

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

GCUP — портал, целиком посвященный созданию игр. Здесь собрана огромная база игровых движков и конструкторов. А еще тут — уроки, новости, утилиты и бурлящий форум, где выкладывают и обсуждают новые игры, набирают людей в команду, задают вопросы и делятся опытом.

DTF — информационное сообщество типа Pikabu, но более узкой направленности. Пользователи публикуют и обсуждают статьи про IT и сферу развлечений, в том числе игры и их разработку. Еще тут есть раздел вакансий для разработчиков, гейм-дизайнеров, художников и других спецов, участвующих в создании и раскрутке игр.

Уф… На этом все. Спасибо, что дочитали! Если нашли интересное — не забудьте добавить в закладки! :) 

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

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

Пройти обучение

16 июл 19, 16:19
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Говорят, выучить Python и стать программистом легко. Правда?

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

Мы запускаем цикл статей в которых подробно расскажем о каждой профессии через опыт людей. В первом выпуске обсуждаем Python-разработчиков. Свои истории рассказали Артем Сухаренко и Данила Лобанов. Они пришли в профессию совсем недавно, но успели набраться опыта в других сферах. А экспертом выступил Алексей Петренко — декан факультета Python в Geekbrains.

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

Для чего учить Python

Артем Сухаренко учился в СибГИУ на кафедре автоматики и информатики. Его специальность была инженерной, но не связанной с программированием. После выпуска Артем устроился работать на завод ЗСМК — один из самых крупных металлургических комбинатов в России

«Я обалдел, насколько там все ужасно», — говорит он, — «Полуразвалившийся советский электропривод, никакой модернизации, специалисты особо не нужны». Долго на заводе он не задержался, но продолжил работать с электрикой дальше. Вырос до ведущего инженера в Сибирьтелекоме, затем переехал из Сибири в Москву и устроился в коммерческий ЦОД, где отвечал за инфраструктуру.

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

«Может быть, я не туда совался, но развития для себя не нашел. Пять лет вуза — просто чтобы крутить провода. Это было так обидно».

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

В 36 лет Артем пошел на курсы Python-разработчика.

 

Веб-разработка стала клондайком для многих людей, кому интересны технические профессии. А Python — одним из популярнейших языков программирования для входа в профессию. Он привлекает простотой и универсальностью.

«Зная Пайтон можно делать много всего — от простейших скриптов до анализа данных и построения нейронных сетей. Но конкретно разработка на Пайтон — это бэкенд для веб-серверов, разработка скрытой части интернета — той, которую не видят обычные пользователи. Сервер, его логику, взаимодействие с базами данных», говорит Алексей Петренко, декан факультета Python в Geekbrains.

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

 

«Хоть Python и пропагандируется как язык для всего, по факту у него только две сферы применения: всякие data science, ML и прочая математика — и веб-разработка. В этом он меня немного разочаровал», — говорит Данила Лобанов, бывший сисадмин, который недавно стал Python-разработчиком.

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

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

«Я попытался изучать С, PHP, Java еще какие-то языки, но не заходило — начинал и бросал. Не мог писать даже простейшие скрипты. Когда я ходил на курсы по С, у меня получалось читать код, но не получалось его писать. Мне давали задачу, я смотрел на нее и не представлял, как делать. Преподаватель садился рядом, писал построчно, объяснял, и я понимал, что именно так и надо было делать. Но мне давали аналогичную задачу, и я снова был в ступоре».

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

 

«Новичку лучше первым делом разобраться в синтаксисе», — считает Алексей Петренко, — «Только потом стоит думать, куда хочется идти дальше. Чем больше ты учишься, тем больше уходишь от синтаксиса к библиотекам, паттернам проектирования, отдельным шаблонам».

Данила все-таки выбрал Python потому, что язык считался легким. «Синтаксис реально оказался простым», — говорит он, — «Как писать текст на английском языке. Сначала я изучал его самостоятельно по видеоматериалам на Ютубе, по статьям, решал задачи на pythontutor.ru. Но потом понял, что ресурсы в интернете — это только основы и азы. Они доступны всем и везде, и не помогут научиться программированию основательно. Я понял, что надо искать курсы, которые дадут все то же самое, только систематизировано, а потом поведут меня дальше».

Что надо знать перед началом обучения

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

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

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

Начать может быть легко, но впереди ждут трудности

Артем продолжал работать электриком днем, а вечерами начал учиться на курсах, несмотря на усталость. «Как и у всех наивных людей, у меня было ожидание магии от курсов. Я пришел не совсем нулевым. В багаже было несколько книг и даже простых сайтиков, в том числе на PHP (грешен, признаю). Я ждал, что на курсах надмозги меня выдрессируют, и я стану волшебником.  Реалии оказались другими — там такие же люди, которые просто знают чуть больше».

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

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

«Все признавали, в том числе сотрудники Geekbrains, что уровни 2 и 3 в программе по Python были одними из самых сложных курсов в университете. Очень много информации в слишком сжатые сроки, очень большие домашние задания. Многие усваивали только часть материала. Я лично два раза переводился в следующий поток. Мы просили облегчить программу, нас спрашивали как, и я предлагал разбить два курса на три. Что-то из этого приняли во внимание и сейчас реализовали».

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

«Преподавать программирование тоже очень сложно. Всем кажется, что раз человек может писать программы, значит может и научить. Это не так. Когда мышление перестроено, и знаешь много всего — уже не можешь вспомнить, каково это — не понимать».

Алексей предупреждает, что Python легкий только в начале. А после легкой базы придется приложить усилия, чтобы освоить более серьезные аспекты — библиотеки и фреймворки. «Если сравнить язык программирования с водоемом, то, например, язык С — это океан. Ты ныряешь с обрыва на огромную глубину, и либо плывешь, либо тонешь. Язык Пайтон — это пляж с чистым песком, где ты можешь далеко зайти, спокойно поплавать, и если понял, что хочешь двигаться дальше — то за красивым пляжем есть огромная впадина, по глубине сопоставимая с С и Java».

 

«Асинхронное программирование в Python — это мозгодробительная штука», вспоминает Артем. «Мы проходили это как-то поверхностно, и потом даже на собеседованиях, когда по нему спрашивали, я чувствовал, что плыл.

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

Данила же вспоминает модуль select как самое трудное: «Все три потока помнят мою боль с селектами. Есть такой модуль, и он мне прямо очень не давался в свое время. Сейчас-то он для меня простой — я теперь не понимаю, как его можно не понять».

 

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

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

Чтобы в будущем работать в команде и показывать код кому-то еще, надо знать общепринятые стандарты стиля. В Python они называются «Пепы» (Peps). Я бы советовал читать Pep8 параллельно с изучением синтаксиса. Это соглашение программистов, которые пишут на Пайтоне. Оно рекомендует как правильно писать, а как неправильно.

Несколько лет назад в Python произошло разделение. Был Python 2.7, а потом вышла версия 3. Вторая версия все еще используется, но только в старых фирмах для поддержания легаси-кода. Если устроиться в такую фирму, то изучать Python 2 придется, но я бы рекомендовал учить третью версию. Все современные проекты и сторонние библиотеки пишутся под нее».

 

Как выдержать первые собеседования

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

«Проект назвался GoLiving. Это что-то вроде AirBnb, только задумка такая: в Америке есть люди, которые часто ездят работать в разные города на непродолжительный период. И они могут между собой меняться жильем с гарантированной страховкой, чтобы точно быть уверенным, что не вернешься в разгромленную квартиру. Сейчас я не знаю, насколько далеко пошел этот ресурс, кажется финансирование приостановили. Но тогда у нас даже были инвесторы».

 

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

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

«Мой опыт в Geekbrains показывает, что некоторые студенты находят работу, до того как они заканчивают годовой курс обучения», говорит Алексей. «Работодатель хочет видеть у серверного разработчика элементарное умение работать с синтаксисом, знание как работают сайты, как устроен бэкенд, тот же самый набирающий популярность Django. Я бы сюда ещё добавил работу в команде и знания баз данных, потому что любой бэкенд любого сайта неразрывно связан с хранением информации.


Ежемесячно на «Моём круге» открывается порядка 200 вакансий python-разработчиков, вы можете посмотреть самые свежие и подписаться на рассылку о новых вакансиях.

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

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

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

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

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

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

 

«Собеседование, которое проходил я, расплавило мне мозг еще как», вспоминает Артем. «Когда я вышел, состояние было, как будто иду на автопилоте — так сильно продолжали жужжать мысли».

Проходило оно так: сидели два эйчара и два технаря. Один питонист и фулстек, который занимался вебом — куда пробовался и я. Второй — судя по вопросам —  совершенный надмозг. У него такой был сильный матан, что просто ого-го!

Сначала пошли житейские вопросы, все эти «как себя видишь, как себя чувствуешь». Потом за меня принялся фулстек, погонял меня по Python, по Django. Он прямо на бумаге накидывал примеры и спрашивал по ним. Не сложные, но с подковырками.

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

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

На какие деньги стоит рассчитывать

Люди идут в ИТ не только по зову души. Это индустрия с одними из самых быстро растущих зарплат в России. И иногда кажется, что зарплаты программистов по сравнению со среднестатистическими профессиями отличаются как зарплаты в Москве и в регионах. Тем не менее, ни Артем, ни Данила не шли в эту профессию за богатством. Больше того — они его пока так и не нашли.

«Даже в Москве на начальных позициях программистам предлагают 40-50 тысяч, может даже меньше. В регионах 20 тысяч для джуниора тоже не редкость. Это не такая уж высокооплачиваемая работа, как все утверждают. Да, когда достигаешь уровня синьора, зарплаты могут переваливать за 200-300 тысяч. Но где таких зарплат нет? Недавно одна такси-компания показала доходы таксистов, которые больше всех заработали. Там 230, 240 тысяч.


На диаграмме зарплат python-разработчиков с разбивкой по квалификациям видно, что медиана для джуна составляет почти 60 000 рублей, тогда как мидл получает уже в среднем чуть больше 100 000 рублей. Зато разница между показателями медиан для сеньора и лида совсем небольшая — 151 000 рублей и 167 000 рублей соответственно.
При построении диаграммы были использованы данные зарплатного калькулятора «Моего круга».

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

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

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

 

Несмотря на то, что в программировании одна из самых четких и понятных градаций по уровню мастерства (джуниор, мидл, синьор) — она все равно остается относительной и постоянно разжигает споры размытостью своих критериев. Споры в духе «ты в компании Х синьор, а в компании Y и джуниором не возьмут» или «пока десять лет не работал — не синьор».

«До уровня мидла можно прокачаться в течение года обучения. Например, в Geekbrains есть обязательные курсы и дополнительное. Все их надо пройти полностью чтобы честно сказать — я прокачался до уровня мидла. То есть, получается год основной программы и ещё полгода параллельных курсов», — считает Алексей, — «А синьор — это человек, у которого есть богатый опыт. Это тот, кто разбирается в разных фреймворках, способен масштабировать задачи, понимать каких ресурсов они требуют. Человек, который не изобретает велосипеды. Кто на собственном опыте разобрался во всех аспектах и нюансах работы.

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

Пройти обучение

3 июн 19, 17:17
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Лучшие приложения для macOS на 2019 год. Часть 2

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

Развлечения и соцсети

Spotify (бесплатно)

Музыкальный сервис Apple Music доступен не всем. К счастью, есть десктопное приложение Spotify — идеальная альтернатива для тех, кто ищет варианты за пределами экосистемы Apple. Приложение для Mac предоставляет доступ ко всему каталогу Spotify, как и его мобильный аналог: вы можете бесплатно искать и слушать треки и альбомы любых исполнителей.

Еще в Spotify можно создавать личные плей-листы или слушать персональные рекомендации с самой разной музыкой на ваш вкус.

HandBrake (бесплатно)

Копирование DVD в эпоху цифровой дистрибуции все еще имеет место. HandBrake быстро и легко справляется с конвертированием файлов и кодированием видео.  В приложении множество инструментов редактирования видео: склеивание, настройка частоты кадров, добавление субтитров. А еще это программа с открытым исходным кодом.

Parcel (бесплатно)

Немногие до сих пор покупают вещи только в офлайн-магазинах. Сервис Parcel предназначен для поклонников интернет-шопинга — покупателей в постоянном ожидании посылок. Приложение работает с более чем 250 сервисами доставки, включая FedEx, и помогает пользователям отслеживать посылки. Пуш-уведомления и интеграция с Spotlight — в виде бонуса.

Transmission (бесплатно)

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

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

VLC (бесплатно)

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

Slack (бесплатно)

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

Tweetbot 3 (749 ₽)

Приложение для опытных пользователей, которые отказываются от устаревшего официального Twitter для macOS в пользу более функционального. В последнем обновлении презентовали работу в нескольких окнах, отключение уведомлений, хештеги и ключевые слова. Tweetbot также поддерживает сторонние приложения вроде Paper и Bitly. Усовершенствованный интерфейс идеально сочетается с последними версиями macOS.

Безопасность и память

1Password (3 $)

Приложение для тех, кому надоело запоминать пароли от всех учетных записей. 1Password — это менеджер паролей, который защищает их в зашифрованном хранилище, доступ к которому тоже по паролю. Базовая подписка стоит 3 $ в месяц, но можно обновиться до аккаунта для группы из пяти человек за 5 $.

Little Snitch 4 (47 $)

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

Больше о приложениях безопасности на macOS

Google Drive (бесплатно)

Скорее всего, вы знакомы с Google Drive. Но можете не знать, что работать с документами, таблицами и презентациями можно в офлайн-режиме, без подключения к интернету. Десктопное приложение Google предоставит быстрый доступ ко всем файлам и папкам. Как и в мобильном приложении, есть специальная папка, в которой можно синхронизировать до 15 Гб файлов — при условии, что вы не платили за дополнительное место на диске. А еще Google Drive может бэкапить все содержимое.

Dropbox (бесплатно)

Приложение для хранения данных, которое быстро и надежно синхронизирует файлы. Версия для macOS работает почти так же, как веб-версия и мобильное приложение: дает доступ к файлам и папкам, а фотографии, видео и документы можно загружать прямо с рабочего стола. В вашем распоряжении 2 ГБ бесплатного хранилища только за регистрацию в системе. Если пригласите друзей или подключитесь к Dropbox в соцсетях, сможете получить больше.

The Unarchiver (бесплатно)

Нативные приложения macOS не всегда умеют распознавать сжатые и заархивированные файлы. Но Unarchiver работает почти со всеми форматами, от RAR до более старых вроде StuffIt, ARC или Tar. Приложение даже не требует от вас его открывать — доступ к файлам можно получить в Finder одним кликом.

Пройти обучение

31 май 19, 17:57
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

15 самых сложных вещей в профессии разработчика

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

Общение

Андрей Черабаев, разработчик в IT-компании MediaSoft:

— Никто не предупреждал, что здесь нужно так много разговаривать с людьми! Обмен мнениями, знаниями и просто постоянные обсуждения оказались основой этой профессии. А сколько времени занимают митинги, на которых ты объясняешь заказчику, что ты сделал, что еще предстоит выполнить, как это будет реализовано, в чем заказчик неправ, где есть ошибки проектирования…

И при этом нужно быть очень терпеливым, помнить, что люди разные: одни не понимают вас с первого раза, а другие любят объяснять по десять раз одно и то же. Сам этим страдаю.

Хаос из-за множества языков и фреймворков

— Появляется множество языков программирования и фреймворков, которые применяют повсеместно, как таблетки от всех болезней. И разработчику часто приходится сталкиваться с тем, что он должен хорошо знать слишком многое. Это и скриптовые языки на стороне фронта: HTML/CSS, JS, включая набор современных фреймворков BackBone.JS, AngularJS, ReactJS. Вместе с тем — языки С#, Java, Python и спецификации типа .Net Framework, JavaEE для серверной стороны. Добавим сюда знание баз данных и языка манипуляции с данными, стандартов сервисного взаимодействия. Этот огромный бум порождает хаос, и зачастую разработчики не усваивают тонкости языков или технологий.

Огромная нагрузка

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

Не тратить драгоценные ресурсы на ненужные задачи

Юрий Пономарев, консультант центра технической поддержки компании «РДТЕХ»:

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

Бизнес-аналитики говорят, что исполнить запрос нельзя. Менеджер обещает премию тому, кто это откроет. Гугление по заголовкам файла каждый день приносит разный результат. Средства Windows не помогают понять содержимое. Средства сортировки падают при попытке его отсортировать. Средства распознавания форматов говорят, что там минимум 15 различных файлов. При передаче по сети корпоративный антивирус сходит с ума. На архив файла ругаются все почтовые системы, но он сжимается в 10 раз легко.

Старый разработчик пишет:

public static void main(String[] s) throws Exception{

       VTDGenHuge vgh = new VTDGenHuge();
       if (vgh.parseFile("C://TEMP//file_big",true,VTDGenHuge.MEM_MAPPED)){
               VTDNavHuge vn = vgh.getNav();
       AutoPilotHuge aph = new AutoPilotHuge(vn);
       aph.selectXPath("//company/@Name");

       int i = 0;
       while ((i=aph.evalXPath())!=-1){
                 System.out.println(" element name is "+vn.toString(i));
       }
   }
}

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

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

Смешанные принципы современных языков программирования

Юлиана Науменко, руководитель департамента развития софтверных решений ГК «Авилекс

— Яркий пример — язык программирования JavaScript. Центральное ядро в части организации строительных блоков — функции.

Но, если внимательно на это взглянуть, все не так просто:

  • функция — элемент парадигмы функционального программирования;
  • функция — классический элемент процедурного программирования;
  • функция — объект.

Такой симбиоз порождает короткие, цепные и гибкие реализации, понимание которых порой приходит не сразу. Это замыкания, колбэки, применение анонимных функций (в C# — применение делегатов в событиях, таски и так далее).

Тесты, названия переменных, общение с коллегами

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

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

Оценка задач

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

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

Сроки

Константин Коногорский, руководитель отдела разработки ПО в «ВИСТ Групп»:

— Очень часто приходят менеджеры и говорят: «Этот БелАз должен летать на высоте 10 метров над землей, достигая скорости в 10 узлов при идеальных погодных условиях. У тебя три дня. Мы уже всё продали, подписали контракты, получили деньги и премии. Теперь во всем виноват ты». Как правило, продажникам плевать, возможно это или нет, сколько реально потребуется времени, что у тебя пять дедлайнов на неделе. Программист, по их мнению, всемогущ и имеет 1024 часа в сутках. Как справляться? Берешь и делаешь.

Проблемы с документацией сторонних библиотек

— Я часто сталкивался с тем, что в документации видел все необходимые мне функции инструмента, а на деле оказывалось, что они есть только на бумаге. Когда связываешься с производителем или авторами, в ответ получаешь: «Упс, спасибо за отзыв. Ваш звонок очень важен для нас. Идите с миром». Подбор нужных библиотек занимает много времени, а если речь идет об оборудовании — то и денег. В итоге приходится колдовать с тем, что есть.

Находить баланс

Евгений Ким, руководитель отдела разработки платформы RU-CENTER:

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

Богатство выбора

— Выбор сейчас действительно огромный. Можно пойти в backend-разработку, в тестирование, в мобильную разработку. В каждом направлении десятки технологий, и это может вскружить голову. Тут нужно брать и пробовать. И читать профильные ресурсы, такие как geekbrains.ru.

Переделывать

Елисей Самретов, разработчик мобильных продуктов FL.ru:

— Для меня самый ненавистный момент наступает, когда приходит менеджер с суперважной задачей «переделай это срочно». Как справляюсь?  Закидываюсь таблетками. Шутка. Музыкой в айфоне и дедукцией Шерлока Холмса: разбиваю задачи на итерации, слежу за синхронизацией дизайна, логикой написания программы.

 

Рутина

Стас Жеребчук, frontend developer в Weblium:

— Сложнее всего просыпаться по утрам и начинать работать.

Что помогает? Смузи-машина. Что мотивирует? Осознание, что меня могут выгнать, если я не буду ничего делать.

 

 

А что для вас самое сложное?

Пройти обучение

21 май 19, 17:19
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Где нужен Java и как его преподают в GeekUniversity

Александр Фисунов — кандидат технических наук, доцент ДГТУ, где он преподает программирование и цифровую обработку сигналов, декан факультета Java в GeekUniversity, руководитель отдела разработки в НИИ многопроцессорных вычислительных систем. Работает над проектами в области анализа данных, компьютерного зрения и видеоаналитики, использует языки Java, C++, Python.

Александр, первый вопрос о тебе. Как наука и радиотехника пересеклись в твоей жизни с программированием и конкретно с Java?

— Вообще изучать программирование я начал лет с 8: приставка Subor + JBasic. Потом продолжил на компьютере — QBasic и Visual Basic. Все это я осваивал без книг и интернета — «методом тыка», — а на практике закреплял написанием простеньких игр и участвовал в конкурсах (например, с игровым проектом GALAXY FORCE).

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

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

Функций у системы на первых этапах было не так много: загрузка результатов тестирования, работа с графическим интерфейсом, вывод отчетов (в текстовый файл или таблицу .xls), пакетная обработка результатов, перенос математических формул в программный вид.

Ближе к четвертому курсу возможностей VB6 для нашего проекта стало немного не хватать, так что параллельно я стал разбираться с C# и переносить проект на платформу .NET.

Насколько помню, итоговую версию программы даже купили для своих учебных отделов несколько университетов. Параллельно с разработкой этого проекта, чтобы набрать опыт, я писал игры на XNA Framework (3.1, 4.0).

Для каких задач ты начал использовать Java?

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

Основными моими направлениями в аспирантуре были обработка сигналов и изображений, а также видеоаналитика. Нужно было реализовывать мобильные версий приложений для анализа изображений. Вот тут и понадобилась Java.

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

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

Какие перспективы, варианты развития есть у Java-разработчика?

— Думаю, стоит выделить три основных направления: веб-разработка, Android-разработка и автоматизация тестирования. Можно писать бэкенд для веб-приложений, высоконагруженных, банковских и корпоративных систем.

Про Android-разработку и роль Java и Kotlin в мобильном направлении намного более подробно рассказал в своем интервью Александр Аникин — декан факультета Android.

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

Через знакомых знакомых меня нашел manual-тестировщик Алексей, который работает в США. Алексей для себя решил разобраться в Java Core и основах автоматизации тестирования. За 8 месяцев (примерно 120 часов консультаций) он не только освоил Java Core и Selenium, но и полностью автоматизировал рабочие задачи.

Дальше с Middle manual-тестировщика его взяли на позицию Middle QA Engineer в компанию, разрабатывающую веб-приложения для страховых организаций. Там на Java + Selenium он написал свой фреймворк для автоматизации тестирования всего проекта. До него в команде были только manual-тестировщики.

Алексей набрался опыта автоматизации на предыдущих двух проектах и с сентября 2018 года перешел на должность Senior QA Engineer в Disney. Теперь тестирует REST-сервисы внутренних продуктов компании.

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

В недавнем своем проекте Алексей использовал вот такой набор инструментов: Java, TestNG, Selenium (WebDriver, Grid), GitLab CI, Docker, SoapUI, Zap Proxy, Jersey Client и плюсом к этому зоопарку — внутренние разработки команды тестировщиков Disney.

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

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

Если я выбираю, на чем писать бэкенд, по каким признакам можно понять, что мне нужен Java?

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

Расскажи, пожалуйста, о программе обучения на факультете и о конкретных курсах. Ты участвовал в их составлении?

— Да, я принимал участие в разработке курсов по направлению Java: это были базовый, продвинутый и профессиональный уровни, «Разработка игр под Android», «Java. Углубленное изучение». Сейчас занимаюсь улучшением курсов Spring 1, 2.

Курсы на факультете постоянно дорабатываются и улучшаются. Если перечислить их все, получим: три уровня Java (базовый, продвинутый, профессиональный), «Разработка игр под Android», «Java. Углубленное изучение», «Алгоритмы и структуры данных на Java», шаблоны проектирования на Java, Java EE, Spring 1, Spring 2 и командная разработка. Плюс не забываем про смежные курсы.

Первые три курса — теория и задачи для быстрого вхождения в язык Java, разбор ООП и создание первых проектов. Дальше для опыта и практики создаем игру: основную часть (процентов 70 %) пишем на занятиях, а в качестве домашних заданий студенты дорабатывают отмеченные преподавателем блоки. На следующем курсе («Java. Углубленное изучение») приходит время самостоятельной практики — студенты разрабатывают сетевое хранилище. Конечно, они могут обращаться за помощью к преподавателю, плюс два занятия отводится на code review, но большую часть пишут сами. Если сравнивать, курс по играм — это 70–80 % кода от преподавателя, а проект на «Углубленном изучении» — 90 % от студента.

Какие проекты делают студенты в ходе обучения?

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

Следующий проект — игра под Android на библиотеке LibGDX. Его студенты особенно охотно дорабатывают и выпускают. После этого — облачное хранилище типа DropBox. Финальные проекты, которые у меня сейчас делают студенты: новостной портал и интернет-магазин.

По какому принципу выбирали практические задания?

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

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

А как насчет фреймворков? Они есть в учебном плане?

— Для написания сетевых проектов на младших курсах GeekUniversity изучаем Netty. Большие курсовые проекты (новостной портал или интернет-магазин) пишем после знакомства с фреймворком Spring.

На что надо смотреть, когда выбираешь язык под задачу? Я так понимаю, основные факторы — это платформа, под которую собираешься писать, и набор подходящих библиотек языка?

— Как правило, под конкретный круг задач подходит определенный набор языков программирования. Если мы хотим написать приложение для «тяжелой» работы с 3D-графикой, вероятнее всего возьмем C++ и OpenGL.

Если хотим заняться машинным обучением, теоретически можно попробовать С++ или Java. Но на деле оказывается, что большинство библиотек для работы с машинным обучением представлены на Python.

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

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

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

Если речь о backend-разработке, приходится выбирать между PHP, C# ASP.NET, Python с Django и Java Enterprise. И здесь надо учитывать масштаб задачи, какие в вашем регионе вакансии, ну и, конечно, нравится вам работать с этим языком или нет.

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

С выпускниками общаешься?

— Да, я всегда готов помочь, если у выпускников есть вопросы по Java Core или веб-разработке. И очень радуюсь, когда студенты пишут, что они устроились на работу и занимаются интересными проектами.

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

Пройти обучение

22 апр 19, 14:12
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

В гейм-дизайнеры с нуля. Часть 2

Это вторая часть перевода статьи From Zero to Game Designer: how to start building video games even if you don’t have any experience. Автор оригинала — Angela He. Первая часть была посвящена разработке концепции игры и работе с графикой.

Программирование

Теория

Debug.Log('О боже! Пришло время кода!! ^_^');

С чего начать? Выберите игровой движок и среду разработки, в которой будете писать код (Integrated Development Environment  —  IDE). Список движков и IDE, которые я рекомендую, вы найдете ниже.

Что дальше? Пишите код. Не умеете? Не волнуйтесь, этому можно научиться.

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

На каком языке вы собираетесь программировать? C++? JavaScript? C#? У каждого свои особенности и назначение.

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

Посмотрите на примеры проектов, сделанных на выбранном движке. У Unreal и Unity есть множество бесплатных примеров. Это позволит вам понять, как все может выглядеть на практике. К тому же это может натолкнуть на идею собственной игры. Моя первая игра родилась из знакомства с возможностями Corgi Engine.

if (you.getThisFar()==true) {

veryProud=true;

you.didIt(); //НАСТРОЕНИЕ: ОФИГЕННОЕ

}

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

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

Важные принципы разработки игр

Ориентированность на объект. Когда код выстроен вокруг объектов, он легче воспринимается человеком.

Принципы именования. Называйте переменные, классы и все остальное так, чтобы сразу было ясно их назначение. Например, функцию ближнего боя (melee attack) лучше назвать meleeAttack(), а не mA() и не protectbutalsoattac(). Вам и всем, кто будет читать код, должно быть сразу ясно, о чем речь.

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

Шаблон проектирования Singleton («Одиночка»). Позволяет хранить все данные класса в одном месте.

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

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

Важные особенности Unity

Сопрограммы (Coroutines). Интерфейс IEnumerator и сопрограммы позволяют начать делать что-то и продолжать определенное время, а затем остановиться. Я часто этим пользуюсь, чтобы создать визуальный эффект взрыва, задать движение с помощью функции Lerp или дождаться загрузки сцены, прежде чем работать с ее объектами.

«Скриптуемые объекты» (ScriptableObject). Содержат данные с меньшими накладными расходами, чем при наследовании скриптов от класса MonoBehaviour.

Ресурсы

Игровые движки

Самописные. Надо знать C/C++ и низкоуровневое программирование. Очень-очень низкоуровневое.

Unity (*). 2D/3D. Кроссплатформенный. Требует знания JavaScript/C# на среднем уровне.

Unreal Engine. 2D/3D. Надо знать C++ на среднем уровне. Обратите внимание: поддержка 2D у этого движка так себе.

Pixi.js (*). 2D. Надо знать JavaScript на среднем уровне. Web.

GameMaker Studio. 2D/3D. Кроссплатформенный. Надо знать GML. Подходит для новичков.

Corona. 2D. Кроссплатформенный. Надо знать Lua. Для начинающих.

Среды разработки (IDE)

Visual Studio Code (*). Для MacOS. Не лагает и может похвастаться всякими фишечками  — всплывающими подсказками и быстрой навигацией (⌘T).

Visual Studio (*). Для Windows.

MonoDevelop. Распространяется вместе с Unity. Часто лагает.

Бесплатные ресурсы для Unity

Море бесплатных дополнений и ресурсов для Unity вы найдете в официальном магазине Unity Asset Store, на сайтах GitHub, bitbucket и других. Материалы с GitHub и bitbucket я использую в каждом своем проекте.

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

TextMeshPro (*)

LeanTween (*)

Fungus

Corgi Engine

Dialogue System

Post Processing Stack

Keijiro Takahashi. Работает над Unity. Делает потрясающие свободные (open source) проекты с визуальными эффектами для Unity!

И последнее по порядку, но не по важности — мое средство № 1 для преодоления непоняток с кодом — Google!

Доводим проект до ума: отладка и оптимизация

Теория

О! Дочитали досюда?! Это просто замечательно  — вы молодец. Я серьезно. Если вы проделали такой большой путь, я бы хотела услышать о вашей игре. Напишите мне о ней!

Думаете, теперь все готово? Как вам сказать… С вероятностью 99,99999 % в игре есть баги. Так что самое время заняться тестированием.

Поиск ошибок и отладка (debugging)

Заставьте кого-нибудь (но не себя!) поиграть в вашу игру. Желательно в вашем присутствии: если человек столкнется с ошибкой, он может ее не заметить или затрудниться с описанием.

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

Ладно. Нашли баг — что дальше?

Посмотрите в консоль: нет ли там исключений. Уже видите? Отлично! Теперь найдите имя файла и номер строки, где исключение было выброшено. Если вы впервые слышите об исключениях, расспросите Google. А дальше сосредоточьтесь на том, что же пошло не так в уже известной строке.

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

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

Ну как, исправили баг? Спите уже — утром все само починится, ведь это лишь дурной сон, правда?

Распространенные ошибки

Исключение NullReferenceException

var.doThing(); //выбрасывает NullReferenceException: Object reference not set to an instance of an object

В чем проблема: Вы пытаетесь что-то сделать с null-значением (несуществующей) переменной.

if(var != null)
{
var.doThing(); // безопасно выполняем необходимое!
}

SyntaxErrorException

Проблема: в коде синтаксические ошибки.

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

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

" //прямая
 //загнутая

Розовый или черный экран

Возможная проблема: какой-то шейдер не рендерится.

Возможная причина: вы используете 3D-шейдер в 2D-игре. Или какая-то из функций шейдера не поддерживается в нужной вам операционной системе. Всегда используйте в мобильных играх только мобильные шейдеры.

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

Общие советы по оптимизации

  • Установите желаемую частоту кадров в секунду. Для визуальной новеллы годится FPS на уровне 20, а шутеру от первого лица больше подойдут 60 кадров в секунду. Чем ниже частота кадров по умолчанию, тем меньше времени игра тратит на их отрисовку.
  • Анимация / частицы / отброс загороженной геометрии. Функция Occlusion Culling в Unity отвечает за рендеринг тех объектов, которые заслонены от камеры другими. Чего не видит камера, то не рисуют. Анимация персонажей, обновление частиц, отрисовка 3D-моделей — все это должно выполняться только в поле зрения камеры!

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

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

Такие вещи, как пули, обязательно надо собирать в пул, а не обрабатывать по одной.

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

Если хотите задачу потруднее:

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

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

В Unity используйте наборы контента (Asset Bundles) вместо папок с названием Resources. Наборы сэкономят память за счет подгрузки файлов из онлайн-хранилища (например, Dropbox) или с жесткого диска. Пока я мало этим пользовалась из-за недостаточно подробной документации.

Ресурсы

Все это создавалось для Unity, но можно использовать и с другими движками.

Скрипты

Оптимизация скриптов в Unity-играх (*).

Графика

Руководство по оптимизации UI в Unity (*).

Лучшие практики работы с графикой (*).

Память

Уменьшаем размер файлов для билда (*).

Память.

Оптимизация под платформы

Практическое руководство по мобильной оптимизации (*).

Соображения о производительности WebGL (*).

Размышления о работе с памятью в WebGL (*).

7 этапов оптимизации мобильных VR-игр от Olly.

Продолжение следует.


25 дек 18, 19:22
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Книги о создании игр: ТОП актуальных (часть 1)

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

Книги на английском и в большинстве еще не переводились, по крайней мере свежие издания.

Game Engine Architecture (2018)

Автор: Jason Gregory.

Третье издание книги Джейсона Грегори «Game Engine Architecture» — обновленный рассказ профессионала игровой индустрии о работе над игровыми движками. Автор подробно описывает подходы, применяемые реальными студиями, где он трудился, в том числе Electronic Arts и Naughty Dog Inc. Сам он разрабатывал движки к серии шутеров Uncharted для PlayStation 3 и 4. Чтобы понимать материал, не обязательно быть опытным игроделом, но нужно знать C++.

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

Если вы задумали написать свой движок или разобраться, как работает чужой, «Game Engine Architecture» поможет в этом.

Location-Based Mobile Games. Design Perspectives (2018)

Авторы: Davide Spallazzo, Ilaria Mariani.

Мечтаете сделать свой Pokemon Go? Научная работа Давида Спаллаццо и Иларии Мариани посвящена мобильным играм на местности (LBMG). В дополненной реальности физическое местоположение игрока влияет на игровые события. Процесс может быть завязан на поиск и сбор предметов, решение головоломок, контроль территории, обучение.

Еще в 2012 году — до истории с ловлей покемонов — Niantic выпустила MMO-игру Ingress для iOS и Android. Если кратко: игроки делятся на два лагеря и бегают между реальными городскими достопримечательностями в поиске порталов. Контролируемые точки-порталы образуют виртуальные треугольники — так происходит раздел карты.

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

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

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

Artificial Intelligence and Games (2018)

Авторы: Georgios N. Yannakakis, Julian Togelius.

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

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

Целевая аудитория издания — студенты-«технари», ученые, гейм-дизайнеры и разработчики, специалисты по машинному обучению. Предполагается, что у читателя есть базовое представление об ИИ, программировании, алгебре и началах математического анализа. Но пусть гуманитарии не пугаются: в тексте ничего сложного нет. Самое приятное — актуальные примеры, которые показывают, что происходит в авангарде игровых AI-проектов.

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

Learn to implement games with code (2017)

Автор: John M. Quick.

Книга быстро погружает в разработку игр на Unity, но главное — вы тренируетесь писать годные алгоритмы и код, что важно вне зависимости от движка. Опыта работы с C# не требуется — достаточно знать, что такое переменные, условия, циклы, массивы, функции. Если сомневаетесь в своих силах, посмотрите бесплатный курс «Основы программирования» на GeekBrains.

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

Автор — Джон Куик (John M.Quick) — имеет ученую степень Ph.D. в области образовательных технологий. Он исследовал развлекательную составляющую и проявление индивидуальности в играх. В своих научных работах он предложил модели GEM (Gameplay Enjoyment Model) и GGO (Gaming Goal Orientation). Преподавал компьютерную грамотность, гейм-дизайн и программирование в университетах США и технологическом институте DigiPen в Сингапуре.

Pro HTML5 Games (2017, 2-е издание)

Aвтор: Aditya Ravi Shankar.

Книга учит создавать HTML5-игры с нуля. Никакой лирики — только практика и необходимые пояснения. Автор — индийский разработчик — отличился тем, что в числе других проектов реализовал на HTML5 классические игры Command and Conquer и Commandos: Behind Enemy Lines.

Вы изучите основы HTML и JavaScript, поработаете с физическим движком Box2D, создадите игровой мир, напишете сначала простую аркаду Froot Wars, а затем мобильную браузерную RTS с одиночной кампанией, мультиплеером и поддержкой тачскрина. Вы также получите практические советы по выбору и настройке инструментов разработчика. Что тут еще скажешь? Надо пробовать.

Games, Design, and Play (2016)

Авторы: Colleen Macklin, John Sharp.

Книга подробно рассказывает о работе над инди-проектами — в теории и на практике. Охвачено множество аспектов: от создания концепции до вывода игры в продакшн.

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

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

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

Game Audio Programming: Principles and Practices (2016)

Автор: Guy Somberg.

По заявлению автора, это первая книга, целиком посвященная программированию звука в играх. Для такой темы труд действительно основательный — на 300 с лишним страниц. Вы узнаете об устройстве звуковых движков, об актуальных инструментах для работы со звуком в играх, о том, как программисту взаимодействовать с саунд-дизайнерами. Издание повествует о звуке с точки зрения физики и психоакустики, объясняет работу аудиодвижков Wwise, FMOD и ADX2, который де-факто является стандартом у японских игровых студий. А еще книга показывает, что можно делать со звуком в CRYENGINE.

Автор книги разрабатывал звуковые движки для игр The Sims 4, Bioshock 2, Hellgate: London, Tales from the Borderlands и Game of Thrones.

Продолжение следует…

А вы какие знаете хорошие и актуальные книги об игрострое?


6 окт 18, 15:12
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Как создать популярную игру для смартфонов

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

Разберитесь в азах

Чтобы понимать, как разработать концепцию игры, как выстроить игровой процесс и сделать так, чтобы пользователю было приятно играть, нужно познакомиться с геймдизайном. Понять принципы создания видеоигр помогут книги из подборки The 20 Best Video Game Design Books. Читать все, конечно, не обязательно.

В части программирования нужно уметь писать native code для платформы, под которую разрабатывается игра. По мнению руководителя мобильной разработки DataArt Алексея Рыбакова, потребуются такие знания:

  1. Понимать жизненный цикл приложения для iOS/Android внутри операционной системы — что происходит при старте и телефонном звонке, какие ресурсы и когда загружаются в память.
  2. Программировать на Swift/Objective-C для iOS и на Java для Android.
  3. Понимать форматы звука и графики (текстур) для iOS/Android.
  4. Иметь опыт программирования на C/C++ для iOS/Android на OpenGL.
  5. Понимать цикл игры от создания до появления в Store.

Есть смысл посмотреть на игровые кроссплатформенные решения:

  1. Unity 3D.
  2. Unreal Engine.

Разработчик игр, сооснователь студии FIFTYTWO, выпустившей игры JELLIES! (5 миллионов установок на iOS) и Kenshō («Выбор редакции» в App Store и Google Play) Михаил Шагин выделяет Unity и C#: «Изучите Unity и язык программирования C# — это стандарт в индустрии. Работая на этом движке, вы будете быстро развиваться. Для Unity существует Asset Store — магазин готовых решений от разработчиков. Он сэкономит вам много времени и предоставит технологии, которые ранее были недоступны небольшим студиям и начинающим программистам. Обучаться помогут туториалы, видео-уроки и онлайн-школы».

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

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

Подумайте, для кого будет эта игра

Нужно знать своего геймера на каждом этапе разработки и поддержки игры. Кто это? Что он любит? Сколько ему лет? Из какой страны? Определиться с географией особенно важно. «Азия, Европа, Штаты, СНГ — везде есть свои нюансы в реализации геймплея, графики и других аспектов. Простой пример: в азиатских странах все герои должны быть с большими глазами», — объясняет Алексей Рыбаков.

Геймплей прежде всего

Сначала разработайте core gameplay — основу игры: придумайте, что будет делать игрок, как и в зависимости от чего игровой мир будет на это реагировать. Он должен затягивать. К остальному переходите, только когда core gameplay будет готов на 100 %.

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

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

Попробуйте применить принцип "Easy to learn, hard to master"

Это классический совет в геймдизайне: научиться играть должно быть очень просто, но достичь совершенства — крайне сложно, практически невозможно. Это и приковывает к игре. «Этот принцип особенно важен для мобильных free-to-play проектов, потому что у разработчика есть не более 10 минут, чтобы зацепить игрока. Большинство пользователей удалят игру после первой же непонятной ситуации и больше никогда не запустят приложение. Человек сразу должен понять, как играть и в чем цель», — рассказывает Михаил Шагин.

Авторство этого принципа приписывают Нолану Бушнеллу, создателю компании Atari. В оригинале он звучал так: "All the best games are easy to learn and difficult to master. They should reward the first quarter and the hundredth". Нолан Бушнелл сказал это в 1971 году в контексте игровых автоматов Atari. «В те времена игровые автоматы были в новинку, и простота игр была критичной для пользователя. Особого игрового опыта ни у кого не было, и для коммерческого успеха было необходимо, чтобы у игрока были ассоциации из реальной жизни», — объясняет Алексей Рыбаков, руководитель мобильной разработки DataArt.

Прообразом известной игры Atari — Pong — послужил теннис. В ее основу заложены простые физические принципы: угол падения равен углу отражения и подобные. Она позволяла перенести реальный опыт в компьютерную игру, поэтому ее просто было понять начинающему игроку в 1971 году. Но с ускорением мяча при переходе на уровень выше она становилась все сложнее и сложнее (hard to master) и заставляла играть вновь и вновь.

Геймдизайнер Роб Прадо придумал еще одну вариацию принципа: "Easy to learn and almost impossible to master". Алексей Рыбаков объясняет: «Идея в том, что достаточно просто собрать стаф, необходимый для получения нового игрового предмета или уровня. На примере StarCraft — легко отправить все свои войска и разрушить базу. Но по мере продвижения по сюжету у игрока должны появляться новые возможности, предметы, юниты. Все это, плюс взаимодействие с реальными игроками, приведет к тому, что игру можно будет проходить в огромном количестве вариантов. Игрок будет возвращаться к ней многократно».

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

Сделайте геймплей простым и удобным

Думайте об особенностях платформы, под которую пишется игра, и о ситуациях, в которых люди будут в нее играть. Советует Михаил Шагин: «Игровая сессия, вероятно, составит всего 10–15 минут. Большой плюс, если игрок сможет безболезненно отвлечься от игры. В этом помогут пошаговые геймплейные механики. Телефон обычно держат вертикально в одной руке — а это значит, что в вашем распоряжении будет только один палец игрока, большой. Постройте геймплей на простых свайпах и тапах — этот принцип используется в большинстве казуальных хитов. Посмотрите на Voodoo и Ketchapp — французских издателей игр, чьи установки составляют 50 % среди аркад в App Store. Такие проекты делаются за одну–две недели, что не мешает им занимать первые строчки в топе».

Не изобретайте велосипед

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

Разберитесь в продвижении игр

Подборки в магазинах приложений, реклама или сарафанное радио — что сработает для вашего проекта? Нужно понимать, что и с какой целью делаешь с точки зрения маркетинга. Михаил Шагин знал, зачем игре красивое оформление: «В Kenshō мы сделали упор на качество и визуальный стиль, что принесло нам бесплатную поддержку от платформ. Мы получили отметку «Выбор редакции» App Store и Google Play, стали «Игрой дня» в App Store. Kenshō попала в подборки и на баннеры, что и дало нам основной трафик».

Помните, что ошибка — это информация, а не повод расстраиваться

Ваша игра будет сражаться за внимание игроков с разработками от Electronic Arts, Gameloft или Rovio. Это очень сложно. Но это стоит воспринимать только как вызов. А любую ошибку — как ценный опыт. В конце концов, прежде чем Angry Birds стала популярной в 2009 году, Rovio выпустила на рынок более 50 игр и была на грани банкротства.

Пройти обучение

13 сен 18, 10:16
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Как писать код при коллективной разработке

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

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

Принцип первый. Разделение по интересам

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

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

Принцип второй. Разделение по опыту

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

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

Принцип третий. Общие правила оформления

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

Сразу договоритесь об основных моментах:

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

Принцип четвертый. Карта вопросов

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

Принцип пятый. Визуализация

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

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

Принцип шестой. Перекрестный опрос

Когда код написан, надо его проверить. Заниматься этим самому необходимо, но 100% качества это не дает. Поэтому хорошо бы изначально понимать, кто за проверку чьего кода будет отвечать.

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

Выгоды здесь две:

  1. Меньше времени на адаптацию. Когда взаимодействие ограничено двумя людьми, вы не тратите часы на привыкание к чужому стилю, выяснение задач и способов решения. Изложенные выше принципы командной разработки минимизируют сложности индивидуального подхода, но не устраняют их совсем. Перекрестная проверка — еще один помощник.
  2. Больше времени для коммуникации. Когда два человека проверяют друг друга, они «на связи» и могут чаще задавать мелкие вопросы, которые в ином случае забылись бы. А успех от провала часто отделяет мелочь.

Принцип седьмой. Время на проверку

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

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


16 авг 18, 17:01
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Темы с 11 по 20 | всего: 30

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru