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