KỸ NĂNG
- C/C++
MÔ TẢ CÔNG VIỆC
We are seeking for deeply experienced Senior C Software Engineers to modernize and integrate a large legacy C estate consisting of approximately 100 repositories. The work supports migration from RHEL 4 to AlmaLinux 9 and later migration to AWS. This is not a general application-development role. It requires production-level C expertise, Linux systems knowledge, disciplined repository-by-repository migration, and the ability to preserve behavior while replacing or upgrading obsolete dependencies.
What the Engineers Will Do
Inventory and classify repositories, binaries, build targets, dependencies, generated artifacts, interfaces, owners, test coverage, and runtime relationships
Reconstruct reproducible builds where documentation is incomplete and determine the actual compiler, linker, preprocessor, and feature flags used by each repository
Identify differences caused by modern GCC, glibc, system headers, libc behavior, ABI changes, stricter diagnostics, architecture assumptions, and removed or deprecated APIs
Trace compile-time and run-time dependencies across repositories and establish a safe migration order for shared libraries, consumers, services, and batch components
Distinguish genuine source defects from undefined behavior that only becomes visible under a newer compiler or operating system
Remediate portability issues involving integer widths, signedness, alignment, endianness, structure packing, pointer conversions, variadic functions, format strings, time APIs, filesystem semantics, and threading
Diagnose compiler optimization effects and select or correct flags without hiding defects through indiscriminate warning suppression
Analyze static and dynamic linking, symbol resolution, SONAME/version changes, transitive dependencies, rpath/runpath, loader behavior, and binary compatibility
Replace, upgrade, isolate, or rebuild legacy third-party libraries while minimizing unnecessary changes to unaffected business logic
Use debugging and analysis tools such as gdb, core dumps, sanitizers, Valgrind or equivalent memory analysis, strace, ltrace, perf, nm, objdump, readelf, and dependency inspection tools
Create focused characterization and regression tests around existing behavior before remediation, then compare outputs, logs, files, database effects, and performance against the RHEL 4 baseline
Integrate migrated repositories into CI/CD with reproducible builds, explicit toolchain configuration, dependency controls, automated tests, and auditable migration status
Coordinate with the Solution Architect, Oracle SMEs, AWS engineers, testers, and customer maintainers to resolve cross-system issues
Document decisions, unresolved risks, rollback considerations, and repository-level completion evidence
YÊU CẦU CÔNG VIỆC
8+ years of substantial, hands-on production development in pure C, beyond academic work or occasional C++ interoperability
Deep experience with large, multi-repository C systems on Linux
Strong knowledge of C89/C90, C99, and relevant later-language behavior, with the judgment to modernize safely without unnecessary rewrites
Strong GCC and GNU toolchain experience, including preprocessing, compilation, assembly, linking, warnings, optimization levels, debug symbols, feature-test macros, and architecture-specific flags
Advanced debugging of memory corruption, use-after-free, double-free, leaks, buffer overruns, race conditions, deadlocks, crashes, and non-deterministic defects
Experience with Make and complex legacy build systems; ability to understand or modernize recursive Makefiles, generated configuration, shell-driven builds, and custom build scripts
Strong understanding of static and shared libraries, ELF binaries, ABIs, dynamic loaders, symbol/version conflicts, and Linux process behavior
Experience migrating software across major Linux or toolchain generations
Experience designing regression evidence for systems with limited automated tests
Ability to review unfamiliar code quickly, make minimal-risk changes, and explain technical tradeoffs clearly
Migration-Relevant Libraries and Tooling
Candidates should have direct experience with several of the library and tooling families identified in the existing migration assessment, especially where old versions, changed APIs, recompilation, or replacement may be required:
OpenSSL and TLS/cryptography API migrations
OpenSOAP and gSOAP service integrations
GCC and GNU build/toolchain changes
Perl and XML parsing modules used by build or runtime workflows
Mono or mixed-language/runtime dependencies where present
SQLite and database client integrations
cURL and network-transfer integrations
OpenThreads or other threading/runtime libraries where present
Apache and Sendmail integrations
Shell and operational tooling including awk/gawk, ksh, vi/vim, and related scripts
Oracle client libraries, headers, connectivity, and application dependencies
The exact versions and final remediation path will be confirmed during repository assessment. Candidates are not expected to know every listed utility, but must demonstrate the ability to analyze unfamiliar native dependencies and determine whether to upgrade, rebuild, replace, isolate, or retain them safely.
Preferred Qualifications
RHEL 4, AlmaLinux 9, modern RHEL, Rocky Linux, or comparable enterprise Linux migration experience
Experience with Oracle-backed transaction-processing applications
Experience with monolithic backend platforms, nightly jobs, batch processing, file-based interfaces, and stateful integrations
Experience migrating native applications to AWS EC2 or supporting subsequent cloud migration
Experience with CI/CD for native code and artifact/version management across many repositories
Experience with security hardening, SELinux, TLS modernization, and vulnerability remediation
Experience using AI-assisted tools for code inventory, dependency analysis, remediation suggestions, or test generation while retaining human review
Automotive, financial transaction-processing, government, industrial, or other high-consequence legacy-system experience
Expected Evidence from Candidates
A concrete example of a major Linux, compiler, or library migration personally performed
An example of diagnosing a difficult production C defect and the tools used
An example of untangling multi-repository or shared-library dependencies
An explanation of how to preserve behavior when tests and documentation are incomplete
An explanation of how to choose compilation flags for correctness, diagnostics, reproducibility, and performance
An example of integrating legacy C builds into automated pipelines
QUYỀN LỢI
Receive 100% salary from the onboarding date.
Participate in company activities: Teambuilding, travel, vacation and other activities.
Work with large and advanced systems, have the opportunity to develop comprehensive technology skills with complex problems, requiring high accuracy.
MỨC LƯƠNG
Hỗ trợ ứng tuyển