Sergey Mostovoy. CV.

Bio

AgileEE conference, Kiev 2013

Name: Sergey

Last name: Mostovoy

Date of Birth: March 27 , 1989

Place of Birth: Minsk, Belarus

Country of Residence: Belarus

Mail: mostovoy@targetprocess.com

Phone Number: +375295767891

Languages

Russian: native speaker

Belorusian: fluent

English: upper-intermediate

German: A1 (I am visiting courses currently)

Career

Targetprocess, Minsk

August 2013 — Now

Position: senior software engineer

Responsibilities:

Development of product, project portfolio management, analyzing statistics, providing estimates, extracting existing components to microservices.

Project:

Targetprocess is a tool for visual management of processes (mostly software development processes). Joining product company required huge mental switch and was a challenge for me. I work as member of cross-functional team (we have DevOps, UX designer, QA engineer and 3 software engineers) and there are some implications of this. First of all it requires participation not only during development phase but during all feature life-cycle (validation -> UX-> planning -> development -> testing -> release -> support -> validation). The second is that working in cross-functional team gives the best possibilities for knowledge sharing between people with different roles.

We are using Kanban along all phases and validation phase similar to validation phase from LeanKit. Also we applied XP methodologies (TDD, BDD) to development process. Almost all work is done in pairs with external code reviews and checking against company shared rules for static code analyzers.

I worked on bunch of interesting tasks here:

  • Implementing plugins infrastructure. Plugin is Windows Service which could be deployed and delivered independently from main application. It has access to database and used messaging protocol built on top of MSMQ to perform one way communication with main application (application -> plugin). Core components for plugins are packed into plugin SDK which allows users to create own plugins.
  • Implementing fallback strategies. For the sake of reliability, downtime reduction and possibility of Continuous Delivery we decided to implement some fallback strategies. We worked on extracting components to independent units (microservices) which provides API for main application and other microservices. All these units were made backward compatible with previous versions which are deployed simultaneously. If something happens with latest version of microservice (after deploying package to production server for example) all it’s clients are automatically switched to latest stable version. We extracted separate services for DSL filters, Report Generation, Server Pull Notifications and Readonly REST API.
  • Implementing query generator for MS-SQL. We worked on query generator which allows to generate T-SQL queries based on DSL and domain metamodel. At first DSL request are converted to trees which includes different abstractions like fields and resources. Then this trees are converted to .NET Expression Trees. And finally these trees are visited by query generator and T-SQL request is generated. Results of request execution are mapped to domain metamodel.
  • Implementing single page application framework. Framework is written with Ecmascript 5 language and includes route-engine, view composer, template renderer and advanced data caching mechanism.

Programming Languages:

C#, Javascript (ES5), Iron Python, T-SQL

Technologies and Frameworks:

ASP.NET MVC, ASP.NET Web API, MSMQ, RabbitMQ, Node JS

Libraries and Tools:

PLINQ, BCL, MS SQL Server 2008, SQL Server Query Advisor, SQL Server Profiler, JQuery, React, Underscore.js, Require.js, SignalR, MoreLINQ, ReLINQ, PostSharp, NBehave, Structure Map, NUnit , NHibernate, Web Driver, Selenium, Jenkins, GitHub,

Sam Solutions, Minsk

May 2011 — July 2013

Position: software engineer

Responsibilities:

Development of Web Applications, creation of simple 3-tier architectures for new projects, projects estimation, managing team of 4 people, working with distributed services.

Projects:

  • Statistics data visualization system The main intent of this system was providing fancy and human readable visualizations for ugly statistics data. It also required lot’s of math’s to extract something useful from huge input data. I worked as a member of international team with guys from Sweden. During development phase common tasks were moving business logic from stored SQL procedures to business layer of application. Also i worked on visual editor (built on top of DOM) which gives the ability to create templates for visualizations from set of predefined components (chars, tables, text blocks, etc.) At server side I was responsible for building JSON\XML API built on top of Business Layer which was used by visual editor at client side. The most challenging and interesting tasks were connected with data extraction and required the use of MapReduce programming model because of huge input data. Tasks examples are extracting mean value from sets, looking for correlation, creation of DSL for grouping and filtering data.
  • Synchronization server During this project i was a team leader of a small team of 4 people. Server used wide range of sources (remote ftp, file system, emails, public API’s) as datasource. Standard flow was Get Data -> Perform Mapping to known format -> Save to Storage -> Create Report -> Notify. Working at this project required a little Iron Python skills.

Kaspersky , Moscow

I worked in Moscow for Kaspersky company as on-site employee. I participated in two projects while being there.

  • Product Activation System This system is responsible for processing requests for generating product licenses. It is distributed worldwide and has extreme requirements to uptime (99.99%). I was a member of the team which worked on performance optimizations (implementing priority queues on top of MSMQ, performance optimization of T-SQL stored procedures, optimizing deploy process and jobs at MSSQL Server instances).
  • Salary Allocation System This system was the replacement for a legacy system. I worked in distributed team. We started with writing specification based on reverse engineering of the existing system and domain experts knowledge base. The system itself was implemented as simple ASP. NET Web Forms Application and used company Active Directory for Windows Authentication. We worked as a SCRUM team with 2 weeks iterations and used TDD extensively.

Programming Languages:

C#, Javascript (ES4, ES5), T-SQL

Technologies and Frameworks:

ASP.NET Web Forms, ASP.NET Web API, MSMQ, WCF, Silverlight, XSLT, CSS

Libraries and Tools:

LINQ to SQL, PLINQ, MS SQL Server 2008, SQL Server Query Advisor, SQL Server Profiler, JQuery, Ext JS, PostSharp, ADO. NET, Structure Map, NUnit, Entity Framework

Itransition, Minsk

May 2010 — May 2011

Position: junior software engineer

Responsibilities:

Development of simple Web Applications based on existing frameworks, support of legacy projects, gathering requirements for change requests of legacy projects.

Projects:

  • Online shopping platform Simple online shop with standard functionality. Was responsible for frontend, backend, database scheme, stored procedures, integration with SagePay payment system.

Programming Languages:

C#, Microsoft J-script, T-SQL, PHP

Technologies and Frameworks:

ASP.NET Web Forms, ASP .NET MVC, ASP, CSS

Libraries and Tools:

LINQ to SQL, Windsor Castle, .NET BCL, Telerik Controls

Education

2006 — 2011

Belorussian State University of Informatics and Radioelectronics

Studied economics and computer science. Got bachelor of computer science and economics degree.

Activities, conferences, etc.

Maybe this is not very important and exciting part of CV but i decided to mention some of my recent activities. During last few years I’ve taken part in bunch of IT conferences and meetups either as a speaker or as a visitor. I won’t fall into details, just enumerate some of them.

AgileEE 2013, Kiev

Application Developer Days 2013, Minsk

Frontend Dev Conf 2014, Minsk

Highload Dev Conf 2014, Minsk

I visited a lot of others also but probably they didn't deserve to be mentioned. Also i was a speaker at local developers meetup with talk about penetration testing of Web applications.

At my current company we have a tradition to organize local conferences dedicated to different topics in programming, UX, project management and others. Also we are willing to invite famous persons to be able to share their experience. Among our guests are Tomas Petricek (Official website) and Mathias Brandewinder (Blog)