IAN ROCHA / SOFTWARE ENGINEER

Less noise.
More clarity.
Code that solves.

I get into the problem, connect the teams and work on the solution. From the conversation that unblocks a decision to the code that needs to work in production.

TECHNICAL DEPTH. SHARED CONTEXT.
ProductEngineeringOperations

Systems thinking.
Hands on the code.

Ian RochaSoftware engineer · Brazil

I'm Ian. An engineer who likes to understand the whole picture — and doesn't lose interest when it's time to open the editor.

I connect product, architecture and operations decisions. I move across backend, data and infrastructure to solve what lives in the space between areas.

I might be discussing a business rule, investigating a latency issue or implementing a pipeline. The commitment is the same: find what really matters, make the path clear and carry the solution forward.

I don't want to be the point everything has to go through.
I want to help the team move better.

My background on LinkedIn (opens in a new tab)

Complex problem.
Clear next step.

Less back and forth. More context, explicit decisions and work that actually moves.

  1. Understand before
    proposing.

    I investigate the problem, the constraints and what needs to change for the business. I question the ready-made solution when it doesn't answer the right question yet.

    Context before the tool
  2. Remove the noise
    from the decision.

    I translate complexity into understandable alternatives. I make trade-offs explicit, align expectations and separate what is essential from what can wait.

    Clarity to unblock
  3. Build.
    Measure. Adjust.

    I design the architecture and take part in the implementation. I write code, investigate failures and watch how the system behaves to evolve it with evidence.

    From intent to execution
  4. Connect teams.
    Share context.

    I support different fronts with technical review, documented decisions and direct exchange. I aim to resolve dependencies without creating dependency on me.

    Reference, not a bottleneck

Simplicity on the surface
demands engineering underneath.

It's not about using everything. It's knowing what to implement, what to simplify and which guarantees the problem requires.

02 / HIGH AVAILABILITY

Failures happen.
The design accounts for it.

High availability starts before the incident: redundancy, failure isolation and recovery paths. Resilience is a property of the architecture, not a promise on a slide.

  • Controlled degradation
  • Failover
  • Circuit breakers
  • SLIs & SLOs
03 / PROCESSING AT SCALE

Volume changes
how you think.

Batch and event-driven pipelines, from ingestion to consumption. Partitioning, quality and reprocessing go into the design together with throughput, latency and cost.

  • Distributed processing
  • Deduplication
  • Partitioning
  • Safe reprocessing
04 / OBSERVABILITY

Less guessing.
More evidence.

I connect technical behavior to business impact. Instrumentation that helps explain a failure, find a bottleneck and tell an important signal apart from just another alert.

  • Structured logs
  • Metrics & traces
  • Event correlation
  • Actionable alerts

Repertoire, not a recipe.

Tools I connect according to the context.

Backend & domain

Go · Java · Kotlin · Python · TypeScript

Spring Boot · REST · gRPC · Temporal · DMN

Cloud & platforms

AWS · Kubernetes · Docker · Terraform

Infrastructure as code · CI/CD · Automation

Data & events

PostgreSQL · Kafka · Spark · S3 · Athena

dbt · Parquet · Queues · Async processing

Have a hard problem?
Let's make it clear.

A system to unblock, a decision to mature or teams that need to build together. The conversation can start there.