Android ::: "Как я полез в многопоточность, чтобы изобрести велосипед!"

Добрый день!

Сижу с огромной улыбкой на лице и сам над собой ржу, суть повести в том: «Читай Карл… Читай внимательно документацию!!».

С момента прошлого поста, куча изменений, я плотнее вошёл в Java по Head first… / Thinking in Java; когда вопрос стал идти ли дальше на JR глубже в Java, я выбрал Android курсы на другом ресурсе(языковая практика, интерактив и мне по кайфу). Вместе с этим сейчас я получил оффер от ИТ-компании, но на позицию junior-тестировщика/*Кстати, тема тестирования здесь не раскрыта, и если интересно чё как, какие плюсы для будущего разработчика, могу подробно описать + общение с HR*/

Сейчас я о другом) Android курс полетел, всё глубже и глубже иду в мобайл, и в Java; в прошлое воскресенье я столкнулся с темой: "… class Context". С помощью него можно получить доступ ко всему девайсу, я так с gps побаловался, и остановился на вибро.

Бегло пробежался по документации и расстроился, т.к. android < 8.0 — не умеет настраивать силу/интенсивность вибрации, другими словами он либо вкл./выкл. И то, не так что vibrator.start(), а vibrator.vibrate(int milisec); надо нам в него запихнуть кол-во милисекунд для работы. Я подумал-подумал, хм… Потоки! Включу пару потоков(в каждом солянка из методов) и буду усыплять с какой-нибудь периодичностью, а слабую/сильную вибрацию получу от разного периода вкл/выкл.

Пошёл я через задний проход, написал кучу методов, запускаю через клик по кнопке — работает, но как-то херово. Переписал, перечитал что мог найти по потокам, прокинул логи и *бах*, логи работают, потоки бегут! Но интерфейс тормозит… Тема на самом деле открыта, хотя я уже залез в метод onCreate /*отрисовывает окно пользователя*/, открыл для себя сервисные потоки и буду переделывать в общем по уму, ну как мне кажется) Кстати, показал потоки своим разработчикам знакомым, сказали, молодец всё вроде нормально.

И так три дня, я туда сюда летаю по оф. докам и англоязычным статьям. А сейчас решаю перечитать ещё раз class Vibrator. Нахожу, а тут внимание: void vibrate (long[] pattern, int repeat); где long: an array of longs of times for which to turn the vibrator on or off. Другими словами, я мог в него сразу же в самом начале передать массив {100, 50, 100, 50 и т.п.} — в котором первое число: «время до включения», второе число: «время работы» и так до конца…

Вы понимаете?! Я просто не дочитал документацию и полез педалить, когда метод был под рукой с самого начала! Вот сижу и до сих пор смеюсь)
  • ,

Год спустя, Android

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

Итак, со времени написания первой статьи у меня сменился работодатель. Сейчас я работаю в Альфа-банке: не в лабе, а над внутренним проектом (для сотрудников банка). У нас своя продуктовая команда, всего 7 человек, детали могу рассказывать очень выборочно, так как NDA.

Я один Android-разработчик. Мы работаем двухнедельными спринтами, то есть ставим конкретные задачи на 2 недели вперед и следим за их выполнением. Наш продакт-менеджер решает, куда нам нужно развиваться и какой функционал реализовать. Мы, разработчики, берем день на оценку задачи (нужно понять, какие трудности на iOS, Android, в дизайне и на сервере) и даем свою оценку, мол, реально сделать за такое-то количество дней. Продакт оценивает, стоит ли игра свеч, и мы либо повторяем процедуру либо приступаем к реализации.

У меня нет макбука, но может появится в январе. В банке много бюрократии (на все нужны заявки, на интернет, на флешку, на youtube) и это тяжело. Но сильная корпоративная культура, много интересных и приятных людей в компании. Есть терки между отделами. Приятный ДМС, прикольный офис на м. Технопарк. Конечно, зарплата интересна, да?) Зарплата у меня обычная для мидла в Москве.

Что было позади? В мае я ушел из студии. Мне предложили расстаться полюбовно: у них было ко мне претензии, я уже вел переговоры с QIWI о работе, у меня были сложные отношения с тимлидом — в общем, правда стоило уйти. Еще мне платили мало, и, херовый я работник, сильно стараться меня это не мотивировало.
После маленькой студии, которая уже десяток лет бьется за небольшой кусок хлеба и не может наладить внутренние процессы, попасть в Альфу было раем.

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

В общем, проработав в студии 5 месяцев, я толком ничему не научился. У меня тогда шли переговоры с QIWI (длительное оформление, но они просто слились после прохождения мною всех этапов собеседования — четырех, карл!- будьте с ними аккуратнее), и я понимал, что нужно что-то делать. Я с помощью знакомых вышел на тимлида в одной крутой московской IT компании. Договорился о собеседовании, которое не прошел, но ему понравился и мы договорились, что я буду с ним заниматься английским, а он подтянет меня в андроиде.

Мы с ним занимались три месяца, два раза в неделю часа по 1-1,5 часа на предмет. Он обычно рассказывал мне какую-то тему, концептуальную, а на задание давал читать исходники, подробные статьи на тему и практические задания, например, освоить библиотеки типа Dagger, RxJava, переопределить работу нативных классов Android и т.п. И это дало реальный скачок моим знаниям. Особенно клево было то, что был человек, которому я мог задавать вопросы.

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

Итак, что в перспективах? Мне все еще нужно освоить стек модных технологий. Реактивное программирование и Kotlin самые большие вершины из ближайшего. Я стал немного ориентироваться в архитектуре приложений, но пока сижу на обычном MVP, силюсь понять Clean архитектуру, но одному тут тяжело. Поэтому хочу перейти в чисто IT-шную компанию и прокачиваться в команде. С другой стороны, у меня хорошие условия здесь и еще поле непаханое в плане саморазвития — есть тысяча вещей, которые я могу сам освоить и отработать в своем проекте. Посмотрим, как карта ляжет.

Вот, спустя год работы разработчиком, я уже с интересом читаю Философию JAVA. Как человеку, не имеющему профильного образования, но имеющего высшее, это помогает посмотреть на программирование академически. Я нашел несколько youtube-каналов об android, которые мне нравятся, и смотрю записи с англоязычных конференций. Надо бы ходить на наши, но я предпочитаю гонять в Зельду и Splatoon 2 по вечерам :D

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

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

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

Учеба на JavaRush. Поиск работы и прохождение собеседований. Часть 2.

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

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

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

На первой странице нужно указать всю самую важную информацию, что бы hr заинтересовался вами. Я там писал знание языков, прохождение курса JavaRush и кратко что изучал, прохождение стажировки и какие там были технологии. Далее, поскольку я шел на Android Developer, то писал все технологии и библиотеки какие знал по данной платформе. Далее можно написать про паттерны проектирования, системы контроля версий, системы сборки (maven, gradle), а так же в каких средах разработки вы работали.

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

Поиск работы. Начал я отправлять резюме где-то в средине весны 2017. На удивление вакансий на Android Developer даже в Киеве совсем немного, если посмотреть на самых популярных сайтах поиска работы, то их наберется до 30 штук, больше половины которых хотят уровень middle/senior. Но все же они постоянно обновляются и за весь период поиска думаю до сотни резюме я отправил.

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

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

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

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

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

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

На втором собеседовании было очень круто. Спрашивал меня их тим лидер целый час по теории и все, что я не знал он мне объяснял. Я остался очень доволен, хоть меня туда и не взяли.

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

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

Если говорить о том, что нужно железно знать на позицию Android Developer (думаю на позицию Java Developer так же), то это ОПП. Там сразу будет понятно или ты только заучил как называются основные принципы или же ты знаешь их саму суть и можешь нормально использовать на практике. Так же нужно знать жизненные циклы активити, фрагментов. Про паттерн Observable часто спрашивают, так как он довольно часто используется и даже лежит в основе библиотеки RxJava. А вообще о чем будут спрашивать не угадаешь – могут больше уклон делать на java, а могут на android. Я, например, очень старался сделать хорошим свое портфолио, а меня о моем одном проекте спросили только на последнем собеседовании.

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

В предыдущей статье я писал, что у меня друг работает android разработчиком. Вот недавно ему предложили работу в другой компании и так как он уходил, то на его место искали нового кандидата. Он порекомендовал провести со мной собеседование. Изначально мне прислали сделать тестовое задание и дали время 1 неделю с учетом того, что чем быстрее сделаешь, тем лучше. Сделал я задание за 4 дня (друг мне как честный человек в этом деле не помогал). После этого меня пригласили на собеседование.

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

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

Если вы изучаете андроид, все задания на startandroid и других ресурсах уже прошли, то что я могу вам посоветовать попрактиковать. Есть хороший сайт. Там генерируете список json обьектов. Создайте андроид приложение в котором вы будете загружать этот список (в отдельном потоке или в сервисе или с помощью сторонних либ) и отображать его потом пользователю. Базу данных используйте либо SqlLite либо сторонние либы Realm. В списке пусть будет краткая информация, а при нажатии на эл списка – открывается фрагмент с полной информацией. Еще для усложнения задания сделайте адаптацию на планшеты – разделение на два экрана в повороте в горизонтальное положение, в вертикальном же один экран (для этого используйте фрагменты). Так же можно добавить navigation drawer и там какие-то пункты настроек (смена языка приложения, фона, шрифта и т.д.). Что-то похожее было в моем тестовом задании.

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

Ссылка на все вопросы, что у меня были на собеседованиях (ответы ищете в гугле) – вопросы на собеседованиях
Всем спасибо за внимание и всем удачного трудоустройства!
  • ,

Учеба на JavaRush. Первые проекты, что Вас ждет и как лучше не делать. Часть 1.

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

Поговорим сразу об обучении. Начал я заниматься на JavaRush в начале 2016 года. Долго выбирал где изучать программирование и, конечно, как и все наши люди не хотел платить за обучение. Изучать хотел именно Java, так как моя мечта – программировать на Android. Курс JavaRush несколько раз попадался мне на глаза во время поиска, но я его отбрасывал, так как он условно-бесплатный. Начал заниматься по видео урокам на ютубе. Потом все же какая-то сила меня заставила попробовать порешать бесплатные задачки на JavaRush, и я настолько удивился, что после прохождения 50 видео уроков (я считал их довольно нормальными) и написанию кода за лектором, я с большим трудом и далеко не с первой попытки решал начальные задачи курса. Качество курса и то, что он мне даст, если я его пройду полностью я оценил почти сразу, потом посмотрел на форуме, что время от времени там бывают хорошие скидки на подписку решил, что буду брать полную версию.
Да, многие учащиеся злятся и негодуют насчет курса — задачи дают по материалу, который еще не рассматривали, валидатор их не понимает и много-много чего можно почитать на форуме и в комментариях. И знаете что? Я тоже таким был:) У меня до сих пор висит большая задача на 34 уровне и я перепробовал все решения, но ее не принимает валидатор. Хорошо, что в тех поддержке мне докинули черной материи и я смог до конца добить курс. В общем, как выпускник курса JavaRush скажу свое субъективное мнение, что мне понравилось и не понравилось в курсе (да простят меня админы).

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

Если это подытожить, то я доволен курсом и тем, что он мне дал. Вспоминаю себя год назад, как мне друг пытался объяснить что такое boolean, void, что такое методы и как они возвращают значения. Помню как долго не мог понять зачем нужно возвращать эти значения:)
Сейчас же мне часто вспоминается сцена из фильма Матрица:
Нео: Ты что научишь меня уворачиваться от пуль?
Морфиус: Когда придет время тебе это уже не понадобится.
И действительно, когда пришло время у него уже априори были эти навыки.

На 30 уровне курса я хотел попасть на стажировку, которую предлагает JavaRush. Посмотрел тестовое задание и немного ужаснулся. Очень надеялся, что поможет друг его сделать, но за неделю до дедлайна он сказал, что вот тебе Гугл, вот тут вбивай все технологии и там будет куча примеров. Я ему очень благодарен, что так получилось, так как тогда я впервые почувствовал, что значит быть программистом. За 4 полных дня я сделал задание и был невероятно рад, что попал на стажировку.

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

Первый проект. Как и упоминал выше, что где-то на 30х уровнях я попал на стажировку и начал делать свой проект. Это был и есть бот в телеграмме. Желание создать бота было у меня еще на 20-30 уровнях курса, но я никак не мог найти подходящей либы либо инструкции how to start. И все же случайным образом мне попалась такая статья и я сразу начал пробовать. Если кому интересно – вот ссылка на статью —
How to write bot in telegram Java
Откровенно говоря, автор этой статьи мне потом еще очень сильно помог, речь о чем пойдет чуть ниже. Идея для бота была такая – мне как программисту нужно изучать Английский язык. Грамматику я знал относительно хорошо, а вот словарный запас захотел подтянуть. Подумал, что неплохо бы было иметь бота для изучения слов. Подробную информацию о боте я уже писал в статье ранее, поэтому повторятся не буду – вот ссылка Телеграм бот Words

Расскажу, с какими трудностями мне пришлось столкнуться, при его создании. Во-первых это первая работа с telegram api. Хоть многие и говорят, что это одно из простейших и наиболее лучше документированных api, но мне тогда как новичку было очень сложно. Все делал путем подбора :) Иногда на то, что бы сделать какую-то фичу, например, убрать кнопку после ее нажатия мне приходилось потратить полный день. Где-то за пол месяца удалось написать самую первую бета версию, весь код которой был в одном java классе, и хотел попробовать залить ее на сервер. Проект у меня не коммерческий, поэтому платные сервера я сразу же отбрасывал. Вспомнил о сервере heroku, который кстати используют для размещения сайта на стажировке. Пробовал этот сервер два полных дня и уже был в полном отчаянии, так как не получалось вообще ничего – все инструкции которые были относились к сайтам, а у меня бот и там нужно действовать немного по-другому. В итоге я решил написать автору статьи о боте и спросить, какой он использует сервер для размещения бота. И тут удача мне улыбнулась – автор оказался очень крутым программистом (я с ним до сих пор поддерживаю связь), и он мне предложил разместить бота у себя на Linux сервере (и если я знаю линус, то выделит мне аккаунт). На начальное изучение линукса ушло один день и, конечно, не без ошибок и сложностей бот начал крутиться на сервере. Так же между всем этим делом я добил курс JavaRush и был очень доволен :)

Базу данных для бота я выбрал MySql, пересмотрел много уроков по оптимизации таблиц, выбору движка и всего прочего. Дам совет всем, кто будет делать свой первый проект – старайтесь сразу продумать всю его структуру и строить хотя бы относительно расширяемую архитектуру. Я же свой переписывал, наверное, раза 3 из-за таких ошибок. Да, это сложно, так как очень часто ты не знаешь что захочешь следующее добавить в свой проект, но все же на минимальном уровне сделать можно. Не пишите весь код в одном классе!!! Попробуйте использовать MVC, вспомните ООП и т.д. Самое смешное, что некоторые основные принципы ООП я начал использовать в проекте, когда он уже был почти готов. До этого я даже не задумывался о них. Конечно, пользователю вообще все равно на каком языке написан продукт, какие там используются паттерны и технологии использовались, но когда вы через пару месяцев его открываете и хотите что-то туда добавить, то очень много хороших слов о себе подумаете :) Так же не забывайте делать логирование – это позволяет как отслеживать ошибки, так и смотреть какими функциями пользователи больше пользуются и что нужно дальше развивать. В телеграмме это кстати можно очень круто сделать – отправлять все логи в режиме реального времени себе в приватный канал, так сказать можно сделать некую big data :)

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

Второй проект. Моя цель была стать Android программистом, поэтому когда более менее закончив с ботом я решил адаптировать его на Android платформу. Начал обучение с курса startandroid, так же мой лучший друг android разработчик давал мне много крутых заданий, проверял их и говорил что нужно переделать и доделать. Когда получил уже базовые навыки начал делать свое приложение. Как и с первым проектом было много разных трудностей, но если брать в целом, то немного меньше. Где-то за полтора месяца была готовая первая бета версия (пару раз пришлось переписывать весь дизайн приложения, так как я понятия не имел как он будет выглядеть). Потом я зарегистрировался как разработчик в гугл плей и залил его в маркет. Последнее время занимался оптимизацией и синхронизацией двух своих проектов. Для общей базы данных выбрал Firebase – очень хорошая документация, много уроков и для небольших проектов бесплатной версии в 1гб объема более чем достаточно.

Если кратко сказать о наибольших трудностях во втором проекте (я думаю некоторые из этих трудностей возникают и у опытных разработчиков), то это — создание многопоточности в android, много заморочек з размерами и расширениями экранов, для создания дизайна пришлось подружиться с photoshop, поддержка старых версий андроида, а так же никогда не используйте Recycler View, если у вас в списке будет анимация :) После блокировки в Украине Яндекса, а именно от туда я беру большую часть перевода и озвучки слов, пришлось добавлять дополнительные проверки в код, и просто сообщать пользвателям, что бы воспользовались vpn. Трудности даже возникли при регистрации в гугл плей – там что бы стать разработчиком нужно одноразово(в отличии от апл стора) заплатить взнос в размере 25$. У меня же при оплате стоял лимит на карточке и оплата моя зависла. Пришлось пообщаться с тех поддержкой гугла и в общем они меня посылали от одного оператора к другому, пока я не понял, что меня просто вежливо посылают :) Пришлось удалять все и заново регистрироваться (сразу бы до этого додумался).

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

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

Если кто дочитал до этого момента, то вот ссылка на приложение, если будет интересно — Android приложение Words.
Ссылка же на бота есть в статье о нем чуть выше по тексту.

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

Что изучать дальше?

Добрый вечер. Мне 15 лет. Прошёл первые 10 уровней Javarush, немного изучал Android разработку, делаю свои приложения. Разработка под Android очень нравится, но чувствую что надо ещё что-то по Javе подучить. Порекомендуйте, пожалуйста, какие интересные книги по Java для развития почитать или что-нибудь другое.
P.S Стоит ли покупать подписку на Javarush, и какую?
P.P.S Также, интересно было бы узнать, как делать программы на java под Windows и сделать самому такую.
P.P.P.S Ещё ищу хороший и объемный материал по Android разработке
  • ,

Курс "Android Basic" от Google на русском языке

Предлагаем вашему вниманию курс «Разработка под Android для начинающих», созданный специалистами Google. (создателями Android и всего хорошего в мире ИТ) для платформы Udacity. По многочисленным просьбам студентов JavaRush мы перевели его на русский язык и оформили в виде квеста. Теперь он доступен абсолютно всем желающим изучить основы программирования для мобильных систем — javarush.ru/quests/QUEST_GOOGLE_ANDROID

курс Google Android

Сомневаетесь, что Android — весьма перспективная ветка программирования? А вот мы в этом уверены. И вот почему:

  • Около 90% пользователей смартфонов обладают устройствами на ОС Android
  • Android создан на базе Linux и собственной реализации виртуальной машины Java — проверенных и постоянно развивающихся технологий;
  • Android — операционная система не только для смартфонов и планшетов, но также телевизоров, фотоаппаратов, плееров, игровых консолей и даже электрочайников (и не только)!
  • Любой желающий может создать и поместить своё приложение в Play Store — официальный магазин для Android-устройств, если оно соответствует своду несложных правил и стандартов;
  • Порог вхождения в программирование под Android невысок. Особенно для Java-программистов.

Присоединяйтесь к курсу «Разработка под Android для начинающих» на JavaRush: Вы изучите основы Android и программирования на Java, и в процессе изучения создадите два простых, но вполне мощных Android-приложения!

Господа! В полку прибыло.

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

Мой путь в программирование можно поделить на два “плана”, уровня: один — материальный, другой — идеальный. Начнем с первого — он забавный.

Когда-то давно, 29 лет назад, я родился в очень странной семье. Мои родители были выпускниками журфака, бабушка — пианистка, дедушка — физик. С детства я решительно ненавидел читать, но любил музыку и математику. Мама, будучи преподавателем английского, с 4 лет меня обучала языку, а бабушка с 5 лет — музыке. В школе я был сорванцом и затейником, по русскому и литературе — катастрофой, в геометрии и физике — любопытным пионером. Но в 13 лет случилось несчастье, я получил компресионный перелом позвоночника и, не имея возможности сидеть, стал много играть на кларнете. Так я оказался в музыкальном училище через три года.

Но которое не привело меня в Гнесинку, где преподает, кажется, и по сей день мой профессор, И.П. Мозговенко. На 4 курсе я надумал жениться, решил, что пора работать — и стал готовиться к этому.
А что умеет человек, который 7 лет профессионально играл на дудке? Решив, что мне не хватает “кругозора” и всего гуманитарного, что входило в круг обязательного лет 130 назад, я оказался на журфаке, в след моих родителей, сам, по собственной воле.

Забавно, но писать именно в журналистике мне так и не пришлось, за исключением пары месяцев работы в КП, в новостном отделе. Я стал преподавать язык (англ) сам, лет с 20, в 23 на год сгонял в Питер, открыл два Циферблата там (антикафе). Вернувшись, остановился на работе с языком: учил, переводил, работал редактором, написал кое-что в качестве лит.раба (часть книги).

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

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

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

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

Когда я говорил, что я работаю переводчиком или что пишу, я чувствовал взгляды людей, мол — не высоко, парень, не высоко. Что качественный перевод или качественный текст настолько нисшевый товар сейчас, что я не могу представить себе уважающего себя и нуждающегося в средствах человека, кто мог бы им заниматься. И если когда-то работа со словом была элитарной (XIX век), то сейчас я просто не в обоиме. Я в прошлом веке. Все мои знания литературы, истории, текстов, никому толком не нужны. Я могу развлекать этими знаниями собеседников, но продать это некому — с этим можно только корешиться с нужным людьми (что я вижу ниже своего достоинства) либо идти на ТВ и кромсать бюджет на свой лад (что я ненавижу).

И тут-то я стал закисать. Я стал погружаться вечерами в игры, проводя огромное количество времени на англоязычных форумах, изучая игровую журналистику и т.п. Я строил графики для игры типа Цивилизации, искал оригинальные способы перепройти Dark Souls и т.п. Жена, видя как занудно и упорот я играю в игры, как-то в шутку сказала, что с моим-то рвением в играх неплохо было бы попробовать заняться программированием.
И я подумал, а отчего бы и нет. Дальше — путь обычный. Гугл, JavaRush — меня затянуло; шло легко, быстро, я был на коне. Потом встретилась многопоточность — и я вообще засомневался, программирование — это для меня? Так или иначе, дойдя до 23 уровня, я стал задумываться, а что я, собственно, буду делать на работе. Распустил, скрепя сердце, моих учеников, оставил переводы — и стал присматриваться к вакансиям.

Выбор, по сути, был такой: или java jun или android jun. Я, решив, что android будет повеселее, стяпляпил одно приложение и стал ходить по собеседованиям, который получал с известного всем сайта по поиску работы (обойдемся без лишней рекламы).

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

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

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

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

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

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

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

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

Но в итоге, я прихожу к выводу, что это действительно успех — и что я принял правильное решение. Во-первых, я четко знаю, что то, чем я занимаюсь, это, в некотором роде, арьергард современной культуры. Надо мной уже не смеются, когда я говорю, что я разработчик. Мы делаем нужное всем, сейчас все пользуются результатами нашего труда, и без него свою жизнь большинство слабо представляет. Во-вторых, в перспективе меня ждут многие еще более интересные отрасли (например, андроид в интернет-вещах, в автомобилях), другие города (хочу вернуться в Питер), другие страны (почему бы не пожить в другом месте, если языкового барьера нет?). В-третьих (и это было одной из причин оставить работу со словом и педагогику) — в третьих, программирование — это поток нового на всю жизнь. Да, скажете вы, это стресс, но отсутствие нового — это смерть. Это тоска. Люди, которые погружаются в рабочую рутину, немножко умирают внутри. Ведь детство — это когда вокруг новое. Программисты в чем-то всегда дети, потому что мир для них — вернее, в мире для них всегда есть новое.
Наверное, другие выводы и другие мысли посетят меня спустя год, пять, десять на счет этой вехи в моей жизни. Возможно, я когда-нибудь оставлю и эту профессию и вернусь к письму — кто знает. Но пока мой опыт такой, им и хотел поделиться. Дерзайте те, кто в раздумье. Жизнь одна, зачем ее тратить в нерешительности?
Успехов!

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

Как я стал разработчиком за пол года?

Всем привет. Это очередная история трудоустроства на сайте javarush, где будут расхваливать джавараш.

Шучу, не будут. Или будут?

Конечно же будут, я ведь ждал момента написать эту статью ещё на 1х уровнях, когда читал чужие :)

Вообщем, начнём с самого начала.

В июне 2014 года я получил диплом бухгалтера. К 3му курсу университета я уже понял, что бухгалтером не буду, я зарабатывал в интернете — разные способы, арбитраж, подписки, дорвеи, сдл, гс и прочее, этого в интернете много, но и нюансов тоже очень много. Студенту хватало. После окончания универа я всё ещё продолжал «крутиться» в интернете, пока…

В январе 2015 года я подумал, что неплохо было бы стать программистом. Просто потому, что мне нравилась IT сфера, я сам давно был с ней связан и developer это логичный её исход (на тот момент это был исход, сейчас это лишь начало нового пути). Для реализации столь замечательной идеи я стал учить pyton 3. Я прошел базовый курс, задачки на логику и алгоритмы, это всё конечно да, но «где же эпичность, где же программы которые спасают мир?» — подумал я тогда. Через недельку я об этом забыл и забил — деньги были, жизнь шла… Но в феврале ко мне в гости приехала сестра с мужем, оба айтишники, и её муж рассказал о планирующихся курсах в их компании (не обучение, а просто курсы которые вводят в IT — ознакомительные, про разницу языков, про технологии, про проекты, цели IT и прочее) и посоветовал на них пойти. Я подписался на все обновления их фирмы и стал ждать…

В феврале 2015 года начался набор на эти курсы, желающих было много, всем бы места не хватило. Для прохождения был тест на знания английского языка и очень базовых понятий программирования. Т.к. я очень хорошо умею гуглить (кстати до сих пор считаю это САМЫМ важным скиллом программиста) и хорошо знаю английский — тест я прошел, отправил, через 2 недели получил весточку «Вы приняты, начало занятий...»

В марте 2015 года начались курсы. После первого занятия было объявлено о конкурсе, люди должны были самоорганизоваться в команды и выполнить командное задание. Само собой меня никто не взял, т.к. я ничего не умел. Зато сестра мне посоветовала начать учить java как распространённый и развивающийся язык. Благодаря своему умению гуглить я нашел сервис джавараш, нашел отзывы, почитал и таки что вы думаете — я купил подписку находясь на 2м уровне (не дожидаясь 10 бесплатных). Но тут подкрался ещё 1 момент…
В апреле 2015 года у меня была свадьба, соответственно кроме еженедельных курсов и заработков на хлеб времени осталось только на подготовку к свадьбе, и купленный джавараш стал ждать на 4м уровне. А после свадьбы…

В мае 2015 года я поехал в свадебное путешествие, после которого твёрдо решил начать учить джавараш, и таки что вы думаете? Вернувшись 6 мая домой, первым делом я сел учить java. Начал я это делать с 1 уровня javarush, и впринципе адекватно считаю, что мой путь в программисты стартанул именно 6 мая.
В июне 2015 года я был уже на 20 уровне джава раша. Собственно здесь основная часть отзыва о джава раш. Т.к. дальше 20 уровня я и не дошел. Что, как, я же трудоустроился! Ой можно устроится после 20 уровня? Нет. Нельзя. Так в чем секрет? Секрет в том, что до 20 уровня вы проходите основы джава, самую важную базу. И вы не просто проходите основу. Каждую из, мать её, основ вы повторяете десяток раз. Сраные роботы вам её разжевывают и заставляют вас искать кучу недоразжеванной информации, что качает скилл гуглинга (самого важного скилла любого программиста, помните об этом) и вот, ошибка за ошибкой, злость за злостью, неудача за неудачей вы проходите эти 20 уровней…

Здесь моя красивая разбивочка по месяцам теряется т.к. дальше её сложно произвести так разграниченно.
А дальше, после 20 уровня, я случайно попробовал андроид. И затянуло и понеслось. Я начал читать книги, смотреть видосы, онлайн уроки, текстовые уроки — куча всего (опять же, гуглинг!!), но везде я убеждался в 1м на 100%, именно благодаря джавараш я получил мощнейшие основы на которые сверху просто накатил андроид фреймворк, без основ я бы не смог понять андроид и писать для него приложения. Основоы — это ваш фундамент. Пропустив джавараш вы просто обосрётесь в реальном мире программирования, просто потому, что здесь огромная куча практики которая даже в самую медленно усваивающую голову вложит эту важную информацию! Нет, вы можете стать программистом и без джавараш, но это будет тяжелее и дольше *(я не рассматриваю вариант менторства и тяги за уши, это редкий случай и те кто имеют такого ментора здесь и не сидят).

С июня по сентябрь я был поглащён нюансами андроид которые я всё поглощал и поглощал (и все они всё ещё накатывались на базу джава, полученную здесь), а вот (тут мы вернёмся к месячной разбивке) к октябрю…
В сентябре 2015 года я понял, что я уже что-то знаю (шучу, в тот момент я себя считал уже почти мидлом, наверное) и решил, что мне нужна работа (семью то надо кормить), а именно работа андроид разработчика. Но как? Ведь толпы людей ищут эту работу, они как и я пишут одинаковые резюме, что же делать, подумал бы кто-то другой, я то парень хоть куда, я сразу решил, что искать работу буду когда напишу полноценное портфолио :) и начал его писать. Моей целью было 4 приложения: калькулятор с поточным вычислением (самый простой, считать на ходу), приложение клиент-серверное (сервер писал не я) которое адаптировало сайт онлайн энциклопедии в приложение, todo список с всеми фишками материального дизайна и ещё 1 адаптация онлайн энциклопедии, но уже с базой данных, материальным дизайном, сторонней библиотекой и ещё чем-то там. Вообщем план наметил и начал писать…

В ноябре 2015 года, а именно в 15 числах все мои приложения были готовы, код был на битбакет, приложения в плей маркете, я понял, что пора бы начать искать работу, я ведь парень хоть-куда :) Для того, чтобы искать работу, я решил собрать список команий моего города (Одесса), отсортировать их, оставив только те, которые занимаются андроид разработкой (ну или она хотя бы одно из их направлений). Для этого я написал минипрограмму которая спарсила данные с jobs.dou.ua/companies/ и выдала мне список 180 одесских IT компаний. К сожалению там были компании-однодневки, гавностудии, а так же отнесены всякие компании интернет провайдерво, я отсеивал их в ручную, и получил список из 63 компаний которые мне подходят. Я решил рассылать резюме в 3-5 компаний в день. Единственное что, я решил перед этим отдохнуть, сходить куда-то с женой(а то я учился по 8+ часов в день, + 2 часа работа. Работа кстати — где-то к июню я скопил сумму на год жизни вперёд и поэтому спокойно учился не тратя много времени на заработок) а рассылку начать с 20 числа. Единственное, что для успокоения совести я решил сделать (чтоб не казаться себе бездельником) это запостить своё резюме на work.ua. Спокойно запостив в среду объявление я пошел отдыхать.

20 ноября 2015 года, я получил на почту письмо, что одной компании понравилось моё резюме, а именно мои готовые проекты и они пригласили меня на собеседование. К моему удивлению, собеседование оказалось онлайн, а компания оказалась удалённой (к этому моменту я 4 года работал дома за компом, работа программистом на дому было моей мечтой). Я не подал виду, что я сижу с горящими глазами, а лишь спокойно ответил на все вопросы — технические и нет, и отправил свой код на код ревью своему будущему тим лиду. Через 3 часа волнений я получил ответ «мы бы хотели, чтобы вы у нас работали». Ну и я не стал особо спорить, хотите — как хотите :)))

24 ноября 2015 года был мой первый рабочий день в роли Android developer'a…

Рассказик то не маленький получился, его основная мораль, пожалуй, будет такова:
1) Учите основы. Для основ java нет ничего лучше javarush(поверьте, я умею гуглить :).
2) Учитесь гуглить. Это ещё важнее основ. Умея искать — вы сможете найти решение ЛЮБОЙ проблемы.
3) Учите английский. Я учил его час в день на протяжении обучения программирования, сейчас я ищу и читаю техническую информацию только в оригинале — её в разы больше, и она понятнее и свежее.
4) Пишите портфолио. Вы никому не нужны, но если вы что-то умеете и покажете это — то вы сразу выделитесь на фоне десятка таких же соискателей как вы, которые поленились написать портфолио.
5) Учитесь всегда. Каждый день вы должны узнавать что-то новое, хотя бы 1 мелочь.
6) Программируйте. Каждая строчка кода приближает вас на 1 шаг к вашей цели, всё приходит с опытом.
7) Не сдавайтесь. За время обучения минимум 5 раз на меня нападало уныние и тоска, неуверенность в собственных силах и слабость, но через не могу и не хочу я заставлял себя идти дальше и они сменялись вдохновением.
8)

Пожалуй это всё, что я хотел сказать. Стремитесь и всё получится, это я вам как Android developer с бухгалтерским дипломом говорю :)

P.S. не написал в основной часте статьи, но скажу тут. Помимо джавы\андроида\другого основного направления учитесь использовать прочие технологии нужные вашей профессии. Какие именно? Ну 100% Git, JIRA, Scrum, XML, JSON, REST api, HTTP и прочее. Конкретные примеры вы можете легко найти, посмотрев, что требуют работодатели у мидлов вашей специальности. Уж поверьте, эти «побочные» скилы учатся быстро и легко, т.к. они несложные, но ваш уровень и вашу цену поднимают, да и без них вы далеко не уедете :)

P.P.S. Ах да, на работе то я уже 2 месяца. Тим лид сказал, что я расту и всё ок, он же советует что почитать и как развиваться. После того как найдёте работу — именно ваш тим лид\ментор будут вашими богами — молитесь на них, цените и уважайте, благодаря ним вы будете расти дальше.

AIDE - среда разработки на Android устройствах

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

ИДЕ предлагает вам обучатся или сразу приступать к разработке.
По части нового проекта можно:
— как ни парадоксально создать;
— клонировать гит репозиторий;
— скачать с дропбокс.

Проекты можно создавать различные и веб, и С, конечно же Java, но более всего она заточена под ведро Android.

С Java проектом можно создавать лишь консольные утилиты, за исключением мобильных приложений на движке libGDX.
Как и можно догадаться подключать сторонний плагины вряд ли удастся, если он не написан разработчиками данной IDE. Так что на полном энтузиазме можно писать консольные утилиты в духе JavaRush до изучения swing.
Без автозаполнений тоже не обошлось, но не стоит забывать, что это вам не Intellij IDEA, тут многое пишется руками.

Android приложения
Радует возможность просмотреть что же выходит в main.xml
Как и в андроид студио реализована возможность перетаскивать различные элементы в активити, однако, это требует установки платного плагина.
Выбора активити и версии SDK попросту нет.
Пишут, что приложения строит Gradle, шустро…

Нужно дебажить — снова плати.

В общем, это вполне даже ничего, особенно для моментов недельных отпусков без ноута, на поиграться хватит)

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





  • ,

Выбор источника данных для RecyclerView

Добрый день, извините что вопрос не по задачам.
Не могу выбрать, где хранить данные для RecyclerView в андроид-приложении.
Исходные данные можно представить как генеалогическое дерево. Список (RecyclerView) отображает детей или родителей выбранного нода (свайп впаво — дети, свайп влево — родители).
Выбираю между базой данных (sqlite) и графом ListЧто же будет быстрее работать, постоянные запросы к базе, при свайпах или итератор в графе?
Граф похож на тот что был на курсе в задачах, помню долго с ним возился :)
Если у кого нибудь есть опыт в данном вопросе, подскажите ;)
  • ,

История трудоустройства. AndroidDevelopers++;

Помню на 10-20 уровне я представлял, как напишу свою историю трудоустройства. И вот это наконец произошло. Счастью моему нет предела))

Я думаю, у некоторых людей здесь была/есть такая же ситуация как у меня.
Сейчас мне 22 года, я родился и вырос в Питере. Программирование понравилось еще в школе, когда мы с отцом написали простенький калькулятор на плюсах. После школы успешно поступил в один из университетов на факультет Информационных систем и технологий и жил себе стандартной студенческой жизнью. Стараться и учиться пришлось только до 3 курса, потом зачётка с почти всеми «отлично» делала своё дело. В какой-то момент, я вообще перестал понимать учат нас чему-то или нет, но тем не менее спокойно себе жил дальше, сдавал свои лабы и курсовые в срок и в свободное время выпивал с друзьями и отдыхал). Какое-то время работал официантом.

Всё началось в конце 4 — начало 5 курса (да-да я из последних специалистов). Я внезапно понял, что ничего не знаю. Т.е. знаю, но всего понемногу, с такими знаниями шансов найти работу у меня нет. Я писал на С++, PHP, SQL (единственный крутой курс в универе. нормализация и всё такое)), JavaScript, HTML, CSS, даже на Prologe. Работал с Qt, Oracle DataBase, понимал базовые алгоритмы вроде быстрой сортировки или алгоритма Кнута-Морриса-Пратта. Понимал принципы работы сети и многое другое. Но все эти знания можно было приравнять к базовым и толку от них по большому счету не было. Нужно было понять, чем мне будет интересно заниматься в жизни и что вообще делать.

И в какой-то момент, моя девушка рассказала мне про JavaRush, откуда она узнала я без понятия. Мне сразу понравилось и понеслось). О Jave я тогда знал только то, что есть некая виртуалка и байт код. Каждый день я заходил на JavaRush и учил яву. Первые 10 уровней прошли очень быстро и легко, но уже тогда я решил для себя, что это не будет очередным моим базовым знанием. Очень удачно попал на скидку на подписку и не думая купил её на свою стипендию.

Далее после 2015 нового года пришлось остановиться с JavaRush и начать писать диплом. Тогда я был на 29 уровне и начинал потихоньку искать подходящую вакансию Juniora или стажировку, но в Питере вообще ничего подходящего не было. Тему диплома нам предложили выбрать самим и почему-то я не придумал ничего на Jave и решил написать приложеньку на Android. Тема называлась "… что-то там… информационная система с использованием рекомендательной системы под ОС Android" :). Если вкратце, то на девайсе пользователь мог ставить рейтинги различным местам Санкт-Петербурга, вся эта информация сохранялась, отправлялась на сервер, прогонялась через алгоритм коллаборативной фильтрации и формировался список рекомендаций для пользователя. Дескать куда ему сходить) Всё можно было отобразить на карте, проложить маршрут и тому подобное. Публиковать естественно не стал, кому такое Г нужно)) Но учить Android и разбираться с рекомендательными системами было очень интересно (особенно если сравнивать с дипломами моих друзей и одногруппников). Познакомился с SQLite, Google Play Services и другими андройдовскими фишками. И тут меня осенило, чем я хочу заниматься в жизни — разрабатывать мобильные приложения.

Параллельно, я нашёл первую подходящую стажировку. Одна немецкая компания в Питере набирала учеников в Java-школу. Тех, кто успешно её проходил брали на работу. Не смотря на то, что я хотел писать под Android, Java мне тоже нравилась и я понимал, что главное это получить опыт. Прислали тестовое задание с тремя задачками. Две решились моментально, ибо JavaRush все нужное мне дал: одна была на потоки, другая про последовательность элементов. Последняя задачка это консольный калькулятор, с ней пришлось немного подумать. Через пару дней пригласили на тестирование в компанию, после прохождения сразу было бы собеседование. Так сложилось, что ночью мне стало плохо и всю ночь я не спал. Шанс решил не упускать и всё равно пошел, хотя чувствовал себя невероятно фигово и в итоге завалил тестирование. Оно было не очень сложное, 80% вопросов с quizful Java Junior. В нормальном состоянии с таким проблем никогда не возникало. Было очень грустно и обидно. Кстати один из JavaRushевцев устроился именно в эту компанию). Привет тебе, если ты вдруг читаешь.

После получения бесполезного красного диплома, продолжал искать работу. И в конце июня наткнулся на набор в Android-школу в одну компанию. Отбор происходил в 3 этапа:
1) Заполнить анкету с вопросами в стиле «По протоколу UDP передаются пакеты A, B и С. В каком порядке они доставятся?».
2) Тестовые задачки. 3 штуки: одна про связанные списки и две на придумать какой-нибудь алгоритм. Могу сказать, что с такими тестовыми заданиями после JavaRush у вас никогда проблем не будет.
3) Моё первое собеседование:) На нём меня погоняли по коллекциям, показали запутанный код некой функции и попросили рассказать, что в нём на мой взгляд не так, поспрашивали, как бы я написал некую структуру, в которой данные становятся недоступными через какое-то время и многое другое. Вышел оттуда с отличным настроением. Интервьюер мне очень понравился + узнал немного нового и наконец-то получил опыт собеседования.

Через две недели, мне позвонили и сообщили, что я принят:) В итоге взяли пять человек из 100+ желающих. Двоих в IOS школу и трёх в Android. Следующие 2 с половиной месяца я ездил учиться в офис 3-4 раза в неделю и писал много приложений. Не смотря на то, что уже немного знал Android было очень классно и интересно, каждый день узнавал много нового. В конце школы мы вместе с другими ребятами, написали тестовый проект по результатам которого нас всех взяли к себе работать) И вот уже сейчас я работаю над своим первым настоящим проектом и я действительно в восторге от своей работы.

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

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

По Jave скидывать книжки не буду, это уже делали миллион раз. Советую посмотреть курсы Головача, если у вас есть много времени.
А вот по Android посоветую «Программирование под Android» Брайна Хардли, я прочёл её, когда писал диплом. Всё очень классно написано.

P.S. В офисе всегда есть печеньки, а по пятницам вечер пиццы :)
  • ,

"Исполни мечту" или история шестнадцатилетнего фрилансера...

Исполни мечту!


Хочу начать перефразировав знаменитые строки :

Послушайте!
Ведь, если можем мы мечтать —
значит — это кому-нибудь нужно?
Значит — кто-то хочет, чтобы так было?
Значит — кто-то называет наши затеи гениальными?


Свою осознанную жизнь я помню лет с пяти — почему осознанную? Потому что именно в этом возрасте у меня появилась цель всей моей жизни, моя мечта.
Тогда я искренне захотел стать компьютерщиком — в том возрасте я мало понимал в этой области, но называл свою будущую профессию так.
С тех пор шли года, менялись интересы, но я никогда не забывал о своей цели, пусть и был самым обыкновенным пацаном любящим поиграть в компьютерные игры.
Начиналось всё скажем так, забавно — в свои детские годы я лазил по «диску C» и искал там вирусы… Обычно после моих поисков к нам приходили настоящие компьютерщики, и это было счастьем наблюдать за процессом приведения компьютера в рабочее состояние.
Со временем я стал разбираться и в железе — мне нравилось ковыряться в ПК, собирать и разбирать его. В годы юности я захотел узнать что будет если переключить режим работы БП и «убил» свой первый компьютер(а это был первый Athlon, черт подери)…
Но вы знаете, оно того явно стоило. Я не боялся рисковать и это приближало меня к моей цели все быстрее и быстрее. Классе в пятом я стал внутриклассным компьютерщиком и помогал нашим ребятам с компами, а позже ремонтировал даже учительские ПК…
Пусть это всё и баловство, но я сурово шел своей дорогой, шел не смотря на все преграды и неудачи, которых было вполне достаточно. Сейчас мне уже 17-ть, неделю назад я получил не только подарки на день рождения, но бесценный опыт — мой первый заказ на фрилансе, первый заработок в роли программиста.
Но вернемся в прошлое — я пытался изучать Delphi, но предпочитая реальный опыт занудным книжкам сидел и играл с друзьями в Heroes of Might and Magic V, мне не очень нравились бесполезные уроки информатики не связанные ни с чем в нашей жизни, однако я очень любил что то делать сам…

Детство

Итак однажды я наткнулся на программу GameMaker с её «языком программирования» GML — это было действительно здорово! Что может быть лучше чем в юном возрасте уметь разрабатывать игры «с нуля» за короткий срок — да ничего! Мне очень нравилось это занятие и не забыв о своей мечте я решил начать изучать разные языки программирования.
Я думал что буду очень крутым программистом если изучу за сотню разных языков, на деле всё оказалось не совсем так, однако когда я пробовал писать программы вроде «Hello World» на многих ЯП это несомненно сформировало меня и помогло мне с выбором.
Мне становилось всё интересней — вернувшись в Game Dev благодаря Unity3D и множеству уроков я стал примерно представлять как строятся крупные проекты, хотя по сути просто повторял действия на экране… Мне действительно это нравилось, невероятный жизненный актив — возможность чувствовать себя творцом.

Юность

С 9-го класса я стал потихоньку углубляться в спортивное программирование, это давало мне возможность изливать свои математические способности в виде любимого дела, я пытался участвовать в олимпиадах и много где меня ждали поражения, порой кажущиеся фатальными…
Но я не терял надежды и одним летом нашел интересный сайт с незамысловатым названием JavaRush, изучив за первую неделю 10 бесплатных уровней я понял, да — мне стоит купить подписку(как раз на днях заработал денег да и скидка была).
Откровенно говоря ушел я не слишком далеко, дальше 26 уровня подняться у меня пока не получилось — времени было не так много, ЕГЭ, олимпиады, увлечения, друзья… Тогда я интересовался разработкой под OS Android и нашел прекрасный учебник для русскоязычного школьника — сайт StartAndroid, именно так началось моё знакомство с Android App Dev'ом продолжающееся и по сей день…
Прошло не так много времени и вот он я… Уже так далеко от прошлого… Зарабатываю freelanc'ом, получаю огромный опыт, деньги, при этом сижу дома, отдыхаю когда хочу и периодически радую себя и родных подарками ;)
Моя история пожалуй подходит к логическому завершению и я хочу пожелать всем больших успехов, глубокой веры в себя и в своё дело. Делайте, исполняйте, не сдавайтесь, живите.

Олимпиады

Хочу передать благодарность всем людям повлиявшим на мой путь.
Вот небольшой список: благодарю свою маму, наставника, всех моих преподавателей, сестру, товарищей, друзей, родственников, команду JR, людей из SA, близких, родных и верных.
Список имен: Юлия, Вера, Андрей, Олег, Владимир, Арина, Мария, Наталия, Ольга, Евгения, Оксана, Анна, Матвей, Валерия, Екатерина, Ринат, Радик, Дмитрий, Даниил, Владислав, Алексей, Александр, Константин и многие, многие другие…
Отдельно хочу выразить своё уважение Дмитрию Бачило — спасибо за 16 бит.

Now

Я исполнил мечту своей жизни, а ты сможешь? С лучшими пожеланиями, Тим.

За более подробной информацией: vk.com/t_i_m_777