I graduated with a BS in Computer Science from NCBA&E in 2024. By that point I'd already been building mobile apps for about a year — first as a hobby, then as an intern, and eventually as a professional developer. This is a straightforward account of how that happened, what each role taught me, and what I'd tell myself if I could start over.
How It Started — NCBA&E (2021–2024)
I started learning mobile development in my second year of university, purely out of curiosity. I'd built some web projects with HTML, CSS, and JavaScript, but web felt static to me. Mobile apps were on the devices people actually used all day. I wanted to build things people would actually touch.
I started with Flutter because the documentation was the best I'd ever seen for any framework. The official Flutter docs explain not just how to do things but why — the motivation behind the widget architecture, the reason for immutability in UI, the trade-offs in the state management approaches.
My first real project during university was the Student Portal — a React Native app with a Laravel backend. It was a full-stack project: role-based access for students and teachers, course management, quiz functionality, and an assignment submission system. Building something real — something that actually worked — was the turning point. That's when I stopped thinking of myself as a student who codes and started thinking of myself as a developer.
2B Vision Technologies — Intern Flutter Developer (Nov 2024 – April 2025)
My first professional role was a Flutter internship at 2B Vision Technologies in Lahore. The first few weeks were humbling. There's a large gap between code you write for yourself and code you write as part of a team. Code reviews exposed assumptions I didn't know I was making.
The most valuable thing I learned wasn't a specific technology — it was professional pace. How to estimate how long something will take. How to communicate when you're blocked. How to push back on a requirement that doesn't make technical sense, and how to do it respectfully.
Practically, I worked on Flutter UI development, API integration with REST backends, and local state management with GetX. The codebase I worked in was larger than anything I'd touched before.
People AI — Junior Flutter Developer (June 2025 – Aug 2025)
People AI was a short engagement but a dense one. The pace was faster, the expectations were higher, and I was given more ownership over features than I'd had before.
This role consolidated the fundamentals. By the end of it, I felt genuinely comfortable with Flutter — not just capable, but fluent. I could read an unfamiliar part of the codebase and understand it quickly. I could architect a new feature from scratch without being paralysed by options.
I also got my first real experience with production deployments during this period. Releasing updates through the Play Store, managing versioning, dealing with crash reports from real users — this is different from development in ways that matter.
JBMinds — Flutter Developer (Sep 2025 – Present, Part Time)
JBMinds is where I built the warehouse and riders apps. The work here moved me from "developer who builds things" to "developer who thinks about systems". Logistics apps are unforgiving — data loss, crashes, and UI confusion have real operational consequences. I started designing defensively: caching everything important, handling every error case, testing on low-end devices.
CrocusZone — React Native Developer (April 2026 – Present)
My current full-time role at CrocusZone is in React Native. The switch from Flutter to React Native was less dramatic than I expected. The concepts transfer cleanly: component-based UI, state management, navigation, API integration — these are the same problems with different syntax and different libraries.
What I had to relearn: the JavaScript ecosystem. Package management in npm is noticeably more chaotic than pub.dev. What I already knew how to do well: think about performance, structure state management sensibly, design for offline resilience.
Honest Advice for New Mobile Developers in Pakistan
Start with Flutter. The developer experience is better for beginners, the documentation is excellent, and Dart is a cleaner first language than JavaScript for people who haven't already built web apps.
Build and ship. The gap between someone with three shipped apps and someone with zero shipped apps is enormous, regardless of what the code looks like. Publish to the Play Store. Deal with the review process. Get real users. Nothing in a tutorial prepares you for what you learn from that.
Internships matter. You will learn more in three months of an internship than in a year of self-study. Apply before you feel ready.
Learn the business context. The best engineers I've worked with understand why a feature exists, not just how to build it. When you understand the business problem, you make better technical decisions.
The Pakistani tech industry is growing. Companies like CrocusZone, JBMinds, and others are building real products with real technical challenges. The opportunities are there. The barrier is almost always skills and persistence, not geography.
Two years ago I was an undergraduate writing my first Flutter widget. Today I'm maintaining production apps used by real people at two companies. The path was consistent: build things, ship them, get feedback, improve. That's still the plan.