Reaching the first 30k views

After writing this post we’ve noticed that there’s a lot to say about the online edition of the Android Training Program. More than ten pages to be precise. So we’ve decided to split this into two: a TL;DR section where you can read a brief resume of the program and a pocket book version that you can find next.

TL;DR

The Android Training Program started back in 2018. It’s initial goal was to visit different Universities or Polytechnics across Portugal and spend a day teaching students the basics of Android development as well as how they could keep improving their skills — along with Codelabs and Udacity programs. We’ve held 14 events across 11 different academic institutions and were able to teach the wonders of Android development to around 3300 students that we hope today are app developers.

Due to the pandemic, as people started working from home, we needed to rethink the 2020 edition. In-person events were no longer an option, and we wanted to keep everyone engaged with the program — so it needed to be interesting and at the same time enjoyable, otherwise people would just log off.

One of the first decisions that we took was switching to Portuguese entirely. This removed any barrier that the language can create, and allowed us to reach students from different Portuguese speaking countries — such as Brazil, Mozambique, Angola, and Cape Verde.

We’ve gathered feedback from various academic institutions which were already teaching online and created a partnership with them: they shared the program across their teachers, mailing lists and student nuclei and from our side we could give them visibility and all the free content produced for our classes that they could later use.

This edition of the ATP was 12 classes, during which we covered not only the basics like activities, fragments, UI Components, etc., but also taught about more complex issues, eg. Jetpack libraries like the CameraX, Room, Paging and we even gave a quick glimpse at Compose. We’ve talked about Firebase and Machine Learning, namely TensorFlow Lite.

This way we could reach a broad audience and tackle more advanced concepts that sometimes seem to be a little left behind.

Each episode was set to be 1h30 long and was split in half: for the first 40 minutes we were focusing on theory and the other 40 on practice. For the remaining 10 minutes, we’ve always had an invited speaker to talk a bit more about a specific subject. We were lucky enough to have people from Google, GDE’s, community organizers, Universities, startups, etc. Our most sincere thank you to them all!

Along with the live classes, we also created a Discord server where anyone could ask us questions and share additional feedback at any time. This is still going strong as we keep receiving new questions weekly.

We couldn’t be prouder of the final result of the program as we managed to record more than 25 hours of content with the support of developer advocates from Google and key members of the Portuguese ecosystem, creating a huge community of ~5000 participants (80% from Portugal, 15% from Brazil, and 5% from Africa), with ~3000 subscriptions in Youtube, delivering +30000 views, and 2000 participants in our Discord channel. And you know what? All in Portuguese.

Screenshot from the last ATP 2020 class
Screenshot from the last ATP 2020 class 🎅

We’ve had an amazing run these past years with the Android Training Program, and we’re just getting started! Do you want to start a similar program in your country or community? Feel free to reach us, our DM’s are open: @davilagrau @cafonsomota and @tallnato.

The team of ATP (Android Training Program):

  • Andres-Leonardo Martinez-Ortiz
  • Carlos Mota
  • Renato Almeida

Reaching the first 30k views (long version)

Just like many stories, this one also starts with once upon a time… in 2018 we’ve been lucky enough to be challenged by Andres-Leonardo Martinez-Ortiz, or as most of you know him — Almo, to start an ambitious project — Android Training Program (ATP). For the first two years the program was held at Portuguese Universities and Polytechnics throughout the country with the aim of teaching students how they could start developing Android applications.

Since those initial classes three years ago, we’ve held 14 events across 11 different academic institutions and were able to teach the wonders of Android development to around 3300 students that we hope today are app developers.

Android Training Program in person @ Aveiro’s University
Android Training Program in person @ Aveiro’s University

While we were planning the 2020 edition, due to the pandemic all the in-person events were shut down and Portugal made a shift to working from home.

Developers started figuring out how to deal with this new scenario, moving fast to the online world. For ATP there were only two options: we could either reinvent the program to be online-friendly or cancel it. Analyzing our strengths we realized we had no experience in carrying out online programs, no experience in video production, no experience in learning programs lasting several weeks, no experience in online engagement and digital marketing; the decision was clear: we will try it. Nothing but failure was guaranteed. Unless…

After several months of hard work, we’re proud to share with you a different story: we launched a 12 weeks program covering everything from Android basics to machine learning for mobile applications, Firebase, and some discussion about new trends such as Flutter.

We’ve engaged not just with our past edition partners but also with new ones in Brazil and Portuguese-speaking countries in Africa i.e. Mozambique, Angola, and Cape Verde. We recorded more than 25 hours of content with the support of developer advocates from Google and key members of the Portuguese ecosystem, creating a huge community of ~5000 participants (80% from Portugal, 15% from Brazil, and 5% from Africa), with ~3000 subscriptions in Youtube, delivering +30000 views, and 2000 participants in our Discord channel. And you know what? All in Portuguese.

Chapter I: Preparation

We started planning the program six months before the first class. Since we were going for a different format, we had a lot to decide and prepare before starting:

  • How can we reach students?
  • How long is the program going to be?
  • How can we keep students engaged?

We knew that it was easier to reach students in a physical space, plus during the working days everyone was already at the University. Seeing a huge Android along with posters pointing towards a room was the perfect reminder for anyone to attend. For those that get easily distracted, We used to be at the site a couple of hours before the event just to reach those who get distracted easily or may have missed the announcements.

Android Training Program figurine
Android Training Program figurine

Moving online turned out great because we’re no longer restricted to a single city, but at the same time it’s more difficult to remind students that there’s an event happening, especially after a full day of classes.

It’s also harder to keep them engaged while watching a presentation. Leaving a full auditorium is more difficult than just closing the browser. So we needed to come up with clever ways to keep them interested during all classes!

Chapter II: Creating an audience

Working with our partners’ network, we expanded the number of participants in the program and were able to invite participants from Portugal, Brazil, and Portuguese-speaking African speaking countries, and try to reach the biggest number of people. We definitely challenged the six handshakes rule that says that we can reach anyone in the world by just talking to six different people connected within. And it was true.

We’ve scheduled dozens of meetings with deans, teachers, and student nucleus to understand the current mobile development state at the University/Polytechnical level and how we could complement their classes with the ATP. Moreover, they were already teaching online for a couple of months, so their feedback helped us to make a couple of tweaks to the program.

These meetings’ goal was to establish a partnership with them. From our side, we could give them visibility and free content they could later in classes, and in return, we asked if they could share the program through their mailing lists, classes, and colleague teachers. This allowed us to reach a high number of students.

Along with the academic institutions we were also able to reach Portuguese communities and technological blogs that immediately fell in love with the program and kept reminding their readers about the ATP. We’d like to express our deepest gratitude for that.

Chapter II: (re)Creating the program?

Here in Portugal, each University and Polytechnic is free to create the program of their course in Informatics Engineering. There are academic institutions that lecture mobile development, while others don’t. Those who do, typically teach about the different platforms and languages without focusing on a single one, so students end up having more horizontal than vertical knowledge.

We noticed that most of them went for Java instead of Kotlin. This represented an additional challenge as we needed to teach at least the basics of Kotlin, otherwise after the initial class we might end up losing a lot of students who don’t know it. We saw this as an opportunity to reach a broad audience, and all the classes had a specific section focused on the language itself. Along with this we also provided extra content so students could learn more about it after hours.

Our previous experience showed us that part of the class needed to be dedicated to installing Android Studio, running a sample project, and having the phone/emulator configured. Having this in mind, we’ve started the program with class #0, just focused on the setup and troubleshooting. It’s important to remember that Android Studio runs on Mac, Windows, and Linux, so you’ll find a couple of problems along the way.

While discussing and iterating about the ATP classes, we all thought that it would be a good idea to create an application from scratch, and in each class add new features on top. First, this would work as a sample app for students to revisit at any time, and second, it’d be something where they could apply and consolidate what they’ve learned in that class.

We’ve built a dog breed app capable of identifying a dog. Fifi, a Yorkshire Terrier, a pet of one of the teachers helped us with testing and made everyone laugh at each appearance.

Fifi, ATP background actor
Fifi, ATP background actor

During these 12 classes, we’ve covered not only the basics like activities, fragments, UI Components, etc., but also Jetpack libraries like the CameraX, Room, Paging. We even gave a quick glimpse at Compose. We’ve also talked about Firebase and Machine Learning, namely TensorFlow Lite. This way we could reach a broad audience and tacklemore advanced concepts that sometimes seem to be a little left behind.

Each episode was set to be 1h30 long and was split in half: for the first 40 minutes we were focusing on theory and the last 40 on practice. For the remaining 10 minutes, we invited a speaker to talk a bit more about a specific subject. We were lucky enough to have people from Google, GDE’s, community organizers, Universities, startups, etc. Our most sincere thank you to them all!

Along with these 12 classes, during the program, we’ve gathered feedback and felt that we could make a couple of tweaks so along with the classes we also created a set of CodeLabs that students could follow on their time and some small videos that we happily called them bits & bytes that were about 8 minute long videos teaching a specific concept that someone as asked us.

You can find the entire content online at our YouTube channel (let me grab my YouTuber hat: don’t forget to subscribe!).

ATP 2020 team along with all of the participants
ATP 2020 team along with all of the participants

Chapter III: What was our setup?

We wanted to minimize the effort of recording a class so there were a couple of requirements that we needed to define:

  • Setting up a class and making it live easily (and available afterward).
  • Support screen sharing.
  • Support at least three participants at any time.
  • Possibility to change the screen layouts depending on who was speaking.

After analyzing a wide range of solutions out there we’ve decided to go with Streamyard.

To prepare the classes, we used the services that Google provides for free: Docs where we’ve defined each class plan along with the resources that we wanted to share on a post email and Slides for preparing the class. Everything was done asynchronously so we needed tools that simplified collaboration and allowed everyone to edit the same document at the same time.

People have different schedules and sometimes live in different time zones, so we needed to have a common place where we could share additional content and ask us questions asynchronously. We’ve opted in with Discord, because most of the students are already familiar with it and it allows an unlimited history. If someone entered in the middle of the course they could just search for previous materials or questions made.

Our main setup was our laptops along with an external monitor which is incredibly useful for screen sharing, Asana, Google Docs and Slides, a StreamYard and YouTube account, Discord server, and of course — Android Studio, we never go anywhere without it.

Android Training Program — Class #6 cover
Android Training Program — Class #6 cover

Chapter IV: Stories

We’ve encountered some great stories along the way. As we’ve mentioned before, all the classes were taught live, which means that if there was a chance that something could go wrong it most certainly did (as it’s stated by Murphy’s law). So we needed to be prepared for everything and keep in mind that we’re all going through the same scenario, so if anything happens, it’s important to try to relax and use a bit of humor — everything will be fine. And it was! Here are a couple of things that happened during the streams:

  • Android Studio crashed in the middle of a class. After that initial panic, we remembered that we could just download more RAM and try to open it again. It didn’t work and we needed to get some more. One of our guests just lost their internet connection during one of the interviews. Fortunately, the meeting was close to an end and we were able to wrap it off. Nonetheless, no one had the chance to ask questions, so what we did was to ask the students to send them directly to us, and then we would redirect them to the interviewer to get the answers. The next day they all received an email with the contents of that talk along with all the answers.
  • Playing with Machine Learning is always fun! Especially when you want to make a demonstration of a sample that uses your computer camera to detect your arms so you can command an orchestra and it decides to not identify them at that moment, although it worked perfectly fine some hours before. So you end up spending a couple of minutes waving while a couple of hundred people are on the other side of the screen just laughing. Did you like this story? If so, give it a try — you can find the experiment here. Feel free to share your wave movements with us.
  • Each episode was scheduled to be around 1h30, but we always ran out of time. We interacted with the audience twice during each session: during the interview with our guests and at the end when we answered questions. These two sections easily went over time. Our last class was over 4 hours long — and the number of participants stayed roughly the same from the beginning till the end. Yes, it’s as tough as you might think to be speaking all this time, especially when it’s your dinner time and you’re really hungry; but it was really worth it. All the conversations and questions were really engaging and we’ve all had a great time and well, and we couldn’t ask for a better last episode of the season!

Chapter V: What’s next?

We’re currently planning this year’s edition of the program. All the content is already online so instead of repeating it, we’re focusing on new things that are being released and gaining a lot of attention among developers. One of them is Jetpack Compose.

The community is still going strong on Discord and the questions made there are getting more and more difficult as time goes by, which means that the next generation of Android developers is going strong with their apps.

We’ve had an amazing run these past years with the Android Training Program, and we’re just starting! Do you want to start a similar program in your country or community? Feel free to reach us, our DM’s are open: @davilagrau @cafonsomota and @tallnato.

The team of ATP (Android Training Program):

  • Andres-Leonardo Martinez-Ortiz
  • Carlos Mota
  • Renato Almeida