MJ

Software engineering

Software engineering

How Maher Jaafar works as a senior software engineer: problem first, small releases, readable code, design for failure and ownership in production.

Flutter is my deepest tool, but I see myself first as a software engineer: someone who takes a problem from a fuzzy idea to software that people rely on, and keeps it working afterwards.

How I work

  • Problem before solution. I want to know who is affected and what "done" means for them before writing code.
  • Small, frequent releases. Small pieces get reviewed properly, are easy to roll back and give the team a steady rhythm.
  • Code for the next reader. Clear names, small functions, comments that explain why.
  • Design for failure. Lost connections, slow devices, partial updates and unexpected user behaviour are part of the design, not edge cases.
  • Automate the boring parts. Linting, tests, builds and releases run without anyone thinking about them.
  • Own it in production. My work is done when it works for real users, so I read crash reports and customer feedback and talk to the people using the product.

Breadth across the stack

  • Mobile and embedded: Flutter and Dart on iOS, Android and embedded Linux.
  • Web and backend: TypeScript, Next.js and Node.js.
  • Cloud and delivery: Google Cloud, AWS, Firebase, CI/CD.
  • APIs and contracts: typed APIs including gRPC, versioned for safe evolution.
  • AI: LLMs and agent-based systems in production at Settio.

Product engineering

I care about the outcome, not just the output. That means asking what the smallest valuable version is, how we'll know it worked, and what it will cost to maintain. I've worked as a consultant shipping products from scratch, in product teams close to customers, and as a founder. More on this in product engineering.

Leadership and communication

I organise Flutter Västerås, co-founded Flutter Tunisia, mentor founders in the Google for Startups Accelerator and have spoken at FlutterCon Europe and DevFest Stockholm. The same skills show up in daily engineering work: explaining trade-offs, writing clear design notes and helping teammates grow. More on this in technical leadership.

Read more about this in How I work as a software engineer and Software engineering is more than writing code.

Talks on this topic

Projects

Writing