System Architect

0
172

Job Overview:

Our client, one of the leading producers of software for interactive TV in the USA, is currently seeking to hire a System Architect.

Requirements:

  • A balanced approach to development of and to introduction of amendments to the shared code
  • Skills of project build for Linux (auto tools, make, pkgconfig, cmake, gcc, mingw, etc.)
  • Programming in GN/Ninja
  • Programming in python
  • Programming in C/C++ (at the level acceptable for identification and removal of build Problems)
  • Understanding peculiarities of dealing with compilation artefacts (ELF, obj, apk, etc.)
  • Ability to see into third-party build systems
  • Ability to integrate new platforms into the build system
  • Love for the marvelous code

Advantages would be:

  • Proficient knowledge of C++
  • Gradle, maven, ant

Responsibilities:

  • Supporting and enhancement of the current build system
  • Building pipeline management
  • Working and consulting developers on build scripts
  • Build management for different target platforms
  • Build profiling and optimization for different platforms

A bit more about the project:

  • We use a unified build system both on build servers and on the developer’s desktop
  • We build constructions for different platforms, both native and high-level (Linux, iOS, android, js, emscripten, Motorola)
  • We use various SDK delivered to us by different suppliers for a particular platform
  • We build in different formats
  • We use different sets of back-end components for various projects
  • Generally, we write our components in C/C++, but sometimes other languages are encountered (for example JavaScript, kotlin, or a special language developed by our company)
  • We largely build for Linux (however, there is a need to build development tools for Windows as well)
  • We build and use different third-party components depending on the target platform, moreover, versions of such components may differ in various constructions

In other words, our system is like a construction set – we have many bricks, whereby completely different products may be built on different foundations – from a small flat to a town.

At the moment our build system relies on the following tools:

  • Docker – for creation of reproducible build environment
  • Yaml configurations – for description of a desired configuration set for one build artefact for a specific project/client
  • GN (generate ninja) – for description of build engines for individual components and for creation of relationships between them both for build and for installation
  • Ninja – a basic build system
  • Python – language in which scripts are written, that performs specific tasks (for example – image build or image signature via customer servers, an agent for interaction with test bots and lots more)
  • Pkgconfig – for simplicity of third-party component build
  • Google text/google mock – as С/С++ code testing system
  • Jenkins – as a system of build orchestration, test initiation
  • Gcc – we build and use gcc of an identical version across multiple platforms for C/C++ code unification (however, for some platforms a need arises to use another SDK definable compiler version)
  • Qemu – used for unit test initiation for the target platform (arm, mips)
  • Artifactory – for caching artefacts of component or subcomponent build
  • Test system (our tests are based on the idea of separate special-purpose builds for several dedicated bots using such tests)

What We Offer:

  • Dynamic and supporting international teams
  • Regular assessments and performance reviews. You will have the opportunity for promotion, bonuses and a raise in accordance with the pace at which you develop and your performances
  • Remote, hybrid or office work
  • 20-25 vacation days per year
  • Equipment for work, laptop and all necessary additions
  • Access to trainings and courses
  • Private health insurance
  • FIT Pass card for many sports’ facilities

POSTAVI ODGOVOR

Please enter your comment!
Please enter your name here