Introduction
This blog post marks the final milestone of my journey through the Anveshan Track. What started as a series of individual technical tasks gradually became a holistic learning experience, one that strengthened not only my technical skills, but also my approach to problem-solving, design thinking, and self-discipline.
Each task pushed me to step slightly outside my comfort zone, explore unfamiliar tools, and reflect on my progress. This README serves as a reflection on that journey: the lessons learned, challenges faced, and growth achieved along the way.
Task 00 — Codeforces (Not Completed)
The program began with a strong emphasis on competitive programming through Codeforces. While I understood the importance of consistent practice and algorithmic thinking, I was unable to actively complete this task during the program timeline.
That said, this task highlighted an important takeaway for me:
Growth in problem-solving requires patience, consistency, and long-term commitment—not just short bursts of effort.
It reminded me that competitive programming is a skill I need to revisit with a more structured and disciplined approach in the future.
Task 01 — Git Fundamentals
This task laid the foundation for everything that followed.
By solving challenges from gitexercises.fracz.com, I moved beyond memorizing commands and began to truly think in Git. Concepts like commits, branching, rebasing, stashing, and history rewriting became clearer through hands-on problem-solving.
What I Gained
- A deeper understanding of version control workflows
- Confidence in fixing mistakes instead of fearing them
- Appreciation for clean commit history and collaboration practices
This task reshaped how I view code management and teamwork.
Task 02 — Software Requirements Specification (SRS)
Creating the SRS for MeloFi was my first step into structured software planning.
Instead of jumping straight into coding, I learned the importance of defining:
- Goals
- Scope
- Target users
- Core features
- Technology choices
Writing the SRS helped me realize that good software begins with clarity, not code. It trained me to think like a product designer as much as a developer.
Task 03 — Wireframing
Wireframing introduced me to visual thinking.
By designing low-fidelity wireframes for both web and mobile versions of MeloFi, I focused on layout, navigation flow, and user interaction—without worrying about aesthetics.
Key Learning
- Structure matters before style
- User flow defines user experience
- Simplicity is a strength in early design
This task taught me to design with intent, not assumptions.
Task 04 — UI Design
This was where ideas came alive.
Converting wireframes into high-fidelity UI designs using Figma allowed me to explore spacing, icons, components, and visual consistency. Designing both mobile and desktop versions helped me understand responsiveness and adaptability.
This task was especially rewarding because it blended creativity with logic, two skills that rarely meet but work best together.
Task 05 — Frontend Development
Building the frontend of MeloFi using React was one of the most challenging yet satisfying tasks.
What I Achieved
- Authentication UI (login/signup)
- Dashboard with music and playlists
- Search functionality
- API integration for music data
What I Couldn’t Complete
- Playlist UI for selected playlists
- Profile page
This task taught me an important lesson:
It’s okay to not finish everything—as long as you understand why and learn from it.
Debugging UI issues, managing state, and connecting APIs significantly improved my frontend confidence.
Task 06 — Backend Development
Backend development with Flask pushed me into a more logic-driven mindset.
I implemented:
- User authentication with JWT
- Secure password hashing using bcrypt
- Protected routes
- MySQL database integration
- RESTful APIs with proper structure
While I couldn’t complete playlist and profile APIs, this task gave me clarity on backend architecture and security fundamentals.
It transformed backend development from something intimidating into something approachable.
Task 07 — Mobile App Development
This task focused on building the Android frontend for the MeloFi music streaming app using Kotlin and Jetpack Compose.
What I Built
- Login and Signup screens using Jetpack Compose
- Dashboard screen with Songs and Playlists sections
- Fetched songs from a free music API using Retrofit
- Displayed song banners using Coil
- Basic music playback on song click using MediaPlayer
Tools Used
- Android-Studio
- Kotlin
- Jetpack Compose
- Retrofit + Gson
- Coil
- MediaPlayer
What I Couldn’t Complete
- Search functionality
- Playlist management
- Bottom navigation
- ExoPlayer integration
- Local storage (Room / DataStore)
- MVVM architecture
This task helped me understand the basics of Android app development, API integration, and building reusable UI components with Jetpack Compose.
Task 08 — Build a Simple Shell
This task stood out as one of the most technically enriching experiences.
Building a Unix shell in C helped me understand what happens beneath the abstractions we often take for granted. Implementing process creation, job control, background execution, and signal handling deepened my understanding of operating systems.
Even though I couldn’t fully implement Ctrl+C and Ctrl+Z handling, I learned how real shells work—and gained respect for their complexity.
Key Takeaways From the Journey
- Time management is an important factor
- Learning is non-linear, and that’s okay
- Strong foundations matter more than quick results
- Design, frontend, backend, and systems programming are deeply connected
- Incomplete tasks still carry valuable lessons
- Growth comes from reflection as much as execution
Advice for Future Participants
- Don’t rush—understand
- Document your learning, not just your output
- Embrace challenges instead of avoiding them
- It’s okay to struggle; it means you’re learning
- Finish strong, but more importantly, finish honestly
Conclusion
This track was more than a checklist of tasks—it was a journey of growth, discipline, and self-discovery. Each task added a layer to my understanding of software development, from idea to implementation.
This is not the end, just a strong beginning.