Home

← Back

Selma Hadžijusufović

SOFTWARE ARCHITECT

Selma
Hadžijusufović.

Builds the parts users actually touch — interfaces that respond, notifications that land, builds that ship.

Spends most of the day on the seam between client and platform — the spots where a feature stops being code and starts being something a person reacts to. Cares about the small reliability stuff: a notification that fires once and on time, a list that updates without flickering, a build that goes through TestFlight without a Friday surprise.

The Work

01

Corner Table

Built the reverse rating system. Engineered real-time notifications spanning both feed activity and job listings, alongside preference-based matching that surfaces opportunities aligned with each user's interests. Owned the iOS release pipeline.

The Stack

Languages

  • Dart
  • TypeScript
  • JavaScript
  • HTML / CSS
  • SQL

Frontend

  • Flutter
  • React & Next.js
  • Astro
  • Tailwind

Backend

  • Firebase
  • Cloud Functions
  • Firestore
  • Node

Tools

  • Xcode
  • Android Studio
  • TestFlight
  • Git / GitHub
  • Claude

Defaults

  • Real devices over simulators
  • One source of truth for state
  • Notifications fire once
  • Push to TestFlight before Friday

In Their Words

Q. 01

When laying the foundation for something new, what principles do you refuse to compromise on?

A. The thing the user sees first has to feel honest. If a list says it has new items, there should actually be new items. If a button says 'Save', it has to save before the screen does anything else. The state on the screen and the state in the database are the same thing — that's the bar.

Q. 02

How do you ensure an app still feels rock-solid even when conditions aren't perfect?

A. I assume the network will fail and someone will lose signal mid-action. Optimistic updates, idempotent writes, and a retry that's quiet enough that the user never has to think about it. Most of the work is invisible — it's the difference between an app that feels fragile and one that doesn't.

Q. 03

What details do you think make the biggest difference between a good interface and a great one?

A. How fast it gets out of the user's way. The right defaults so they don't have to choose, the right empty states so they don't have to guess, and the right loading state so the wait doesn't feel like a wait. Most of it is taking things out, not adding them.

Q. 04

How do you leave a codebase in a better place for the next person who has to read it?

A. I write the code I would have wanted to inherit on day one. Names that say what something is, files that live where you'd expect, and the bit of documentation that answers the question someone will actually have. If I touch a function I didn't write, I leave it slightly tidier than I found it.

Q. 05

How do you bridge the gap between getting a broad feature request and actually executing it?

A. I write down what the feature is supposed to do in one sentence, then the three things that have to be true for it to ship. Most of the back-and-forth happens before I open the editor — that's when scope is cheapest to change.

Q. 06

Claude vs ChatGPT?

A. Claude. It pushes back when something is off instead of cheerfully producing it, and it writes Dart that compiles the first time more often than not. The difference shows up most on the bigger refactors — Claude will tell me the plan is wrong before I waste an afternoon on it.

Get in
touch

👋 hi@p23.io

P23 Tech Studio

Sarajevo, Bosnia and Herzegovina

2026 All Rights Reserved