Yadro

C++ Software Developer

March 2022 - September 2024 (2 years 6 months)

Company's website →
C++ Python Platform Development System Architecture Linux/x86 SObjectizer Actor Model IPC Multi-threading

overview

Built systems from the ground up — joined when the development department was just being established. Responsible for platform component development for a new product built from scratch. Participated in architectural design, technology selection, and foundational decisions that shaped the entire project.

Developed common platform libraries and frameworks used by other teams — from IPC and logging to network communication. Focused on modern C++ development, high-performance multi-threaded solutions, and establishing development practices for Linux/x86 systems.

responsibilities

  • Platform Architecture: Made architectural decisions and selected best libraries, standards, and development practices for the new platform
  • Common Libraries Development: Built platform components (IPC, logging, networking, helper frameworks) used by other development teams
  • System Design: Designed multi-threaded modules with high performance requirements, establishing patterns and practices for the entire codebase
  • Technology Selection: Evaluated and chose appropriate frameworks and libraries that would form the foundation of the system
  • Mentorship & Onboarding: Helped newcomers set up development environments, onboarded them to the project, and trained on development processes
  • Team Coordination: Broke down features into tasks, planned development timelines, and coordinated small development teams
  • Modern C++ Development: Implemented solutions using modern C++ standards and Python for a new greenfield project on Linux/x86

projects_highlights

[~] Microservices Migration to SObjectizer Framework

Background: As a key architectural decision for the platform, I led the migration of services to the asynchronous C++ framework SObjectizer. This framework is based on the Actor/Agent Model and supports Publish-Subscribe and CSP approaches (Communicating Sequential Processes), enabling asynchronous applications without directly using coroutines.

My Role:

  • Analyzed requirements and selected Actor Model as the architectural pattern for the platform
  • Designed migration strategy: task breakdown, effort estimation, risk identification, and phased implementation
  • Implemented majority of the migration work: rewrote significant portions of services, introduced agent and message models, replaced synchronous calls with asynchronous messaging
  • Established patterns and best practices for other teams to follow
  • Set up testing infrastructure and coverage for migrated services

Results Achieved:

  • Performance: Achieved 20-25% reduction in build and testing time through simplified architecture and reduced inter-module dependencies
  • Stability: Dramatically improved system stability and predictability; significantly reduced deadlocks and race conditions through message-passing patterns
  • Code Quality: Enhanced maintainability through clear decomposition into independent agents with unified messaging approach
  • Development Velocity: Increased modularity enabled parallel development — teams could work more independently, reducing integration time
  • Foundation: Established architectural foundation that other teams adopted for their components

skills_acquired

During my time at YADRO, I've gained deep expertise in:

  • Architectural Leadership: Making architectural decisions that impact entire projects, selecting technologies and patterns for greenfield development
  • Platform Development: Building foundational libraries and frameworks (IPC, logging, networking) consumed by multiple teams
  • Asynchronous Programming: Actor/Agent Model, message-passing patterns, Publish-Subscribe and CSP approaches using SObjectizer framework
  • Greenfield Projects: Building systems from scratch, establishing development practices, and laying foundations for future growth
  • Multi-threading Design: Designing concurrent systems that minimize race conditions and deadlocks through proper architectural patterns
  • Technical Leadership: Mentoring developers, establishing coding standards, and coordinating development teams on architectural level
  • Linux/x86 Systems: Developing high-performance multi-threaded applications for x86 architecture