Writing
Field notes for the parts nobody teaches.
Essays on interviewing, mobile architecture, leadership, AI and the career systems behind senior engineering work. Most books start here, as field notes, before they become a chapter.
Every essay gets an audio edition. Press play on any article and the playlist carries you through the rest.
See the books these notes becameReading the answer is not the same as giving it.
Most interview preparation stops at recognition. Loops score what you can produce once the question changes. Why I built Interview Runtime, and what it asks you to do.
Featured essay · Engineering Interviews
Career strategy
How I tried to clean up my LinkedIn and doubled the problem
I posted a fake dream job to thin out the wrong connections. Requests went up, CVs arrived, and people tagged friends under the post explaining there was no job.
Get hired
The engineer nobody chases
The most common reason capable engineers stall has nothing to do with code. It is how much coordination work lands on other people after you have finished.
Lead teams
The two documents that decide your career are written by other people
One gets written after your interview. The other gets written after your offer. You never see either, and that is exactly why they cost you money.
Get hired
LinkedIn profile optimization for software engineers
An optimized profile is one a recruiter can find and a hiring manager can place at the right level in under a minute. Most engineer profiles fail the second test, not the first.
Get hired
Software engineer LinkedIn headline examples
A headline has two jobs: come back in a recruiter's search and place you at the right level in one line. These examples are organised by level and platform, and each one says why it works.
Get hired
Staff software engineer resume
Staff is not Senior with more technologies. A Staff resume has to show decisions that changed how other teams work, and most Staff candidates bury exactly that under a list of features.
Become staff
Principal software engineer resume
There is no universal definition of Principal. There is a common thread: your decisions set the technical direction for more than one team, and the resume has to prove that without a list of titles doing the work.
Become staff
Personal branding for software engineers
An engineer's brand is not a voice or a posting schedule. It is what a stranger can verify about your judgment before they talk to you. Most engineers have the work and none of the evidence.
Get hired
Software engineer portfolio website
A portfolio website does one job: let a stranger verify your work in a minute. Most engineer portfolios are built to impress a designer and forget to prove anything to an engineer.
Work independently
Interviews

Senior Android interview questions: the 5 follow-ups that decide the loop
Your first answer rarely decides a senior Android interview. The follow-up does. Five follow-ups, the answer that loses the point, the one that earns it, and what to say when you wobble.
Pass interviews

Senior iOS interview questions: the 5 follow-ups that decide the loop
Your first answer rarely decides a senior iOS interview. The follow-up does. Five follow-ups, the answer that loses the point, the one that earns it, and what to say when you wobble.
Pass interviews

iOS coding interview: what the live round actually tests
The iOS coding interview is rarely a puzzle. It is a small app task under a clock, and the score comes from how you build it, not whether it compiles on the first try. The five common tasks, what gets scored in each, and what to say when it breaks.
Pass interviews

Kotlin coroutines interview questions senior Android loops ask
Ten coroutines and Flow questions senior Android loops ask, what each one tests, the follow-up that decides the score, and four short bugs worth practising until you can fix them out loud.
Pass interviews
You have 40 interview tabs open and still don't know what to study.
Interview preparation gets worse when everything looks important. The closer the interview gets, the more your calendar should force you to cut.
Pass interviews
You watched the solution. Then you opened an empty editor.
Watching someone code can make you feel ready. Live coding exposes the gap between recognition, retrieval, and making your judgment visible under pressure.
Pass interviews
AI can pass the assessment. You still have to survive the interview.
AI can produce a polished assessment. The harder part starts when a Senior engineer asks why the code exists and whether you own the decisions behind it.
Pass interviews
A correct Android answer can still fail the interview
Two answers to the same Android question, both correct, scored completely differently. What senior loops are measuring once you clear the knowledge bar.
Pass interviews
Senior iOS interviews are about risk
The strongest candidates do not just answer the question. They show how they think about production risk, tradeoffs and recovery.
Pass interviews
Resume bullets for senior iOS engineers
How to turn mobile engineering work into evidence of scope, judgment and impact without exaggerating.
Get hired
A modern Swift concurrency interview map
A senior interview map for async/await, actors, cancellation, task lifetime, Sendable and the bugs hidden around awaits.
Pass interviews
What interviewers score while you share your screen
The code is only one part of a live round. The interviewer is also recording how you frame, choose, verify and recover while the screen is shared.
Pass interviews
React Native interviews happen at the boundary
The framework answer is only the surface. Senior judgment appears where JavaScript, native work and product constraints meet.
Pass interviews
Test automation is not the senior SDET answer
The tool is not the decision. Senior test engineering begins with what failure costs, what evidence is trustworthy and who owns the response.
Pass interviews
Mobile architecture

iOS system design interview: a worked answer from the hiring side
The round is not scored on the diagram. It is scored on the decisions. A worked answer for an offline-capable messaging app on iOS, minute by minute, with the follow-ups interviewers use and how the Android answer differs.
Design systems
Swift 6 rejected the race. ARC stayed atomic.
Swift 6 can prove that some code is safe from data races. That does not mean reference counting suddenly becomes non-atomic.
Design systems
You cancelled the caller. Why is the shared Task still running?
Swift cancellation is cooperative. Cancelling the task that is waiting does not automatically cancel the separate task it is waiting on.
Design systems
An actor protects state. It does not own every retain and release.
Actor isolation is a concurrency guarantee. ARC is a lifetime mechanism. Treating one as a complete proof about the other is where the mental model starts to drift.
Design systems

Your SwiftUI App Works. Production Is Where It Starts Lying to You.
Three failures that appear after the happy path: stale results, slow "lazy" lists, and state ownership that no longer scales.
Design systems
What minimumScaleFactor trades away in SwiftUI
I ran into a typography inconsistency in a production SwiftUI interface, then reduced it to a reproducible case to understand what minimumScaleFactor was trading away.
Design systems
Mobile system design is not backend system design
Why offline, device constraints, sync, app lifecycle and platform boundaries change the interview and the architecture.
Design systems
Why iOS apps feel slow even when the API is fast
A practical look at the client-side bottlenecks that make mobile apps feel slow after the backend has already done its job.
Design systems
Swift concurrency bugs that pass code review
Four Swift concurrency bugs that survive code review at good companies: actor reentrancy, leaked tasks, ignored cancellation, and the onAppear trap. With fixes.
Pass interviews
How to review a mobile architecture proposal
A practical review framework for mobile architecture decisions: constraints, reversibility, ownership, migration and production proof.
Lead teams
SwiftUI vs UIKit: architecture is state ownership
Why production SwiftUI architecture is less about folder names and more about ownership, identity, effects and boundaries.
Design systems
Security requirements that cannot be tested are not finished
A security requirement becomes useful when a team can observe the behavior, test the boundary and know who owns failure.
Design systems
Staff engineering
Staff iOS engineer is not senior plus
The staff role is not just harder tickets. It is scope, leverage, decision quality and making other engineers more effective.
Become staff
Tech lead code review is a system
Good code review is not comment volume. It is a system for quality, ownership, mentoring and risk control.
Lead teams
Staff engineers change the decisions a team can make
The platform changes. The staff transition does not: your work must improve decisions beyond the feature and beyond your own presence.
Become staff
Related resources
Free resources the essays lean on
checklist
Developer career bottleneck checklist
A short diagnostic for software engineers. Find whether visibility, interviews, system design, scope or leadership is the real thing holding you back, then take the first action that fixes it.
answer-card
Senior iOS interview answer card
A speakable answer format for senior iOS questions: the first sentence, the production answer, the trap, the pushback and the recovery line.
checklist
Swift concurrency interview checklist
A senior-level Swift concurrency audit for cancellation, task ownership, actor reentrancy, MainActor boundaries, Sendable and flaky async tests.
FAQ
About the writing
What is the Salari writing section?
Field notes on interviewing, mobile architecture, staff engineering, independent consulting and AI-era engineering, the working notes behind the books.
Who writes these articles?
Mike Salari, a Staff Mobile Engineer and Mobile Architect, drawing on real production work and 500+ technical interviews from the hiring side.
Are the articles iOS-specific?
Many examples are iOS, but topics like system design, code review, staff scope and positioning apply across mobile and senior software roles.
How is the writing organized?
Into sections: Interviews, Mobile architecture, Staff engineering, Independent consulting and AI-era engineering.
Do the articles connect to the books?
Yes. Most books start here as field notes, then grow into chapters once an idea proves itself in real interviews, reviews and production systems.
What is mobile system design?
Designing the whole system around a mobile app: offline behavior, sync, caching, backend contracts, performance and failure modes, not just the client code.
How is staff engineering different from senior engineering?
Staff is about scope, leverage and decision quality, making other engineers more effective and owning ambiguous problems, not just handling harder tickets.
Is the writing free to read?
Yes. Every article is free.