Pavel Šimerda

Pavel Šimerda

Evolve complex systems with confidence

Independent, hands-on mentoring that helps engineering teams ship systems software faster, with fewer production incidents, and a codebase your team can keep changing with confidence.

Explore mentoring →

Mentoring services

Whether you’re building new systems software, replacing an existing system, or improving what you have, this mentoring is hands-on, drawing on decades of systems engineering and teaching experience.

Rust in Production

Pragmatic mentoring for adopting Rust in production, grounded in your existing systems, codebase, and architecture decisions.

C++ Modernization

Modernize existing C++ codebases without unnecessary rewrites, while building practical, maintainable modern C++ practices.

C++ Safety & Best Practices

Improve C++ safety, reliability, and engineering practices, applying standards such as MISRA C++ where they are relevant.

Software Design & Testability

Improve architecture, dependencies, and testability so complex systems are easier to understand, change, and maintain.

Performance & Observability

Diagnose performance, latency, resource usage, and difficult production bugs through profiling, tracing, and eBPF-based observability.

Pragmatic AI Adoption

Help your team adopt AI for coding, testing, review, and documentation, with clear limits, verification, and maintainability.

Have a systems challenge to work through? Scan to explore the mentoring services.

Not sure which service fits your situation? The first conversation is a no-cost, no-obligation way to get a second opinion before you commit to an approach.

Problem Space

Systems-level code fails in ways that show up far from their actual cause: a slow endpoint that’s really a memory allocation pattern, a crash that only reproduces under load, a feature that takes weeks because nobody trusts the code around it anymore. The problems below are the ones teams most often bring to this mentoring, drawn from years of debugging, porting, and hardening production and industrial systems. Embedded Linux and systems integration are supporting areas of this broader systems-engineering practice.

Performance and Latency

An extra copy, a lock held too long, a cache line bounced between cores: small inefficiencies on the critical path add up to user-visible latency that’s hard to track down, because the code that causes it isn’t the code that suffers from it.

Reliability and Undefined Behavior

Memory corruption, unclear ownership, and data races that only show up under specific timing don’t just crash once in a while, they erode confidence in the whole codebase and slow every future change down.

Legacy Code and Risky Change

Tangled dependencies and architecture decisions that made sense once but fight you now. Changes that should be simple end up touching far more than they need to, each one a real risk of breaking something else.

Safety-Critical and Embedded Systems

Standards like MISRA C++, hardware bring-up, kernel drivers, and porting real-time applications to Linux all add constraints regular application code doesn’t have to meet, where the fix has to reduce real risk, not just satisfy an audit.

Contact

Have a question or want to discuss how I could help your team? Send me an email or use the form below. I am Pavel Šimerda, your Rust and C++ engineering mentor. Happy to hear from you, even if you’re still figuring out what you need.

Based near Prague, Czech Republic. I work with teams in Prague, Brno, Ostrava, Plzeň, Pardubice, elsewhere in Czechia, and internationally, both remotely and in person.