ЕСТЬ НОВОСТЬ

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

Как мы покоряли горные вершины Шерегеша

Делимся впечатлениями от прошедшего корпоратива на заснеженных вершинах Шерегеша.

 

В пятницу, 1 марта, мы дружной компанией отправились в увлекательное путешествие по горной Шории.

 

Опытные лыжники и сноубордисты забрались повыше — на гору «Зелёная», «Лоб», «Мустаг», а новички вместе с инструкторами поехали на «Булочку». Само собой, не обошлось без падений и ударов, но наши ребята вставали и двигались дальше!

 

Так и прошёл наш уикенд на заснеженных склонах Шерегеша — шумно, дружно и спортивно!

 

 

Больше интересных новостей и фотографий ищи в наших соцсетях — ВК и FBInstagram.

Читать дальше Скрыть подробности

Почему ты должен знать Go?

Рассказываем о том, что такое Golang и в чем причина его популярности.

 

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

Почему Go?

Golang – это статически типизированный, компилируемые, императивный язык программирования, разработанный в Google для решения проблем, возникших в условиях огромных масштабов компании.

Go – очень простой язык программирования. Грамматика языка содержит 25 ключевых слов (для сравнения: C99 имеет 37, C++11 около 84). Все выразительные возможности языка ортогональны друг другу, оператор цикла и тот один. Спецификация языка настолько короткая, что есть люди, которые прочитали ее полностью.

Gofmt and tooling

В Go есть почти все, что необходимо для качественной разработки. Например, gofmt – инструмент автоматического форматирования исходного кода, который устанавливает единый формат, что исключает целый класс споров между разработчиками. Наличие канонической формы также упрощает создание инструментов автоматического рефакторинга (codemod’ов).

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

Модель конкурентного исполнения

В Go реализована простая и мощная модель конкурентного исполнения на основе CSP. Она позволяет разбивать код на блоки, которые могут выполняться независимо друг от друга, координируя свою работу при помощи каналов. Кроме того, особенности языка Go дают возможность проще и быстрее контролировать все процессы, связанные с использованием и освобождением памяти.

Сборщик мусора

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

 

Хочешь познакомиться с Go поближе или узнать о других популярных технологиях и фреймворках? Звони (383) 332-44-29, пиши jobs@technologika.ru, подписывайся и следи за обновлениями в наших соцсетях: ВК и FB, Instagram.

Читать дальше Скрыть подробности

Как подготовиться к собеседованию в Технологике

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

 

- Расскажи, как происходит поиск новых сотрудников для Технологики?

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

- На что ты обращаешь внимание при просмотре резюме?

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

- По какой причине кандидат может нам не подойти?

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

- Насколько подробным должно быть резюме разработчика?

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

- Какие бы ты советы дала новичкам, которые ищут работу?

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

- Разработчики какого направления сейчас наиболее востребованы в Технологике?

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

 

 

 

Остались вопросы? Ищи информацию на нашей страничке на HH, задавай вопросы по телефону (383) 332-44-29, пиши jobs@technologika.ru и не забудь подписаться на наши соцсети: ВК и FBInstagram.

 

Читать дальше Скрыть подробности

Подводные камни React Native

Рассказываем о нашем опыте работы с кроссплатформенными фреймворками на примере React Native.

 

Кроссплатформенные фреймворки, такие как Flutter, Ionic, Cordova, React Native и другие становятся все популярнее среди мобильных разработчиков. Один из самых востребованных кроссплатформенных фреймворков, который используют в своих приложениях ведущие мировые компании – это React Native. О преимуществах этого фреймворка мы недавно уже писали. А в новом материале мы расскажем о том, с какими трудностями столкнулись наши мобильные разработчики в работе над реальными проектами на React Native.

Проблемы с чатом:

Современные мобильные приложения взаимодействуют со сторонними сервисами – Stripe, Facebook, Instagram и др. Далеко не все из перечисленных предоставляют готовые библиотеки для работы с этим фреймворком, что накладывает некоторые ограничения на использование этих сервисов. Так, например, нашему заказчику было необходимо приложение с использованием чата от Twilio.

Однако из-за отсутствия SDK ориентированного конкретно под React Native и готовых библиотек, нам пришлось идти на компромисс и использовать SDK для браузерного JS. Одна из особенностей мобильных приложений – наличие состояния бэкграунда, когда приложение свернуто. Из-за этого используемая нами библиотека не всегда работала верно. Так, например, у нас переставал грузиться чат при переводе приложения в активное состояние. Однако в большинстве случаев использование браузерных библиотек может ускорить процесс разработки и облегчить вам жизнь.

Архитектурные проблемы:

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

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

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

Также при первом знакомстве с React Native мы углубились в документацию фреймворка на официальном сайте. В разделе «Getting started» утверждается, что Expo – это самый простой путь, чтоб начать разрабатывать новые React Native-приложения, поскольку большинство полезных функций уже реализовано в нем. Но по мере усложнения проекта нам стало крайне необходимо использовать некоторые нативные решения, что невозможно при работе с Expo. Пришлось переходить на ExpoKit, с которым уже можно использовать нативные библиотеки. Поэтому, рекомендуем начинать разработку уже на основе ExpoKit, а не Expo.

Push-уведомления:

Большинство современных мобильных приложений для оповещения пользователя о каких-то событиях использует push-уведомления. В нашем приложении эта функция была реализована при помощи Expo. Однако оповещения работали не на всех версиях приложения. Для того, чтобы нотификация работала как на Android, так и на iOS нам пришлось реализовать комбинированный способ работы с push-уведомлениями: на iOS мы использовали нативную реализацию, которую предлагает сам React Native, а для Android воспользовались ExpoKit.

Проблема с авторизацией:

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

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

При работе с React Native важно: 

  1. Писать не на JS, а на TypeScript. Иначе код сложно читать, поддерживать и расширять;
  2. Грамотно выстроить архитектуру приложения с учетом использования библиотек, в т.ч. Redux;
  3. Разрабатывать на основе ExpoKit;
  4. При возникновении проблем, связанных с использованием библиотек, не стоит бояться модифицировать исходный код, ставить в нем логи.

Хочешь познакомиться с React Native поближе или узнать о других кроссплатформенных фреймворках? Звони (383) 332-44-29, пиши jobs@technologika.ru, подписывайся и следи за обновлениями в наших соцсетях: ВК и FB, Instagram.

Читать дальше Скрыть подробности

Иллюзия обмана: без фокусов не обошлось!

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

 

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

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

 

 

За музыкальную составляющую вечера отвечали ребята из группы He called her Jen, которые порадовали Технологику своим репертуаром и неповторимым стилем.

 

 

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

 

Читать дальше Скрыть подробности

Как далеко мы заплыли

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

 

 

Первый чемпионат Азии в классе J/80 проходил в Китае в Тайваньском проливе. В гонке принимали участие 26 экипажей из 10 разных стран – Канада, США, Китай, Япония и другие.

 

 

Несмотря на высокую конкуренцию команде из России все-таки удалось одержать победу в этом непростом соревновании.

 

 

Поздравляем Дмитрия Глотова и других членов экипажа!

Читать дальше Скрыть подробности

Как мы осваиваем практики DevOps

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

 

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

Что такое DevOps?

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

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

Главная идея DevOps состоит в том, чтобы стандартизировать разработку. Для этого используются следующие инструменты:

  1. Используется контроль версий не только для кода продукта, но и для инфраструктуры, что позволяет контролировать все изменения продукта и в любой момент развернуть окружение для его исполнения;
  2. Используется автоматическая сборка, которая позволяет не зависеть от настроек конкретного разработчика и минимизировать время между написанием кода и выявлением в нем проблем;
  3. Используется автоматическое тестирование, чтобы повысить качество выпускаемого продукта;
  4. Используется автоматическое развертывание на промежуточной тестовой среде, которая максимально приближена к условиям промышленной эксплуатации что позволяет заранее протестировать продукт;
  5. Используется автоматическое развертывание продукта после утверждения выпуска;
  6. Осуществляется мониторинг работы развернутого приложения, для своевременного реагирования на сбои в работе.

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

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

Наш опыт:

Мы в Технологике уже знакомы с DevOps и применяем этот подход в работе над некоторыми нашими проектами. Среди которых разработка uber-подобного сервиса для американского заказчика.

Проект включал в себя сервис API, три web-приложения и две версии мобильных приложений. В проекте было задействовано около 20-и человек, а время между релизами составляло две недели. DevOps с его направленностью на скорость и качество разработки оказался наиболее оптимальным подходом для этого проекта.

Разработка велась с использованием сервисов Amazon, инструменты которого позволили нам успешно применить практики DevOps. Нам удалось увеличить скорость сборки и развертывания приложений, а также минимизировать вероятность человеческой ошибки во время этих процессов. Кроме того, мы сократили время реагирования на проблемы с приложениями в production, количество регрессий при обновлении приложений и ускорили настройку новых окружений для тестирования.

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

Хочешь познакомиться с концепцией DevOps поближе или узнать о других современных подходах в разработке? Звони (383) 332-44-29, пиши jobs@technologika.ru, подписывайся и следи за обновлениями в наших соцсетях: ВК и FB, Instagram.

Читать дальше Скрыть подробности