My Journey of #100DaysOfCode with Flutter

Photo by Goran Ivos on Unsplash

My Journey of #100DaysOfCode with Flutter

What went right? What went wrong? Why Flutter? What is the goal this time around?

Hello everyone! 👋 Newbie dev in the group!

Last year, I embarked on the #100DaysOfCode challenge with Flutter on Twitter and made it up to Day 83. However, after that, my motivation to go further just fizzled. I loved doing the challenge and learned a lot in the process, but despite coming so far, the feeling of not crossing the finish line always leaves a bitter taste in the mouth.

But, after reminiscing and deep diving into last year's challenge and analyzing my journey from an objective lens, here I am, determined to make it to the end this time. For this year's challenge, I want to hold myself accountable, be consistent in my journey, engage with brilliant devs here and on Twitter and learn loads of good stuff in the process. So, I wondered, "What better way to start that journey than by combining two things I love the most - writing and technology". The result is this impersonal and tiny attempt of an account to do things right this time.

So, in this article, I want to share my journey with the challenge, why Flutter, what went right and what went wrong, and what I hope to achieve this time. So, without much ado...

What Is Flutter?

I'm pretty sure most of you here know what Flutter is and how easy it is to work with, but for fellow newbies, here's a short intro:

Flutter is Google's UI framework for building cross-platform iOS, Android, Web and Desktop apps. Flutter combines a high-performance graphics engine with Dart programming language at its core.

In development, Dart provides full Type Safety (ensures you avoid type errors like assigning the wrong type to a variable) and Hot Reload (the ability to render code to your UI at lightning speed⚡️) to help you build reliable apps quickly. In production, Dart complies to native machine code and renders your graphics beautifully to any platform.

Flutter's UI is laid out as a tree of widgets and has hundreds of inbuilt widgets to handle things like animation, scrolling and responsive layout. You can also build your own widgets by extending stateless widgets that are immutable and don't have any internal data.

Flutter Widget Tree breakdown from freecodecamp

Why Am I Obsessed with Flutter?

My obsession with Flutter began with my desire to build mobile apps. I'm not a developer, and I often think about apps from a user's POV, meaning I need to visualize the UI and the flow to understand my vision for the product, and most of the time, a scrappy-but-iterative UI sketch gets the work done.

So, when I started to build something myself, I was overwhelmed with the learning I needed to undertake to build apps in both iOS and Android. But entered Flutter, with its UI framework, allowing me to quickly translate my sketches onto a screen and go deeper into a particular feature without disturbing my flow. By doing this, I could keep my eye on the goal, not consume myself with one specific feature, and, if need be, scrap a complex widget off the page and return to it later.

So far, I've built some nice-looking but half-baked mobile app projects, and though they weren't technologically advanced, they gave me a sense of accomplishment and furthered my zeal to learn. And hey, at the end of the day, that's what matters the most, right?

What Went Right?

I was convinced that Flutter was fantastic (it is!!) and dived head-first into the challenge. Honestly, doing these things is what kept me going:

  1. Coding consistently

    Consistency doesn't mean doing something every day. It means you do it as often as possible with the same degree of passion and be mindful of what you are doing. For example, although I didn't code every day, I coded without giving up. Though my motivation wavered towards the end, my desire to get to the next page in the app or the next topic in the series kept me going.

  2. Taking the time to learn

    It is undoubtedly tempting to code for an hour, post your progress online, and mark that to-do box done, but there's no point in doing this challenge if you do not take the time to learn. There were days when I didn't code and only learned concepts to understand why a specific widget behaves a certain way or how I can customize a function to my needs. I wanted to go beyond what was in a course or a book and do things my way. Taking that time to do that helped me learn Flutter much more holistically.

  3. Choosing something I loved doing

    I love front-end. I love creating beautiful screens for users to drool over. However, if I had started my coding journey with Python or JS, I probably wouldn't have loved doing the challenge as much as I did. Don't get me wrong; I greatly respect other programming languages. Over time, I plan on diving deeper into them but for a design nut like me, choosing Flutter aligned with my goals and accelerated my interest.

What Went Wrong?

So, everything was excellent, but my motivation to push through still died towards the end, and here's why:

  1. No elaborate plan for Flutter

    Once I decided to learn Flutter, I added every resource I could find online to my learning repository. The plan was to have no plan but mark every single resource "done" as I progressed. Despite having a strong desire to succeed, this approach to learning has never worked for anyone and possibly never well. Planning what you want to learn at least a week in advance or following a course structure is, in my opinion, the best way to approach this challenge.

  2. Not understanding how I learn

    I dove right into reams of theory when time and again, it has been proven that I learn the best by doing - on the job and by building projects. But unfortunately, I neglected that insight and consumed concept after concept without understanding its practical usage or experimenting with it in different scenarios.

  3. Not picking the right resources that aligned with my goals

    My goal with the challenge was to build mobile apps, and in retrospect, the best ways to learn to build mobile apps are taking online courses, joining discord groups or engaging with fellow Flutter devs. So when I picked Flutter Apprentice (an excellent book that dives deeper into Flutter), I was so overwhelmed by the content size that I lost track of what I was doing. Undoubtedly, the book is terrific, and I hope to get back to it later, but it was just not for me then.

What Are My Goals For This Year?

What's done is done, and one thing I'm good at these days is letting go and moving on. So, this time around, I'm determined to keep the factors for both my success and failure in mind and -

  1. Learn to build exciting projects with Flutter

  2. Go beyond the UI framework and build a mobile app

  3. Engage with fellow Flutter devs and support each other in this journey

How Do I Plan To Achieve These Goals?

For this year's #100DaysOfCode challenge, I will be systematic and follow a set course. However, I don't want to be limited to the front end. So, after a good amount of research, I've figured out that Flutter and Firebase go well together.

So, I will learn from Fireship's Flutter Firebase course in this round. It is fast-paced, marked for intermediate-level learners and is designed to go from zero to the production-level mobile app. So, I'm super excited to begin this journey, and though I may not share updates daily, I will try my best to be consistent.

On that note, thank you for reading. Wish me luck, and I'm super happy to be here!

LFG! 🚀