From Mining Engineer to Software Developer: My Journey
Programming Was Always the Passion
I've loved programming since childhood. While other kids were playing games, I was fascinated by how software worked and how you could build things with code. That passion never left me.
When it came time for university, my A/L results got me into the University of Moratuwa — one of the top engineering universities in Sri Lanka. I chose Mining & Mineral Processing Engineering, and while it wasn't a CS degree, it gave me something invaluable: engineering principles and problem-solving skills that I use every single day as a developer.
But throughout university, my real hobby was building applications.
From Android to Flutter
I started my mobile development journey with native Android development. I spent about a year building Android apps, learning Java, understanding the Android lifecycle, and getting comfortable with mobile UI patterns.
After that first year, I migrated to Flutter. The cross-platform capability, the hot reload experience, and the expressive UI toolkit convinced me this was the future of mobile development.
My First Flutter Application
My first real Flutter project was a moving application for a Melbourne-based company. It was a great introduction to building production-quality mobile apps — dealing with real users, real requirements, and real deadlines.
Zomoto: Learning Flutter by Solving a Real Problem
After that, I took on the restaurant management application — what became Zomoto. The goal was to learn the Flutter framework deeper by automating the manual work that restaurants deal with every day. Orders on paper, mental math at the cashier, kitchen chaos — all of it could be replaced with a single app.
That project taught me more than any tutorial ever could. It's now running in 3 restaurants in Sri Lanka, and I'm still actively enhancing it with Clean Architecture and new features.
The Internship: Engineering Meets Code
During my internship period, I worked on a tunnel project as a trainee mining engineer. But even there, I couldn't stop building software.
I developed applications for the mining field during my internship:
- Mining Cycle Tracking Application — tracking the full mining cycle from drilling to hauling, giving supervisors real-time visibility into operations
- Production Analytics Tool — aggregating production data and generating insights that helped optimize output
These projects showed me something important: software can transform any industry. The mining engineers I worked with were doing things manually that could be automated in hours. Every field has these opportunities.
The Decision: Going Full-Time into Software
After completing my BSc, I had a choice to make. I could continue in mining engineering, or I could follow the path I'd been building alongside it for years.
I decided to learn more about real-world application development at a deeper level. I joined the IT faculty as an instructor, and this is where everything came together.
What I Learned as an Instructor
Teaching forced me to truly understand the fundamentals. But more importantly, being in the IT faculty exposed me to areas I hadn't explored deeply:
- System Design Principles — how to architect applications that scale, how to think about distributed systems, data modeling, and trade-offs
- Backend Development — building APIs, database design, server-side logic, authentication systems
- DevOps — CI/CD pipelines, deployment strategies, containerization, cloud infrastructure
This period transformed me from a mobile developer into a full system designer. I could now think end-to-end — from the mobile app in the user's hand to the server processing their request to the database storing their data.
Where I Am Today
Today, I build full-stack applications with:
- Flutter for mobile applications
- React for web frontends
- Node.js for backend services
- Firebase & Cloud technologies for scalable infrastructure
I've built production applications running in real businesses, I teach and mentor aspiring developers, and I continue learning every day.
Lessons from the Journey
Engineering Principles Transfer Everywhere
My mining engineering background wasn't a detour — it was a foundation:
- Analytical thinking → Debugging and system design
- Process optimization → Code architecture and performance
- Problem-solving under constraints → Building with real-world limitations
- Documentation and reporting → Writing clean, maintainable code
Build Real Things for Real People
The projects that taught me the most were the ones solving real problems — the moving app, Zomoto, the mining tools. Tutorials teach syntax. Real projects teach engineering.
Teaching Deepens Understanding
Becoming an instructor at the IT faculty wasn't just about sharing knowledge — it forced me to fill gaps in my own understanding. If you want to master something, try explaining it to someone else.
Follow Your Passion, Even When the Path Isn't Straight
My path went from childhood programming hobby → mining engineering degree → Android development → Flutter → mining internship apps → IT instructor → full-stack developer. It wasn't a straight line, but every step added something valuable.
What's your story? If you're on a similar journey — combining engineering with software development, or transitioning into tech from another field — I'd love to hear about it.