Daria’s Flutter diaries: Summer 2023

Daria Orlova
Google for Developers Europe
13 min readJul 11, 2023

--

It’s been more than a year since I’ve written my last Flutter diaries. Initially, I started them to train my discipline and consistency in content creation, but this mission is long accomplished 😁 Don’t get alerted though, we won’t be reviewing my whole year in this one post, but I do want to reflect on the highlights of this summer so far. Keep in mind, this is a blog post, not a tutorial, which means it’s barely edited. So a lot of words and a bit of cringe is expected 😁

Flutter Academy by Chili

Chili is a mobile agency based in Latvia. We’re on the market for more than 7 years now, and I’ve been part of it for almost 6. During these years we have advanced in two areas very much: mobile development and talent growth. We often hire interns or juniors without industry experience, and with the help of mentoring and standardized practices, we help them grow into independent developers. Also, we’ve been Fluttering for the last ~4 years. And the idea of creating a course or a school was always at the back of my mind. So I finally went to our CEO with a proposition to merge our experience into one: the Flutter Academy. And he said yes 🤩

Creating the program

I wrote the program of a course for 20 lessons in one sitting: it was already in my head, it just had to be put down on paper. But after some discussions, we decided to launch the first version as a shorter, one-month intensive, which turned out to be 12 lessons, 4 hours each. The goal was to teach Flutter and some industry practices to a level that could be hired as a junior Flutter developer. The target audience was people with a basic understanding of programming concepts in any other language than Dart. Roughly, here are the topics I decided to cover in this intensive:

  1. Working with git and Github via pull requests, as well as your general stack (Jira, Slack, Figma).
  2. Dart language basics, obviously. Later on some more advanced concepts too.
  3. Flutter: building UIs of various complexity, mostly by using widgets that are available out of the box, combining them into something custom, and a tiny bit of slivers.
  4. Mobile specifics: navigation, material design, dialogs, snackbars, all of that stuff.
  5. Working with REST APIs and a bit with local storage.
  6. App architecture & state management.
  7. Unit tests.
  8. And of course all things like app icons, splash screen, localization, and using libraries.

Besides all of the hands-on things that we learned, I was also very keen on teaching code hygiene from the start: properly formatted code, zero static analysis warnings, code review, and so on. And alongside all of the work done in class, I prepared homework for my students, which made sure they got to work on the required skills independently.

Finding Class #1

Because there were so many unknowns and we were doing this for the first time, we decided to go for the simplest format: an offline course in the Chili office, an application via Google Forms, and a small group of 5 people. We didn’t do any serious advertising, just mentioned launching the Academy on our socials, and that’s how we found our focus group, our Flutter Academy Class #1 🎉 Unexpectedly, one of the impediments was that I had to stay in Riga for one month straight. It turned out to be not such an easy task. Apparently, I’m living my best life 😂 Finally, we settled on June, and even though the timetable was a little bit chaotic, ranging from 2 lessons per week to 4 lessons, we managed to fit into one month and also cover all of the material.

Working on the course

A full-blown course is a big and complex project. And where there is “big” and “complex”, there is also fear, perfectionism, and procrastination. From the first time I laid out the program on paper to when I actually got to work on the lessons, was a period when I found many more important work tasks to do 😂 They were all useful and impactful, but had nothing to do with the course. Thankfully, it didn’t last long and my discipline took the lead I just made myself do it, and eventually, I had enough on my hands to actually teach. My process was the following:

  1. Define goals for each lesson
  2. Based on these goals come up with code exercises
  3. Do those code exercises myself
  4. Write down a detailed plan of the lesson (e.g. 15 min explain this, 30 min practice this… and so on)
  5. Come up with homework for this lesson
  6. If required, make slides for this lesson

How well this detailed planning turned out we will see soon 😁 First lessons were outlined very detailed, minute by minute, but I decided not to do it for every single one. From my experience with workshops, the timing is always approximate, depending on the students and how things go, so you have to leave some wiggle room for everything that can go wrong. Also, I planned to understand the pace once I actually do some real lessons with the real group, so that I can adjust without doing too much extra work upfront.

Conducting the Flutter Academy Class #1

Honestly, I was very scared of the first lesson. I didn’t know the people (we have met only once before to sign the documents), I’ve never conducted a multi-lesson course and even though I knew that the materials which I had were valuable, I really hoped that my students would agree with me 😅 But as it often is, initially it seems scarier than it turns out to be in the end. I had an amazing group of students, patient, enthusiastic, and hard-working. I think we all connected very well, the whole group among themselves and with me as a teacher (teacher, omg 😂). Some things I’ve learned during the course, in no particular order:

  1. Timing will go wrong. You have to always remember the goals of the lesson and be swift in adjusting on the fly: sometimes with extra examples, sometimes with more explanations, sometimes making use of the whiteboard, whatever makes sense at the moment. Sometimes, explaining and practicing the concept will take more time than you anticipated and you will have to be ready to adjust the next lesson based on that. Or insert an extra lesson in between. So tip number 1: if your lesson is 4 hours, prepare content for 2,5–3 hours. In this case, if everything goes smoothly, have a couple of extra tasks. If not — the extra tasks could be given as homework or disregarded without impacting the flow of the course. Same on a wider scope: if you have 12 lessons, plan for 10–11, and have 1–2 lessons for anything unexpected, or an extra topic if everything goes smoothly.
  2. Students have different experiences and skills. We did some initial screening, and even though the general level of programming was the same, still all people are different. Some people catch everything on the fly, some need a bit more work — this is completely fine and expected. But you have to be ready for that because for me it was one of the most challenging tasks: to balance the lesson in a way that everyone understands everything (this is important!), but also no one is bored. Having optional additional tasks on hand to keep everyone busy is always a good idea.
  3. Students are people. And people have emotions, stress, and life. This will impact both how they learn, but also how you can help them to learn. Patience, understanding people's behavior, and being able to encourage and cheer is very important so that everyone feels comfortable and achieves success. Teaching an in-person course is a very intensive energetic exchange, you have to understand that. It’s not for everyone, I think you have to be very empathetic and have a genuine interest in helping people to ensure that your course is a beneficial experience.
  4. The benefit of an in-person small group course is that you can come up to the person and help them right here right there. I think it was one of the most valuable aspects of my course, to be honest. I’m not sure yet how to reproduce it in an online format or with a large group. Maybe having an assistant, i.e. 1 assistant per 5 students would help.
  5. Checking homework takes a lot of time. Don’t know what to add here or what did I expect 😂 But personal work for which you get feedback is a great skills booster, so it’s an invaluable part of such a course. Just plan your time accordingly.
  6. Hands-on practice is much, much more fun than presentations 😁 I had slides only for cases when I really needed to explain some theoretical concept before diving into practical, but even in these cases I kept them to a minimum. Based on the reaction of my students, I did the right thing 😅

I think that’s pretty much it. Couple of more practical things that might be interesting to anyone working on courses:

The lesson format usually consisted of the following:

  1. I introduced a new concept and students were watching on the screen while I did it
  2. Then we did some code-along
  3. After that, I gave them a task for repetition of what we just learned, which they did by themselves, but had me for any questions and help
  4. Then we moved on to the next concept and the pattern repeated

Having a text version of the lesson can help in several ways:

  1. If it’s a workshop with a lot of people and it’s impossible to assist each and everyone, such a document can help to follow along if anyone is falling behind or didn’t catch something. It should have code pieces, links to libraries, docs, and so on. Basically a text backup of your workshop.
  2. If it’s a 4h video lesson that covered a lot of concepts, rewatching it just to find a specific example can be inconvenient, so for some lessons, I did text-based recaps with all of the important information covered in the lesson, so that the students didn’t have to rewatch the whole thing. Oh, and yeah, even though my course was offline, we did record via Google Meets just for ourselves and some students said they rewatched lessons and this helped them.

If your course is online, then filming the whiteboard might be a problem. For such case, I plan to learn how to use an iPad and draw there, but this is for the next time 😅

Would I do it again?

Yes, I would. With some adjustments, also I would love to create a course for an intermediate or advanced audience. Maybe it will be the extended version of this one. We will see, but at least for July I need a rest 😁 It was an amazing experience and I’m eternally grateful for everyone who believed in me and made it happen: full support and backup of Chili and the team (designers, project managers) and, of course, the students. They started out without having any clue of how Flutter works and by the end, I’ve seen them creating real-world apps. I’m super excited to see where this Flutter path will lead them!

P.S. — if someone told me I would become a teacher and would educate people on how to create mobile apps with examples of Disney characters, books, and cats (obviously…), I wouldn’t believe them. But here I am, and I’m so happy about this 🥺

So the whole month of June was super busy for me with the Flutter Academy… but not only. I had to prepare my talk for the FlutterCon 2023 which was supposed to happen at the beginning of July in Berlin, as well as got lucky to participate in Google I/O Connect in Amsterdam. So let’s recap!

Google I/O Connect in Amsterdam

Since I was a young Android developer, I had one developer dream: to participate in Google I/O! Even though this is a dream that is yet to come true fully, this year I was presented with just as an amazing opportunity: the Google I/O Connect event in Amsterdam.

This was an event organized by Google to celebrate and recap all of the awesome things we learned during the official I/O event. Mostly, about AI, of course, 😁 But also how to incorporate it into our own applications and real, practical use cases. It was exciting to attend sessions that dived deeper into new features and get inspired to get hands-on with them ASAP!

The organization itself was top-notch: the registration, the venue, the activities, the food. Just everything! But of course, most important, is the community. Even though I missed the Community Mixer event because of my 5-hour delayed flight the day before, I’ve still got to spend a very fun day (and night 😂) with the Flutter Community. I’ve never been part of a tech community before Flutter, but I still feel like it’s unique: it’s so kind, fun, supportive, and diverse! Always a pleasure to hang out with the fellow flutterists and flutteristas all around the world 💙

Speaking about community, the biggest gathering of the Flutter developers was at the first ever FlutterCon — yet another highlight of this summer, but also of the year in general!

FlutterCon 2023

DroidCon Berlin has been a very popular conference for the longest time, one of the biggest gatherings of mobile developers in Europe each year. I wanted to go many times, but every time something went wrong and it never happened. But this year it was announced that FlutterCon 2023 will be hosted alongside DroidCon and there was no chance I was missing THAT! Moreover, I got the pleasure, honor, and stress of being one of the speakers.

Speaking at an offline conference

It was my first time speaking at a conference and not a local meetup, and to say I was nervous was to say nothing at all. If you haven’t given a talk, maybe you don’t notice this, and not all people talk about this, but despite speakers being confident and giving talks on stage like it’s nothing, I know from personal experience and also from speaking with fellow speakers, that many of us are stressed big time.

Public speaking is a challenge on so many levels: you have to prepare a 30–40 minute talk, make it educational yet entertaining, do technical things like slides and code samples, and then go up to that stage and don’t forget what your name is and why you’re standing there. But the feeling afterward… There is no point in trying to describe it in words because feelings are that — they’re indescribable. That feeling is the reason why you go and do it again. That interaction, that exchange with your audience — now I know, because offline speaking is completely different from online. Much scarier, because there are actual people staring back at you and listening to what you have to say, but also much more rewarding, because you get feedback, you get to discuss topics that you care about, it’s just so much more fun. And surprisingly, my room was so full that even people sitting on the floor didn’t have space left. I’m really happy that so many people care about code quality because the topic of my talk was “Healthy Code: A guide to Flutter app code audit”. Even though the recordings are not yet available, you can find some materials here.

Apparently, I like writing as much as talking, based on how many words I have here already, but whatever, my Flutter diaries is the format just for that 😁

Attending talks

The conference went on for 3 days and had 4 parallel tracks each and every day. I think this says A LOT about the popularity of Flutter. And even though this fact is amazing, it also meant that I had to miss more talks than I could attend. A lot of times the choice was not just hard, but painful, because I had friends speaking at the same time, and besides learning from them, I also wanted to support them. Every single talk I went to was delightful, the quality of the content and the delivery didn’t disappoint.

The Flutteristas 💜

I am also super proud of all of the Flutteristas that gave the talks at this conference: you are amazing 💜 Women in tech still have challenges up to this day, and we discussed some of them during the Flutteristas panel. What was even more heartwarming is the people coming to us later and asking for advice on how can they help out with the issues.

And we even had some fun at the booth! It was mainly hosted by our Flutteristas rockstars Sarah, Danielle, and Esra, who did an incredible job of recruiting new Flutteristas. But during the last day, Anna and I got to have some fun and create and lead the quiz to win Dash. I think this was the most popular attraction from any of the booths 😂

The community 💙

You’re probably thinking, how much can she go on and on about the same topic? A lot, my friend, a lot 😁 Because it is what it is, the people are what make offline events so memorable and fun. For the educational side of things, talks can be later on watched and re-watched on Youtube. But the connection in the moment, actually meeting the people that you know and admire from online, the in-person support, and the fun at all of the parties — this is all about people. And Flutter people are the best 💙

P.S. — I’ve attacked the RevenueCat booth so many times that they left some cat socks for me. That, and the cat pins that I collected is absolutely the best swag a cat-crazy person like myself could wish for. What makes it better is that it’s not a random company swag — I actually introduced RevenueCat to one of our projects.

And with that, let’s wrap up! It was refreshing to finally write a blog post. If you’re following my writing, you might have noticed that I haven’t posted anything since January… But I have a good reason, believe me. I’m working on something big and I can’t wait to share it with you all, but until then, you can catch me at the upcoming Flutter events: Flutter&Friends in Stockholm and Flutter Firebase Festival in Prague 😉

Let’s connect on Twitter — you can find me at @dariadroid.

Daria 💙

--

--

Daria Orlova
Google for Developers Europe

Flutter Developer @ChiliLabs • Tech writer, speaker & mentor • Co-founder of the Bunny Search app • Love traveling & animals. Especially cats!