Senior .NET Engineer for LanguageWire

Kyiv, Gulliver, Ukraine

Apply

LanguageWire (https://www.languagewire.com/)  is one of the world’s leading providers of language services.

Founded in 2000, LanguageWire continually develops unique technology to help brands reach their full global potential. Backed by a worldwide network of 7,000 language experts and an intuitive online platform, we make it easy to manage multilingual content. Our tools and expertise help solve content challenges, so companies can reach their global audience.

With headquarters in Copenhagen, LanguageWire has offices in more than 19 cities around the world and more than 350 employees.

Read more about the client

Description

On behalf of LanguageWire, Ciklum is looking for a Senior .NET Engineer to join Kyiv team on a full-time basis.

LanguageWire is a global translation services provider. We have built our own platform with a strong focus on automation and machine learning.

We have multiple teams developing parts of the combined solution: a business process management system, connectors for CMS and PIM systems, a web-based CAT tool, machine translation and NLP services.

Our team works on the core tools used for the translation process delivered as a set of micro services and we also own the public REST API. The team is located in the center of Kyiv, at the Gulliver BC. The team consists of 3 developers, a QA engineer and a product director.

We do iterative development being close to our customers and releasing new features approximately every 3 weeks. We prefer direct communication over bureaucracy.

At LanguageWire we mostly use the Microsoft technology stack (we are three times Gold Microsoft partners), hosts most things on our own servers. A dedicated team of IT administrators and DevOps Engineers are responsible for the infrastructure. We are currently transitioning from a private cloud to a hybrid cloud strategy, leveraging containerization and infrastructure by code approach.

All platform development teams work according the “You build it, you run it” paradigm. We operate an enterprise class, highly available 24×7 platform. It’s the responsibility of each developer to make sure that the services run smoothly. Observable services and deep monitoring are key to make data driven decisions for the architecture and operations.

We are currently transitioning from a private cloud to a hybrid cloud strategy, leveraging containerization and infrastructure by code approach. Our core services handle huge amounts of documents and XML data, so it’s paramount to focus on performance & scalability of our services.

Responsibilities

  • We are looking for an experienced developer who will work together with the existing team
    across all our services:
  • All new services need to be built from the ground up using a technology stack that will allow us to containerize our services. We want to leverage orchestration frameworks to scale our services in a fast and simple way. Experience in containerized development and scalability is a great advantage.
  • We write code in C#. We use async/await a lot, so you need to understand how the compiler transforms this syntax sugar and why async’s are needed.
  • You should know your way around the base class libraries as well as your tools: Visual Studio & the debugger.
  • Our services are document-oriented. We do a lot of processing, writing various parsers,
    readers and writers. You should care about the performance, for example, you would not load a 500 MB file into memory.
  • Our services also store records in databases on the SQL Server. We work with large databases; a deep understanding of DB technology is needed to achieve good performance. We use Entity Framework, but then validate generated SQL queries and execution plans. You need to understand the relational mode; index scans vs seeks to produce efficient queries. For migrations it is useful to know about window functions and common table expressions.
  • Most of our services are background workers without any UI. They communicate through synchronous remote calls and the message bus. You should be able to design asynchronous communications, extend existing protocols, so that other services would not break. You also should be able to write relevant tests.
  • We own a REST API’s that exposes parts of our core functionality towards our Platform team & our connector team. We use Swagger to provide OpenAPI specifications for the consumers.
  • One of our most important consumers of the core tools is a Vue.js based web application.
    Knowledge and interest about how modern web applications work would be a nice skill to enrich the team with as well.
  • We have one service that use the InDesign Server API via COM. So, experience with unmanaged code interoperation is welcome.
  • Besides the development as such, we are also responsible for deployments and for providing tools for operational support. Background services are Windows services, you should be able to diagnose, why the service is not starting and generally know the Windows operating system architecture and tools well.
  • As a team we are responsible for ensuring that our own services perform well, and we always need to develop for stability, speed and easy diagnosis of issues. We are currently transitioning to an ELK based logging strategy where we combine the logs from all our microservices into one place and allow us to dive into the details of how a specific job progress through the various services when needed. We are also introducing Application Insights in our service as this will give an overview of how our micro services perform and allow us to dive into the details of the dependency chain in our distributed setup

Requirements

  • 5+ years of experience with C#
  • Solid experience with Asp.Net MVC
  • Experience with Asp.Net Core
  • Good understanding of OOP, OOD, DDD
  • Familiarity with Entity framework
  • Experience with n-tier architecture and microservices
  • Experience with unit and integration testing
  • Upper-intermediate English skills (verbal and written)

What's in it for you

  • Open and friendly, but also demanding work atmosphere, where you have the opportunity to grow to become a rock star developer
  • Enthusiastic, professional and skilled colleagues that help each other to reach common goals
  • Short communication distance: you communicate and work directly with the client
  • Knowledge sharing, training and self-development opportunities
  • State of the art, cool, centrally located office with a warm atmosphere that creates really good working conditions