Русский
Русский
English
Статистика
Реклама

Блог компании цифровые экосистемы

Перевод Hacktoberfest2020 сошёл с рельсов из-за одного-единственного человека

07.10.2020 10:05:19 | Автор: admin


Для тех, кто не в курсе: Hacktoberfest это ежегодное мероприятие, которое проходит каждый октябрь. Его проводит компания Digital Ocean с целью мотивировать разработчиков отправлять pull request-ы в репозитории с открытым кодом. Все участники получают за свой вклад футболку в подарок. Ограничений практически никаких: если pull request прошёл в любой репозиторий вы получаете футболку. Супер.

Катастрофа


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




Пожалуйста, прекратите спамить #hacktoberfest ради бесплатной футболки

Да! У меня входящие забиты идиотскими PR с #hacktoberfest. Некоторые просто добавляют слэш в readme и всё в таком духе




Привет, я @shitoberfest. Вы ведёте проект с открытым кодом? Тогда делайте скриншоты всего мусора, который вам накидали на #hacktoberfest, и отправляйте их с тэгом @shitoberfest, чтобы нам было проще собирать и распространять информацию.

Есть и такие, кто говорит о своих мотивах открытым текстом:



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




Тьфу ты, это уже как-то на нервы действует. Похоже, и я стал жертвой спама на Hacktoberfest от @digitalocean

Даже репозиторию Covid19Tracking досталось.



Мы занимаемся трэкингом распространения ковида в США а теперь, похоже, еще и отклонением PR со спамом.

Чтобы отслеживать масштабы проблемы, кто-то даже создал особый аккаунт @shitoberfest.

Причины


Источником этого наплыва PR-пустышек со спамом, похоже, является владелец канала на Youtube с 672 тысячами подписчиков, который опубликовал видео, где демонстрирует, как просто отправить pull request в репозиторий. Он допустил большую ошибку, показав процесс на примере pull request-а с нулевой ценностью. Тем самым он дал своим подписчикам понять, что планка поставлена очень низко, а они стали повторять его действия точь-в-точь.

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



Этот ютубер с 672 тысячами подписчиков призывает людей отправлять PR НИЗКОГО КАЧЕСТВА на #hacktoberfest. Не одобряю.

Реакция


Реакция владельца аккаунта CodeWithHarry на произошедшее была, мягко говоря, слабой. Никаких извинений не прозвучало, вместо этого блогер указывает на неоднократные упоминания в ролике того факта, что pull request-ы должны быть полезными. Это, по его мнению, снимает с него ответственность.

Очень всех прошу не отправлять спам в качестве pull request-ов в репозитории на GitHub! Некоторые люди считают, что я поставил под удар сообщество разработчиков, работающих с открытым кодом. В своём видео я хотел просто воодушевить людей на участие в мероприятиях, которые привлекают к работе над проектами с открытым кодом, объяснить им, что такое pull request и как это вообще делается!

Те, кто говорит на хинди, могут сами посмотреть видео и убедиться. Для тех, кто не знает хинди и с чего-то решил, что я призываю людей отправлять спам в pull request-ах, объясняю: в ролике я говорю только о том, чтобы предлагать нормальные изменения в проекты с открытым кодом, ничего больше. Нигде не звучало, что нужно отправлять бесполезные pull request-ы. Я совершенно ясно высказывался на этот счёт несколько раз (0:55 ваш вклад должен быть полезным, чтобы заслужить одобрение, 07:51 предлагайте стоящие изменения, то же на 10:58, 11:10). И что касается момента на 05:33 я специально не стал выбирать проект, который активно ведётся, и вместо этого взял заброшенный проект, просто чтобы показать как в принципе выстраивается процесс подачи вклада в репозиторий. Я не поддерживал массовую рассылку спама!

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

Спасибо. Гарри.

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

А откуда вы знаете, что это дело рук CodeWithHarry?


Вот скриншот списка pull request-ов, который поступили в репозиторий micromtn. Каждый из них выглядит как-то так:



Это очень напоминает тот pull request, который был показан в качестве примера на видео.



Если запустить поиск по фразе improve docs, выдаётся 319 251 результатов. Поиск по фразе Amazing Project на данный момент даёт 21 177 совпадений.





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

На данный момент его профиль на GitHub перенаправляет на страницу 404. Непонятно, удалён он, переведён в приватный режим или переименован. А ведь ещё только один день прошёл.

Даже сама компания Digital Ocean высказалась по поводу этого провала.

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

В общем, дым коромыслом. Нам остаётся только ждать, чтобы узнать, чем всё это закончится.

UPD


Статья вышла в топ на Hacker News, в комментариях можно найти дополнительную информацию.

GitHub принял меры:



Хотите сделать передышку или ограничить круг людей, которые могут отправлять pull request в ваш репозиторий? Теперь вы можете поставить ограничения по взаимодействию на нужный период. Эту возможность вы найдёте по пути project settings moderation settings interaction limits.

Digital Ocean тоже приняла меры:



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

UPDATE: Теперь в Hacktoberfest участвуют только проекты, владельцы которых дали на это согласие изъявить желание присоединиться очень просто: добавьте hacktoberfest в список тем репозитория. Спасибо, что проявляете терпение в нашем процессе непрерывного совершенствования Hacktoberfest!
Подробнее..

Дайджест интересных материалов для мобильного разработчика 364 (27 сентября 4 октября)

04.10.2020 14:17:49 | Автор: admin
В этом дайджесте обновления Android, собственный движок для игр, симуляция волос и создание VHS-эффектов, No-Code платформы машинного обучения и доходы приложений. Приятного чтения!


У меня был простой рендер спрайтов и текста, простая система обработки ввода, из которой можно было получать информацию о мышке и нажатых клавишах, и всякие утилиты-обвязки вспомогательных систем движка. В общем какую-то простую картинку вывести я мог. В последствии это все очень сильно изменилось и поросло архитектурными хитростями. Начиная с Android 8 (у некоторых вендоров с 7.1) в системе появился новый механизм накатки OTA-обновлений, т. н. Seamless A/B OTA Updates бесшовные обновления. В этом посте я опишу общие принципы его работы, рассмотрю механизм с точки зрения разработчика, а также проведу сравнение со старым (будем его называть recovery-based) подходом применения обновлений.

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+22) Navigation bar и анимация перехода
Apple запустила генератор коротких ссылок и QR-кодов для App Store
Apple отказалась от 30% налога ради малого бизнеса
Использование AVAudioEngine для записи, сжатия и потоковой передачи звука на iOS
SKOverlay в SwiftUI
Core Data и SwiftUI 2.0
Используем кастомные Debug Descriptions, чтобы упростить отладку Swift
10 запутанных, но важных функций Swift
2 способа исполнения MVVM iOS
SwiftUI и Firestore: обновление данных
Как сделать раздвигающийся TableView с помощью Swift
Instructions: пояснения и обучение работе с продуктом
Tiktok Clone: короткие видео на Swift и Firebase
Twitter Text: парсинг текста

Android

(+8) Как разработать аналог Zoom для ТВ-приставок на RDK и Linux. Разбираемся с фреймворком GStreamer
(+7) Холодный запуск Android-приложения
(+6) Еще раз про многомодульность Android-приложений
(+6) Как устроен Push Kit от Huawei
(+4) Как спроектировать пошаговое заполнение данных в мобильном приложении
(+4) Google Play In-App Review API: пошаговое руководство по внедрению
(+1) Голос в мобильном приложении: учимся вызывать экраны и заполнять формы без рук
Google упростит работу со сторонними магазинами в Android 12
Google Play будет тщательнее следить за оплатой покупок в приложениях
Беспроводная Android-разработка с локальным устройством
Асинхронные сообщения с Kotlin и RabbitMQ
Первые мысли о Jetpack Compose
Изменение стартовых шаблонов Android
Splash Screen в Android
Время плыть: переход с Kotlin на Flutter
Исследуем Kotlin DSL
Развенчиваем мифы о производительности Android
Создание тепловых карт с помощью Google Maps для Android
Все, что вам нужно знать о биометрической библиотеке Android
JetMessenger: клон Facebook Messenger на Jetpack Compose
CircleMenu: круговое меню для Android

Разработка

(+22) Plague M.D. Я остался в России и меня поглотила Чума. Сопли и нытье прогера
(+16) Выводы, которые я сделал, помогая стартапу для секс-чатов повысить конверсию
(+8) InheritedWidget во Flutter
(+8) Симуляция волос и тканей с Unity Cloth на мобильных устройствах
(+6) Создание эффекта VHS-видео в Unreal Engine
(+6) Flutter клёвенький у меня только такое объяснение. Обзор лучших выпусков Flutter Dev Podcast
(+6) Как создать мини-приложение: база знаний VK Mini Apps
Podlodka #183: обратная связь
Финал фестиваля программирования RuCode
GitHub запускает сканирование кода на уязвимости
Как изменить жизнь программиста с правилом 80/20
Курсы Как создавать мобильные приложения и игры в Humble Bundle
4 расширения VS Code для того, чтобы расслабиться на работе
Интервью с product-менеджером Flutter и Dart (Google)
Facebook против Google: битва межплатформенных фреймворков
Лучшие практики CI/CD
GitHub Codespaces: работа с Flutter
Лучший совет по созданию программного обеспечения от моего ментора
Четыре вещи, которые нужно забыть, чтобы стать лучшим программистом
Мои первые 24 часа с Flutter
7 способов действительно чему-то научиться из туториалов

Аналитика, маркетинг и монетизация

(+25) Как приложения без возможности выигрыша вытягивают у пользователей миллионы долларов
(+3) История Waze: от бессмыслицы до миллиардной компании
(+1) Разбор игры RAID: Shadow Legends (монетизация через поведенческую психологию)
(0) Локализационное тестирование: зачем оно нужно приложению или сайту?
Сингл группы BLACKPINK Lovesick girls выходит в PUBG MOBILE
IronSource открывает доступ к in-app bidding платформе для всех
make sense: О выходе на зарубежный рынок
Доходы приложений в 3 квартале выросли на 32% до $29 млрд.
Epic и Apple отказались от суда присяжных
В России вступил в силу Закон о блокировке пиратских приложений
Почему инфлюэнсеры-звезды, такие как Ли Цзяци, так важны для бизнеса, нацеливающегося на Китай
Rephrase.ai: генерация людей для рекламы
Как мы запустили приложение для анимации фото на Product Hunt
Запуск инди-приложения

AI, Устройства, IoT

(+27) Лучшие IDE для Raspberry Pi
(+17) Знакомство с Node-RED и потоковое программирование в Yandex IoT Core
(+12) Добавляем в плеер функцию Ambilight при помощи умных ламп Xiaomi
(+1) NB-IoT. Non-IP Data Delivery или просто NIDD. Тестирование с коммерческим сервисом МТС
(0) Умный дом в каждую квартиру многоквартирного дома. Детально о контроллере и шлюзах
8 No-Code платформ машинного обучения для мобильных разработчиков
Продажи Apple Watch 6 вдвое опережают продажи предыдущей версии

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

Дайджест IT-событий первой половины сентября

12.08.2020 14:11:32 | Автор: admin


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

Интенсив по Android-разработке на Kotlin

Когда: 1 сентября 31 октября
Где: онлайн
Условия участия: бесплатно, требуется регистрация

Хорошая (и бесплатная) возможность разом освоить всё, что касается основ разработки на Kotlin под Android за осень. Курс рассчитан на начинающих, но базовое знакомство с Java-синтаксисом упростит слушателям жизнь. Организаторы нацелены в первую очередь на то, чтобы дать знания, которые точно понадобятся на практике: обзор современных инструментов, популярные паттерны, архитектурные решения. Программа включает в себя девять модулей (вводное занятие, компоненты платформы, архитектура, Material Design, работа с сетью, ORM Room, Socket.io и другие темы); соотношение теории и практики примерно один к трём.

Kaspersky Industrial Cybersecurity Conference 2020

Когда: 2-4 сентября
Где: онлайн
Условия участия: бесплатно, требуется регистрация

Крупный международный форум по промышленной кибербезопаности и защите критических инфраструктур пройдет в этом году за закрытыми дверями, в узком кругу участников но с возможностью следить за дискуссиями онлайн для всех желающих. На площадке соберется более сорока экспертов по киберугрозам, включая Дейла Питерсона (основатель Digital Bond и S4 Events), Патрика Миллера (Archer International), исследовательницу Марину Кротофил. Основные темы конференции: новые тенденции, текущий ландшафт угроз, регулирование и лучшие практики киберзащиты. Свежие решения по ИБ представят Лаборатории Касперского, Arinteg, ICL System Technologies, MOXA, Jet и PcVue. Регистрация для удаленного участия откроется 17 августа.

Академия Playnesis

Когда: 7 сентября 12 октября
Где: Новосибирск, ул. Инженерная, 4А
Условия участия: бесплатно, требуется регистрация

Глубокое, полуторамесячное погружение в мир мобильных приложений для всех, кто хочет с ними работать. Выпускникам и студентам вузов предлагается пройти полный курс по одному из четырёх направлений и, если сойдутся звёзды, сразу устроиться на работу. В академии приставлены курсы для iOS-разработчиков (Swift, вёрстка, анимация, многопоточность, управление памятью), программистов на Unity (работа с кодом и движками, библиотеки, использование физики, создание интерфейсов), маркетологов (монетизация, ASO, коммуникации, исследования и аналитика) и продакт-менеджеров (Agile, SCRUM, целеполагание, мотивация, командная работа). Занятия будут проходить дважды в неделю в офисе организатора. По итогам сертификаты для всех и трудоустройство для лучших.

MOBILE Z-DAYS

Когда: 8-10 сентября
Где: онлайн
Условия участия: бесплатно, требуется регистрация

Трёхдневное мероприятие для мобильных разработчиков всех мастей. Области интересов аккуратно разделены по дням: сначала iOS, затем Android и, наконец, Flutter. Благодаря онлайн-формату, состав участников смешанный выступать будут практикующие специалисты из России и Европы. Программа находится на стадии формирования, ознакомиться с уже поданными докладами можно на сайте.

Администрирование кластера Kafka

Когда: 9-11 сентября
Где: Москва, ул. Илимская, 5/2
Условия участия: 54 000 руб.

Лаконичный курс для системных администраторов, разработчиков bigdata-систем и DevOps-инженеров, которые хотят быть на ты с Apache Kafka. Участники освоят установку, настройку и поддержку кластера, изучат настройки безопасности, отработают методы администрирования, научатся интегрировать Kafka с другими фреймворками и внешними системами. Практические занятия, которые занимают больше половины аудиторного времени, предполагают развёртывание собственного кластера с настройкой конфигурации, системы безопасности и мониторинга. Для участия необходим минимальный опыт работы в Unix.

XIII Межотраслевой Форум CISO FORUM: музыка кибербезопасности

Когда: 10-11 сентября
Где: Москва, ул. Лесная, 15.
Условия участия: по запросу

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

Город IT

Когда: 11-12 сентября
Где: информация уточняется
Условия участия: информация уточняется

Многоаспектная конференция для всех, кто задействован в IT-бизнесе от руководителей до аналитиков, от программистов до маркетологов. Для технических наибольший интерес представляет второй день именно на него запланированы соответствующие трэки: мобильная и веб-разработка, машинное обучение, VR&AR, big data, геймдев. Отдельные секции выделены для разработчиков на Python и C++. В оставшееся же время можно принять участие в многочисленных активностях: послушать откровения спикеров на darkside, внести вклад в облагораживание города на placemaking, поговорить о житье-бытье IT-компаний на ток-шоу или насладиться живой музыкой.

Russian Python Week

Когда: 14-18 сентября
Где: онлайн
Условия участия: от 4 900 руб.

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

TestCon Moscow 2020

Когда: 15-17 сентября
Где: онлайн / Москва, Измайловское шоссе 71, 3В
Условия участия: 47 000 руб.

Космополитическое собрание тестировщиков в этом году также вирутализируется, но не отменяется. В конференции примут участие эксперты из целой дюжины стран; ключевые спикеры Нил Малотоу (N R Malotaux Consultancy), Егор Бугаенко (Zerocracy), Бйорн Бойсщот (CTG), Рон Вернер (Joyn). Первый день будет занят мастер-классами, доклады пройдут во второй и третий по трём потокам. Те, кто настроен извлечь из TestCon максимум пользы и удовольствия, могут принять участие в викторине и пообщаться с докладчиками в специально отведённых зонах.
Подробнее..

Дайджест интересных материалов для мобильного разработчика 365 (5 11 октября)

11.10.2020 14:08:18 | Автор: admin
В нашей новой подборке ловим баги на клиентах, пишем автотесты и встраиваем аналитику, изучаем KMM и новинки Flutter, дизайн системы и работу CTO, игровую логику и траты россиян на приложения. Подключайтесь!


Для сбора клиентских ошибок мы используем собственную разработку под кодовым названием Gelatо. Последние два года я работал над её серверной частью и за это время открыл для себя много нового из мира разработки Error Tracking систем.

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+6) Cucumber и BDD. Пишем UI-автотесты на iOS
(+2) Интеграция библиотеки на Swift в UE4
iOS Rich пуш-уведомления
Контрольный список iOS 14 для разработчиков
SwiftUI 2.0 CardView с анимацией Lottie
SwiftUI это Flutter от Apple
UI тестирование глубоких и универсальных ссылок в iOS
Создаем свой первый виджет для iOS
Приложение с Swift Composable Architecture: SwiftUI
Центрирование изображения на лице с помощью Apple Vision Framework
Основы iOS в Revolut
Как работать с векторными ассетами
Xcode и возможности LLDB: управление приложениями в реальном времени
Распространение приложений: Firebase против Testflight
Императивное и декларативное программирование на Swift
Создаем круглый индикатор загрузки на Swift 5
MVVM: реализация Model-View-ViewModel на Swift
LFColoringBook: раскраска для iOS

Android

(+14) Отрисовка первого кадра Android-приложения
(+13) За двумя мобильными сервисами: HMS и GMS в одном приложении
(+12) Встраиваем аналитику от Huawei в Android приложение
(+11) Таргетирование уведомлений, управление ценами в разных регионах и другие возможности HMS для интернет-платежей
(+3) Compose. Jetpack Compose
(0) Автоматический Code Improvement при коммите в Android Studio
Google Assistant получил углубленную интеграцию с Android-приложениями
Android Broadcast: Kotlin Multiplatform Mobile
Android Broadcast: как сделать жизнь разработчика лучше
Google откладывает ужесточение политик в Индии до 2022 года
Andriod NDK: Как использовать CMake и ndk-build в одном проекте
Тестирование скриншотов Jetpack Compose с помощью Shot
Биндеры в Android
Готовим приложения к новейших функциям биллинга Google Play
Как реализовать встроенные покупки в вашем приложении для Android
Запуск Java-программ непосредственно на Android (без создания приложения)
Реализации дизайн-системы с помощью Jetpack Compose
Понимаем RxJava по-новому
Изменение Android-разработки с Jetpack Compose и Coroutines
Использование Github Actions для автоматизации процесса релизов
Notally: блокнот для Android
PropertyFindAR: недвижимость в AR
Konfetti: конфетти для Android

Разработка

(+22) Завтрак с легендарным геймдизайнером Американом МакГи: о новой Алисе, России и депрессии
(+20) Анонс Flutter 1.22 +Релиз Dart 2.10: на шаг ближе к null-safety
(+16) Как UI победил UX в Things 3 (iOS)
(+14) Свободы и ограничения дизайн-систем
(+11) Flutter + чистая архитектура: разбираем на примере
(+10) CucumberTalks: избегаем антипаттернов и пишем выразительные сценарии
(+9) Как сэкономить на разработке мобильного приложения
(+8) Великолепный Марио: рождение легенды
(+4) История разработки мобильной игры Полет на Буране
(+4) Улучшение UX мобильного приложения на реальном примере
(+3) Топ-11 лучших систем управления тестированием 2020
Podlodka #184: профессия: CTO
Amazon Timestream упрощает работу с большими базами данных
Что такое игровая логика и с чем ее едят
Книги по iOS и Android разработке в Humble Book Bundle
Дизайн приложений: примеры для вдохновения #18
Мы отошли от плоского дизайна. В каком направлении мы двигаемся дальше?
5 основных анти-трендов современного дизайна
Мотивация или почему так сложно завершить личный проект
К 2030 году разработчики программного обеспечения могут устареть
Как повысить производительность мобильного приложения
Старым разработчикам тут не место
Как моя IDE влияет на мое программирование
19 вещей, которые я позаимствовал у великих разработчиков
Почему Kotlin и Swift братья?
Что каждый продакт-менеджер должен знать об A/B-тестировании
Ответ на 40 самых популярных вопросов из собеседовании программиста в Facebook
Показатели производительности мобильных приложений и их KPI

Аналитика, маркетинг и монетизация

(+5) Локализация видеоигр для японского рынка: что нужно и что не нужно делать
make sense: О запуске продукта без команды разработки, маркетинге и монетизации сервиса для ментального здоровья
Microsoft создала 10 правил для магазина приложений
App Annie: россияне в 3 квартале 2020 потратили в приложениях $348 млн.
Бывший инженер Apple создал игру в слова
Paired: мобильный сервис укрепления отношений
Самые скачиваемые приложения в сентябре 2020
Самые зарабатывающие приложения в сентябре 2020
Исследование myTracker: как различаются платежи пользователей в разных категориях приложений
Какая мотивация у разных типов игроков?
Стриминг ретро-игр от Antstream
НаПоправку.ру Как мы за 5 месяцев сделали приложение с функционалом сайта, который создавали 5 лет
Как анализ конкурентов помогает в поисковой оптимизации приложения
Look-alike по событиям в мобильных трекерах: зачем нужен инструмент и как с ним работать
Фрод в мобильной индустрии какие механизмы помогают с ним бороться?

AI, Устройства, IoT

(+25) Низкоуровневое программирование микроконтроллеров tinyAVR 0-series
(+22) Как роботизировать техподдержку с помощью машинного обучения
(+21) Программирование устройств на основе модуля ESP32
(+18) Куда катится мир нейросетей: интервью с создателем iPavlov
(+8) Living on the Edge: Intel Atom, Celeron, Pentium для интернета вещей
(+5) Нейросети: где взять данные для тонкого обучения алгоритмов?
Приложение koda определяет неисправности по звуку
NVIDIA представила новый Jetson Nano
Крошечное машинное обучение: следующая революция в области искусственного интеллекта

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

Дайджест интересных материалов для мобильного разработчика 356 (3 9 августа)

09.08.2020 14:18:19 | Автор: admin
В этом выпуске разбираемся с оперативной памятью и подписками, с безопасностью и амбициозными проектами, с полезными привычками и самыми-самыми приложениями, с тем как дизайн может убить ваш продукт и многим другим!


Из года в год Android-производители форсируют железную часть смартфонов: 108 МП, 8к-видеосъемка 12гб оперативной памяти Но подождите, у iPhone всего 4 ГБ ОЗУ. И это не мешает ему работать на уровне или даже быстрее своих конкурентов! И как же удалось компании Apple добиться такого результата? С каждым годом требования к in-app подпискам в мобильных приложениях в App Store и Google Play меняются, становится все сложнее учесть их с первого раза и не получить серию реджектов, тем самым откладывая релиз порой на несколько месяцев. Если про требования для App Store уже достаточно много публикаций, то с правилами in-app подписок для Google Play все еще иногда возникают вопросы.

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+48)Так ли безопасен ваш iPhone? Обзор уязвимостей и тайных ходов в iOS
(+26)Как Apple при помощи нерыночных методов занимается вымогательством у разработчиков
(+8)Материалы Avito iOS meetup #8: видео и презентации
(+7)Создаем калькулятор на Swift 5
(+6)AppCode 2020.2: поддержка Swift Package Manager, улучшенное быстродействие, Change Signature для Swift и многое другое
(+4)Реализация Grid раскладки на SwiftUI
Apple фактически запретила стриминговые игры Stadia и xCloud
Apple опубликовала требования к браузерами и почтовым клиентам по умолчанию
Фил Шиллер перестанет заниматься маркетингом Apple
Apple купила канадский финтех Mobeewave
Тысячи приложений удалены из китайского App Store
Делаем прилипчивый заголовок в ScrollView на SwiftUI
Делаем перетаскиваемую карточку на SwiftUI
Apple может потерять толпу разработчиков
matchGeometryEffect от SwiftUI в iOS 14
Современные модульные приложения с Xcode 12 и Swift Package Manager
Почему SwiftUI делает вас лучшим программистом
Распознавание текста на iOS-устройстве с помощью SwiftUI
Чистый AppDelegate
Сделайте ваше приложение на SwiftUI масштабируемым и готовым к разным размерам экрана
iOS-разработка в VSCode
SwiftFortuneWheel: Колесо фортуны на Swift
YouTag: музыкальный плеер для iOS

Android

(+17)Композитная сборка как альтернатива buildSrc в Gradle
(+11)Android изнутри: сравнение Dalvik и ART
(+7)Трансформация Android-разработки с Jetpack Compose и Корутинами
(+7)RecyclerView.ItemDecoration: используем по максимуму
(+7)RxRelay это магия? Subject vs RxRelay
(+6)Реализация функции сканирования штрихкодов с помощью HMS Core Scan SDK
(+5)Топ самых важных функций Android для слепых мнение незрячих экспертов
Xiaomi отказалась от программы Android One
Google стал продавцом ВСЕХ приложений в Европе
Android Broadcast: ламповые посиделки. Артем Зиннатуллин@Lyft
Union, Intersect, Subtract в Kotlin
ViewPager2 копаемся во внутренних API для работы с DiffUtil
Как оставаться современным Android-разработчиком
Реверс-инжиниринг Android-приложений
Внедрение поискового фильтра с использованием Kotlin Channels и Flows
Используем In-App Review API для отзывов в Google Play
Шаблон Репозиторий в Android
Material Components для Android 1.2.0
GraphView: графики для Android
Scrcast: запись экрана в приложении для Android

Разработка

(+25)Сказ о разработке амбициозного проекта 16-ти летним парнем (file547)
(+13)Какие навыки можно прокачать на проекте c большой кодовой базой
(+10)Защищаемся от трекеров на мобильных платформах
(+8)FigmaExport: как автоматизировать экспорт UI-Kit из Figma в Xcode и Android Studio проекты
(+6)Управление сценами в Unity без боли и страданий
(+5)Тестирование для мобильных разработчиков: полезные видео с Android-митапа
make sense: О практике Jobs-To-Be-Done, разных уровнях применения, мифах и вреде продуктоцентричности
Podlodka #175: имитационное моделирование
Google запустил распознавание рукописного ввода в ML Kit
Дизайн приложений: примеры для вдохновения #12
5 вещей, которые лучше понять до того, как начать стажировку в стартапе
Дело о Маленьких и Больших Буквах
Тестирование сервиса без ругани с программистом
Почему быстрый дизайн убьёт ваш продукт?
Правила хорошего интерфейса: изучаем UI-дизайн на примере LEGO
Как сделать многопользовательскую (.io) веб-игру
Slack теряет разработчиков, Discord получает
Я сделал Plague Inc. для калькулятора
Как индустрия рингтонов проложила путь магазинам приложений, а затем исчезла
Как Flutter выиграет десктопы
4 ключевых фактора, которые нужны, чтобы стать успешным разработчиком
Конфигурируем VS Code как профессионалы
Что делает движок Godot отличным для приложений с продвинутым GUI
Как я повысил производительность программной системы на 35,000%
Единственный фактор, который сделает вас Senior-разработчиком
Мои 2 цента о кроссплатформе
Миф о стоимости качества ПО
Локализуйте свое приложение на Flutter за 3 шага
Уроки, извлеченные из создания первых 10 коммерческих приложений на Flutter
6 советов разработчикам по борьбе с синдромом самозванца
FigmaToCode: макет в код для Flutter и SwiftUI

Аналитика, маркетинг и монетизация

(+13)[Фреймворк формирования полезных привычек] и максимального вовлечения юзеров на примере изучения английского языка
(+1)Как IDFA и контроль клиентских данных приведут к доверительному маркетингу
LOVEMOBILE #08: Adjust
Самые скачиваемые приложения в июле 2020
Самые зарабатывающие приложения в июле 2020
Radish: микрочтение фантастики
Доходы мобильных игр во 2 квартале поставили новый рекорд
Как игра One Guy Run получила 100.000+ установок за 2 дня?
Мобильное видео заменяет телевизор
iOS 14 & IDFA & мобильная атрибуция трафика: глобальное изменение на мобильном рынке рекламы
Тестирование цен для подписных приложений
Как разработать приложение, которое само по себе продвигает
Платные приложения мертвы. Что будет дальше с монетизацией?
12 правил виральности, которые я узнал, создавая видео-приложение со взрывным ростом

AI, Устройства, IoT

(+32)Языковые модели как двигатель прогресса: необычные применения для GPT-3
(+20)Как машинное обучение спасает деревья в Екатеринбурге
(+14)Azure RTOS. Часть 1: обзор и запуск (STM32 + CubeIDE + HAL)
Исследователи сделали ИИ для превращения селфи в нормальные портреты
Google представил Pixel 4A

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

Дайджест интересных материалов для мобильного разработчика 357 (10 16 августа)

16.08.2020 18:20:26 | Автор: admin
В новом дайджесте делаем модульное приложение из монолита, влюбляемся в градиенты, судимся с Apple, разбираемся с ошибками, создаем погодную станцию и делаем много других полезных вещей. Подключайтесь!


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

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+2) 6 объединяющих операторов Swift Combine, которые вам следует знать
(+2) Пользовательский инструмент, который не помешал бы вам в вашем приложении
Переход на модульную архитектуру в iOS-проекте: опыт Redmadrobot
Запрет WeChat может снизить продажи iPhone на 30%
ФАС признала Apple ограничивающей конкуренцию на рынке приложений
Супер простой композитный UICollectionView на Swift
Работа с интернет-подключением в iOS на Swift: лучшие практики
5 расширений Xcode, которые вам необходимы
Как создать UIProgressView с градиентом в Swift
Скрыть и показать Navigation Bar и Tab Bar в Swift
Многосегментный индикатор прогресса на Swift
Что такое CaseIterable Protocol в Swift?
Обнаружение рака кожи на iOS с помощью Xcode и Create ML
DCFrame: Model-driven UI фреймворк
Stripes: генерация бэкграундов на SwiftUI

Android

(+9) Делаем игру с управлением улыбкой
(+3) Hilt еще один DI?
(+2) Как с помощью HUAWEI ML Kit самостоятельно создать апплет для фото на документы
(+1) Android Fragment Result Listener
Android Dev Podcast #116. Летние новости
Android Broadcast: The Elm Architecture. Функциональное программирование на Android
5 самых распространенных ошибок в Android-приложениях и способы их устранения
Android-смартфоны будут предупреждать о землетрясении
Google улучшает Android Auto и Android Automotive OS
Распространение Android-приложений в 2020
Создание своей автомобильной инфотеймент системы с нуля
Динамическая нижняя навигация в Android
Реализуем конечный автомат с помощью Kotlin и библиотеки Tinder
Добавление анимации в ваше Android-приложение с помощью библиотеки Lottie
13 причин, почему Dart хуже Kotlin
Разделяй и властвуй с ConcatAdapter
Jetpack Compose: как начать и разработать приложение
25 лучших Android-библиотек и проектов 2020 года летнее издание
Превращаем камеру в решение судоку
10 вещей, которые вы (не) хотите видеть в Legacy-коде
Как выбрать правильные зависимости для вашего проекта
Глубокое погружение в Configuration Cache
Создайте метеостанцию с помощью Google Cloud IoT, Cloud Firestore, Mongoose OS и Android Jetpack
Gallerit: современная галерея
MaterialResideMenu: меню с параллаксом для Android
Wheel Spinner: Колесо фортуны для Android

Разработка

(+25) Как нанять 50 синьоров за 43 дня и быстро включить их в процесс разработки?
(+18) О создании UI-анимаций в играх и почему они так важны
(+14) Анонс Flutter 1.20
(+5) Сервис на языке Dart: flutter web-страница
(+4) Алиса на Kotlin: превращаем код в Яндекс.Станцию
Podlodka #176: GPT-3 и Natural Language Processing
Открылся сайт для разработчиков приложений для Chrome OS
Секрет простого кода
Как мы на 39% улучшили привычку читателей
10 лучших инструментов автоматизации тестирования
Почему разработчики влюбляются в функциональное программирование
10 обязательных macOS-инструментов для опытных пользователей и разработчиков
О, мама, я люблю Градиент
Никогда не станет легче, просто будет быстрее
Использование Weather API для оценки ежедневного дорожного риска
Full-Stack Flutter: создание бэкенда для приложения с AWS & Serverless
Введение в регрессионное тестирование

Аналитика, маркетинг и монетизация

(+3) Аналитика в мобильном приложении
(+3) Как монетизировать мобильное приложение в 2020 году?
(+3) 5 ключиков к игровому рынку Бразилии
(0) Заставят ли Вас платить дополнительный налог с продаж digital услуг?
(0) Как создавались ролики о приложении ПоЗнакомым: факты, задачи, тонкости + комментарий клиента
Сервисы управления мобильными подписками Qonversion и RevenueCat получили инвестиции
Fortnite удалили из App Store и Google Play и Epic Games подает в суд
В Voodoo запустили конкурс раннеров
В AdMob появились Rewarded Interstitial объявления

AI, Устройства, IoT

(+29) 8 ML/AI-проектов, которые украсят ваше портфолио
(+28) Мониторинг производственного оборудования: как с этим дела в России
(+1) Как с помощью HUAWEI ML Kit реализовать функцию распознавания банковских карт
Xiaomi готовит новый чипсет
Huawei вынужден прекратить производство процессоров Kirin

< Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку пришлите, пожалуйста, в почту.
Подробнее..

Перевод Google говорит, университеты больше не нужны

21.08.2020 14:20:51 | Автор: admin


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

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

Новые программы от Google


Четырнадцатого июля Google запустил новые программы профессиональной сертификации по направлениям Анализ данных, Управление проектами и UX-дизайн на платформе Coursera. Платформа взимает с учащихся ежемесячную плату в 49 $, однако Google планирует предоставить ста тысячам нуждающихся стипендии, которые покроют эти расходы. Кроме того, корпорация выдаст более десяти миллионов долларов в виде грантов ряду некоммерческих организаций, которые сотрудничают с компаниями в целях трудоустройства женщин, ветеранов и дискриминируемых групп населения.

Google называет среднегодовой заработок для каждого из направлений; самой прибыльной оказывается программа по управлению проектами с зарплатой в 93 000 $. По словам представителей, 80% работников, которые прошли курс специалиста по техподдержке, в результате нашли новую работу или получили повышение. Чтобы вступить в программу, не требуется ни опыта работы в соответствующей области, ни высшего образования. А по завершению обучения обычно оно занимает от трёх до шести месяцев выпускники имеют неплохие шансы присоединиться к техническому гиганту.

Кент Уолкер, старший вице-президент департамента по корпоративным вопросам, сообщил в своём аккаунте на Twitter:

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

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

Программа сертификации Microsoft будет проводиться с привлечением ресурсов LinkedIn, GitHub и Microsoft; гранты на двадцать миллионов долларов также будут переданы некоммерческим организациям. 25% этой суммы достанется тем организациям, которые работают над проблемами трудоустройства в тесном сотрудничестве с цветными сообществами или под началом их представителей. До марта 2021 года на LinkedIn для участников программы будут открыты курсы по целому ряду профессий (разработчик, торговый представитель, системный администратор, специалист по анализу данных, финансовый аналитик, графический дизайнер и менеджер проектов).

Не только формат, но и контент


На этой неделе Coursera привлекла инвестиции в размере ста тридцати миллионов долларов; в общем, по данным Forbes, компания оценивается в два с половиной миллиарда долларов. Сервис Coursera сотрудничает со ста шестьюдесятью университетами и предлагает пользователям четыре с половиной тысячи курсов типа MOOC (открытые и масштабные онлайн-курсы). В статье журнала Harvard Business Review, написанной при участии главы Coursera, прозвучало заявление о том, что высшему образованию необходимо выстроить долгосрочные планы по организации виртуального обучения. Не вызывает сомнений, что в новую эпоху процесс обучения требует от передовых учреждений аппаратуры, программного обеспечения, коммуникаций и формирования каталога онлайн-курсов.

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

По подсчётам Microsoft, в 2020 году число безработных в мире может повыситься до четверти миллиарда из-за автоматизации процессов и обвала рынка во время пандемии. Но при этом они указывают и на то, что в IT-секторе в течение следующих пяти лет появится сто сорок девять миллионов новых рабочих мест; большая часть из них приходится на разработку, анализ и защиту данных, кибербезопаность.

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

Спад в числе абитуриентов


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

Согласно статистике, представленной в отчёте Клирингового исследовательского студенческого центра за осень 2019 года, общее число зачисленных студентов к концу прошлого года составило менее восемнадцати миллионов то есть на два миллиона меньше, чем на пике, в 2011 году. За последние восемь лет число поступающих в высшие учебные заведения всех типов (государственные университеты, общинные колледжи, частные заведения) сократилось по стране на 11%.

Апрельский опрос исследовательской компании SimpsonScarborough, результаты которого представлены в Business Insider, показал, что 10% старшеклассников не собираются получать диплом бакалавра. Если детальнее изучить представленные цифры, можно заметить диспропорцию: 41% учеников, относящихся к расовым меньшинствам, сказали, что не планируют поступать в колледж осенью или ещё не решили, в то время как среди белых студентов подобные ответы дали только 24% опрошенных.

Google выражает надежду, что бюджетная программа сертификации, которая требует не больше трёхсот долларов вложений, может решить проблему неравенства в доступе к образованию хотя бы в некоторых сферах. Бакалавриат многое даёт студентам, но не все могут на него претендовать, говорит Лиза Гевелбер, вице-президент Google по маркетингу. Опираясь на отчёт CNBC, Google утверждает, что 58% учащихся, которые получают IT-сертификаты компании, относятся к афроамериканцам, латиноамериканцам, ветеранам или женскому полу, а 45% получают меньше 30 000 $ в год.

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

Революция в образовании: сейчас или никогда


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

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

Сложности добавляет и тот факт, что образовательный сектор знаменит своим сопротивлением переменам, как заявляет Дон Лерман из Школы бизнеса им. Габелли университета Фордхэма в журнале Times Higher Education. В своей статье Изменит ли коронавирус систему образования к лучшему? она отмечает, что университетам необходимо учредить культуру быстрого реагирования на запросы цифровой эры и что лучшего момента, чем сейчас, для этого не будет. И в самом деле, без радикальных перемен высшему образованию грозит серьёзная опасность многие могут задаться вопросом о целесообразности четырёхлетнего курса обучения.

В IT есть целый ряд широко известных примеров лидеров, которые не завершили своё образование и, тем не менее, добились громкого успеха: Стив Джобс, Билл Гейтс, Майкл Делл, Марк Цукерберг. Если выйти за пределы IT-сферы, можно вспомнить Опру, главу компании Whole Foods Джона Маккея, Ральфа Лорена, Вольфганга Пака. Пак бросил школу в четырнадцать лет и устроился помощником повара в гостиницу.

Конечно, эти примеры невероятно успешных специалистов из разных областей представляют крайние случаи. Однако есть основания считать, что отсутствие университетского диплома больше не препятствие для того, чтобы заниматься высококвалифицированным трудом и иметь хорошие финансовые возможности. В отчёте Google по программе сертификации на IT-позиции говорится, что 61% учащихся не имеет высшего образования, тратит на обучение порядка шести месяцев и получает в среднем 54 760 $ в год.

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

Отрасли за пределами IT приходят к той же мысли. Национальная федерация розничной торговли только что запустила совместно с джинсовыми компаниями American Eagle Outfitters, Gap и Levi Strauss виртуальную образовательную программу для молодых и перспективных работников розничной торговли. Программа называется RISE, рассчитана на восемь недель и позволяет участникам напрямую перенимать опыт ритейл-гигантов через записанные лекции, которые дают возможности для профессионального развития.

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

Дайджест интересных материалов для мобильного разработчика 358 (17 23 августа)

23.08.2020 12:14:59 | Автор: admin
В этом выпуске переезд Lingualeo на PostgreSQL, главные ошибки свободного ПО, война Epic c Apple, восприятие интерфейсов и золотой век программирования, часы Уизли, поведение пользователей и многое другое!


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

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+29) Airport маркетплейс для приложений в TestFlight
(+23) Как мы загружали банковскую карту из iPhone в брелок
(+14) Знакомимся с Needle, системой внедрения зависимостей на Swift
Обновление Lightroom удалило все пользовательские фотографии на iOS
Apple отзывает сертификаты разработчиков у Epic Games и ставит под удар Unreal Engine
Как подготовиться к iOS 14 и новым правилам конфиденциальности Apple
Анимация View в SwiftUI
Как я получил свою первую работу iOS-разработчика
Организация вашего Swift-кода в Xcode с помощью локальных пакетов
Микровзаимодействия в SwiftUI анимация кнопок меню
Новое в области искусственного интеллекта в iOS 14
Как создать вариант сборки в iOS-приложении
24 расширений Swift для более чистого кода
Как настроить большой iOS/tvOS/watchOS проект для большой команды и избежать конфликтов?
Время сборки Xcode с BitBar
MotionToastView: красивые тосты для iOS
Countdown: таймер на SwiftUI

Android

(+16) Внедрение IMA SDK в Android-приложениях
(+11) Автотесты на Android. Картина целиком
(+11) Декомпилируем приложение xiaomi сканер и забираем результат сканирования
(+1) История про боль и как мы ее исправляем
Анализ Android-рынка в Китае
Отключение Jetifier
Написание эффективных Layouts
Google Play In-App Review API: интеграция и опыт работы
Более умные приложения с Awareness API
Создание лучшего и более чистого RecyclerView.Adapter с Kiel
Обнаружение объектов в Android с помощью Firebase ML Kit
Activities не то, что вы думаете
Android MVVM с Firebase Firestore
Кодлабы для новых игровых технологий Android
Добавление удивительных переходов в Android-приложение с помощью Material Motion
Фрагменты: восстановление внутреннего устройства
MovieHunt: правильная архитектура кино для Android
InstaGrabber: открытый клиент Instagram

Разработка

(+29) Восприятие интерфейсов пользователями на примере панелей из Lego
(+21) Data-driven подход к разработке контента: как мы создаем роботов в War Robots
(+14) Глоток свободы: как флеш-игры повлияли на игровую индустрию
(+7) Сервис на языке Dart: каркас серверного приложения
(+6) Mind Map в тестировании или легкий способ тестировать сложные приложения
(+1) Выбор мобильных устройств: пошаговая инструкция для начинающих QA. Часть II
Хочу в геймдев #11: как попасть в зарубежную геймдев-компанию
Podlodka #177: криптография
Золотой век программирования закончился?
Открыт прием заявок на чемпионат по программированию Yandex Cup
Обзор рынка мобильной разработки в кризис: что происходит и к чему готовятся агентства?
5 принципов качественного UI
Появление дизайнеров-полубогов. ИИ и машинное обучение
Аффордансы в дизайне. Дизайн привычных вещей
Как создать иллюстрации, когда не умеешь рисовать
Дизайн приложений: примеры для вдохновения #13
FigmaExport: как автоматизировать экспорт UI-Kit из Figma в Xcode и Android Studio проекты
Как формируется стоимость разработки мобильного приложения?
Делайте больше, делая меньше
React Native против Flutter: решение ожидается в 2020 году
6 месяцев использования GraphQL
Разработка Open Source системы иконок в Microsoft
Создание чистого приложения Game of Life на Flutter с использованием гексагональной архитектуры и TDD
Как определять токсичные вакансии разработчиков по их описаниям
Захватит ли ИИ UX?
Фреймворк быстрых UX-исследований
Почему я отказался от Google Firestore (и никогда не вернусь)
4 признака неопытного разработчика

Аналитика, маркетинг и монетизация

(+7) Объединяем закрытый WhatsApp и открытый SIP Часть 1
Почему действия Epic вредят игровой индустрии
Epic запускает чемпионат #FreeFortnite
iPhone с предустановленным Fortnite продают за $10,000
Facebook поддержал Epic в борьбе с монополией Apple
Взлет приложений для здоровья и фитнеса в 2020
myTarget оценивает влияния наружной рекламы на установки приложений
Яндекс запустил супер-приложение Go, помогающее решать повседневные задачи в городе
Likee почти догнал TikTok
Симуляторы показали самый большой рост в 1 полугодии 2020
App Annie: как изменилось поведение пользователей в мобайле в первом полугодии 2020
Что нужно учесть при оптимизации страницы приложения на иностранные языки
Как мы за 2 месяца бесплатно получили 400 тысяч установок из TikTok

AI, Устройства, IoT

(+110) Проект часов Уизли с демонстрацией местоположения членов семьи
(+45) Склеиваем несколько фотографий в одну длинную с помощью машинного обучения
(+13) Спасти рядового датасайнтиста. Как работать над компьютерным зрением, чтобы сделать проект и не потерять себя
(+4) Интернет автомобилей: кому нужны данные о вашей езде
Рынок умных часов растет
BlackBerry готовит новый смартфон с клавиатурой
Университет машинного обучения Amazon открывает свои курсы для всех
Google AI Vision и Text to Speech на Raspberry Pi
Как создать собственного личного AI-помощника с помощью Python
AI учится играть в Super Mario Bros!

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

Дайджест интересных материалов для мобильного разработчика 359 (24 30 августа)

30.08.2020 14:14:20 | Автор: admin
В новом дайджесте подготовка к iOS 14, архитектура приложений и многомодульные проекты, детские интерфейсы и вопросы высшего образования разработчиков, продуктивность, новый месседжинг, роботы и много других интересных материалов!


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

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+8) Make <your iOS app> talk. Доклад Яндекса
(+5) Осваиваем Grid в SwiftUI
Apple заблокировала обновление Facebook из-за предупреждения о 30%
Facebook предупреждает о 50% падении дохода от рекламы после перехода на iOS 14
Как подготовиться к iOS 14
Управление приложением в SwiftUI
Как создать змейку на SwiftUI
Как программно изменить иконку приложения
Новое в iOS 14: App Attest
Постраничное листание на SwiftUI
В чем разница между Leading и Left, Trailing и Right Constraints в Swift
GraphQL в iOS-разработке
Обнаружение утечки памяти во время выполнения на iOS
10 советов по разработке виджетов для iOS 14
Отслеживание рук и определение положения тела с помощью Vision Framework
Протоколы в Swift
Затерянный в стране Xcode
Создание сложных многослойных макетов с Safe Area
NeumorphismKit: неоморфизм в UIKit
Layout Framework Benchmark: сравнительное тестирование Swift-фреймворков

Android

(+8) Архитектурный шаблон MVI в Kotlin Multiplatform. Часть 3: тестирование
(+2) Тестируем плату для 4K Android ТВ-приставок на чипе Realtek RTD1395
Вышла альфа-версия Jetpack Compose
Android Broadcast: Архитектура приложений: Делаем аналитику правильно
Google выпустил приложение AdMob для Android
Android для всех: словарь терминов
Сравнение времени сборки Android на разных процессорах
Создание элегантных DSL на Kotlin
Распознаем нарисованное с ML Kit
Как использовать Ktor в вашем Android-приложении
Использование Firebase In-App-Messaging в Android-приложении
Анимируйте клавиатуру
Связь Фрагмента с другими Фрагментами и Активити
Делаем кастомный Android Sheet, выезжающий сверху экрана
Android Material Component: создаем Navigation Drawer в стиле Gmail
Используем Jetpack CameraX
Как повысить качество приложения с помощью Firebase и Google Play
10 полезных строковых расширений Kotlin
Awesome Dialog: красивые уведомления для Android
Android Additive Animations: анимации для Android

Разработка

(+61) Мои размышления про экранную клавиатуру для Flipper Zero под экранчик 128х64 пикселя
(+27) Как однажды была чуть не сорвана разработка Gardenscapes
(+22) Оригинальный способ генерации мастер-пароля: используй специальный набор костей
(+9) Конфигурация многомодульных проектов
(+5) Интерфейсы для тех, кто еще не читает. Принципы проектирования детского UX-UI
(+3) Марк маркировал, маркировал, да и вымаркировал. Маркировка это ж просто!?
(+2) Использование SVG ресурсов в Xamarin
(+1) Micro-frontends. Асинхронный подход к мультикомандной разработке
(0) 10 вещей, о которых нужно помнить при переходе с React на React Native
(0) Какие бывают метрики. Дизайнер и метрики, 2 часть
Flutter Dev Podcast #19: Яндекс.Про
Хочу в геймдев #12: путь инди
Podlodka #178: Stack Overflow
Повлияла ли работа из дома на продуктивность разработчиков?
Google: ВУЗ больше не нужен
Дизайн приложений: примеры для вдохновения #14
Работа в Mobis Apps, или как потерять 130 тысяч рублей
Тени и размытие. Основы UI дизайна
ActiveLife App: исследование UI/UX
7 устаревших стилей программирования
Как сделать Flutter-приложение с высоким уровнем безопасности?
Каково это быть Senior инженером?
Сколько стоит сделать кроссплатформенное приложение в 2020?
Adobe отказывается от PhoneGap
Как разработать отличное мобильное приложение для фитнеса? (фичи, бюджет и монетизация)
6 потрясающих Github-репозиториев для Flutter
VR-разработка на Unreal: для каких проектов лучше всего использовать?

Аналитика, маркетинг и монетизация

(+1) Арабские страны: новый Клондайк для разработчиков
Игровой рынок России: обзор Wargaming и Superdata
В Канаде самый большой рост расходов на приложения, в России рост ниже прошлогоднего
Muze переосмысливает мобильный месседжинг
Избегайте фичеринга
Житель Петербурга потратил на Великого Султана 763 тыс. рублей и решил вернуть их через суд
Суд запретил Apple удалять аккаунты Epic Games
Microsoft поддержала Epic Games в споре с Apple
Почему все взъелись на Apple с её 30%?
AppMetrica: как правильно собирать и интерпретировать данные отчетов
10 главных метрик для аналитики ecommerce-приложений
ASOindex бенчмарк 20 популярных категорий App Store и Google Play

AI, Устройства, IoT

(+65) Умная детская коляска Максимка
(+31) RPi-няня
(+13) Умный дом в каждую квартиру многоквартирного дома, или наш MVP
(+8) Старый строительный бизнес и новые технологии, или история одного стартапа
(0) Azure IoT Edge и SQL Edge: перенос облачных нагрузок на наземные устройства
Убьет ли Искусственный Интеллект программирование?
Исследователи Intel на основе смартфона сделали робота за $50
Amazon улучшает расстановку мебели в AR

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

Победитель Apple Design Awards статистически усреднённый портрет

31.08.2020 10:17:14 | Автор: admin


Летние новости корпорации Apple вот-вот уступят место осенним релизам. Сейчас у желающих остаётся последняя возможность высказаться по итогам WWDC, прежде чем она забудется под наплывом свежих впечатлений. Мы воспользуемся этой возможностью, чтобы поговорить о финальном событии конференции, которое обычно обсуждается менее бурно, чем первые анонсы церемонии Apple Design Awards. Когда наблюдаешь за номинациями и отбором победителей из года в год, невольно начинают мерещиться самые разные закономерности. Нам давно хотелось обобщить и проверить эти закономерности объективными методами. После июньской партии победителей мы наконец взялись за этот проект и сегодня хотели бы поделиться первыми результатами.

Эта статья небольшой сборник статистических выкладок, которые мы сделали для себя в попытках осмыслить вкусы и приоритеты Apple при раздаче наград. При сборе материала мы ограничились списками победителей за последние десять лет (с 2011 по 2020); призёры из студенческой лиги при этом не учитывались. Число награждённых варьируется от года к году, составляя в среднем примерно десяток соответственно, в выборку вошло около сотни приложений.

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

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

  • платформа;
  • тип монетизации;
  • пользовательская оценка;
  • категория и подкатегория.

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

Платформа




Если говорить об исторических изменениях, на этом срезе они проявляются, пожалуй, ярче всего. За двадцать с лишним лет существования Apple Awards комитет многократно корректировал список и структуру номинаций, и одна из существенных перемен пришлась как раз на последнее десятилетие. Начиная с 2013 года компания прекратила начатые за несколько лет до того попытки выдержать баланс между платформами при отборе призёров. С этого момента позиции Mac-продуктов стали явно и неуклонно падать. Пожалуй, можно сказать, что с годами такое положение дел только усугубляется: 75% приложений для MacOS получили свои награды до 2016 года и лишь одна четверть за последние пять лет.

Примечательно, что платформа iPad в таких условиях свободной конкуренции, напротив, чувствует себя вполне комфортно. Конечно, в первую очередь это объясняется тем, что связка iOS + iPad в принципе пользуется популярностью у разработчиков такое сочетание представлено в каждом втором приложении. Однако, если посмотреть на соотношение сил в одноплатформенных продуктах, то и здесь iPad оказывается на коне: приложения строго для планшетов попадаются в списке в полтора раза чаще, чем рассчитанные только на телефоны. Возможно, здесь играет роль то, что iPad оптимален для работы с некоторыми тематическими категориями продуктов, которые пользуются особой любовью Apple. Но об этом позже. На временной шкале платформа держится довольно ровно, чередуя более удачные годы с менее удачными.

Несколько слов следует сказать о двух платформах, которые вообще не выступают в качестве основных, но мелькают в числе побочных Apple TV и Apple Watch. Они представлены примерно в равной степени у 10-15% продуктов; в первом случае это игры (Action, Adventure, RPG), во втором приложения из категорий Productivity и Health&Fitness. Ощутимый рост популярности для обеих наблюдается начиная с 2017 года.

Тип монетизации




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

Под заголовком Другое скрываются разрозненные случаи применения схемы Paid + IAP, а также монетизации через свежий игровой сервис Apple Arcade.

Пользовательская оценка




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

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

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

Категория и подкатегория


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



Если идею равенства для платформ Apple упразднила, то пропорции игровых и неигровых приложений и по сей день выдерживаются неукоснительно. В общем и целом, игры несколько уступают утилитам в численности, но квота примерно в 40-50% призёров сохраняется от года к году с незначительными колебаниями. Сопоставимая представленность обоих видов продуктов явно имеет значение для комитета.

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



Как можно видеть, состав неигровых победителей довольно разнообразен. Категория Другое/Other объединяет с полдюжины подкатегорий, в общей же сложности их насчитывается около пятнадцати. Есть и явный лидер Productivity, которая охватывает почти четверть списка. Относительно неё, однако, нужно сделать некоторые оговорки. Эта категория, судя по всему, вышла на первую строку не случайно: на фоне других она выделяется крайней разнородностью. Перебирая её состав вручную, мы выделили несколько типов приложений, из которой складывается группа:

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

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

Во-вторых, вторая подгруппа тесно смыкается с двумя подкатегориями, занимающими третью и четвертую строку рейтинга Photo & Video и Graphics & Design. В сумме они, вероятно, количественно превосходят неигровые приложения любой другой тематики.

Если прибавить к этим наблюдениям тот факт, что вторую строку занимает категория Music, утилиты для всевозможных видов творчества начинают казаться основным объектом внимания Apple. Неплохие позиции удерживает также образование подкатегория Education, в которой смешиваются приложения для детей и взрослых. Тема заботы о здоровье часто звучит в выступлениях компании, однако в списке награждённых соответствующие продукты занимают весьма скромное место группы Health & Fitness и Medical суммарно дают менее 10%.

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



В играх наблюдается ещё более пёстрая картина. Почти четверть жанров приходится отнести в сегмент Другое, так как все они представлены буквально парой тайтлов. В числе подобных мини-группок жанры Sports, Racing, Family, RPG, Music, Cards Многие игры, при ближайшем рассмотрении, находятся на пересечении двух или нескольких жанров. Не в последнюю очередь это относится к лидирующей подкатегории Puzzle, в которой часто мелькают сложные, сюжетные игры с выраженными элементами Adventure, Horror и других.

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

Мы рассмотрели все параметры из стартового списка, который приводили в начале. Теперь пришло время исполнить обещание и описать идеального лауреата премии Apple в вакууме, каким он вырисовывается по средним значениям. Итак, типичный кандидат в призёры будет

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

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

Перевод Как я строил карьеру в Amazon, куда меня взяли по ошибке

04.09.2020 20:08:16 | Автор: admin
Сегодня я праздную пять лет работы в Amazon. За это время я передал в продакшн боле 500 000 строк кода, проводил инспекцию чужого кода более 500 раз, проектировал, разрабатывал, развёртывал и поддерживал масштабные системы, которыми пользуются тысячи клиентов со всего света. Меня считают одним из ведущих технических лидеров в команде.

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

Как я прокрался в Amazon


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

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

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

Интерны в Amazon, если хорошо себя покажут, получают предложение перейти на полную ставку разработчика первого ранка начального уровня. Повторно проходить собеседования им не приходится. Я проходил интернатуру в Сиэтле старательно ваял сайт на Ruby on Rails с нуля. Наработал на предложение и начал свою деятельность разработчика ПО в 2015 году в Виргинии.

О скудности моих познаний


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

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

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

Я и сам осознавал, что недотягиваю. В первое время синдром самозванца мучил меня со страшной силой.

Первые блины


Каждая инспекция кода оборачивалась катастрофой. Я отправлял фрагмент на проверку (в виде запроса на принятие изменений, допустим), мне его возвращали с восьмьюдесятью комментариями. Не годится. Я правил и отправлял новую версию. Ещё пятьдесят комментариев. Не годится. И так далее, и так далее.

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

Разоблачение самозванца


Мало-помалу я подтягивался. Наконец-то стал укладываться в сроки и стабильно отдавать код в продакшн. Спустя примерно девять месяцев у меня зародилась уверенность в собственных силах. Я решил, что пора раз и навсегда развязаться с синдромом самозванца. Я обратился к задачам на LeetCode, просто чтобы самому себе доказать, что я на своём месте. Помню, как думал: Я теперь полноправный разработчик в Amazon. У меня коммиты в проде. Что я, не справлюсь с этими простецкими задачами?.

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

Быть, а не казаться


Через два с половиной года меня повысили до разработчика второго ранга. Разработчик второго ранга способен своими силами создать и поддерживать крупную систему с минимальной помощью со стороны. Так как же мне это удалось? Как я сумел перетолковать правила игры в свою пользу?

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

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

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

Что я делал


Настраивался на максимальное принятие обратной связи

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

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

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

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

Задавал глупые вопросы

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

Например:

Я не знаю, что означает этот термин. Можешь объяснить или посоветовать, где почитать?

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

Я не разобрался в том, что говорилось на совещании. Можно встретиться с тобой ещё раз и кое-что прояснить?

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

Нашёл неугомонного инспектора кода

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

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

Использовал существующие образцы, чтобы избегать ошибок

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

Такого же подхода я придерживался при написании документации по дизайну и отчётов post mortem. Сначала образцы, потом действия.

Сосредоточился на правильности и целесообразности

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

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

Бросался в пекло

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

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

Проявлял инициативу по мелочам

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

Старался быть профессионалом

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

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

Ясно обозначил своё стремление к повышению

В компаниях FAANG повышения никто не предлагает вы их сами просите, и не единожды. Если этого не делать, процесс затянется на долгие месяцы.

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

Ставил работу на повышение впереди прочего

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

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

Постоянно собирал свидетельства своих успехов

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

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

Осознавал, что от меня зависит, а что нет

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

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

Размышления


Вредит ли делу культура Leetcode, которая сложилась в процессах найма?

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

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

Значит, через интернатуру легче попасть в разработчики первого ранга?

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

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

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

Так Amazon правда зря тебя нанял?

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

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

Дайджест интересных материалов для мобильного разработчика 360 (31 августа 6 сентября)

06.09.2020 16:13:36 | Автор: admin
В новом выпуске разбираемся со скруглением иконок (два раза!), с UI-тестами и MVI, мультиплатформенными приложениями и CI/CD, проектированием интерфейсов, самыми зарабатывающими приложениями и многим другим.


История с долгими поисками девайсов и/или проводов стала касаться меня ежедневно. Такая пустяковая задача, как найти Xiaomi Mi A1, занимала кучу времени и приносила душевные страдания. Спустя некоторое время, я пришёл к мысли, что меня это бесит и на поиск девайса столько времени уходить не должно. Я нашёл узкое горлышко в рабочих процессах и решил его ликвидировать.

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+66) Секрет формы иконок iOS: это сквиркл? Разбор
(+3) Формулы переводов: хитрая локализация для iOS и не только
(+3) Swift Best Practices которые не стыдно знать
Apple откладывает защиту конфиденциальности в iOS 14 до следующего года
Особенности реализации календаря с горизонтальным скролом
В App Store запускаются промо-коды для подписок
10 советов по разработке виджетов для iOS 14
Apple не будет задерживать исправление ошибок в App Store
Apple делает свой поисковый сервис?
Мои любимые приложения для iOS-разработки в 2020 году
Как создать интерактивный Bottom Sheet в Swift 5
Встроенные покупки и StoreKit в iOS 14
Привязка к прокрутке элемента
Как создать навигатор для перехода на любую страницу в Swift
Ваш первый UITest на Swift
Что нового в Xcode 12.0?
Обработка видео в SwiftUI в реальном времени с использованием Core Image
Не делайте этого с помощью Swift Optionals
Ассемблер в iOS
Apple Silicon для разработчиков приложений
Swifty Guitar Chords: гитарные аккорды на Swift
MultiplatformApp: мультиплатформенное приложение на SwiftUI

Android

(+10) На чем писать Android UI-тесты
(+4) Быть или не быть: дискуссии о тестировании в мобильной разработке
(+3) Загрузка и сборка AOSP
(+2) Так для чего же нам все таки нужен MVI в мобильной разработке
(+2) Как встроить голосового помощника в любое мобильное приложение. Разбираем на примере Habitica
(+1) Анализ сервисов приема SMS для Android против сайтов-сервисов и опыт разработки нового функционала под Android
Android Broadcast: Dagger Hilt: Deep Dive / No more Koin
Android Broadcast: Kotlin 1.4: быстрее и лучше
Вышла альфа Kotlin Multiplatform Mobile
Thermal в Android
Приватные библиотеки в Android почему вы должны рассмотреть это
Извлекаем взаимодействий из ViewModel
Распознавание касания, двойного касания, панорамирования и щипка в Android
Заставьте ваш (Kotlin) код выражать самого себя
Распространенные ошибки разработчиков при создании RecyclerViews и способы их устранения с помощью класса ViewRepresentation
Отформатируйте код Kotlin с помощью Ktlint
Shape Drawables самый мощный инструмент для Android UI
Исследуем Kotlin Multiplatform
Настраиваем Logcat в Android Studio
20 инструментов Android-разработки о которых вы, вероятно, никогда не слышали
Добавляем ленту на иконку приложения в Android (снова))
Предпочитаемое хранение данных в Jetpack DataStore
Jetpack Release Tracker: отслеживание обновлений AndroidX
TrackerControl: отслеживание сбора данных на Android
Jetpack Compose Samples: примеры работы с Compose

Разработка

(+43) Ваши квадрокруги неправильные
(+18) Создаем разрушаемые объекты в Unreal Engine 4 и Blender
(+17) Ну, покати! или CI/CD мобильных приложений на основе контракта
(+9) Как прошел открытый Demo Day в Райффайзенбанке
(+7) Тестирование Flutter-приложений: инструменты, преимущества, проблемы
(+7) Как работают мобильные кошельки на примере приложения Mir Pay
(+4) Улучшаем работу со сценами с помощью ScriptableObject
(+4) Продвинутое велосипедостроение или клиент-серверное приложение на базе C# .Net framework
(+3) Совет инженерам по тестированию 1: Докеризируйте ваш Selenium Grid
(+2) Победитель Apple Design Awards: статистически усреднённый портрет
Podlodka #179: рациональность
Как создать свой игровой бизнес
Дизайн приложений: примеры для вдохновения #15
Google и Apple разработали упрощенную систему предупреждения о COVID-19
Pokemon GO прекращает поддержку старых смартфонов
Unity Distribution Portal позволит работать сразу со многими магазинами приложений
Проектирование игры в Sketch: интервью с создателем King Rabbit
Не проектируйте для мобильных устройств (Mobile-first)
С чего начать проектирование мобильного приложения. Основы UI дизайна
Что такое Actions Builder? Actions Builder и Actions SDK для Google Assistant
Реверс-инжиниринг: разработка эмулятора сервера для Marvels Avengers
10 лучших и самых популярных пакетов Flutter
5 советов для лучшего дизайна кнопок
Улучшаем Flutter-приложения с помощью автозаполнения
Чистый код для ведущих разработчиков
Автоматизация жизненного цикла Flutter-проекта с помощью GitHub Actions
Да, TDD вас замедляет
Разработка дневника настроения на Flutter за 2 часа
6 шагов в поиске подходящей среды автоматизации тестирования (с примером из практики)

Аналитика, маркетинг и монетизация

Avo: аналитика нового поколения
Самые зарабатывающие приложения в августе 2020
Индия забанила PUBG и еще сотню приложений
Google запустил Growth Academy для Украины и Беларуси
App Annie представляет отчет по геймингу за первое полугодие
myTracker анализирует доходы от рекламы в приложениях
Локализация: как выйти на международный рынок и увеличить количество установок?
Модель монетизации: меняем и дешево тестируем новую
Почему удержание лучший способ роста

AI, Устройства, IoT

(+20) Малиновый киноцентр или как сделать неубиваемый смарт-ТВ
(+18) Как игры стали движущей силой двух школ исследований ИИ
(+1) Микроволновка, знающая о тебе всё: что такое Интернет вещей (IoT)?
Apple iPhone 11 стал самым продаваемым смартфоном в первой половине 2020

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

Дайджест интересных материалов для мобильного разработчика 361 (7 13 сентября)

13.09.2020 18:19:09 | Автор: admin
На этой неделе Google выпустил Android 11, а Huawei представил Harmony 2.0, Apple продолжила биться с Epic в суде, мы продолжили исследование Kotlin в 1.4 и новых веяний неоморфизма, стагнации машинного обучения и правил создания иконок. Все это и многое другое в нашей новой подборке!


Упаковываю и отправляю приложение без троянов для управления своими лампами в F-Droid без каких-либо знаний в разработке для Android. Корпорация Google опубликовала релиз мобильной ОС Android 11. Главный акцент в новой версии операционной системы сделан на упрощении работы с различными мессенджерами, управлении smart-устройствами и улучшенной конфиденциальностью пользователя.

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

Apple подала встречный иск к Epic
Микровзаимодействия: анимированная волна
7 вариантов AlertView в SwiftUI
Тестирование производительности Xcode на большом проекте Swift. Сравнение iMac, MacBook, iMac Pro
Преобразование платного iOS-приложения в подписное
Пишем первый виджет для iOS
7 основных инструментов iOS-разработчика
Создание 3D анимации прокрутки карт в SwiftUI
Как сделать iOS-приложение безопасным?
SwiftUI 2.0: будущее декларативно
Swiftagram: клиент для Instagram
Velik: отслеживание поездок на велосипеде

Android

(+11) Navigation Component-дзюцу, vol. 1 BottomNavigationView
(+6) Полируем UI в Android: StateListAnimator
(+4) Превращаем EditText в SearchEditText
Google выпустил Android 11 Go
Huawei представил Harmony 2.0
JetBrains проводит конференцию по Kotlin 1.4
Android Broadcast: новый компилятор Kotlin в 1.4
20 инструментов Android-разработчика, о которых вы, вероятно, никогда не слышали
Google показал зависимость Firebase от GMS
Шесть лет споров: зачем Microsoft сделала Android-смартфон с двумя экранами в мире, где все устройства одинаковые
Подход чистой архитектуры при рассмотрении Модели
Не изобретайте колесо заново, делегируйте его!
Базовая инъекция зависимостей с помощью Hilt
Магические функции Kotlin все, что вам нужно знать
Полируем UI в Android: StateListAnimator
Сборка Android: как уменьшить время с 5 минут до 15 секунд
Разработка сложного пользовательского интерфейса с использованием Android ConstraintLayout
22 расширения Kotlin для более чистого кода
Простая библиотека настроек создаем экран настроек за секунды
TDD в Android
Современная безопасная Android-разработка
Неисправный AndroidX FragmentFactory
Исследуем Jetpack DataStore
Biometric Auth: биометрическая аутентификация в Kotlin
Blue Pair: работа с Bluetooth в Android

Разработка

(+25) Неоморфизм и его проблемы
(+11) Домофоны, СКУД И снова здравствуйте
(+10) Как захватить новую страну за 3 недели
(+6) Flutter.dev: Простое управление состоянием приложения
(+4) Локализуем приложение на React Native
Podlodka #180: PHP
C++ стал самым быстрорастущим языком программирования рейтинга TIOBE
Яндекс запускает новый сезон стажировок
Дизайн приложений: примеры для вдохновения #16
Мотивация разработчиков и других людей творческих профессий руководство для компаний
Илкка Паананен: Игры, как бизнес, не должны управляться процессами
Инструкция: как создать приложение для просмотра погоды на Flutter
Сетки, принципы и правила создания интерфейсных иконок, iOS и Android
Год на воде и хлебе: как делать приложение на свои и не сдаваться
5 советов по улучшению дизайна кнопок. Основы UI дизайна
Действительно ли Firebase так хорош, как кажется?
Создаем веб-приложение Flutter с нуля и размещаем его с помощью Continuous Deployment
4 типа разработчиков, с которыми вы (к сожалению) будете работать
Использование шаблона BLoC для чистых Flutter-приложений: теория и практический пример
Анатомия превосходного дизайна
Советы, как стать более эффективным ревьювером кода
Duofolio: ридер со словарем

Аналитика, маркетинг и монетизация

(+21) Российские пасхалки в мобильных приложениях. Какие они?
(+17) Ошибки в дизайне A/B тестов, которые я думала, что никогда не совершу
(+4) Как понять, что новая фича принесет пользу продукту, а не навредит ему?
(+2) Apple Grace Period и Billing Retry статусы при обработке чеков пользователей
AppsFlyer запускает Xpend платформу для агрегации данных о расходах на рекламу
Руководство по продуктовой аналитике от Mixpanel
Самые скачиваемые приложения в августе 2020
Mustard: скаутинг на основе ИИ
Два типа стратегий роста: стратегии искры (kindle) и стратегии пламени (fire)
Как итерации помогают в поисковой оптимизации приложений

AI, Устройства, IoT

(+31) Стагнация машинного обучения. Многие задачи не будут решены никогда?
(+12) Автоматизируем работу системы отопления в квартире без переделки интерьера умный дом z-wave
(+9) Будни OEMщика (Часть 1)
(+3) Интернет автомобилей: первые шаги к беспилотной езде
Яндекс выпустит ТВ-приставку с Алисой
Представлен новый протокол Z-Wave Long Range
Как стать экспертом в области искусственного интеллекта: пошаговое руководство
Planet-Scale AR Alliance готовит дополненную реальность для 5G
Relativty VR-гарнитура с открытым исходным кодом за 200 долларов

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

Дайджест интересных материалов для мобильного разработчика 362 (14 20 сентября)

20.09.2020 16:05:00 | Автор: admin
В этом дайджесте презентация Apple, инструменты и антипаттерны Android-разработки, ARM против x86 и кроссплатформа против нативной разработки, искусство рассказывания историй, секреты улучшения дизайна и многое другое!


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

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+22) О чем нам рассказали на ежегодной сентябрьской презентации Apple
(+5) Формальные грамматики на службе мобильного клиента
Подготовка к iOS 14
Что означает последнее обновление правил конфиденциальности Apple для вашего приложения
Apple представляет совершенно новый iPad Air с A14 Bionic, iPad 8-го поколения, Apple Watch Series 6 и Apple Watch SE
В App Store разрешили стриминг игр, но очень ограниченно
Социальная сеть на Swift UI
iOS 14 UISplitViewController: 5 проблем, с которыми вы можете столкнуться
Объяснение Диапазонов в Swift на примерах
Декодирование JSON в Swift с помощью Codable: практическое руководство
10 Pod-ов для использования в новом iOS-проекте
Улучшите свой UX с помощью Core Animations
Как обезопасить iOS-приложение от скриншотов и записи экрана?
WidgetKit: продвинутая разработка
10 мощных@Атрибутов в Swift
DTTextField: поле ввода с подсказками
ContainerController: выезжающая панель

Android

(+15) 20 инструментов Android-разработчика, о которых вы могли не знать
(+8) Navigation Component-дзюцу, vol. 2 вложенные графы навигации
(+2) Антипаттерн Репозиторий в Android
(+1) Обзор HMS Core 5.0: ещё больше возможностей для ML на мобильных устройствах и новые инструменты для аудио и видео
(0) Как с помощью возможности распознавания текста HUAWEI ML Kit реализовать функцию автоматического ввода номеров
Microsoft запускает Android-приложения в Windows 10
Android 11 вызвал проблемы в работе с Android Auto
Привет DataStore, пока SharedPreferences
Объяснение жизненного цикла Android Fragment
Изучение Jetpack Compose: модификатор отступа
Управление несколькими приложениями в одном проекте Android (Studio)
Распознавание жестов поворота в Android
Как определить обновление Android-приложения
Просто добавьте MVI с Orbit 2
Адаптируйте свое приложение к последним рекомендациям по обеспечению конфиденциальности
Как корутины формируют новые способы разработки
Автоматизация Code Review
Почему я решил написать свой собственный инструмент для тестирования UI
Понимаем внутреннее устройство Lottie рендеринг файла анимации
JetInstagram: Instagram на Jetpack Compose

Разработка

(+19) ARM против x86: В чем разница между двумя архитектурами процессоров?
(+9) Когда имеет смысл писать кроссплатформенные приложения: появление и исчезновение React Native в Lingualeo
(+8) Вставка реальных объектов в Unity с помощью Meshroom
(+7) UXD Реальность и будущее в дизайне или человек во главе всего
(+7) Crash-crash, baby. Автоматический мониторинг фатальных ошибок мобильных приложений
(+3) Как документ на мобильнике распознается: от простого к сложному
Podlodka #181: хантинг
Искусство рассказывания историй в разработке программного обеспечения
Дизайн приложений: примеры для вдохновения #17
Секрет улучшения дизайна: 4 способа сторителлинга
Исследование. Какую иконку выбрать для обозначения аккордеонов?
Искусство сторителлинга в разработке программного обеспечения
Руководство по минималистическому дизайну
Автоматизация публикации ваших приложений Flutter в Google Play с помощью GitHub Actions
Создаем приложения для чата на Flutter с помощью Firebase
Жизненный цикл разработки программного обеспечения: как мы создали новый Dropbox Plus
Барьеры на пути к разработке игр устранены
12 основных инструментов для разработчика мобильных приложений на Flutter
Начинаем работать с дополненной реальностью с помощью Unity AR Foundation Framework
Действительно ли я знаю программирование?
Mixin: мессенджер, кошелек и клиент для децентрализованной сети

Аналитика, маркетинг и монетизация

(+1) Как представить игру издателям и инвесторам
Почему следующая фаза роста Китая будет определяться потребителями и что это означает для рекламодателей
Bunch получил $20 млн. на социальный слой для игр
Министерство финансов США изучает безопасность игр Riot Games и Epic Games
make sense: О выборе фреймворков приоритизации, подходах к принятию решений и командной осознанности
Зачем бизнесу заказывать разработку приложения?
Отчет О состоянии рынка рекламы приложений для шоппинга в 2020 году
Как студия Donut Lab закрыла раунд инвестиций на $1.6M
Маркетинг приложений в апокалипсис: как работать с тревожными трендами?
Как я получил 200 000 загрузок приложений без платного маркетинга

AI, Устройства, IoT

(+29) Подключем новый Xiaomi Gateway 3 к Home Assistant без паяльника и смс
(+24) Как за два месяца пройти путь от начинающего питониста до сертифицированного TensorFlow-разработчика
(+12) ИК датчик движения на STM32
(+3) Автомобильное ПО: варианты стратегического развития
Facebook анонсировал Oculus Quest 2
Facebook выпустит смарт-очки вместе с Ray-Ban
Gameloft оживляет игрушки Kinder с помощью дополненной реальности
Nvidia покупает ARM
8 лучших No-Code платформ машинного обучения, которые вы должны использовать в 2020 году

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

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

25.09.2020 10:10:53 | Автор: admin


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

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

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

Вот список того, из чего складывается хороший текст вакансии:

  • Ясное, ёмкое изложение сути деятельности компании без избытка пустых громких слов
  • Ясное, ёмкое изложение тех задач, которыми вам предстоит заниматься на соответствующей должности, без избытка пустых громких слов
  • Ясный, разумный список требований, которые ставит перед вами работа/должность
  • Ясный, разумный список обязанностей, которые предполагает должность
  • Отсутствие упоминаний качеств или умений, которые не имеют прямого отношения к работе (чувство юмора, упорство, настойчивость)

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

Плохой пример 1: требуется человек-оркестр







Перевод
О компании: Компания из списка NASDAQ, поставляющая цифровые решения для Правительства.

Основные обязанности:

  • Делать вклад и принимать ответственность за все аспекты жизненного цикла продукта: дизайн, планирование, разработка, DevOps, тестирование как сервисов, так и веб-компонентов;
  • Стимулировать диалог с партнёрами по бизнесу, помогая определить потребности и найти решения;
  • Сотрудничать и выстраивать прочные связи с технологической группой, а также сторонними поставщиками и оффшор-партнёрами, способствуя созданию дополнительной ценности для клиентов;
  • Уверенно поддерживать существующие программные решения и веб-сервисы, которые написаны на Javascript (Node JS & Angular JS) и размещены на AWS;
  • Обладать способностью и стремлением глубоко погружаться в наработанную кодовую базу и не упускать возможностей, которые предлагает дизайн, функциональность и потребности рфакторинга в коде;
  • Делиться прошлым опытом с другими членами команды, становиться для них наставником с целью улучшить порядок разработки и внедрения.

Необходимые навыки:

  • Хороший практический опыт веб-разработки на Node JS;
  • Практический опыт в параллельном программировании, асинхронном программировании, использовании функций обратного вызова;
  • Разработка микросервисов, архитектуры & REST API;
  • Архитектура системы очередей сообщений SQS или RabbitMQ;
  • Сервисы AWS (SQS, Lambda, EC2, ECS, API Gateway, Beanstalk);
  • Централизованное логирование и анализ логов при помощи AWS Cloudwatch или Elasticsearch;
  • Опыт работы с базами данных NoSQL (MongoDB, DynamoDB);
  • Опыт работы с реляционными базами данных (MySQL);
  • Безопасность (OAuth 2.0), технология единого входа;
  • Разработка через тестирование.

Желательные навыки:

  • Хорошее понимание одностраничных приложений;
  • GraphQL;
  • Запросы SQL & Mongo;
  • Непрерывная интеграция и непрерывная доставка;
  • Разработка гибридных мобильных приложений на Ionic Framework/React Native;
  • Документация API (Swagger).

Преимущества:

  • Конкурентная заработная плата;
  • Бесплатное медицинское страхование, включая стоматологию;
  • План покупки акций;
  • Безвозвратные вложения в пенсионный план 401к;
  • Страхование по инвалидности;
  • Страхование жизни;
  • Оздоровительная программа от компании;
  • Раскованная, весёлая атмосфера в офисе;
  • Отпуск и оплачиваемые праздничные дни;
  • Возмещение расходов на обучение.


Ну, пойдём по порядку.

Делать вклад и принимать ответственность за все аспекты жизненного цикла продукта: дизайн, планирование, разработка, DevOps, тестирование как сервисов, так и веб-компонентов

Бррр. То есть я должен выполнять функции архитектора ПО, разработчика, инженера DevOps и тестировщика одновременно? Любой, кто реально работал в IT-компании, знает, что жизненный цикл продукта на всей его протяженности это не шутки. В стартапах нередко случается так, что один программист сидит на нескольких стульях и тащит на себе весь процесс, но компания из списка NASDAQ это однозначно не стартап. Инженеры DevOps отпочковались в отдельную профессию не просто так.

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

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

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

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

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

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

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

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

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

Да, до кучи будешь ещё и тимлидом.

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

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

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

Плохой пример 2: нам нужны ОТВАЖНЕ программисты на ОТВАЖНУЮ работу




Перевод
Инженерия и технологии, разработчик ПО, начальный уровень

Гражданство США обязательно. Должность предполагает работу в учреждении, куда требуется специальный допуск.

Основные требования: Диплом бакалавра по специальности Программная инженерия или смежным в аккредитованном университете

ОСНОВНЕ ТРЕБОВАНИЯ
job.Qualifications

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

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

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

Необходимый опыт: минимум четыре года обучения в университете


Основные требования: job.Qualifications

Хе-хе, у кого-то автоматический скрипт лагнул.

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

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

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

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

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

Плохой пример 3: ищем безупречных представителей человечества




Перевод
Мы ищем разработчика начального уровня для выполнения различных задач, которые возникают в компании по производству ПО и разработке интернет-сайтов. Успешные кандидаты должны обладать развитым аналитическим мышлением, жаждой знаний, готовностью принять любой вызов, желанием пополнять багаж знаний и отличным чувством юмора. В компании по производству ПО и интернет-сайтов за пять лет можно научиться практически всему (будем рады тем, кто мечтает в будущем основать свой стартап). На работе придётся выкладываться по полной, но будет весело! Предпринимательский дух обязательное требование! Форма одежды свободная.

Конкретные задачи могут включать:

  • Разработку ПО;
  • Администрирование систем;
  • Составление документации;
  • Поддержку пользователей;
  • Контроль качества;
  • Предпродажную поддержку;
  • И прочее, по мере поступления

Вот что нужно, чтобы получить предложение о работе:

  • Диплом бакалавра или магистра по информатике, электротехнике и подобному;
  • От 0 до 3 лет опыта;
  • Предпринимательский дух;
  • Развитое аналитическое мышление;
  • Отличные навыки общения;
  • Глубокая порядочность и сила духа;
  • Энергичность и высокий уровень мотивации;
  • Желание вкладывать много сил в развитие небольшой компании;
  • Стремление к совершенству, готовность сделать всё, что потребуется ради выполнения работы;
  • Желание досконально изучить реалии компании по производству ПО/разработке сайтов;
  • Опыт работы с HTML;
  • Опыт работы с C/C++, C# или Java;
  • Опыт работы с Javascript;
  • Понимание реляционных баз данных;
  • Понимание модели передачи данных TCP/IP;
  • Идеалистичный настрой на улучшение системы образования;
  • Оптимистичная вера в свою способность порождать перемены;
  • Критическое отношение к оптимизму и идеализму, понимание, что они могут обернуться невежеством или самонадеянностью.


Эта вакансия меня добила пишу, и на смех пробивает.

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

Отличным чувством юмора? Это ещё зачем? Настольная книга собеседующихся называется Карьера программиста, а не Манера приколиста. Хорошее чувство юмора это черта, которую мы всегда ценим в окружающих, будь то друзья, родня, коллеги или те, кого мы приглашаем на свидание. Но в вакансии запрашивать такие вещи не имеет смысла.

Конкретные задачи могут включать: разработку ПО, администрирование систем, составление документации, поддержку пользователей, контроль качества, предпродажную поддержку

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

И прочее, по мере поступления

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

Предпринимательский дух

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

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

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

Глубокая порядочность и сила духа;
Энергичность и высокий уровень мотивации;
Желание вкладывать много сил в развитие небольшой компании;
Стремление к совершенству, готовность сделать всё, что потребуется ради выполнения работы;
Желание досконально изучить реалии компании по производству ПО/разработке сайтов;
Идеалистичный настрой на улучшение системы образования;
Оптимистичная вера в свою способность порождать перемены;
Критическое отношение к оптимизму и идеализму, понимание, что они могут обернуться невежеством или самонадеянностью

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

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

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

Хорошие описания вакансий


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

Хороший пример 1: всё при нём




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

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

Чем вы будете заниматься:

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

Что от вас требуется:

  • Опыт работы в индустрии над проектами с full-stack архитектурой и распределёнными системами;
  • Несколько лет работы с бэкенд и фронтенд-фреймворками, такими как: Python/Django, Javascript/React, Scala/Play или другими общепринятыми стандартами;
  • Практический опыт работы с базами данных (MySQL, PostgreSQL, NoSQL и другими). Знание тюнинга и оптимизации запросов будет плюсом;
  • Отличные навыки общения. Опыт работы в распределённых командах будет плюсом;
  • Желание участвовать в нашей миссии и постоянно учиться новому.

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


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

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

Из одного этого предложения уже можно сделать целый ряд выводов о том, в каких сферах, вероятно, подвизается компания:

  • Big data
  • Обработка и аналитика данных
  • Разработка ПО (само собой)
  • Научные исследования или НИОКР
  • Возможно, машинное обучение, чтобы извлекать из данных новые познания

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

Хороший пример 2: коротко и по делу




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

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

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

Вам предстоит:

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

В основе нашего стэка гибкие, масштабируемые концепты, как-то:

  • NodeJs, Go, Kubernetes, Docker;
  • Linux (Ubuntu), работа с командной строкой, Python.


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

  • Микросервисы
  • Node.js, Python и Go
  • Kubernetes + Docker, Linux
  • Акцент на ритейле и коммерческом строительстве

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

Хороший пример 3: просто, но добротно




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

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

Что вам предстоит делать:

  • Поддерживать и продвигать ценности нашей корпоративной культуры;
  • Работать в связке с другими сотрудниками, в том числе представителями продуктовых и API-команд, чтобы вносить свои предложения, дорабатывать и улучшать существующий продукт;
  • Организовывать свою работу при помощи Jira, Github и внутренних систем сборки и деплоя;
  • Помогать в тестировании кода и выводе наших творений в продакшн.

Наш стэк включает в себя: Golang, AWS (DynamoDB, Lambda, EC2, Kinesis, SQS, S3), ReactJS, Snowflake, Terraform, Redis, SolarCloud, Kafka, Riac, Docker/Kubernetes и Linux

О вас:

  • Стандартно: опыт в разработке облачных приложений 2-4 года;
  • Диплом бакалавра по информатике;
  • Два и больше года работы с Go и Python;
  • Два и больше года работы с HTML, CSS и Javascript;
  • Умение выстраивать масштабные распределённые системы;
  • Опыт создания веб-приложений с фокусом на интерфейсе и применением современных фреймворков Javascript;
  • Позитивное отношение к жизни, способность учиться и быстро вливаться в небольшую команду;
  • Опыт работы с AWS (желательно);
  • Понимание микросервисной архитектуры и облачных приложений.


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

Не соглашайтесь на плохую работу


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

Дайджест интересных материалов для мобильного разработчика 363 (21 27 сентября)

27.09.2020 20:23:04 | Автор: admin
В новой подборке создание собственной GTA, заработки виджетов, Swift и Flutter для Windows, приложения из таблиц и подписные приложения в Китае, коалиция против Apple, новые устройства Сбера и многое другое.


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

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+6) Устройство UI в iOS
Топ-20 iOS-приложений с виджетами получили 5.7 млн установок и $400,000 за 4 дня
Swift заработал с Windows
Улучшение типографики отображения времени в iOS
Как работает SKAdNetwork и фреймворк AppTrackingTransparency в iOS 14
Лучшие ресурсы для изучения iOS-разработки и Swift-программирования
iPad будущее продуктового дизайна?
Создание iOS UI с чистым кодом
Руководство по индикаторам активности в iOS от А до Я
Создание расширяемого списка с помощью UICollectionView
Создаем анимированную кнопку лайка в стиле Twitter на SwiftUI
Используем возможности нескольких ядер в приложении для iOS
Подписки на iOS получение правильной даты независимо от устройства
Выбор минимальной версии iOS для поддержки
Никогда не используйте Pod Install снова
Создание кастомного Navigation View на SwiftUI
Что нового в iOS 14 для разработчиков
TPInAppReceipt: проверка встроенных покупок
SnackBar: уведомления для iOS

Android

(+14) Navigation Component-дзюцу, vol. 3 Corner-кейсы
(+8) Знакомство с App Gallery. Создаем аккаунт разработчика
(+2) Чем опасен postDelayed
(0) Retrofit2 на Android используя Kotlin
Android 11 для телевизоров
Android Broadcast: как выбрать поддерживаемую версию Android: minSdk, targetSdk, compileSdk
Понимание внутреннего устройства библиотеки загрузки изображений Glide анализ исходного кода
Улучшите свою игру с помощью форматов сжатия текстур
Введение в основные концепции Android Navigation
Состояние Java в 2020
Continuous Testing с Android Emulator Containers
Советы по программированию на Kotlin
Три удобных инструмента для Android-разработки
Как RecyclerView работает внутри?
Создаем свой собственный лаунчер для Android на Flutter
Пять полезных расширений Kotlin, которые вы можете использовать
Забавное изучение свойств анимации в Android
Изучение Jetpack Compose с помощью Hilt и ViewModels
Темные секреты быстрой компиляции Kotlin
Smart App Rate: запрос оценки от пользователя
JetQuotes: декларативные цитаты
UTair MVP Sample: Android Clean Architecture + пример MVP

Разработка

(+29) Стартап Glide для создания мобильных приложений из Google-таблиц
(+13) Как мы автоматизировали разработку WL-приложений
(+9) Продуктовый дизайнер: правила эксплуатации
(+6) Используем бесплатные возможности Github Actions для CI/CD на Flutter-проекте
(+6) Flutter.dev: Continuous delivery с Flutter
(+1) 7 способов повысить эффективность автоматизации тестирования в Agile разработке
(0) PWA не для всех
Podlodka #182: Психотерапия
Flutter Dev Podcast #20: Flutter for Web
Вышла альфа-версия Flutter для Windows
Дизайн приложений: примеры для вдохновения #18
Проектирование для Microsoft Surface Duo
ATEC приложение для проверки признаков аутизма. Часть 3
Запуск Go-кода на Android и iOS
Как интегрировать Google Vision API с React Native и Expo
Ленивая загрузка данных из Firestore в реальном времени с использованием Flutter
Чему Сократ научил меня в UX-дизайне
Разработка полноценное новостного приложения на Flutter за день
Как я, Junior, превзошел более опытных разработчиков (и как вы тоже можете)
Учитесь у лучших: принципы мобильного дизайна
Почему Flutter это, по сути, следующая важная вещь в разработке приложений

Аналитика, маркетинг и монетизация

Конкурс Playcore для инди-разработчиков: сделаем из вашей игры кейс!
Почему Китай возможность для роста западных приложений с подпиской
Epic, Spotify и Match Group объединились в коалицию против магазинов приложений
Freeletics: очень умный мобильный фитнес
Финтех приложения в 2020
Приобретение пользователей для мобильных игр в 2020: отчет Liftoff и AppsFlyer
Индийская игровая платформа Mobile Premier League получила $90 млн.
Летом россияне потратили в тревел-приложениях $2,1 млн.
Как фримиум приложения превращают пользователей в платящих: лучшие примеры напоминаний
$4 млн инвестиций и 8 лет разработки: история приложения для дошкольников Сказбука
Как рекламировать мобильные приложения в TikTok гайд по старту работы

AI, Устройства, IoT

(+35) Новый метод биометрии: биоакустическая подпись
(+24) Вернуть пропавший скутер, или история одного IoT мониторинга
(+15) Ultimate Guide по карьере в AI: как выбрать специальность, прокачаться и найти классную работу
(+3) Делаем трекер Bluetooth-устройств с помощью колонок Google
(+2) MQTTv5.0: Обзор новых функций. Часть 2
Сбер запускает собственные устройства и навыки для них
Mozilla выделяет WebThings в отдельный проект
Скоро способ, которым вы пишете код, изменится: присоединяйтесь к революции
12 интересных идей для проектов в области Data Science для начинающих и экспертов

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

На пике Брэда Сталберга и Стива Магнесса профилактика самовозгорания (часть вторая)

02.10.2020 14:18:50 | Автор: admin


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

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

Нагрузка (стресс) + отдых = рост

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

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

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

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

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

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

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

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

Короткие перерывы: перекуры


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

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

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

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

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

  • Прогулка. Можно просто пройтись по коридору или по лестницам свежий воздух не обязателен, хотя, конечно, не повредит. Ценность ходьбы в том, что она требует от мозга ровно столько усилий по координации движений, сколько нужно отвлекает, но не нагружает;
  • Медитативные практики или их заменители. Это может быть собственно медитация, если вы ей занимаетесь, или монотонная, расслабляющая деятельность, под которую мысли начинают течь свободным потоком. На кого-то так действует мытьё посуды, на кого-то спокойная музыка, на кого-то тёплый душ;
  • Общение. Исследования показали, что социальная активность выравнивает гормональный фон, запуская в организме восстановительные процессы разного рода. Да и без научного подкрепления многие согласятся, что разговор с приятными людьми хороший способ развеяться. С выбором собеседников, впрочем, нужно быть осторожнее: если общение сводится, опять же, к рабочим вопросам, у мозга не будет возможности перестроиться. Для коротких передышек семья и друзья предпочтительнее коллег.

Перерыв средней длительности: сон


Со сном у человечества серьёзные проблемы с этим соглашаются уже практически все, кто занимается вопросами медицины. Необходимой человеку ежедневной нормой считаются семь-девять часов непрерывного ночного сна. В реальности до этой цифры дотягивает значительно меньше половины взрослого населения США. И дело не только в издержках капиталистического уклада. Проблема довольно молода: ещё в 1942 году средний американец спал вполне приемлемые 7,9 часа за ночь. На сегодняшний день этот показатель составляет 6,8 часа то есть ниже озвученной нормы.

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

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

  • Обработка и закрепление воспоминаний. В ночное время вся информация, поступившая за день, подвергается пересмотру и анализу на глубинном уровне: что имеет смысл сохранить и какое место новые сведенья займут в системе наших знаний. Чем меньше времени мы даём мозгу, тем меньше шансов, что всё ценное удержится;
  • Эмоциональная разгрузка. Аналогичные процессы переработка, сведение, кодирование приобретённого опыта происходят и в сфере душевных переживаний;
  • Укрепление механизмов саморегуляции. Судя по экспериментальным данным, самоконтроль оказывается прямо пропорционален количеству сна. Люди, которые хронически недосыпают, чаще поддаются импульсам, обнаруживают большую склонность к риску и меньшую способность принимать взвешенные решения на перспективу.

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

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

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

Тем, кто регулярно досыпает днём, специалисты рекомендуют ориентироваться на продолжительность в 10-30 минут. Это оптимальное время: вы, скорее всего, проснётесь освежённым и отдохнувшим. Если затянуть отдых дольше, появляется риск выйти на фазу глубокого сна, прервать её до завершения и проснуться разбитым.

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

Длительный перерыв: отпуск


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

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

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

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

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

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

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

Дайджест интересных материалов для мобильного разработчика 366 (12 18 октября)

18.10.2020 16:23:45 | Автор: admin
В новом дайджесте новые iPhone, новые карты и геолокация для Android, тестирование мобильных танков и отслеживание подписок, рейтинг рекламных сетей и чемпионат по Candy Crush Saga.


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

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+25) Развитие iPhone: от 2G до 5G
(+11) Автоматизация тестирования продуктовой аналитики в мобильных приложениях
(+8) Мой Covid-19 lockdown проект, или, как я полез в кастомный UICollectionViewLayout и получил ChatLayout
(+3) Action и BindingTarget в ReactiveSwift
Apple представляет iPhone 12 Pro и iPhone 12 Pro Max, iPhone 12 и iPhone 12 mini и HomePod mini
Распространение приватного приложения через App Store
Фреймворк Swift iOS BackgroundTasks обновление фонового приложения за 4 шага
Создание экранов пошагового руководства в Swift
Автоматическая пикселизация лиц на iOS с помощью собственного кода для распознавания лиц
Связывание анимаций вместе для построения гистограмм в SwiftUI
Расширение UIViewController с помощью всплывающих окон
Как тестировать push-уведомления в симуляторе и iOS-приложении
Swift Composable Architecture от Point-Free
JOCircularSlider: круговой слайдер для iOS
ChatLayout: UI для чатов
CardScanner: сканер кредитных карт на Swift

Android

(+12) Android Guards. История создания, развития и первый meetup
(+10) Встраиваем карты от Huawei в Android приложение
(+8) Избегайте внедрения внешних библиотек в свой проект
(+5) Встраиваем геолокацию от Huawei в Android приложение
(+4) Паттерн PageObject в Kotlin для UI-тестирования Android
(+3) Создание сложного списка элементов за 20 минут в Android на базе Groupie
(+2) Создание SDK под Android в стиле Single-Activity
(+2) Делаем код в адаптере чище с помощью MergeAdapter
Вышла Android Studio 4.1
Анализ вашего APK во время CI/CD
Автоматизация публикации приложения в Google Play Store с помощью GitHub Actions+ Fastlane
Изогнутая нижняя навигация с анимацией в Android
От нуля до сертифицированного Android-разработчика
Введение в Semantics в Jetpack Compose
Чего ожидать от собеседования Android-разработчика
Введение в Navigation
Как создать и распространить Android-библиотеку
Использование лучших практик доступности в разработке под Android
AndroidX Navigation: неправильная абстракция
Бенчмаркинг Gson и Jackson и Moshi 2020
Настройка многомодульных проектов
Weather Radar: погодный радар
Cascade: всплывающие меню

Разработка

(+30) Приложение Социальный мониторинг: анализ траффика
(+23) Jungle town: как мы хотели изменить мир к лучшему, создавая детскую игру
(+13) Мобильные танки и тесты: интервью о тестировании World of Tanks Blitz
(+9) Как мы разрабатывали приложение для школьников со школьниками: космический дизайн и job story для домашки
(+5) Как мы переосмыслили работу со сценами в Unity
Podlodka #185: конструктивное общение
Unity запускает Game Growth Program для помощи инди-разработчикам
DevFest 2020 пройдет онлайн с 16 по 18 октября
Изучите основы UI дизайна на примере фильмов
5 шагов для улучшения ваших навыков UI дизайнера
Работа с действительно ужасным разработчиком
26-летний программист создал приложение на 1 миллиард долларов за 2 года после того, как последовал совету своей подруги
Идеальный процесс управления техническим долгом
Современные шаблоны проектирования архитектуры для профессионалов
Создание клона Google Диска во Flutter с помощью AWS Amplify
Анонс: плагины Flutter Community Plus
Питч деки игр, получивших инвестиции
16-часовая тренировка для разработчиков

Аналитика, маркетинг и монетизация

(+6) Как делать гипер-казуальные игры, популярные во всём мире
(+4) Fatal Fight: История многомиллионных загрузок
(+1) Инструкция: настроика Snowplow для мобильнои аналитики
Рост установок в 3 квартале: отчет Sensor Tower Store Intelligence Data Digest
Calm привлекает новые инвестиции при оценке $2.2 млрд.
Nym Health: автоматизация медицинской бухгалтерии
Adjust запускает продукт для отслеживания подписок
В Великобритании объявили победителя Candy Crush Saga All Stars
AppsFlyer опубликовала новый рейтинг Performance Index
В AppMetrica появился Анализ покупок
Как сделать в TikTok виральный Hashtag Challenge для вашего приложения
Великобритания забанила фейковую рекламу Playrix
Harbor: геймификация катастроф
40 медиа, которые расскажут о вашем приложении
Как Covid-19 повлиял на рынок мобильных приложений?

AI, Устройства, IoT

(+57) Продажи планшетов в этом квартале выросли, но их вымирание это только вопрос времени
(+26) Turing Pi кластерная плата для self-hosted приложений и сервисов
(+19) Компьютерное зрение. Свой алгоритм или решение из коробки?
(+17) IBM Maximo Visual Inspection как панацея для непрофи. Часть 2
Google научился узнавать напетые и насвистанные песни
Snap запустил в Лондоне совместную дополненную реальность Local Lens
Разработка и продажа приложения для машинного обучения от начала до конца

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

Дайджест интересных материалов для мобильного разработчика 367 (19 25 октября)

25.10.2020 14:05:47 | Автор: admin
В этом выпуске две истории инди-разработки игр, языки программирования внутри iOS, большие картинки внутри Android, ошибки разработчиков и дизайна кнопок, траты зумеров и монетизация маленьких приложений.


Хочу поделиться своей историей, а именно историей немного затянувшейся разработки простенького point?and?click квеста. Данная игра дала мне очередной огромный опыт. Дала понять, что я могу собирать команду, руководить процессом и доводить дела до конца. А вот зарабатывать деньги мне еще предстоит научиться.

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+6) Назад к BLE или способ автоматизировать рутинные операции
(+3) Single source of truth (SSOT) on MVVM with RxSwift & CoreData
Современные способы перезагрузки ячеек таблицы и коллекции на Swift
Какие языки программирования используются внутри iOS 14?
Что делает жесты в iOS идеально плавными?
iPhone 12 vs Дизайнеры
Bonjour: обмен данными между устройствами без сервера
Как приложения iOS адаптируются к разным размерам экрана iPhone 12
Собеседование на должность системного инженера по iOS-дизайну в Spotify
Как сделать превью фото в SwiftUI
Создаем мобильные бессерверные приложения с помощью Amazon Aurora, Amplify и SwiftUI
Тестирование снепшотов в Swift
XcodeGen упрощенная совместная работа
Введение View Styles в Bumble
iOS 13 Dark Mode в BlaBlaCar: история разработчика
Отладка на iOS 14 с помощью Xcode 11
Полное руководство по жизненному циклу приложения SwiftUI 2
Функции высшего порядка в Swift
Bauletto: бейджи в стиле iOS 13
SketchKit: замена auto layout на Swift

Android

(+33) Большие картинки? Deal with it
(+18) Android-разработчикам: как сократить время реализации тёмной темы с пары месяцев до недели
(+15) Джентльменский набор от Huawei для разработчика мобильных игр: Game Service и инструменты для быстрой интеграции HMS
(+9) Советы по работе с экосистемой Huawei от Лаборатории Касперского
Google запускает Android for Cars App Library
Повышаем производительность Android WebView с помощью Glide
Решаем сложные экраны
Android-программирование: архитектура с одной Activity и Navigation
Некоторые распространенные ошибки при создании макетов в Android
Синхронная связь с UI с помощью StateFlow
Внедрение Firebase App Distribution в Android-разработку
Советы и руководства для разработчиков: распространенные нарушения правил и способы их избежать
EvadeMe библиотека для Android
Тестирование библиотек загрузки изображений на Android
Сравнение Jetpack Compose View и Android View
CodeView: редактор для кода
Animation Tutorials: руководства по анимации в Android
Spotlight: подсказки для интерфейса

Разработка

(+31) Стоит ли увольнять разраба за большую и дорогую ошибку? Думаю, нет, но менеджмент хотел крови
(+25) Опыт Тинькофф Оплаты: улучшили мобильный SDK и сделали оплату в интернете еще удобнее
(+23) Элементы управления переключателем состояния: печально известный случай кнопки отключения звука
(+19) Как мы пришли к реактивному связыванию в Unity3D
(+12) Сколько стоит разработать мобильное приложение
(+7) Базовый формат моков React компонентов
(+6) Обновление роадмапа AngularDart
(+4) Дизайн-система: что это, для чего и как создать
(+3) Flutter: результаты опроса разработчиков за Q3 2020
(+3) Как генерировать запросы с постоянной частотой в k6 с новым API сценариев?
Хочу в геймдев #14: Профессия Продюсер игр
Podlodka #186: путешествия по России
Spotify в неоморфизме
Kite добавил поддержку Objective-C, Kotlin и еще 9 языков программирования
Лучшие исходники, которые должен увидеть каждый разработчик
Дизайн приложений: примеры для вдохновения #20
Если вы хотите стать лучшим программистом прекратите программировать
Как создать приложение со списком дел на Flutter
Flutter: расширения Visual Studio Code для быстрой и эффективной разработки

Аналитика, маркетинг и монетизация

(+9) Финляндия для разработчиков игр: маленькая страна с большими возможностями
App Annie: зумеры тратят в мобайле $143 млрд в год
Нельзя использовать AdMob для монетизации маленьких приложений: обсуждение в Reddit
Вы не забыли купить? Как креативный подход в программатик рекламе помогает возвращать пользователей кейс OZON и Bidease
Wargaming Forge бесплатно обучит созданию видео из игр
Playbook: продвижение через тренеров
Когда ASO начнёт приносить результат
Автоматизация тестирования продуктовой аналитики в мобильных приложениях

AI, Устройства, IoT

(+141) Сбер выложил русскоязычную модель GPT-3 Large с 760 миллионами параметров в открытый доступ
(+42) Умное зеркало своими руками
(+30) Plan 9-кластер на Raspberry Pi
(+13) Мини ITX кластер Turing Pi 2 c 32 GB RAM
(+2) Обзор сетевых протоколов и протоколов обмена сообщениями для IoT
JAICF фреймворк для разработки чатботов на Kotlin
Nokia сделает лунный 4G для NASA
Huawei займется автомобилями
Четыре готовых проекта машинного обучения для начинающих
Обнаружение объектов со скоростью 1840 кадров в секунду с помощью TorchScript, TensorRT и DeepStream

< Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку пришлите, пожалуйста, в почту.
Подробнее..

Дайджест интересных материалов для мобильного разработчика 368 (26 октября 1 ноября)

01.11.2020 14:16:24 | Автор: admin
В новом дайджесте проверка иконки сплеша, история одного рефакторинга и одного однорукого интерфейса, стандарты code review и обновление Firebase, сетевое мышление, Kotlin Developer Nanodegree, работа с Unity Asset Store и многое другое!

Скоро Хэллоуин, а FunCorp традиционно обновляет к некоторым праздникам иконку и сплеш. Сейчас именно такой случай, потому что большинство наших пользователей находятся в США. Задача показалась тривиальной, я быстро составила базовый чек-лист на 8 пунктов, но в процессе нашла ещё несколько кейсов, и он вырос до 13-ти (прилагается).

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+4) Использование Enum + Associated Values при навигации и передаче данных между экранами в iOS приложениях
Apple повышает цены в App Store
Добро пожаловать в MVVM-маршрутизатор с SwiftUI и Combine
Начинаем работу со Swift для WebAssembly на macOS с помощью SwiftWasm
SwiftUI 2.0: как анимировать Launch Screen
Как использовать код C++ в Swift
Вещи, которые вы обязательно должны знать как iOS-разработчик (часть 1)
Рисуем линии с UIBezierPath
20 уроков, извлеченных из моего первого приложения для iOS в App Store
Анимированная самосортирующаяся круговая диаграмма на SwiftUI 2.0
Как создать приложение со списком дел с помощью Firebase и SwiftUI
iPages: листаемые экраны
iOS 14 GUI: экраны и компоненты iOS 14

Android

(+19) Уязвимости в реализации межпроцессного взаимодействия в Android-приложениях
(+17) Обзор DataStore Library. Прощаемся с SharedPreference?
(+16) Это не я! История одного рефакторинга
(+6) 10 вопросов к поддержке HMS по работе с гибридными приложениями, AppGallery и эмулированию телефонов Huawei
Google начал сравнивать приложения в Play Store
Udacity запускает Android Kotlin Developer Nanodegree
Google удалил 3 детские игры с 20 млн. установок за сбор персональных данных
Выбор правильной архитектуры для [нового] приложения Kotlin Multiplatform, Jetpack Compose и SwiftUI
Топ 5 вопросов AMA Bumble Android
Понимаем режим запуска Android Activity
Навигация с SafeArgs)
Курс по продуктивной работе в Android Studio
Как запустить инструментальные тесты Android на реальных устройствах с помощью AWS Device Farm
DayNight темный режим без переписывания приложения
Меньше сбоев и больше стабильности с Kotlin
Понимание внутреннего устройства библиотеки LeakCanary в Android
Приложения Netflix Studio для Android и iOS теперь на платформе Kotlin Multiplatform
ViewBinding с Kotlin Property Delegate
Wave Lines Live Wallpaper: живые обои для Android
Red Screen of Death: информация о сбое

Разработка

(+202) Однорукий интерфейс: баг или фича, позволяющая Делимобилю отнимать деньги у пользователей?
(+4) Диалоги в мобильных играх
(0) Разработка инди-киберпанка
(0) Про пользу E2E тестирования
Егор Толстой: смена работы, MBA в Сколково и продукты для разработчиков
Podlodka #187: я пишу на Fortran
Flutter Dev Podcast #21: Surf
CodeSandbox получает $12.7 млн. на no code платформу совместной разработки
13 стандартов code review, вдохновленных Google
Дизайн приложений: примеры для вдохновения #21
Обновление Firebase: эмулятор Firebase Authentication, расширение Detect Online Presence, инструменты анализа данных
5 самых сложных языков программирования в мире
3 упражнения для приведения вашего фитнес-приложения в форму
Коалиция за справедливость приложений получила 400 заявок
Как выбрать подход к управлению проектом разработки мобильного приложения
Решение проблем дизайна с помощью сетевого мышления
Smart People: изучение UI)
Хранение данных в Google Таблицах с помощью приложений Xamarin для iOS и Android
5 признаков того, что вы зря тратите свою жизнь как разработчик
9 привычек крайне неэффективных программистов
Как добавить геолокацию в PWA
Как изменение одной строки уменьшило время сборки на 99%
Почему я люблю TDD
Android против iOS: философия дизайна в простых предложениях
Как измерить успех вашего игрового дизайна
DeepPanel: поиск кадров в комиксах с помощью машинного обучения

Аналитика, маркетинг и монетизация

(+15) Как я в одиночку питчил игру, не имея в этом никакого опыта
(+13) Что такое Unity Asset Store и как на нем зарабатывать?
(+6) Принципы онбординга новых пользователей
make sense: О метриках, сегментации и монетизации в играх, и применении игровых механик в продуктах
Hubilo: от аналитики к онлайн-событиям
AppFollow получил $5 млн. в Серии А
AppsFlyer представляет Incrementality инструмент, который позволяет оценить ремаркетинг
Узнайте всё о важнейших трендах в индустрии мобильных финансов в новом отчете Adjust
Pickle: возвращение классических социальных сетей
Сезонное ASO приложения: как адаптировать графику к праздникам?
Геймификация: 11 советов по повышению вовлеченности и удовлетворенности пользователей

AI, Устройства, IoT

(+39) Свой путь в мире, где есть готовое решение для всего
(+38) Как мы автоматизировали стрипушник на Walking street
(+15) Уменьшаем потребление ESP8266 при автономной работе с датчиками
(+6) Путь одной команды от велосипедов до IoT-платформы
Xiaomi обогнала Apple в поставках смартфонов и рвется на второе место
Отчет Состояние мобильного машинного обучения в 2020 году

< Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку пришлите, пожалуйста, в почту.
Подробнее..

Категории

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

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru