Mad Devs Channel
1.8K subscribers
545 photos
28 videos
1 file
791 links
Канал Mad Devs.🤘Здесь мы рассказываем о жизни компании и инсайтах. Делимся знаниями и лайфхаками IT-индустрии.
Download Telegram
Сегодня полезный пост про линтеры.

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

Какими линтерами стоит пользоваться при разработке и организации непрерывной поставки (CI)? Ниже список от нашего CTO, Андрея Минкина:

1. Проверка стайлгайдов — pep8, go vet.
2. Проверка докстрингов — golint, pylint.
3. Проверка на мертвый код и неиспользуемые зависимости — deadcode, pyflake8.
4. Проверка на цикломатическую сложность (Cyclomatic Complexity) — gocyclo.
5. Проверка на безопасность и статический анализ AST — gosec, bandit.
Мы уже писали пост про изучение Go для начинающих. Оно, конечно, полезно, но что делать продолжающим? А продолжающим можно идти по следующим путям:

1. https://github.com/golang/go/wiki/Courses – официальный гайд от команды разработчиков Go. Покрывает внутренности языка, конкуренси, распределенные системы, сети и дизайн компилятора
2. https://github.com/hoanhan101/ultimate-go – отличный гайд для закрытия всевозможных зон некомпетенции от алгоритмов, до дизайна языка. От дизайна ПО до тестирования. Это более общий и широкий гайд, который будет отличным дополнением узкопрофильному и хардкорному варианту от разработчиков языка.

Развивайтесь и процветайте!
Иногда возникает необходимость изучить что-то срочно. Задача по переносу растущего проекта в облако может потребовать от ваших инженеров новых компетенций. Что делать, если нужно за очень короткое время освоить AWS и облака?

Есть множество разных курсов разной степени фундаментальности, но наши инженеры рекомендуют https://acloud.guru Этот ресурс с хорошим контентом по облакам также даёт рекомендации по тому, как лучше усваивать новую информацию.

Кроме того, "A Cloud Guru" имеет разбиение по ролям в компании – если вы разработчик или архитектор, можете выбрать Developer или Architect соответственно, чтобы получить доступ к материалом для вашей специализации. На ресурсе также доступна и подготовка к сертификации.
Уже много лет мы предоставляем IT-услуги сервису доставки Namba Food, который во время карантина обеспечивал жителей Бишкека едой и лекарствами, и сейчас продолжает активно работать. Проект предлагает различные варианты сотрудничества - от собственной брендированной страницы организации до полноценного партнёрства с развёртыванием аналогичного сервиса в другом городе и под другим брендом.

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

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

Namba Food: Top 1 Delivery Service in Central Asia
Чтобы не было мучительно больно, желательно всегда знать, что происходит у вас на продакшне. Решить эту проблему помогает хороший мониторинг. Какими системами стоит пользоваться? Ниже топчик от Чака (aka Andrew Minkin), CTO Mad Devs.

1. Sentry.io хорош для сбора ошибок с бекенда и фронтенда.
2. Crashlytics стоит использовать для проверки мобильных приложений.
3. New Relic даёт возможность сбора метрик по приложению, профайлинга и ошибкам.
4. Elastic APM – альтернатива New Relic.
5. Prometheus – хорошее хранилище метрик.
6. ELK подходит для анализа логов.

Мониторинг спасает от панического перетряхивания всего продакшна в попытках понять, что там происходит. Хороший и качественно настроенный мониторинг вовремя предупредит о проблеме и позволит локализовать её (у вас будет хотя бы примерное представление, что именно сломалось). Вы получите оповещение в Slack и отправитесь чинить правильную часть системы, не ломая ничего больше. Мониторинг – ваши глаза и ваш рентген, без него вы работаете вслепую.
Искусственный интеллект и машинное обучение постепенно изменят наш мир до неузнаваемости. Уже сейчас с помощью нейросетей можно генерировать тексты, превращать фотографии в картины, распознавать текст на фото.

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

Но есть и те, кто идёт ещё дальше. Учёные уже пробуют создать полностью цифрового человека – существо, которое выглядело бы как человек, при этом не являясь человеком. Один из них, Дуг Робл, даже рассказал об этом в докладе TED: https://www.youtube.com/watch?v=nJd_2mJ4u-I
Сегодня говорим про алгоритмы.

Где их изучить? Источников множество, но если вы новичок в программировании, лучше сразу выбирать хороший первоисточник, чтобы потом не переучиваться с плохого. Мы советуем материалы Роберта Седжвика (Robert Sedgewick), профессора Принстонского университета и бывшего члена совета директоров Adobe Systems. Он написал ряд книг по алгоритмам для нескольких языков программирования. Ещё на Coursera можно пройти два курса по алгоритмам, который Роберт Седжвик читает вместе с коллегой Кевином Уэйном:

https://www.coursera.org/learn/algorithms-part1
https://www.coursera.org/learn/algorithms-part2

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

В этот четверг мы проводим онлайн-вебинар, где наш специалист по Embedded System Engineering, Антон Козлов, выступит с темой:

«Что можно напечатать на 3d принтере, помимо ещё одного 3d принтера.»

На стриме вы узнаёте:
1. О том как нам преподносят трехмерную печать и чем она является на самом деле;
2. Трехмерная печать не серебряная пуля, недостатки технологии как: масштабируемость, цена, качество изделий;
3. Основные виды трехмерных принтеров доступных простому обывателю и принцип их работы;
4. Пример проекта в котором трехмерная печать ускорит разработку продукта.

После стрима будет сессия вопросов и ответов.

Ждем всех желающих!

Мероприятие начнётся в четверг 30 июля, в 17.00 по Бишкекскому времени.

Ccылка на стрим: https://youtu.be/klHxO9c1d2Y
Проверено Mad Devs: лучшие посты получаются из того, что по-настоящему бесит. Наш CTO Андрей (Чак) Минкин однажды потратил 14 часов, чтобы запустить Geo Django на ElasticBeanstalk. Если вам тоже нужно сделать это, и вы не желаете изобретать колесо заново, прочитайте статью (но учтите, что она на существует только английском языке)

🧨 Running Geo Django on ElasticBeanstalk
Более 270 километров в день на велосипеде!

Наш CTO Чак (Андрей Минкин) и разработчик Анатолий Федоренко проехали от Бишкека до озера Иссык-Куль ради прекрасных видов и испытания себя на прочность.

Удалось не только доказать, что такое в принципе возможно для не профессионального спортсмена, но и выявить некоторые ошибки, которые не стоит совершать при таких длительных поездках. Подробности про Mad Bike Trip можно почитать на Medium:

🚴‍♂️ Бишкек – Иссык-Куль на велосипеде 🚴
У нас в Mad Devs удалённая работа строится с помощью разных типов созвонов. Проверенный факт – разные форматы идентичной активности помогают работать более продуктивно. Возможно, наш опыт пригодится там, где офисы всё ещё пусты.

1. A stand-up sync – обычный созвон на 15 минут, где участники команды просто рассказывают о том, что было сделано вчера и делятся планами на сегодня, а также озвучивают проблемы. Споры и выяснения отношений не предусмотрены. Может происходить раз в день.

2. Blame sync – созвон, предназначенный специально для споров и выяснения отношений. Можно орать, ругаться (в том числе нецензурно), наезжать, требовать и получать по заслугам. Проводится раз в неделю.

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

4. Rush session – созвон, на котором рабочая группа намерена в течение определенного времени (например, 2 часов) сделать максимум работы, решить максимум проблем и вскрыть максимум "черных ящиков". Обычно на этом созвоне присутствует не менее двух менеджеров (одному не справиться). Они быстро пробегаются по проблемам, добавляют к себе на созвоны нужных ребят на 10-15 минут, пишут доки, делают звонки, и всё это в максимальном темпе. Такой формат может применяться раз в день, если в проекте очень много блокеров.

5. Silent session – созвон, при котором все отключают звук и тихо, спокойно работают. Может продолжаться в течение всего рабочего дня. По сути это замена текстового чата. Для такого формата подходит push-to-talk voice chat.

6. Drunk sync – созвон, на котором народ собирается и общается на разные темы, в том числе далёкие от работы. Алкоголь разрешён. Назначается такой созвон раз в неделю, обычно по пятницам.

7. Engineer sync – созвон, на котором инженеры обсуждают новости, проблемы, делятся опытом. Проходит раз в неделю.
Кибирд #18 – Программист в штатском

Равняясь, смирно! Как вы думаете чем отличается прогер в штатском от бывалого программиста-вояки? Такое вот условное разделение на сей раз будут обсуждать бессменные ведущие Кибирда – Олег Пузанов и Михаил Иващенко.

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

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

Больше деталей в нашем видео, подписывайтесь на канал, ставьте лайки и оставляйте комментарии, нам важно ваше мнение.
Наш CTO и сооснователь компании Андрей Минкин принял участие в записи подкаста The Art of Programming по теме "Честные аутсорсеры и знания" для докладчиков Knowledgeconf.

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

https://blog.golodnyj.ru/2020/06/222-art-of-programming-knowledgeconf.html
Ни один бизнес в Интернете не сможет функционировать без надёжной системы получения оплаты от конечных пользователей. Система приёма платежей должна соответствовать современным требованиям к безопасности и работать без сбоев и ошибок.

Писать собственную платёжную систему с нуля нецелесообразно – рынок таких систем уже достаточно развит, чтобы подключить стороннюю готовую разработку. Обычно мы рекомендуем своим клиентам Stripe и Stripe Connect

С одной стороны, интеграция Stripe и Stripe Connect удобна благодаря подробной документации и хорошему API. С другой стороны, если у вас нет опыта подобных интеграций, вы можете столкнуться с подводными камнями и потратить много времени на решение известных проблем. Чтобы этого не произошло, ознакомьтесь со статьёй нашего разработчика Анатолия Федоренко:

https://blog.maddevs.io/opyt-vnedreniya-stripe-connect-v-e-commerce-proekty-b6c7a6458418
Progressive Web Apps - что это такое и для чего оно нужно

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

Ответ на этот вопрос даёт концепция Progressive Web Apps (PWA) от Google. Она позволяет легко адаптировать имеющееся веб-приложение под нужды мобильных пользователей. Такими функциями, как работа offline и отправка push-уведомлений интересуется большинство заказчиков, и PWA позволяет их воплотить, сокращая при этом время выхода на рынок. Подробнее об этом в статье нашего разработчика Дениса Грушкина:
Mad Stream продолжается! 🔥🔥🔥

В этот четверг мы проводим онлайн-вебинар, где наш бэкенд-разработчик Медер Аккозов, работавший над алгоритмами в проектах Diesel, Peklo и GoDee, расскажет, как правильный алгоритм помог сократить время создания маршрута в GoDee с 1-6 месяцев до 15 минут. Подключайтесь к нашему стриму «Как алгоритмы помогают разработчикам и бизнесу?»

Вы узнаете:
– что стоит изучить, кроме пузырьковой сортировки;
– как использовать алгоритмы в реальной задаче;
– зачем надо знать алгоритмы.

После нашего Mad Stream будет сессия вопросов и ответов.

Будем ждать всех желающих!

Мероприятия начнётся в четверг 13-го августа, в 18:30 по Бишкекскому времени.

Ccылка на стрим: https://www.youtube.com/watch?v=ChSLHG33B6o&feature=youtu.be
Как сделать три платных сервиса ETA одним бесплатным

Метрика "ожидаемое время прибытия" (Estimated Time of Arrival, ETA) - одна из самых нужных для любого такси или сервиса общественного транспорта. Пользователи хотят знать, сколько им осталось ждать, и лучше, чтобы расчётное время ожидания максимально совпадало с актуальным.

На практике ETA можно определить за счёт двух главных факторов - географического расстояния между точками и наличия либо отсутствия пробок. Для всего этого существуют уже существуют готовые решения. Но как же быть с количеством запросов к сервисам при ограниченном бюджете? Об этом - в статье нашего бэкенд-инженера Медера Аккозова.