ABOUT AYMAN ATIF

I learned software by building things that had to keep working.

I’m Ayman Atif, a software engineer who has spent the last decade moving between web applications, desktop software, APIs, databases and automation. The technologies changed. The part I kept enjoying was the same: taking a messy problem and turning it into software people can actually use.

Read my engineering notes →Credentials →
Ayman Atif, software engineer
Software development since 2014 · .NET, C#, Python and business systems

THE SHORT VERSION

I didn’t stay inside one box.

My core background is C# and .NET, but real projects kept pulling me into adjacent problems: SQL performance, REST APIs, Python services, front-end work, Windows applications, deployment, automation and eventually Android development.

That breadth was not a plan to collect technologies. It came from taking responsibility for complete products. When a database became the bottleneck, I had to understand the database. When a workflow belonged on the web instead of a spreadsheet, I had to understand the business process first.

I still work that way. I would rather understand why a system exists before deciding how to rebuild or extend it.

CAREER TIMELINE

A decade of learning by shipping.

The beginning

Started building software and learning the foundations that became my long-term C#/.NET path.

Junior .NET developer

Worked on APIs, databases, WPF desktop applications, data structures and application maintenance.

Senior .NET developer

Built and maintained web and Windows applications, integrated APIs, optimized SQL-backed systems and mentored junior developers.

Business software & automation

Focused on reliable business applications, modernization, automation, .NET/Python systems and remote software work.

HOW MY WORK EXPANDED

One stack became a toolbox.

C# / .NETthe foundation
APIs + SQLsystems talking to systems
Pythonautomation and web services
AndroidKotlin + Compose
01

Understand before rewriting

Existing systems usually contain years of business knowledge. I prefer finding what is valuable before replacing anything.

02

Performance is a system problem

Slow software can come from SQL, architecture, server resources, network calls or the browser. I follow the path instead of guessing.

03

Maintainability matters after launch

A feature is not finished if the next change becomes dangerous. Structure and clarity take precedence over cleverness.

WRITING IN PUBLIC

I write down the lessons I wish I had earlier.

My writing has followed the same path as my development work: planning before coding, separation of concerns, difficult codebases, AI-assisted development, Android, and the trade-offs that only become obvious when a project grows.

I’m less interested in definitions than consequences. What breaks when an application gets bigger? What looked clean at 500 lines but became painful at 10,000? What changes when AI can generate code faster than a developer can review it?

Explore the articles on this site →   See my Medium archive ↗

WHAT I WORK WITH

Tools I use to solve real problems.

I group technologies by the job they do. The point is not collecting names; it is knowing where each tool fits, what it costs, and when to reach for something else.

01

.NET development

C# · .NET · ASP.NET Core · Entity Framework · LINQ

02

Web & APIs

REST APIs · HTML · CSS · JavaScript · Flask

03

Data

SQL Server · PostgreSQL · SQLite · query and schema design

04

Desktop & mobile

WPF · WinForms · Kotlin · Jetpack Compose

05

Delivery

Git · Azure · Render · deployment and production troubleshooting

06

Software engineering

OOP · SOLID · maintainability · performance · automation · systems that have to keep working after launch

NEXT

See what I’ve learned, built and documented.