terekeci.dev

Code, decisions, and things learned.

A little about me

Building systems that remain dependable as they evolve.

I’m a software architect based in Ankara, focused on backend systems and technical leadership. I shape system architecture, own technical decisions, and guide engineering direction across teams while staying involved in implementation.

My work brings together data integrity, service coordination, infrastructure modernization, and operational visibility. I’m interested in how these concerns interact, especially when a change crosses the boundaries of a single component.

I establish shared engineering standards and follow architectural decisions through implementation and operation. My focus is on their long-term impact: systems that remain dependable, maintainable, and able to evolve.

Focus
Backend architecture & system reliability
Strengths
Data consistency, service coordination, safe evolution
Approach
Explicit boundaries, observable behavior, verified changes

Experience View LinkedIn

BinBin
May 2025 — Present

Software Engineering Team Lead

Leading engineering across connected systems, combining architectural decisions with hands-on development. I coordinate changes across teams, establish shared contracts and engineering standards, and guide delivery with a focus on compatibility, operational visibility, and reliability.

Technical leadershipSystem architectureReliable delivery
PayWall
Nov 2024 — May 2025

Software Engineering Manager

Led a cross-functional engineering team while owning architectural design and implementation. I improved delivery processes, mentored engineers through individual development plans and technical training, and stayed involved in code reviews and critical implementation work.

Engineering managementArchitectureMentoring
Earlier experience

Engineering, leadership & entrepreneurship

My earlier roles include Software Engineering Team Lead and Senior Software Engineer at Algoritma, Senior Software Developer at Edenred Türkiye, and Chief Technology Officer at Yüce Yazılım ve Danışmanlık.

Before that, I worked across full-stack and web development roles and founded BITSTORM Software. This background brings together hands-on engineering, technical leadership, and the experience of building a business.

Engineering expertise How I contribute

Correctness / consistency

Transaction reliability & data integrity

Maintaining consistent outcomes across connected services. My work addresses concurrent operations, repeated requests, and the boundaries between a completed operation and the systems that reflect its state.

ConsistencyConcurrencyRecovery
Preserving correctness across boundaries

I work on making repeated and concurrent operations behave predictably, with clear ownership of state and explicit completion rules.

That includes separating essential state changes from supporting operations, accounting for partial failures, and verifying that recovery preserves the intended outcome.

Coordination / communication

State management in distributed systems

Keeping connected components aligned as their state changes independently. My contributions focus on communication contracts, lifecycle management, and predictable recovery when connections or operations are interrupted.

State coordinationIntegration boundariesResilience
Designing for change and interruption

I treat transitions, interruptions, and recovery as part of the system’s normal behavior. Each component needs a clear understanding of the state it owns and the information it exchanges.

My work includes aligning contracts between components, defining lifecycle boundaries, and keeping external behavior consistent while retaining useful diagnostic context.

Evolution / maintainability

Modernizing backend infrastructure

Evolving shared backend components while preserving existing application behavior. My work includes managing dependencies, making integration boundaries explicit, and using regression testing to validate changes across services.

ModernizationCompatibilityRegression testing
Making change verifiable

I approach infrastructure changes by first establishing the behavior that must remain stable. This provides a clear comparison point as shared components and their dependencies evolve.

Verification covers the affected boundaries and consumers, so a change is assessed by how the system behaves as well as whether the new implementation builds.

Visibility / operations

Observability & operational reliability

Making system behavior easier to understand during everyday operation and failure. I work on consistent diagnostic context, useful operational signals, and shared conventions that support investigation across services.

ObservabilityDiagnosticsOperational clarity
Turning system behavior into useful evidence

I focus on preserving the context needed to understand an operation across component boundaries, while keeping diagnostics consistent and sensitive information protected.

Useful visibility also requires restraint: distinguishing expected behavior from unexpected failures, reducing noise, and checking that operational signals retain their meaning as the system changes.

Engineering notes Principles behind the work

Execution / resource managementResponsiveness starts with coordination.

Work that is waiting and work that is actively consuming resources have different needs. Understanding that distinction helps make execution paths easier to reason about.

I consider how work is scheduled, where it waits, and how completion or failure moves through the system. A local implementation choice can affect the capacity and responsiveness of the whole application.

System evolution / compatibilityA change includes its transition.

A new implementation is only one part of a change. The transition must also account for existing dependencies, ongoing operations, and components that may evolve at different times.

I look for a clear compatibility boundary, a way to verify behavior, and a recovery path. These considerations belong in the design of the change, alongside the desired final state.

Architecture / responsibilityBoundaries need to hold throughout the system.

A boundary is useful when its responsibilities remain clear across data access, communication, processing, and recovery. Defining it in one component is not enough.

I consider where context originates, which component owns it, and how it is preserved as work moves through the system. Explicit ownership makes both normal behavior and failure easier to understand.

Engineering focus

Architecture

Backend systems
Service boundaries & contracts

Correctness

Data integrity
Concurrency & state coordination

Evolution

Infrastructure modernization
Compatibility & verification

Operations

Observability
Diagnostics & recovery

Playground JSON field comparison

Paste two JSON values to see what changed. Object key order is ignored; arrays are compared by position.

json.compareBrowser only

Ready to compare.

    No uploads or storage. Up to 100 KB per input; the first 200 differences are shown.

    Outside the code

    Away from the keyboard, I’m a dad who also enjoys 3D modeling and 3D printing. I like taking an idea from a digital model to something I can hold in my hands.