fbpx
Have something to share about engineering practices, architecture or DevOps?
Become a speaker now

Archive for August, 2015

The Transition from Product to Infrastructure

Over the past number of years, operations has become a very interesting part of IT. Traditionally, operations and developers have been completely separate. Developers thought SysAdmins worked in basements, eating pizza. But, the operations space has had a boom in new tools to make life a lot easier. The role of SysAdmin has become a very important part of the product delivery cycle.

Paul has made the transition from being a product developer to an infrastructure developer. In this talk, he will be able to talk about why that was an interesting move and the types of problems he has to work on on a day-to-day basis. Paul will be able to talk about how this move has helped him be involved in much more successful project delivery and also how it has helped the companies he has worked with become more successful.

Video:

Continuous Delivery – the missing parts

A lot of developers have started to believe that hooking Visual Studio up to Azure and pushing code direct from their machines is CD. As much as I hate to say it, it isn’t. Continuous delivery has so many more moving parts required to work together.

As we discuss concepts such as config management, orchestration, security, monitoring and logging, this talk will help developers realise that continuous delivery is something we need to continually measure, learn and adapt to make us a higher achieving organisation.

Video:

Paul Stack

Paul Stack is a London based infrastructure engineer. Paul has spoken at various events throughout the world about his passion for continuous integration and continuous delivery and why they should be part of what developers do on a day to day basis. He believes that reliably delivering software is just as important as its development. Paul’s newest passion is the DevOps movement and how this helps not just development and operations but the entire business and it’s customers.

Becoming a Better Programmer

You’ve come this conference to improve your skills. You’re here to learn: to learn new technologies, to learn new techniques, and to fuel your passion by meeting like-minded people.

Becoming a better programmer means more than just learning new technologies. It means more than practising techniques and idioms. It’s about more than passion and attitude. It’s the combination of all these things. That’s what this session will look at.

Pete Goodliffe, author of the book Becoming a Better Programmer, unpacks important mindsets and techniques that will help you improve as a programmer. You’ll discover specific tools that will help you review your current skillset, and you’ll learn techniques to help you “become a better programmer”.

Video:

Pete Goodliffe

Pete Goodliffe is a programmer, a software development columnist, a musician, and author. His new book, Becoming a Better Programmer, has just been released by O’Reilly. Has has a passion for curry and doesn’t wear shoes.

Produсtonomicon. Antipatterns.

Kill your product with minimal efforts! Best practices and solutions are to be applied to your management, sales, team, architecture and code approaches ever.

Video:

Training “TDD in .NET”

Целевая аудитория

.NET разработчики.

!!! Внимание !!! Для выполнения практических заданий участникам требуется ноутбук (как минимум один на двоих)!

Описание тренинга

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

Разработка через тестирование (Test Driven Development – TDD) решает эту и ряд менее очевидных, но не менее важных проблем. Наверное, каждый слышал об этой технике, но далеко не все знают, как правильно ей пользоваться. И уж совсем немногие осознают, что TDD – это весело и продуктивно.

Данных тренинг позволит вам в компании коллег и под чутким руководством людей, практикующих TDD каждый день, пройти путь от ответа на вопрос “что ж это такое – TDD!?” до владения набором практик и знаний, которые сделают вашу жизнь разработчика намного легче и приятнее.

После прохождения тренингов слушатели смогут навсегда забыть о сомнениях “что делает/должен делать этот код” и обретут душевное равновесие и спокойствие на работе. Обилие практических заданий позволит попробовать все изложенное на деле и улучшит восприятие материала.

Детальная программа

Тренинг разбит на 8 полуторачасовых модулей:

  • Модуль 1. Введение
    • Что такое TDD, в чём его польза
    • Методика работы по TDD, основные правила и принципы
  • Модуль 2. Hello World
    • Начинаем работать
    • Пробуем Arrange/Act/Assert
    • Проектирование через тестирование
  • Модуль 3. Погружение
    • Тестовые двойники
    • Организация тестов
    • Запахи тестов
  • Модуль 4. Инфраструктура
    • Dependency Injection и его роль в TDD
    • Роль Continuous Integration в TDD
    • Метрики TDD
  • Модуль 5. Проверяем закрома (базы данных и прочие хранилища)
    • Взаимодействие с источниками данных
    • Интеграционные тесты на базу данных
  • Модуль 6. Welcome to real world
    • Взаимодействие с другими сервисами и системами
    • Изоляция тестов
    • Интеграционные тесты на сервисы
  • Модуль 7. UI
    • Тестирование пользовательского интерфейса
    • ASP.NET (MVC)
    • Winforms / WPF
  • Модуль 8. Наследие предков (legacy code)
    • Рефакторинг через тестирование

Training “Agile Mindset in systems design. Requirements, architecture, process.”

Инженерный agile mindset – это бизнес-обоснованность инженерии плюс частые поставки just in time.

Вспомните, когда в последний раз Вам приходилось из последних сил доказывать преимущества архитектурного решения, но так и не достигнуть успеха. Или когда вы с триумфом внедряли на первый взгляд абсолютно верное решение, терпящее в последствии полное фиаско. Подобные моменты порождают ряд справедливых вопросов: «Что я сделал не так? Как грамотно и логично преподнести свою точку зрения? В чем разница и где грань между осознанными и обоснованными архитектурными решениями и дилетантским подходом?»
Этот тренинг про здравый смысл – про обоснованность инженерных решений в условиях неопределенности. Мы разберем, от чего зависят инженерные решения и научимся четко обосновывать их. Задумаемся, какими должны быть ожидания от архитектутры и есть ли она вообще у Вас в проекте. Научимся объективно решать инженерные конфликты, и Вы навсегда забудете слово «холивар». Совершенно по-новому взглянем на шаблоны проектирования и теперь выжмем из них максимум. Поймем, как эффективно выстраивать документацию к системе, чтобы она действительно начала работать, а не была write-only. Научимся фокусироваться в своих решениях и наконец-то выясним, с чего начинать – со схемы БД или concurrency design. И одна из важнейших вещей тренинга – научимся не делать лишнюю работу. Мы научимся сжимать архитектурный этап без потери качества, чтобы как можно быстрее начать поставки.

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

Для кого

  • Для инженеров: архитекторов и разработчиков.
  • Для техменеджеров: тимлидов и техлидов.
  • Для менеджеров: проектных менеджеров и продуктовых менеджеров

Опыт на старте

  • Ожидаемый уровень участников: базовый и уверенный.
  • Желателен опыт промышленной разработки от 1 года.

После тренинга участники смогут

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

Программа

  • Постановка проблем
    • Знакомство и сбор проблем участников
    • Обзор тренинга
    • Разбивка на команды
  • Зачем нужна архитектура – как не угробить проект
    • Что такое архитектура?
    • Где граница микро-дизайна и архитектуры?
    • Кто является потребителем архитектурных артефактов?
    • На какие ответы должна отвечать выбранная архитектура?
  • Архитектура как план рисков – компенсировать неопределенность будущего
    • Какие источники проектных рисков мы можем выделить?
    • Как на ранних этапах можно адресовать внешние риски в своей архитектуре?
    • Как на ранних этапах можно адресовать внутренние риски в своей архитектуре?
    • Границы системы и способы их фиксации
  • Архитектура как план проекта – повысить эффективность производства
    • Какие требования предъявляет к архитектуре PM/РП?
    • Как можно по архитектуре создать план проекта?
    • Видно ли критический путь?
    • Как распараллелить работы?
  • Архитектура как требования к компонентам – обеспечить гибкость и снизить стоимость поддержки
    • На какие предположения мы опираемся при проектировании с использованием готовых компонентов или внешних систем?
    • Как можно сформулировать наши ожидания от внешних компонентов?
    • Как адресовать риски несоответствия нашим ожиданиям?
  • Требования к архитектуре: начало чеклиста – что не забыть и не упустить
  • Архитектурная методология – как принимать инженерные решения в пользу бизнес-потребностей и делать решения прозрачными для бизнеса
    • От чего зависят решения в дизайне и архитектуре? Где найти ответы, чтобы обосновать их?
    • Как компенсировать неопределенность требований?
    • Как обосновать решения по методологии?
  • Архитектура как функция от требований – как делать что нужно, снизить rework и повысить удовлетворенность клиентов
    • Какие виды требований можно выделить?
    • Как можно определить «критические пути» в требованиях?
    • Как требования определяют границы системы?
    • Какие знаете типовые переходы «профиль требований → типовая архитектура»?
    • Отдельно про масштабируемость
  • «Компромисс» и «Специализация» – как принимать решения в случае конструктивного конфликта ожиданий
    • В каком соответствии находятся требования?
    • Как инженерными решениями адресовать эти связи между требованиями?
  • Как относиться к шаблонам проектирования – их ценность и проблемы
  • Архитектурные точки зрения и документирование архитектуры – как тратить ресурсы сфокусированно и рано адресовать риски
    • В каком виде можно документировать архитектурные решения? Какие артефакты можно выдавать?
    • Что важнее – схема БД или concurrency design?
    • В какой момент документировать и что?
  • Требования к архитектуре: продолжение чеклиста
  • Что бизнес хочет от архитектуры?
    • Как начать поставлять быстрее?
    • Сжатие архитектурного этапа без потери качества
  • Архитектурная методология – как проектировать в условиях внешней неопределенности
    • Что вы делаете, если не знаете будущих изменений?
    • Оси вариативности требований
    • BDUF vs YAGNI
    • Инкапсуляция изменчивости
  • Архитектурная методология – как проектировать в условиях внутренней неопределенности
    • Ключевые ожидания к компонентам, исходя из требований
    • Ранние проверки ключевых контрактов
    • Внешняя и внутренняя экспертиза, каркасные прототипы
    • Тесты как ранняя проверка контракта
  • Требования к архитектуре: завершение чеклиста
  • Итоговая ретроспектива: что применить на производстве уже завтра

В чем отличие от других тренингов по архитектуре и проектированию в Agile

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

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

Workshop “Microservices Lifecycle”

Microservices are becoming more and more popular and, as with every other new trend, often implemented without enough experience. Idea behind them easy to explain. Brake monolithic application into smaller independent services. That’s it. That is what many think microservices are about. However, implementation is much harder to master. There are many things to consider when embarking down this path. How do we organize microservices? Which technologies to use and how? Should they be mutable or not? How to test them? How to deploy them? How to create scalable and fault tolerant systems? Self-healing, zero-downtime and logging? How should the teams be organized? Today’s successful implementations of microservices require all those and many other questions to be answered. It’s not only about splitting things into smaller pieces. The whole development ecosystem needs to be changed and we need to take a hard look at the microservices development lifecycle.

This workshop will go through the whole **microservices development lifecycle**. We’ll start from the very beginning. We’ll define and design architecture. From there on we’ll move from requirements, technological choices and development environment setup, through coding and testing all the way until the final deployment to production. We won’t stop there. Once our new services are up and running we’ll see how to maintain them, scale them depending on resource utilization and response time, recuperate them in case of failures and create central monitoring and notifications system. We’ll try to balance the need for creative manual work and the need to automate as much of the process as possible.

This will be a journey through all the aspect of the lives or microservices and everything that surrounds them. We’ll see how microservices fit into continuous deployment and immutable containers concepts and why the best results are obtained when those three are combined into one unique framework.

Technical requirements

It is an hands-on workshop and will require participants to bring their own laptops. Participants should have laptops with at least 8 GB of memory. Each of them will receive a script (tested on Ubuntu, MacOS and Windows) that will setup the whole environment required for the workshop.

Training “Agile Testing”

Целевая аудитория

Разработчики, тестировщики, менеджеры проектов, лидеры команд.

Описание тренинга

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

Классическое тестирование в динамичной среде работает с минимальной эффективность и пора искать новые подходы, которые смогут повысить результативность команды и при этом выпускать продукт требуемого качества в срок. Многие, кто говорит об Agile разработке, пропускают тестирование или говорят о том, что нужно использовать автоматизацию и заставлять разработчиков писать автотесты. Это правда, но лишь отчасти. Инженер по тестированию в Agile команде может принести много пользы, но это требует определенной подготовки и навыков. Использование старых артефактов и подходов к тестированию может погубить проект или превратить его в бюрократическую машину, что приведет к старой модели мини-водопадов. Так же не стоит забывать, что Quality Assurance – это ответственность всей команды, а не отдельно-взятого человека.

Многие говорят, что Testing Is Dead, но мы с этим не согласны и считаем, что это очередной маркетинговый ход. Тестирование не умерло, оно эволюционировало в новую форму, информацию о которой мы и хотим вам донести на тренинге.

Детальная программа

День 1

Модуль 1

Модуль 2

  • Первые фазы проекта
    • Идея
    • Lean Canvas/Бизнес модель
  • User Stories Workshop
    • User Personas
    • Specification by Example
    • Story Mapping
    • Minimal Working Product
    • Acceptance Criteria
    • Как тестировщики могут помочь в этом процессе?

Модуль 3

  • Работа по методологии Scrum
    • Что такое Scrum?
    • Подготовка Product Backlog
    • Sprint 0
    • Sprint Backlog
  • Этап планирования
    • Что такое Story Point?
    • Planning Poker
    • Иерархия задач
    • Оценки задач со стороны тестирования
    • Почему Testability это важно и как этого добиваться?
  • Практика: Эмитация Planning Poker для оценки в Story Points
  • Что такое Acceptance Testing?
    • Приемочный сценарии
    • Gherkin синтаксис
  • Практика: Написание приемочных тестов на подготовленные User Stories
  • Стратегия тестирования продукта
    • Нужен ли тест план?
    • Что такое тестовая стратегия?
    • SFDPOT
    • Функциональная карта системы
    • Практики тест дизайна
    • Pairwise, Tractability и прочие матрицы
    • Mockups

Модуль 4

  • Автоматизация
    • Классический подход к автоматизации в виде перевернутой пирамиды
    • Тестирование по подходу правильной пирамиды
    • Непрерывная интеграция
    • Сборка и установка проекта
    • Тестовое Покрытие
    • Использование автоматизации для облегчения рутинных задач
    • Должен ли тестировщик заниматься только автоматизацией на 100%?

Модуль 5

  • Acceptance Test Driven Development
    • Взаимодействие тестировщиков, аналитиков и программистов на ранних этапах разработки
    • 3 Amigo Meetings
    • Definition Of Done
  • Что может делать тестировщик, когда тестировать нечего?
    • Тщательный анализ документации
    • Подготовка тестовых данных
  • Создание Step Definitions для автоматизации
    • Помните о ваших пользователях
    • Демонстрация написания Acceptance Test на примере Cucumber-JVM
  • Практика: Создание функциональной карты приложения
  • Демонстрация программирования регрессионных тестов
  • Тестирование
    • Что такое тестирование?
    • Что такое исследование?
    • Что такое Exploratory Testing?
  • Тестовые квадранты и их заблуждение
  • Нахождение баланса между скриптовым и ad-hoc тестированием
  • Отчетность и документация
  • Нужны ли тест менеджеры?
  • Session Based Test Management
  • Взаимодействие тестировщиков и программистов на завершающих этапах разработки
  • Командный подход к тестированию

Модуль 6

  • Еще раз о критерии готовности – Definition Of Done
  • Демо и какая роль тестировщика в нем
  • Ретроспектива и о чем должен не забывать тестировщик
  • Готовимся к релизу и кто за него должен отвечать?
  • User Acceptance Testing
  • Как лучше проводить Performance Testing?
  • Когда начинать готовиться к Load Testing?
  • Стоит ли тестировать Security?
  • Pre-production
  • Production
  • Схема работы в Scrum командах 5-9 человек
  • Подведение итогов первого дня
  • Советы и рекомендации тренера

День 2

Модуль 7

  • 10 принципов Agile тестировщика
  • Одна итерация в жизни Scrum тестировщика
  • Enterprise Scrum и проблемы с тестированием зависимостей
    • Обязательные митинги для тестировщиков
    • Варианты синхронизации с членами команды
    • Рекомендуемые документы для работы
  • Частые проблемы организации процесса тестирования в больших командах

Модуль 8

  • Цель от бизнеса: делать поставку чаще
  • Правила методологии Kanban
  • Что ждет тестировщиков в еще более динамичном процессе?
  • Больше дисциплины, культуры разработки и автоматизации в команде
  • Определение частых застоев (bottlenecks) в процессе разработки
  • Как избежать и решить застои?
  • Как работать с WIP ограничениями?

Модуль 9

  • Практика: Имитация процесса разработки в динамической среде
  • Практика: Серия Debrief митингов
  • Практика: Подготовка отчета о тестовой сессии

Модуль 10

  • Процесс учета задач и конфигурация специализируемых систем
  • Документация или как не превратиться в бардак или бюрократизированную машину?
  • Как переходить к Agile разработке?
  • Стоит ли переходить на Agile разработку?
  • Agile анархисты и их истории
  • Частые проблемы, с которыми может столкнуться тестировщик в новой среде
  • Подведение итогов второго дня
  • Рекомендации и советы тренера

Price of the data you’ve lost

I’ve been working as software engineer for a long time and almost every time I am introduced to a new application I feel desperation on the data organization within it. When I have a chance to talk to developers they explains me that it is done according to initial requirements or because of performance reasons or even because of YAGNI and KISS principles.

As a result, huge amount of incredibly valuable information was lost and was lost intentionally. It is not their direct fault because it was implemented “exactly” what they had been told. However, I do think that the design flaws were so obvious that the guys should at least be ashamed.

I want to share my vision on the application design in terms of data processing. I will show how precious data can be and why you cannot take it lightly. Code aside I will be talking only about data and data alone. I hope it will help you avoid numbers of design pitfalls when it comes to data.

Video:

Luxoft

Luxoft is a top quality IT service provider of high-end business solutions to clients across the globe. With deep domain expertise in the finance, telecom, energy, automotive, travel and aviation industries, the company consistently goes beyond its clients’ expectations by bringing together technology, talent, innovation, and the highest quality standards.

Luxoft Ukraine is the region’s leading IT outsourcing provider, delivering software development services to global and national organizations. Established in 2005 in Kiev, Luxoft Ukrainenow includes more than 3500+ professionals serving more than 40 global clients from its delivery locations in Kiev, Odessa and Dnepropetrovsk.

Combining the country’s engineering legacy and Luxoft’s best-in-class processes, quality, flexible engagement models and innovative approach to software delivery, Luxoft Ukraine develops high-end solutions, product engineering, R&D and embedded systems development for such industries like automotive, travel and aviation, financial, energy, telecom and technology industries.

We continue growing and developing, which causes a large number of vacancies for IT-specialists of various specializations.

 

java_the delivery

 

Key facts:

  • #1 in the field of custom software development in Eastern and Central Europe – as rated by Datamonitor Group
  • 9000+ employees worldwide
  • 14 years of continuous growth
  • 130+ clients, 30% from Fortune 500
  • 27 offices in 16 countries
  • 750+ internal IT trainings annually

For more information visit www.luxoft.ua.
Careers: www.luxoft.ua/robota/.

Estimation patterns for engineering tasks. How to avoid comparison of warm with soft.

Estimates is one of the most difficult issues in SWE. It’s not because of lack of our competencies but complexity and non-linearity of social and software systems.
In this talk I’ll try to show why sometimes we can’t do estimate at all but sometimes we can. We’ll see the patterns of internal engineering complexity and tools to deal with it. What’s the difference of R and D and how to estimate in these contexts. So for outcome I want to give some working patterns of estimating you can take to your project rigth now.

Points of View: key to good communication in the team – see quality behind diagrams

I think the root of all evil in software development is misunderstanding and communication impedance of the team. Especially if team members are in different production roles. This directly leads to project and product fails.

In case of issues and fails team members reactively solve it. But can we behave more proactive? This means managing quality early and not to be a hostage of issues.
Yes, we can! And the key to proactive quality management is to decrease mentioned misunderstanding and communication impedance of team.

In this talk I’ll describe team comminucation framework based on concept of Points Of View. Also we’ll disscuss three particular patterns you can instatly take away to your project. Please prepare your own project cases in form of text description or UML so we could discuss it.

Video:

Jon Jagger

I’m 2E years old (hex). I’ve loved software since I was 10 (dec). I run my own software consultancy specializing in practice, people, process, agility, test driven development, and complex-adaptive systems thinking. I built cyber-dojo.org to promote deliberate practice for software developers. I’ve worked with Accenture, Aviva, Cisco, Ericsson, Friends Provident, HP, Microsoft, Opera, Ordnance Survey, RBS, Reuters, Renault F1, Schlumberger, Tandberg and many many more. If you don’t like my work I won’t invoice you. I’m the ex ECMA TG2 C# convenor. I’m the current ACCU conference chairman. I’ve had some C# books published. On twitter I’m @JonJagger.

Scaling To Infinity: The Quest For Fully Automated, Scalable, Self-Healing System With Zero-Downtime

It’s been a bit over a year since Docker released its first “production ready” release. A new door was opened and many of us stepped through. We are creating immutable containers and deploying them to production in a much easier and more reliable ways than we did before. However, with widespread usage of Docker a huge number of new possibilities started to emerge.

Can we automatically scale (and de-scale) services depending on traffic and server load? Do we need to know where will the applications be deployed? Can we treat all our servers as one big “server farm”? What can we do with auto-discovery? Can we recuperate from failures without human intervention? Can we truly accomplish zero-downtime?

This presentation will try to answer those and other questions. It is the result of different proofs of concept done as experiments as well as successful implementations of large scalable systems.

Video:

Viktor Farcic

Viktor Farcic is a Software Architect at Everis / NTT Data. He coded using plethora of languages starting with Pascal (yes, he is old), Basic (before it got Visual prefix), ASP (before it got .Net suffix), C, C++, Perl, Python, ASP.Net, Visual Basic, C#, JavaScript, etc. He never worked with Fortran. His current favorites are Scala and JavaScript even though most of his office hours are spent with Java.

His big passions are Behavior-Driven Development (BDD), Test-Driven Development (TDD) and Continuous Integration, Delivery and Deployment (CI/CD). He often speaks at community gatherings and conferences (latest can be found here). He is currently writing a book on TDD for Java developers that will be published by Packt Publishing.

Planning – “shmanning”, estimations – “shmetimations”

This talk was inspired by “The Black Swan: The Impact of the Highly Improbable” book written by Nassim Nicholas Taleb. I want to apply his ideas to IT industry and discuss absurdness of it’s basic practices like estimation and planning. Human beings have some very strange habits like building theories just to bring some facts together or believing in such theories with ignorance of facts where they don’t work at all. Managers want to play in such games and even measure success with metrics based on almost nothing – our ability to predict the future. Lets discuss how to change software development processes to avoid fooling yourself and your colleagues.

Video:

How to make your functional tests really quick

Functional tests are usually the slowest layer of automated tests for almost every product. They use product via UI, store data in real DB, integrate with external services and do other “slow” things. The first easy answer how to make them fast is to run in parallel. But in reality tests depends on the same data and intersect by some common functionality. In this talk we will review useful techniques and approaches how to win this battle.

Video:

IntroPro

IntroPro is a privately held service company that specializes at complete development and integration life cycle of complex distributed enterprise applications, embedded software products for digital TV broadcasting, Telecommunication Services, Financial, E-Commerce applications and software products for other industries. The company was established in 2008. By today more than 100 long term projects have been completed and the number of employees has exceeded 320 persons. IntroPro is a Certified Oracle Gold Partner. IntroPro is a market leader for RVU protocol-centric tools, products and services. The company has a considerable set of tool products dedicated to RVU protocol specification verification and certification. Production sites are located in Kiev, Ukraine. Major clients of IntroPro are DIRECTV, RVU Alliance.


 

Capabilities

Capabilities and Advantages

All IntroPro staff have a high level of education in Computer Science, Information Technologies and Applied Mathematics degrees from leading Ukrainian technical universities. The majority of engineers had graduated from the National Technical University of Ukraine and National Taras Shevchenko University with a M.S. degree. Senior members have 6 to 15 years of work experience. Majority of IntroPro staff possess extensive experience working for big international IT, Telecom and Software companies.

MANAGEMENT TEAM

Ready Resources to start New Project
Today IntroPro has resources that can be quickly assigned to a new Project or a new Customer. Advantage here is that the planned core resources can be relocated to the project from the bench.

Ability to make a quick additional staffing

IntroPro can make a quick additional staffing of the new project or account team. This is due to IntroPro effective HR practices combined with a good knowledge of local human resources market. IntroPro has a good reputation on the market with numerous advantages to the competitors.

Responsible partner ready for tight project schedules

IntroPro and its customers’ cooperation experience prove that IntroPro can meet the most tight schedule requirements.

Competitive rates and prices

Competitive rates and prices make an important advantage of IntroPro to the competition.

Flexible contract options

  • Flexible contract options
  • Fixed Price for customers with clearly defined requirements Time and Materials (for customers with projects in the process of being defined)
  • Hybrid — Time and Materials as the architecture and specs are defined, then a Fixed Price for implementation

Secure and safe development facilities

  • Safety and security of all project data is supported by the latest IT security technologies and are backed-up on regular basis
  • Source code is committed or pushed to Customer’s Source Control Infrastructure
  • Access to Customer’s servers and farms is over dedicated VPN link.

 

icon-execution

Project Management and Project Lifecycle

IntroPro is a project-oriented company with small management personnel overhead. Unified project management and SDLC methods used for majority of projects are Agile and Waterfall. Project management practices used in a company are closely following PMI organization recommendations. All project managers are capable to personally perform the most difficult tasks as the developers. This ensures that the project team members will be closely controlled and given a good advice. For project management IntroPro uses MS Project, Trac and other products. Also, for many projects the customer’s project management systems are used by the customer’s demand. Detailed weekly reports and if needed daily reports are the basis of successful projects’ progress information exchange with the customer.

For effective information and data exchange with customer following instruments are used:

  • Online weekly and daily meetings through WebEx tool
  • Repository of project working documents available for project teams from both sides

Key employees of IntroPro are often present at customer’s site at crucial phases of the project based on a customer’s demand – requirements specification clarification, initial design, deployment of application. For account management two approaches are practiced. First, a custom system is developed for specific customers. Second, a customer’s account/project management system is to be used when IntroPro managers had a direct access to the customer’s system. The choice here is to the customer.


 

icon-ea_department

Enterprise Applications Department

Applications Department is dedicated to execution of projects in the area of Enterprise Grade systems, Telecommunication services, E-Commerce and Financial software products
Enterprise Applications Department has a body of 140+ engineers specialized in enterprise applications analysis, development, integration and support. Knowledge of big number of modern operating systems and enterprise software development environments makes IntroPro specialists ready to fulfill the most challenging projects. IntroPro engineers have good expertise in Service-Oriented Architecture (SOA), Enterprise Service Bus (ESB) and Business Process Management (BPM) technologies. To realize SOA/ESB/BPM technologies the robust and reliable middleware platform and products are used from the leading industry vendors, like Oracle. IntroPro has a strong Analysts Team who are experts in existing customer’s systems analysis with conversion the applications to the new middleware architecture. IntroPro has developed a powerful tool for enterprise application analysis and transition to the SOA/ESB/BPM archtecture. IntroPro specialists are experienced with enterprise applications development, integrationm, migration for digital TV broadcasting, telecommunication and finance industries.


 

icon-es_department

Embedded Systems Department

Systems Department is involved in Embedded Systems and Mobile Applications Projects in highly specialized areas like Broadcast Television Set Top Boxes, Home Media Systems and GPS based systems. IntroPro has a body of 160+ engineers specialized in embedded and mobile software development and support. Knowledge of several operating systems is a must for Embedded Software Department engineers and usually includes Linux, Unix, QNX, Windows, iOS and Android . For a programming platform practically all IntroPro engineers are able to use C++, ObjectiveC and Java. This is a good advantage since majority of embedded and mobile systems use a mix of these programming technologies. Additionally there is an extensive list of other operating systems and development platforms where IntroPro engineers are keen. Having a good knowledge of embedded software development IntroPro engineers are also experienced in developing the PC-based tools that operate connected to the embedded systems. IntroPro specialists are experienced with satellite and cable TV set top boxes (STB) software technologies (Linux, STB software services and applications, drivers etc.), iOS and Android mobile applications development with a strong integration with Cloud services and Enterprise systems.


 

Software-Quality-Assurance

Quality Assurance Teams

Software-Quality-AssuranceIntroPro has a strong and dedicated Quality Assurance teams who are engaged in testing projects for both Embedded Software and Enterprise Applications Departments. QA knowledge gamut covers both industrial testing for Embedded Sevices, Functional manual testing for End User appliances like multiple hardware versions of Set Top Boxes, automated and Continuous Integration driven functional, performance and soak testing of Enterprise-grade server products.

READ MORE


 

icon-rvu

RVU Technology Team

IntroPro specialists have a deep knowledge of RVU technologies and RVU protocol specification. IntroPro was engaged in several RVU protocol-centered projects (see RVU Technology). Having starting these projects nearly 5 years ago when the first version of RVU protocol specification was introduced, byt today IntroPro specialists have accrued extensive RVU technology skills and experience including implementation of RVU stack. This makes to IntroPro an important advantage when participating in RVU technology-based projects.


 

Vacancies

Careers

Why to work at IntroPro and no to go to Outsourcing giants or hot startups? We provide long term stability in career, steep growing salary curve, and the most important, we give a chance to work with latest technologies which are hot trends at IT market both in Enterprise, Telecom and Embedded areas. You will have an opportunity to emerge into Java SOA Middlware stack, Distributed Data and Computational Grids, Big Data technologies, High Performance and Low Latency algorithms and paradigms with a lot of Enterprise Java, Linux with C++ and Embedded Java with an emphais on tuning application for low memory footprint and reduced CPU consumption.

OPEN VACANCIES


 

Academy

Academy

We understand the crucial role of education in the high-technology sector. The IntroPro Academy was created as a platform for knowledge sharing and growing technical talent. We are committed to invest in our technical expertise and keep our competitive advantages — pragmatical approach to problems, smart solutions, cutting edge technologies and high quality standards. We look at Academy as the place to share technological experience between teams, provide insights and project retrospectives, keep tech talks on advanced technologies, best tools and innovative development approaches.

Scaling Docker with Kubernetes

Docker is revolutionizing the way people think about applications and deployments. It provides a simple way to run and distribute Linux containers for a variety of use cases, from lightweight virtual machines to complex distributed micro-services architectures.

Kubernetes is an open source project to manage a cluster of Linux containers as a single system, managing and running Docker containers across multiple Docker hosts, offering co-location of containers, service discovery and replication control. It was started by Google and now it is supported by Microsoft, RedHat, IBM and Docker Inc amongst others.

Once you are using Docker containers the next question is how to scale and start containers across multiple Docker hosts, balancing the containers across them. Kubernetes also adds a higher level API to define how containers are logically grouped, allowing to define pools of containers, load balancing and affinity.

Jenkins Continuous Integration environment can be dynamically scaled by using the Kubernetes and Docker plugins, using containers to run slaves and jobs, and also isolate job execution.

Video:

Pragmatics of TDD to Evolve Design

Test Driven Design, we hear is a great way to create lightweight design that is easier to maintain and evolve. Unfortunately, just writing test cases mechanically do not lead to good design. In fact, it may really not lead us anywhere we want to really go! In this presentation we will discuss some of the challenges with using test driven development, look at practical and pragmatic solutions that will help us make a good use of this wonderful design tool.

Video part 1:

Video part 2:

Towards an Evolutionary Architecture

Big up front design is discouraged in agile development. However, we know that architecture plays a significant part in software systems. Evolving architecture during the development of an application seems to be a risky business. In this presentation we will discuss the reasons to evolve the architecture, some of the core principles that can help us develop in such a manner, and the ways to minimize the risk and succeed in creating a practical and useful architecture.

Video part 1:

Video part 2:

Software Architecture Anti-Patterns

Applications of different size, business domain and criticality suffer from a huge set of issues, be it boring enterprise software, “Highly-Loaded” social network or a cozy startup. In this talk Eduards Sizovs will cover Software Architecture issues that he finds the most prevailing nowadays and what you can do with that. Think big!

Video:

8 Things That Make Continuous Delivery Go Nuts

Continuous Delivery is still trendy and everyone wants to get there, but there are so many walls you have to break and nerves to spoil! In this talk Eduards will present real-world battle stories of continuous delivery adoption, 8 underlooked things that tend to go wrong and what practices can you apply in order to survive.

Video:

Victor Polischuk

Java technical leader at Infopulse Ukraine. Production experience counts 14 years including about 12 years of Java development. Expert in Java and JavaScript. Smartass.

Vladimir Tsukur

Software engineer and architect, primarily focused on the development of distributed systems, platforms and APIs. REST trainer, XP practitioner and a member of JEEConf / XP Days program committee. Outsourcing partner of Swedish companies Easyhunt and Frost Digital in Ukraine. Passionately engaged in software development for over 12 years striving to make things right. Enjoys giving technical talks on local and international conferences and meet-ups.

Eugene Krivosheyev

Eugene helps Russia IT companies from TOP-50 to become more flexible and effective. He supports Agile processes from bottom to top, implementing engineering practices and good approaches to design/architecture. At the moment involved into SkillTrek project, where he trains engineers for practical skills in real-life projects.

Carlos Sanchez

Carlos Sanchez specializes in the automation and quality of software development, and QA and operations processes, from build tools to Continuous Delivery following the DevOps philosophy. He has spoken on the subject at several conferences around the world. Involved in Open Source for over ten years, he is a member of the Apache Software Foundation amongst other open source groups, contributing to several projects, such as Apache Maven, Fog, or Puppet. He works at CloudBees scaling the Jenkins platform.

Venkat Subramaniam

Dr. Venkat Subramaniam is an award-winning author, founder of Agile Developer, Inc., and an instructional professor at the University of Houston.

He has trained and mentored thousands of software developers in the US, Canada, Europe, and Asia, and is a regularly-invited speaker at several international conferences. Venkat helps his clients effectively apply and succeed with agile practices on their software projects.

Venkat is a (co)author of multiple books, including the 2007 Jolt Productivity award winning book Practices of an Agile Developer. His latest book is Functional Programming in Java: Harnessing the Power of Java 8 Lambda Expressions. You can reach him on twitter at @venkat_s.

Eduards Sizovs

Eduards is a hands-on architect and software development coach who helps awesome teams around the globe become more awesome – work smarter, run faster and enjoy the journey. He leads Latvian Software Craftsmanship Community, organises software craftsmanship conference DevTernity, runs training center DevChampions, speaks, and even sleeps. Sometimes.