Software Engineer (С++/CMake)

от 4 000 USD на руки

Требуемый опыт работы: 3–6 лет

Полная занятость, полный день

Network Optix (Nx) is a successful IT-company that specializes in IP Video Management Systems.
Nx makes powerful, exciting, easy-to-use network video management software that enables everything from recording IP Cameras on a Raspberry Pi to capturing Rocket launches.
We are headquartered in California with subsidiaries in several countries (Australia, Germany, Spain, Russia, Sweden, Taiwan).
Seven years of constant development helped us in being recognized as #7 fastest growing software company (rated by Inc.5000 - 2016).

Our product is video management system Nx Witness.

MAIN RESPONSIBILITIES

  • Refactor C++ code to make the project more light-weight, thus, built faster.
  • Improve and further develop the cross-platform (Linux x86 and ARM, Windows, MacOS, iOS, Android) CMake-based build system of a huge C++ project (>1 million lines of code).
  • Improve and further develop the build system of Nx SDKs and their sample plugins; take part in developing SDKs.

  • Improve and further develop distribution package building for Windows (MSI/WixSetup).

  • Analyze requirements for the CI team and implement their requirements for the build system.

  • Keep track of CI build failures. Collaborate with the CI team on investigating failed builds.

ADDITIONAL RESPONSIBILITIES

  • Investigate compiler issues (like incomplete C++ support), handle migration to new compiler versions.
  • Become an expert in investigating C++ compile/link issues occurring on developers' workstations.

  • Investigating product crashes as a tier 1, dispatching to other programmers.

  • Investigating customer issues with Nx SDKs as a tier 2 (after an issue is investigated by the Suppor team).

INITIAL TASKS

  • Implement incremental builds on Windows via migration from MSBuild to Ninja.
  • Identify bottlenecks in the build system performance.

  • Refactor project libs to consistently hide private symbols (declspec/attribute-visibility) to have a destinct interface and private parts; resolve the consequent issue of linking unit tests with the private units being tested.

  • Take part in migrating the artifact build/sync system from an in-house Python tool ("rdep") to Conan or the like.

  • Refactor CMake build system for building open-source Client.

REQUIREMENTS

  • Deep understanding of at least one build system (e.g. CMake, Qmake, Maven, Gradle, Ant, automake, MSBuild).
  • Basic Linux administration skills for at least one Debian-based Linux distribution: working with command-line (ps, grep, redirection), package managers (dpkg, apt).

  • Some Bash scripting experience: loops, functions, escaping/quotes/globs.

  • Some Python programming experience (ability to implement a simple algorithm without googling).

  • Understanding of Linux C/C++ toolchain processes of compiling and linking: dynamic libraries (rpath/rpath-link), exported symbols control (attribute-visibility), C++ name mangling, ldd/readelf.

  • Basic C++ knowledge: C subset, extern "C", namespaces, unnamed namespaces and "static", classes.

  • Visual Studio and Windows programming experience.

  • Strong knowledge of at least one general-purpose programming language (e.g. C, C++, C#, Java, Python, Delphi).

  • Some experience with distributed version control systems (e.g. Git, Mercurial).

IS A PLUS

  • Advanced Bash scripting: local variables and variable types, arrays, variable substitutions ("${}"), regex, error handling ("set -e", exit status, traps).
  • Windows administration skills: services, file system permissions, Cygwin, MSI installers.

  • Some MacOS/iOS programming.

  • MacOS administration skills (knowing differences from Linux).

  • Expert Python knowledge, including Python 3.

  • Expert C++ knowledge: SFINAE, atomics, C++17 features, STL.

  • Debugging with gdb/strace; analyzing crashes.

  • Distributed C++ compiling/linking: ccache/distcc.

  • Using Qt in C++ programs.

  • Building projects with Qt.

  • Expert CMake knowledge: cmake_parse_arguments, configure_file, GLOB, find_package, lists, regex.

  • Using Conan or another artifact maintaining system.

Контактная информация

Денисенко Софья

+7 (977) 5185860

sofya.den@gmail.com

Вакансия опубликована 27 февраля 2020 в Москве

Похожие вакансии