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

Как я бросил всё и стал Android-разработчиком

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

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

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

Если раньше моими кумирами были Шерлок Холмс и Тирион Ланистер из «Игры престолов», то теперь я решил равняться на этого супермена с гуманитарным образованием. Шутки шутками, но статья произвела на меня сильное впечатление, и я решил попробовать.

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

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

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

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

Как я сфокусировался на месяц

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

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

Мне попадалось сообщение на форуме от студента, который ходил на курсы по программированию, в духе: «программистам приходится много работать, они должны работать ещё и дома… очень тяжелая профессия…» Сейчас я могу сказать, что этому человеку вряд ли нужно идти в разработчикиии. Потому что программист не ДОЛЖЕН, и ему не ТЯЖЕЛО — он ХОЧЕТ и ему ИНТЕРЕСНО. Конечно, я не могу назвать себя программистом, но рискну сказать, что если программист ДОЛЖЕН и ему НЕ ИНТЕРЕСНО, то либо он не в том проекте, либо не в той профессии. Когда я писал свои первые приложения, я как будто играл в игру — постоянно возникают новые задачи, и я должен их решать. Решения могут быть разными, простор для фантазии безграничен. Это поинтереснее Skyrim или GTA.

Читайте также:  Captive apple com андроид

Как я обучался: шкатулка с инструментами

Как человек, который последние 2 года занимался вопросами памяти и запоминания, я знаю о некоторых минусах интенсивного обучения. Мной же написанные статьи (Горячее время в обучении: часть 1, часть 2) почти полностью противоречат тому, что я сделал.

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

Но всё пошло не так гладко, как раньше! Если обычно на повторение 50 карточек у меня уходило минут 5, то теперь на 5 карточек могло уйти минут 10. Первое время я мучился, стараясь запоминать всё чуть ли не дословно, но потом понял, что это бессмысленно. Программисту важно уметь быстро находить решения, а не помнить их буквально. Поэтому я начал делать карточки более объёмными и перестал запоминать их дословно. То есть я знаю, какие записи у меня есть, и быстро могу найти нужное по ключевым словам.

Приведу пример типичной карточки средних размеров:

Есть и другой тип — на понимание принципов. Здесь я отвечаю, не подглядывая в ответ.

Это намного удобнее обычного конспекта, потому что с программой для интервального повторения вроде Anki вы следите, чтобы ничего не потерялось. Если мне попадётся вопрос, который я почти забыл или не уверен в ответе, я просто отправлю его на небольшой интервал (через 3 дня в примере ниже).

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

Например, я начал книгу Android Development и очень легко прошёл 200 страниц, а потом вообще перестал что-либо понимать. Тогда я отложил книгу и взял обычный учебник по программированию на Java, там застрял на 300-й странице. Затем перешёл на онлайн-курс по разработке под Android и проработал все уроки, кроме последнего — с ним я не справился. Когда вернулся к первой книге, прежние проблемы показались мне пустяком. Помимо этого я параллельно читал бумажный учебник по Java перед сном, а во время еды смотрел видеоуроки на телефоне.

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

А затем за несколько минут пытаются дать остальное:

— Хорошо, с = a + b, но зачем вам писать это каждый раз? Если вы перенесёте это в метод, то избавите себя от лишней работы. А вообще, вы могли бы реализовать абстрактный класс или интерфейс и через них уже решать подобные задачи. Попробуйте.
— Что?! Какой ещё абстрактный класс? Зачем использовать функцию? Зачем нужны интерфейсы и абстрактные классы. Похоже, программирование не для меня…

Примерно так это всё происходит.

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

Начинайте решать практические задачи как можно раньше

Этот принцип заслуживает заголовка. Если вы решаете реальные проблемы, вам будет интересно. Вы научитесь именно тому, что нужно вам. На четвертый или пятый день, когда я ещё занимался в метро, я начал писать программу, которая считала интервалы для Anki. Меня интересовало, сколько карточек нужно будет повторять в день через полгода, если всего ты решишь выучить 500 штук.

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

Другой пример: позавчера я зашёл на КиноПоиск и обнаружил совсем другой сайт. Но мне нужен старый КиноПоиск. Вы видите тут возможность для обучения? Я увидел ии написал приложение Kinopoisk vote. Потому что проходить уроки и выполнять задания — скучно. Интересно делать проект. Пусть приложение получилось так себе, скачает его человек 20 и денег я с него не получу. Сейчас главное, что я многому научился, пока его писал, а писать его было интересно.

Читайте также:  Air pods подходит ли для андроид

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

Ресурсы, которыми я пользовался

Новичкам я бы посоветовал что-то очень простое и удобное. Такими мне показались книги серии Head first. Написаны они так, чтобы реализовать все возможные принципы эффективного обучения: постоянное повторение, использование эмоций, объяснение сложных концепций через обыденные примеры, инфографика и тому подобное.

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

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

Удобны курсы на Treehouse — тебя ведут за ручку с самого начала, всё подробно объясняют и дают промежуточные задания (я их, кстати, никогда не выполнял). Также можете посмотреть codecademy, codecombat, codebabes.

На мобильном прошел до середины: Изучаем java, Learn java. Ежедневно заходил повторять пройденное в Anki.

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

Итоги марафона

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

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

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

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

12 октября 2015, 15:00
Мнение автора может не совпадать с позицией редакции.

Источник

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

Лирическое отступление

Всем доброго времени суток!

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

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

Коротко о нас и как так вышло

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

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

Читайте также:  Clean master android для чего

Начало работы

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

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

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

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

  1. Анализ рынка;
  2. Выбор платформы;
  3. Выбор механики;
  4. Выбор движка под механику;
  5. Написание концепций;
  6. Подготовка материалов;
  7. Начало разработки.

Анализ рынка и выбор платформы

На данный момент ежегодный рост рынка мобильных игр и приложений близится к 30%, при этом игры для ПК и консолей такими показателями похвастаться не могут.

Безусловным фаворитом для нас стали мобильные платформы Android и iOS. Разработка решили вести на обе платформы и руководствовались такой логикой, что выпускать продукт для рынка России и бывших стран СНГ (где преобладает Android) не на столько интересно, как для стран Европы, Азии (Китай и Япония) ну и конечно же США. Аудитория, которая пользуется выбранными платформами в этих странах разделилась практически поровну.

Выбор механики

Скажем так: топы по скачиваниям и сборам — MMO и фермы, но для молодой студии это слишком долго и дорого. На втором месте — казуалки формата 2048 и три в ряд, но ниша очень переполнена такими приложениями и занять в ней достойное место будет сложно. Дальше мы увидели, что ранеры subway surfers, temple run и им подобные имеют огромное количество скачиваний, находятся в топах по популярности но не имеют отметок по топовости сборов.

Вывод напрашивается сам за себя — не придумали как это правильно монетизировать. Мы решили попробовать. О том как разрабатывалась внутриигровая экономика я расскажу в следующем посте.

Выбор движка

Тут всё было максимально и просто. Выбрали unity3d из за относительной простоты разработки и портирования на разные устройства.

Написание концепций

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

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

Подготовка материалов

Далее были собраны кейсы успешных игр, которые отличились визуальной составляющей и атмосферой. По референсам была поставлена задача иллюстраторам и программистам.
Были сделаны первые скетчи и собран небольшой уровень без графических элементов (набор кружочков и квадратиков). Дальше работу программистов, гейм дизайнера и иллюстраторов нужно было поставить на поток и стандартизировать. Мы использовали Google docs в качестве площадки для диз.доков, Trello для таск трекинга и Telegram для корпоративного общения. Для небольшой команды использовать Jira или Bitrix24 по нашему скромному мнению не имеет смысла.

Начало разработки

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

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

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

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

Источник

Оцените статью