
Havish Pallerla
September 22, 2025 • 8 min read
Building Apps That Fuel Your Passions: A Developer's Learning Journey
How creating SideQuest for travel and Arcode for learning transformed my approach to software development, and why building solutions for your own interests is the key to continuous growth.
There's something magical that happens when you build software to solve your own problems. It's not just about the end product: it's about the learning journey, the passion that drives you to iterate until it's perfect, and the deep understanding you gain along the way. Let me share how building apps for my own interests has shaped my growth as a developer and why I believe this approach is the secret to continuous learning.
When Problems Become Passion Projects
Every great app starts with a frustration. For me, it was trying to plan the perfect trip with friends and getting overwhelmed by scattered information, conflicting recommendations, and the complexity of coordinating everyone's preferences. That frustration became SideQuest, a full-stack travel platform that now serves 100+ users with personalized itinerary recommendations, Google Maps integration, and sub-200ms response times.
But here's what I learned: building SideQuest taught me more about software engineering than any tutorial ever could. When you're solving your own problem, every design decision matters. You can't fake understanding when you'll be using the app yourself every day.
What building SideQuest taught me:
- Full-stack architecture: Understanding how frontend React communicates with backend APIs
- Database optimization: Making queries fast when you have real users waiting
- User experience design: What actually matters when someone is planning their dream vacation
- AWS deployment: Moving from localhost to production with confidence
- Performance monitoring: Why sub 200ms response times became non-negotiable
Learning Through Play: The Arcode Story
After SideQuest, I realized something profound: I learn best when I'm having fun. Traditional coding tutorials felt disconnected from real-world application, and I wanted something more engaging. That's when I started building Arcode, a gamified learning platform where coding meets the arcade.
Arcode isn't just another learning platform. It's designed to make programming education engaging through interactive challenges, progress tracking, and skill-based advancement. But more importantly, building it became my playground for experimenting with new technologies and learning concepts I'd only read about in documentation.
The Learning-by-Building Cycle
Here's what I discovered: when you build apps for your own interests, you create a powerful feedback loop. You use the app, find pain points, iterate on solutions, and in the process, you naturally learn new technologies because you need them to solve real problems.
// Example: How Arcode pushed me to learn new React patterns
const useGameProgress = (userId, challengeId) => {
const [progress, setProgress] = useState(null);
const [isLoading, setIsLoading] = useState(true);
// Custom hook I built to manage game state
// Led me to learn about React Context, useReducer,
// and advanced state management patterns
useEffect(() => {
// This challenge made me dive deep into
// performance optimization and caching strategies
const loadProgress = async () => {
const cached = await getCachedProgress(userId, challengeId);
if (cached && !isStale(cached)) {
setProgress(cached);
} else {
const fresh = await fetchProgress(userId, challengeId);
setCachedProgress(userId, challengeId, fresh);
setProgress(fresh);
}
setIsLoading(false);
};
loadProgress();
}, [userId, challengeId]);
return { progress, isLoading };
};
My Current Learning Goals and Why They Matter
Building passion projects has shown me where I want to grow next. Right now, I'm focused on diving deeper into C++ because I want to understand how high-performance systems really work. It's one thing to use a React framework; it's another to understand the underlying memory management and optimization that makes everything possible.
My current learning roadmap:
- C++ mastery: Understanding memory management, pointers, and system-level programming
- Advanced algorithms: Building a stronger foundation in computational complexity
- Quality assurance expertise: Diving deeper into testing frameworks and automation
- System architecture: Learning to design scalable, maintainable systems from the ground up
- Performance optimization: Making applications not just work, but work beautifully
The QA Passion: Why I Love Testing Software
One area where my passion really shines is quality assurance and testing. There's something deeply satisfying about building robust systems that work reliably under pressure. When I developed the Smart Email Triage System for Auto-Owners Insurance, it wasn't just about getting the NLP classification working. It was about ensuring it could handle thousands of emails without fail, classify them accurately, and integrate seamlessly with existing systems.
I love the detective work of QA: finding edge cases, stress-testing systems, and building comprehensive test suites that give you confidence in your code. It's not just about preventing bugs. It's about understanding your system so deeply that you can predict how it will behave in scenarios you haven't even encountered yet.
Building Test-Driven Passion Projects
When I work on personal projects now, I approach them with a QA mindset from day one. For SideQuest, I built comprehensive test suites that validate everything from API response times to user journey completion rates. For Arcode, I created automated testing that ensures the gamification mechanics work correctly across different user skill levels.
// Example: Testing approach for SideQuest travel recommendations
describe('Travel Recommendation Engine', () => {
test('should return personalized recommendations within 200ms', async () => {
const startTime = Date.now();
const recommendations = await getRecommendations({
userId: 'test-user',
preferences: ['adventure', 'budget-friendly'],
destination: 'tokyo'
});
const responseTime = Date.now() - startTime;
expect(recommendations).toHaveLength(5);
expect(responseTime).toBeLessThan(200);
expect(recommendations[0].score).toBeGreaterThan(0.8);
});
test('should handle edge cases gracefully', async () => {
// Test with unusual inputs that real users might provide
const edgeCases = [
{ destination: '', preferences: [] },
{ destination: 'nonexistent-place', preferences: ['invalid-pref'] },
{ destination: 'tokyo', preferences: Array(100).fill('adventure') }
];
for (const testCase of edgeCases) {
const result = await getRecommendations(testCase);
expect(result).toBeDefined();
expect(result.error).toBeDefined();
}
});
});
Why You Should Build Your Own Solutions
If you're reading this and feeling inspired to start your own passion project, here's my advice: start with a problem you actually have. Don't build another todo app because everyone else is doing it. Build something that you'll use, iterate on, and care about improving.
The Passion-Driven Learning Framework
- Identify a real problem in your life - Something that genuinely frustrates you or could be improved
- Start simple, but plan for complexity - Begin with an MVP but architect for growth
- Use it yourself religiously - Be your own first and most critical user
- Let the problems guide your learning - When you hit a wall, that's where the growth happens
- Test everything obsessively - Build quality in from the beginning
- Share your journey - Document what you learn; it helps others and solidifies your knowledge
The Compound Effect of Passionate Building
Here's what I've realized: every app I've built for myself has made me a better developer in unexpected ways. SideQuest taught me full-stack development and user experience design. Arcode pushed me into gamification psychology and advanced React patterns. The VoiceBiometric Auth system I built for Salesforce deepened my understanding of security and enterprise integration.
Each project builds on the last, creating a compound effect of learning that wouldn't be possible if I were just following tutorials or building assigned projects. When you solve your own problems, you develop intuition, taste, and technical depth that can't be taught: only experienced.
The results speak for themselves:
- SideQuest now serves 100+ users with personalized travel recommendations
- My AI Coding Assistant helps 500+ developers write better code
- The Smart Email Triage System processes thousands of emails with high accuracy
- Each project taught me technologies I now use professionally
- The testing and QA skills transfer directly to enterprise environments
Your Turn: What Will You Build?
I'm sharing my story not to impress, but to inspire. Every successful developer I know has a similar collection of passion projects: apps they built to solve their own problems, learn new technologies, or just because they found something interesting.
What problem in your life could you solve with code? What technology have you been curious about but haven't had a reason to learn? What would you build if you knew you couldn't fail?
Don't wait for permission. Don't wait for the perfect idea. Start building, start learning, and let your curiosity guide you. The best developers are the ones who never stop being students, and the best way to stay a student is to keep solving problems you care about.
What are you building next? I'd love to hear about your passion projects and learning journey. The developer community grows stronger when we share our stories and inspire each other to keep building, keep learning, and keep solving the problems that matter to us.