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

Блог

«Горжусь, что не побоялась взяться за эту проблему»

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

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

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

Обучение

Мои ожидания от обучения оправдались, потому что, хоть я и работала в IT-компании и видела работу изнутри, всё равно чувствовала пробелы в понимании процессов и этапов создания продукта. Было полезно структурировать информацию.

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

Стажировка и проект 

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

После стажировки мы завершили проект и выпустили его на рынок, как и планировали. Релиз в App Store состоялся 2 декабря 2021 года, в Google Play ожидаем в течение недели.

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

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

Какие препятствия удалось преодолеть

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

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

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

Планы на будущее

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

Совет студентам

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

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

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

 


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

Где разработчику искать вакансии

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

Специализированные сайты

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

Tproger. Это издание о разработке и обо всём, что с ней связано. В разделе «Вакансии» вы найдёте подборку предложений о работе в IT.

Хабр Карьера. Сервис для тех, кто строит карьеру в IT. Помимо вакансий, вас ждёт статистика зарплат и рейтинги работодателей.

Headz.io Сервис анонимного подбора вакансий в IT по стеку, зарплате и локации. Поиска по ключевым словам нет, здесь работает алгоритм матчинга.

Универсальные ресурсы

В зависимости от критериев поиска вам вполне могут подойти следующие сервисы.

Буду. Приятный сервис, который активно развивается. Вакансий пока немного, зато все — от топовых компаний.

Работа.ру. Аналог HeadHunter: много предложений и возможностей их фильтрации, есть разделение вакансий по сферам бизнеса.

LinkedIn. Знаменитая соцсеть для поиска работы и нетворкинга. Идеальна для тех, кто хочет найти офферофер мечты за рубежом. Один нюанс: придётся использовать VPN.

Телеграм-каналы

Если привыкли решать все дела в Телеграме, попробуйте посмотреть профильные каналы.

GeekJob. Подборка из 26 телеграм-каналов с узкопрофильными вакансиями в IT и диджитале.

Careerspace. Главный акцент — на вакансиях в сфере диджитала. Много полезных материалов о карьере и поиске работы.

GetITRussia. Подборка вакансий в Москве и Санкт-Петербурге.

Подборка для джунов

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

GeekBrains. У нас тоже есть раздел «Карьера».Обязательно загляните туда — внутри много вакансий для junior-специалистов и предложений о стажировках.

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

Подборка для удалёнщиков

Если вы в ужасе от работы в офисе, посмотрите телеграм-каналы для поклонников удалёнки.

Finder.vc. Главные особенности: аудитория в 310+ тысяч подписчиков и хорошая репутация среди работодателей.

Dистанция. Ещё один телеграм-канал, где помимо вакансий с удалённой работой публикуют предложения от фриланс-проектов.

Подборка для геймдевщиков

Мечтали о работе в геймдеве? Самое время посмотреть вакансии в этой сфере.

InGame Job. Здесь вы найдёте 2000+ компаний и около 4000+ вакансий в игровой индустрии.

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

Советы по поиску работы

Чтобы не создавать под каждый сервис разные резюме, заранее определитесь с основными моментами.

  • Пропишите ваши главные критерии поиска. Это могут быть зарплатные ожидания, локация офиса, график или сферы, в которых ищете работу.
  • Подумайте, какой опыт точно нужно указать в резюме, а какие детали можно опустить. Обязательно вспомните свои достижения и добавьте их в резюме.
  • Проверьте ссылки. Аккаунты в соцсетях должны быть открыты, а ник в почте должен быть приличным. Rambo91 не подойдёт!
  • В идеале ― пропишите карьерный план. Это дорожная карта вашего профессионального развития, которая поможет достигать целей. Её можно составить самостоятельно или с экспертом, например на курсе GeekBrains «Карьерная мастерская».

 


17 янв, 15:00
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

5 шагов к работе в зарубежной компании мечты

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

Шаг № 1. Составьте резюме на английском языке

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

Первое правило: 10 лет опыта вмещается на одной странице.

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

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

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

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

Шаг № 2. Подготовьтесь к собеседованиям

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

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

Шаг № 3. Потренируйтесь выполнять тестовые задания

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

Шаг № 4. Уделите внимание английскому или языку той страны, в которой находится компания

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

Если у вас есть международный сертификат о знании иностранного языка, это точно плюс. Для английского можно рассмотреть IELTS и TOEFL, для французского 一 DELF и DALF, для немецкого 一 TestDaF и Goethe Zertifikat.

Шаг № 5. Откликайтесь на вакансии

У каждой страны есть свои порталы с вакансиями (аналоги наших hh.ru или SuperJob). Например, посмотрите сайты Stack Overflow, Layboard, Indeed, We Work Remotely. Изучите рынок вакансий, подготовьте резюме и приступайте к откликам. На платформе hh.ru тоже есть шанс найти работу за рубежом.

Заведите профиль на LinkedIn: он поможет не только найти работу, но и наладить связи с профессиональным сообществом. А ещё можно писать в компании напрямую 一 в теле письма укажите мотивацию и прикрепите резюме. Перед тем как принимать офер от компании, почитайте отзывы сотрудников на сайте Glassdoor.

Чтобы определиться со сферой развития в зарубежной компании, правильно рассказать о своих навыках и мотивации, пройдите курс «Карьерная мастерская» от GeekBrains.

Вы узнаете:

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

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

 


14 янв, 13:00
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

13 IT-подкастов, которые мы полюбили в 2021 году

Читать книгу не всегда удобно, смотреть видеообзоры любят не все, да и времени не всегда хватает. Поэтому держите 13 IT-подкастов с новостями о технологических новинках из разных направлений: анализа данных, разработки, тестирования, карьеры. Эпизоды можно слушать в автобусе или метро, во время кодинга pet-проекта или по дороге в новогодний отпуск.

Список подкастов

  1. АйТиБорода
  2. Фронтенд Юность
  3. Выхожу с понедельника
  4. Откровенно про IT-карьеризм
  5. Датаголики
  6. Radio QA
  7. Айти Самурай
  8. uxuiтельные истории
  9. Автостопом по IT
  10. Мы обречены
  11. Радиома
  12. ТыжДевочка
  13. 38 попугаев

1. АйТиБорода

Бородатый программист Лекс делится опытом, историями и интересными знакомствами. Из интервью вы узнаете о карьере в IT и преподавании. Как айтишнику набраться опыта? Что такое компьютерная криминалистика? Как поймать киберпреступника и кто этим занимается?

Послушать сейчас:

2. Фронтенд Юность

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

Послушать сейчас:

3. Выхожу с понедельника

Гости подкаста — разработчики, тестировщики, продуктовые аналитики и другие успешные представители IT-профессий. Они рассказывают, каково это — быть PHP-разработчиком? Правда ли, что на рынке труда сейчас наиболее востребованы аналитики? Другое NLP — это как? Ответы на профессиональные вопросы помогут тем, кто находится в начале карьерного пути в диджитал-сфере.

Послушать сейчас:

4. Откровенно про IT-карьеризм

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

Послушать сейчас:

5. Датаголики

Основатели компаний и руководители направлений BI рассуждают о значении Business Intelligence. Говорят о трудностях в реализации BI-стратегии, об особенностях отечественного BI-инструмента и нюансах его внедрения. Подкаст поможет разобраться с проблемами и трендами в сфере управления данными. 

Послушать сейчас:

6. Radio QA

Гости платформы Radio QA — тестировщики — расскажут о наболевшем. Как повысить культуру тестирования? Как стартапу получить клиента? Как правильно отдыхать, чтобы уберечь себя и свою команду от выгорания?

Послушать сейчас:

7. Айти Самурай

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

Послушать сейчас:

8. uxuiтельные истории

Истории гостей о том, как запустить стартап, найти своего покупателя, создать UX-лабораторию (и зачем она нужна). А также о проблемах безопасности в интернете, которые волнуют всех — от частного пользователя до лидеров государств. О взломе IoT, причинах фейлов крупных компаний рассказывает CEO ЦАРКА и WebTotem. 

Послушать сейчас:

9. Автостопом по IT

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

Послушать сейчас:

10. Мы обречены

Журналист Артём Малышев и программист Фил Ранжин приглашают в свой подкаст экспертов и преподавателей с интересными мнениями про IT-индустрию, прокрастинацию, способы «войти в IT» и многое другое.

Послушать сейчас:

11. Радиома

Развлекательный IT-подкаст представляет новости из сферы высоких технологий со всего мира. 

  • Правда ли, что в России запущено собственное производство ноутбуков? 
  • Япония решила больше не использовать дискеты! Серьёзно?
  • Мюнхен отказался от продуктов Microsoft, а Великобритания потеряла рынок высоких технологий? Слушайте эти и другие эпичные новости.

Послушать сейчас:

12. ТыжДевочка

Что делают девушки в IT-индустрии? Героини выпусков делятся своими историями успеха и неудач. О том, как айтишнице начать карьеру, с какими трудностями и предрассудками сталкиваются разработчицы — об этом и многом другом рассказывают гостьи подкаста.

Послушать сейчас:

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

Послушать сейчас:

  • #4 Сергей Матвеенко — Что нового в Python 3.9?
  • #1 Денис Каланов
  • #3 Михаил Кривушин

 


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

Как начать вторую карьеру

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

Вторая карьера — это возможность выбрать новое направление деятельности с учётом всего того, что вы уже знаете о себе. Амбиции и предпочтения в 20 и 40 лет могут быть очень разными. Мы открываем для себя новые интересы, меняем привычки. Появляются новые специальности, старые видоизменяются.

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

Разбираемся, как начать вторую карьеру, чтобы не пожалеть о своём выборе.

Почему вы хотите перемен

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

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

Как выбрать направление

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

  • Какие навыки вы хотите освоить?
  • Есть ли сфера, в которой вы мечтали развиваться?
  • Что вам нравится и не нравится в текущей профессии?

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

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

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

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

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

Сколько денег нужно на переход

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

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

Как не потерять опыт

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

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

Что говорить на собеседовании

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

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

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

Самостоятельно пройти весь путь от принятия решения о второй карьере до первых шагов в ней может быть очень сложно. Хочется угадать с направлением и не разочароваться в своём выборе. В этой ситуации поможет Карьерная мастерская GeekBrains.

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

 


30 дек 21, 13:00
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

«И зачем тебе это всё?» — ответ на вопрос про смену работы

 

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

Родственники и друзья

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

Например:

  • «Ты ведь по профессии юрист, а хочешь быть тестировщиком. Тебя не возьмут без диплома».
  • «У тебя сейчас стабильная работа в хорошей компании. Да, обязанности скучные, но зато нет рисков. А все эти ваши удалённые профессии копирайтеров и таргетологов 一 совсем ненадёжные. Там в любой момент могут кинуть».
  • «Посмотри на себя и на меня 一 мы уже 20 лет работаем в администрации компании. Условия комфортные, отличный коллектив, что тебе ещё нужно?».

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

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

  • Расскажите, что менять род деятельности 一 это нормально: «Я никогда не хотел быть юристом. Когда поступал в университет 一 был молод и ошибся с выбором. Я много прочитал про профессию тестировщика и знаю, что хочу реализоваться именно в ней. Для этой профессии не нужно учиться пять лет в университете 一 я знаю, что можно пройти онлайн-курсы за год. А в процессе учёбы уже получится находить первые проекты».
  • Говорите о том, что важно для вас: «Для меня приоритет 一 профессиональное развитие. Мне неинтересно работать тем, кем я работаю сейчас. Я готов рискнуть стабильностью на ближайшие пару лет, чтобы потом получать кайф от того, что делаю».
  • Покажите, что годы работы на одном месте 一 не знак того, что нужно оставаться в этой же компании: «Несколько лет назад я не понимал, что работа может приносить удовольствие. Да, сейчас в моей компании комфортные условия, но мне этого недостаточно. Я видел много примеров людей, уходивших с рутинной работы, которой занимались всю жизнь. Потом они осваивали новую профессию, заново находили себя и были счастливы».

HR-специалисты и будущий руководитель

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

О чём вас могут спросить на собеседовании:

  • «На прошлом месте вы проработали 15 лет. Ваша прежняя компания 一 лидер рынка, и у вас, возможно, были перспективы роста. Почему вы в итоге решили уйти с позиции старшего менеджера по хозяйству и начать разрабатывать интерфейс мобильных приложений?».
  • «Вы не боитесь, что интерес к новой специальности быстро пропадёт и вы разочаруетесь в профессии? Вы ведь не знаете, что вам станет интересно через год».
  • «Вам уже 37 лет. Поскольку вы новичок в сфере маркетинга, мы можем предложить вам только позицию junior с небольшим окладом. Готовы ли вы на пониженный доход только ради новой работы?».

Такие вопросы могут вселить неуверенность в себе и своём выборе. Но подобные чувства 一 вполне нормальны. HR-специалисты и будущий руководитель хотят знать, насколько вы понимаете риски и готовы начать профессиональный путь с нуля. 

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

  • Расскажите, что за 15 лет вы изменились и теперь цените интересные задачи: «Я всегда выполнял свою работу хорошо. Но два года назад осознал, что больше не хочу быть менеджером по хозяйству. Я развиваюсь, и вместе с этим меняются мои интересы и ценности. После долгого анализа я понял, что хочу работать с мобильными приложениями».
  • Покажите, что вы уверены в своём выборе: «Прежде чем уйти из компании и сменить направление, я изучил разные сферы. Кроме того, я проходил профориентационные тесты и понял, что профессия разработчика интерфейсов 一 это то, что мне нужно. Я прошёл онлайн-курсы, выполнил четыре проекта для портфолио и чётко понимаю, что двигаюсь правильно».
  • Объясните, что вы хорошо подготовились к новому этапу в жизни: «Да, я понимаю, что в ближайшие пару лет буду получать меньше обычного, а задачи будут не очень сложные. Именно поэтому я накопил финансовую подушку, которая поможет мне чувствовать себя комфортно».

Что ещё поможет

Курсы по профориентации 一 сильный аргумент в пользу вашего решения сменить профессию. Один из таких курсов 一 бесплатная программа «Карьерная мастерская» от GeekBrains

Что она включает:

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

Чем больше вы уверены в своём выборе 一 тем убедительнее вы расскажете о смене профессии и близким людям, и будущему работодателю.

 


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

Тестирование в Android. Часть 2: unit-тесты

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

Пишем unit-тесты

Давайте напишем наши первые unit-тесты. Создадим тестовое приложение My Test Application. Если вы ни разу не создавали своё приложение под Android, то в качестве шпаргалки пригодится статья «Как создать приложение для Android самому».

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

Строковые ресурсы strings.xml и размеры:

<string name="app_name">My Test Application</string>
<string name="email_label">Your Email address:</string>
<string name="save">Save</string>
<string name="email_hint">Enter your Email</string>
<string name="invalid_email">Invalid email</string>
<string name="valid_email">OK</string>
 
<dimen name="activity_padding">16dp</dimen>
<dimen name="main_margin">20dp</dimen>

Главный и единственный экран activity_main.xml:

<?xml version="1.0" encoding="UTF-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:padding="@dimen/activity_padding">
 
   <TextView
       android:id="@+id/titleTextView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_margin="@dimen/main_margin"
       android:text="@string/email_label"
       android:textAppearance="?android:attr/textAppearanceMedium"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent" />
 
   <EditText
       android:id="@+id/emailInput"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
       android:layout_margin="@dimen/main_margin"
       android:hint="@string/email_hint"
       android:inputType="textEmailAddress"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toBottomOf="@+id/titleTextView" />
 
   <Button
       android:id="@+id/saveButton"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_margin="@dimen/main_margin"
       android:text="@string/save"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toBottomOf="@+id/emailInput" />
</androidx.constraintlayout.widget.ConstraintLayout>

Создайте класс, проверяющий введённый email:

package com.example.mytestapplication
 
import android.text.Editable
import android.text.TextWatcher
import java.util.regex.Pattern
 
class EmailValidator : TextWatcher {
 
   internal var isValid = false
 
   override fun afterTextChanged(editableText: Editable) {
       isValid = isValidEmail(editableText)
   }
 
   override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) = Unit
 
   override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) = Unit
 
   companion object {
 
       /**
        * Паттерн для сравнения.
        */
       private val EMAIL_PATTERN = Pattern.compile(
           "[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
                   "\\@" +
                   "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
                   "(" +
                   "\\." +
                   "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
                   ")+"
       )
 
       fun isValidEmail(email: CharSequence?): Boolean {
           return email != null && EMAIL_PATTERN.matcher(email).matches()
       }
   }
}

Сам главный экран MainActivity:

package com.example.mytestapplication
 
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
 
class MainActivity : AppCompatActivity() {
 
   private val emailValidator = EmailValidator()
 
   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       setContentView(R.layout.activity_main)
 
       findViewById<EditText>(R.id.emailInput).addTextChangedListener(emailValidator)
       findViewById<Button>(R.id.saveButton).setOnClickListener {
           if (emailValidator.isValid) {
               Toast.makeText(this@MainActivity, getString(R.string.valid_email), Toast.LENGTH_SHORT).show()
           } else {
               val errorEmail = getString(R.string.invalid_email)
               findViewById<EditText>(R.id.emailInput).error = errorEmail
               Toast.makeText(this@MainActivity, errorEmail, Toast.LENGTH_SHORT).show()
           }
       }
   }
}

Убедимся, что всё работает уже на этом этапе, хотя главное — это написание тестов. Для этого у нас есть две автоматически сгенерированные папки, помимо основной. 

Вы уже знаете, что папка, помеченная androidTest, предназначена для инструментальных тестов (загляните в неё ради интереса). Нам нужна папка, помеченная просто test. Сейчас там находится единственный класс, созданный для примера: ExampleUnitTest. Давайте добавим свой класс для тестирования функционала нашего приложения, EmailValidatorTest:

class EmailValidatorTest {
package com.example.mytestapplication
 
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
 
class EmailValidatorTest {
 
   @Test
   fun emailValidator_CorrectEmailSimple_ReturnsTrue() {
       assertTrue(EmailValidator.isValidEmail("name@email.com"))
   }
 
   @Test
   fun emailValidator_CorrectEmailSubDomain_ReturnsTrue() {
       assertTrue(EmailValidator.isValidEmail("name@email.co.uk"))
   }
 
   @Test
   fun emailValidator_InvalidEmailNoTld_ReturnsFalse() {
       assertFalse(EmailValidator.isValidEmail("name@email"))
   }
 
   @Test
   fun emailValidator_InvalidEmailDoubleDot_ReturnsFalse() {
       assertFalse(EmailValidator.isValidEmail("name@email..com"))
   }
 
   @Test
   fun emailValidator_InvalidEmailNoUsername_ReturnsFalse() {
       assertFalse(EmailValidator.isValidEmail("@email.com"))
   }
 
   @Test
   fun emailValidator_EmptyString_ReturnsFalse() {
       assertFalse(EmailValidator.isValidEmail(""))
   }
 
   @Test
   fun emailValidator_NullEmail_ReturnsFalse() {
       assertFalse(EmailValidator.isValidEmail(null))
   }
}

Давайте разбираться:

  • Все методы, предполагающие тестирование, должны помечаться аннотацией @Test. Так среда разработки понимает, что это методы для тестирования.
  • Названия методов должны описывать то, что они тестируют, и записываться в camel_Snake_Case.
  • Названия тестов должны быть в одном стиле, чтобы было проще искать их, если перед глазами только лог (например, при CI/CD). Главное, чтобы все в команде разработчиков называли тесты единообразно.
  • Действует правило: одно Утверждение (assert) — один тест.
  • Мы проверяем все случаи, которые придут нам в голову. Допускаем, что в нашем тестовом классе проверяются не все возможные Утверждения, но мы точно проверяем все основные.

    Как мы проверяем наши Утверждения? Мы используем метод assert из пекеджа org.junit (зависимость testImplementation 'junit:junit:4.+' в Gradle). Там есть довольно много методов, проверяющих разные значения, но нам для этого примера достаточно двух: assertTrue и assertFalse. Они принимают на вход значение и проверяют, совпадает ли оно с нашим Утверждением. В качестве значения мы передаем результат проверки класса EmailValidator.


На будущее

Помимо assertTrue и assertFalse, существуют методы: 

  • assertEquals;
  • assertNotEquals;
  • assertArrayEquals;
  • assertNull;
  • assertNotNull;
  • assertSame.

Названия методов говорят сами за себя.


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

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

Конфигурация для прогона ваших тестов создалась автоматически, её можно найти в окне конфигураций запуска (там всегда есть как минимум одна конфигурация app для запуска приложения):

Не забудьте сменить конфигурацию, если хотите запустить приложение, а не тесты:

Есть опция запуска с отображением покрытия вашего приложения тестами:

После прогона тестов откроется дополнительное окно, которое показывает, насколько ваше приложение покрыто тестами:

Через двойной щелчок можно посмотреть, какие классы и как покрыты тестами:

Мы можем покрыть тестами класс EmailValidator, потому что он написан на чистом Kotlin без привязки к жизненному циклу Activity, но нет никакой возможности проверить работу методов нашей Activity. Для этого JUnit уже не подойдёт, как бы вы этого ни хотели. Для проверки работы Activity/Fragment нужны другие инструменты и виды тестов (мы ещё дойдём до этого на нашем курсе). Это ещё раз доказывает, что благодаря тестированию мы делаем свой код лучше. В этом примере благодаря тестированию мы:

  • вынесли логику проверки в отдельный класс,
  • сделали наш код переиспользуемым для любой Activity или Fragment.

Читайте больше полезных статей для начинающих Android-разработчиков:

А если затянет — приходите на факультет Android-разработки. Во время учебы вы разработаете Android-приложение и выложите его в Google Play, даже если никогда не программировали. А также освоите языки Java и Kotlin, командную разработку, Material Design и принципы тестирования.

 


28 дек 21, 15:00
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

10 вопросов для рестарта карьеры

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

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

Для начала вам необходимо понять себя.

1. Вам нравится то, чем вы сейчас занимаетесь? 

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

Если вдруг на этот вопрос вы ответили «нет» — остановитесь. Замедлите «бег белки в колесе» и подумайте: для чего вы всё это делаете? Сможете ли вы закрывать те же потребности, занимаясь любимым делом?

2. Что вы любите делать больше всего? Что вас вдохновляет?

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

Не стоит зацикливаться на конкретных занятиях — вспомните всё, что вас вдохновляет и заряжает. Это может быть неочевидно для вас. Например: вы любите общаться с коллегами из разных отделов, понимаете их проблемы и язык, на котором они говорят, — это можно применить в проджект-менеджменте. А ваше нестандартное мышление — в тестировании. 

3. Какие у вас есть сильные стороны?

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

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

4. Какой след вы хотели бы оставить в истории?

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

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

5. Каким вы хотели бы видеть свой день?

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

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

Разобрались в себе? Теперь идём разбираться в мире профессий. На рынке труда появляется всё больше развивающихся и перспективных специальностей. В их многообразии сложно разобраться самостоятельно. Помочь смогут эксперты карьерной мастерской от GeekBrains.

6. Кем вы восхищаетесь в профессиональной сфере?

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

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

7. Какие сферы деятельности вас интересуют?

Если ранее мы говорили о ваших интересах, не опираясь на сферы или специальности, то здесь пора определиться, где именно вы сможете удовлетворить свои интересы и амбиции. IT, маркетинг, дизайн, менеджмент, строительство, SMM — составьте список направлений, в которых вы хотели бы развиваться.

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

8. Где вам бы точно не хотелось работать?

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

9. Как можно применить ваш предыдущий опыт в новой профессии?

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

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

10. Вы готовы начать строить свою карьеру прямо сейчас?

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

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

 


24 дек 21, 12:00
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

«Все курсы оказались гиперполезными»

О прошлом образовании

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

Почему GeekBrains?

Можно сказать, что я жертва маркетинга :) GeekBrains увидела в рекламе, у блогеров в том числе. А когда стала изучать программу iOS-разработки, поняла, что здесь более углублённое обучение, чем на других площадках. Альтернативой был Skillbox, но именно из-за программы проиграл.

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

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

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

Советы студентам

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

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

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

Хотите узнать больше о выпускниках факультета iOS-разработки и других направлений в GeekBrains? Вот их истории:

 


21 дек 21, 15:30
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Тестирование в Android. Часть 1: введение

Этой статьёй мы открываем целый цикл материалов, посвящённых тестированию Android-приложений. Мы рассмотрим все варианты тестирования, которые позволят нам полностью покрыть тестами практически любое приложение. Просьба пристегнуть ремни — мы стартуем!

Какие тесты бывают: обзор инструментов

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

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

Мы можем тестировать разные части приложения, например, бизнес-логику или визуальный интерфейс, или запросы в интернет (базу данных). Давайте посмотрим на тесты, наиболее характерные для платформы Android: локальные и инструментальные.

Локальные тесты

Локальные тесты запускаются на локальной JVM (Java Virtual Machine). Это значит, что такие тесты могут запускаться на разных устройствах — локальная JVM везде одинаковая. Такие тесты в основном используются для тестирования бизнес-логики, то есть не задействуют пользовательский интерфейс или непосредственно компоненты Android: тестируется код, независимый от платформы. 

Если нужно тестировать классы, завязанные на Android (Activity/Fragments, ViewModels, Services и т. п.), на помощь приходит Robolectric. Но об этом мы поговорим в следующей статье.

Инструментальные тесты

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

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

Фреймворки

Для тестирования UI существуют различные решения. Мы с вами будем пользоваться только нативными, такими как Espresso, но стоит немного рассказать и про кроссплатформенные. Некоторые платформы (типа Appium, Selenium) позволяют тестировать приложения, созданные не только для Android, но и для iOS или десктопа. Это очень удобно, когда одно и то же приложение разрабатывается для разных платформ или операционных систем: разработчикам каждого приложения не приходится писать тесты самостоятельно — тесты пишутся один раз, централизованно, и все приложения тестируются на единой платформе. Но это касается только тестирования интерфейса и возможно только в тех случаях, когда приложения выглядят одинаково на разных платформах. Если экраны сильно различаются или приложения совсем не похожи по внешнему виду и функционалу, то одинаковые тесты написать не получится. Тем не менее, несмотря на такие ограничения, это довольно популярный подход для кроссплатформенного тестирования.

Основные принципы тестирования

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

Пишите код и тестируйте его итеративно

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

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

Тут мы в первую очередь говорим о unit-тестах. Что значит unit? Это условное название для блока кода. Это может быть метод, часть метода, класс. Соответственно unit-тестирование — это тестирование отдельных блоков кода. Для каждого блока написанного кода вы пишете свой unit-тест. Ваши тесты должны покрывать все возможности использования вашего блока кода, стандартное и нестандартное поведение. Допустим вы должны написать тест для метода:

fun validatePhoneNumber(number : Int) : Boolean {...}

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

Пример итеративной разработки цикличен и приведен на схеме ниже:

The testing development cycle consists of writing a failing unit           test, writing code to make it pass, and then refactoring. The entire           feature development cycle exists inside one step of a larger,           UI-based cycle.

Разбивайте ваше приложение на слои

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

Настройте свое тестовое окружение

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

  • папка androidTest предназначена для инструментальных тестов;
  • папка test — для локальных unit-тестов.

Выберите устройства для тестов 

Это правило касается в основном инструментальных тестов.

Также имейте в виду, что вы можете запускать инструментальные тесты на разных типах устройств:

  • реальные устройства;
  • эмуляторы (эмулятор в Студии или Genymotion);
  • симуляторы устройств, например, Robolectric (об этом позже).

Реальные устройства дают вам самые надёжные результаты тестов, но требуют времени для подключения и запуска (не говоря уже о том, что смартфон ещё нужно купить). Симуляторы работают быстрее всего, но показывают наименее надёжные результаты из всех (конечно, смотря что считать ненадёжностью: симуляторы в среднем дают 98% результат). Эмуляторы находятся где-то посередине в плане быстродействия и достоверности.

Старайтесь использовать в тестах реальные объекты

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

  • это data-классы или POJO;
  • от этих объектов зависит корректное выполнение теста.

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

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

На будущее

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

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

Все тесты можно поделить на

  • маленькие: unit-тесты; обычно пишутся в большом количестве и покрывают бизнес-логику приложения;
  • средние: интеграционные тесты, проверяющие взаимодействие между слоями и модулями приложения; пишутся в небольшом количестве;
  • большие: end-to-end тесты, проверяющие навигацию, user-flow и общую работу приложения; этим типом тестирования разработчики занимаются меньше всего; часто, когда нужна помощь команде QA.

A pyramid containing three layers

Чем выше тесты находятся в этой пирамиде, тем тяжелее их писать и сложнее поддерживать. Рекомендуемое соотношение тестов в пирамиде: 70% unit-тестов, 20% интеграционных и 10% остальных.

Unit-тесты

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

Robolectric

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

  • компонентов с жизненным циклом;
  • ресурсов приложения.

Инструментальные тесты

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

Интеграционные тесты (средние тесты)

Помимо тестирования отдельных классов и блоков кода (unit-тесты, Robolectric, инструментальные тесты) можно тестировать приложение на уровне модулей, проверяя взаимодействие отдельных компонентов или целых модулей между собой. Можно проверять

  1. работу целого Фрагмента (Fragment);
  2. работу на уровне вашей БД;
  3. переходы между разными Activity, навигацию;
  4. работу UI нескольких фрагментов на экране (здесь, в отличие от вышеописанных тестов, вам может понадобиться запуск на реальном устройстве).

Espresso

    Используйте эту библиотеку, если вам нужно прогонять инструментальные тесты, завязанные на UI и компоненты Android:

  • Проверка UI конкретного экрана: нажатие на кнопки, использование EditText и других View;
  • Проверка работы элементов в RecyclerView;
  • Проверка запуска и корректной работы Intents;
  • Тестирование WebView.

Большие тесты

Тесты, которые, грубо говоря, тестируют ваше приложение полностью. Имеет смысл использовать их, когда ваше приложение полностью готово или имеет рабочий прототип без каких-то явных проблем. Такие тесты просто проходят по всему приложению, запуская все экраны подряд, проверяя навигацию в приложении, открытие и закрытие экранов, user flow. Эти тесты могут проводиться как в автоматическом режиме, так и вручную с помощью мануального тестирования. Называются такие тесты Smoke test, по аналогии с замкнутым пространством без щелей: если откуда-то идет дым, значит там явно есть щель, которую нужно закрыть.

Такие тесты запускаются на устройстве или эмуляторе, чтобы убедиться, что приложение просто работает и все экраны открываются, переход между модулями и экранами осуществляется нормально, нет никаких узких мест в навигации приложения. Возникает закономерный вопрос: «Почему разработчик не может сам открыть приложение и все его экраны, особенно если их там всего 5?» Ответ очень прост: фрагментация. Вряд ли у разработчика под рукой находится хотя бы топ-10 самых популярных смартфонов на рынке, не говоря уже про остальные топ-100 популярных моделей. Да и вряд ли разработчик будет каждый раз открывать все экраны на каждом из 10 устройств, чтобы убедиться, что всё работает как надо. Для этого есть внешние облачные сервисы и фермы устройств, такие как Firebase Test Lab, которые запустят и погоняют ваше приложение на десятках и сотнях разных устройств с разными экранами, разрешениями, памятью, версией ОС и т. п.

Что такое TDD

Аббревиатура расшифровывается как Test Driven Development — разработка по принципам тестирования. Это значит, что вы сначала пишете тесты, а только потом — необходимый код, который нужен, чтобы эти тесты пройти. Таким образом вы добиваетесь очень надежного и тестируемого кода. Вы пишете:

  • код со 100% покрытием (по крайней мере с высоким процентом покрытия);
  • код с добавлением функционального подхода;
  • классы с использованием dependency injection, потому что так эти классы проще тестировать.

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

  • Тест: это блок кода, который описывает тестируемое состояние и результат этого тестирования. Например, метод addOne() : Int добавляет 1 к числу и возвращает это число. Также этот блок кода содержит проверочную часть, которая подтверждает корректность проверки. Проверочная часть может содержать одно или несколько утверждений (Assertions).
  • Утверждение (Assertion): функция, которая проверяет результат выполнения блока кода на соответствие нашим ожиданиям. Эта функция может проверять разные утверждения. К примеру, что наш метод addOne(2):
    • вернет 3;
    • вернет Int;
    • выполнится только один раз и т. д.

 Теперь пора поговорить о принципах, которые помогут вам писать тестируемый код и надёжные приложения.

Тестируйте только то, что нужно тестировать

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

Конечно, это не единственный подход к тестированию. Есть, как минимум, два подхода, которые принципиально различаются: описанный выше и противоположный ему. Сторонники противоположного подхода считают, что надо покрыть тестами 100% кода. Некоторые разработчики ратуют за качество тестов. Истина, как обычно, где-то посередине и зависит от условий разработки и требований к проекту.

Пишите один тест и много утверждений

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

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

Пишите тесты до кода

Это очень редкая практика среди программистов, особенно на коммерческих проектах, где заказчик не готов платить на 30–50% больше за разработку приложения, но в небольших или личных проектах это окупается, потому что, составляя тесты для будущего кода, вы до написания реального кода понимаете, где могут быть ошибки, где есть слабые места и как их избежать. Это позволяет вам сразу писать код, который будет более продуманным и надёжным, экономя вам время в будущем.

Автоматизируйте тесты

При TDD тестов появляется довольно много, и прогон их всех может продолжаться достаточно долго. Используйте соответствующие плагины или скрипты для автоматического запуска тестов. Их можно настроить или в Android Studio, или в GitHub (или иной системе контроля версий) и запускать их автоматически перед тем, как вливать ваш код в репозиторий. Ваш код просто не попадёт в репозиторий, если какие-то тесты провалятся.

В следующей статье мы напишем свои первые тесты и на практике освоим unit-тестирование. Не переключайтесь!

Читайте больше полезных статей для начинающих Android-разработчиков:

А если затянет — приходите на факультет Android-разработки. Во время учебы вы разработаете Android-приложение и выложите его в Google Play, даже если никогда не программировали. А также освоите языки Java и Kotlin, командную разработку, Material Design и принципы тестирования.

 


17 дек 21, 11:36
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Темы с 1 по 10 | всего: 1215

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

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

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

Люди

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