Udacity Android Developer Nanodegree: Behind The Scenes!

Estefania Cassingena Navone
Techmacademy
Published in
10 min readMar 4, 2018
Badge Received during Women Techmakers Udacity Scholarship

The Journey Begins

Three, Two, One… Welcome! Six months ago I received an email that would embark me on a journey through Udacity’s Android Developer Nanodegree.

Congrats, you’ve been selected to receive a Women Techmakers Udacity Scholarship.

I literally jumped up and down when I received the news! 😄🎊 It was an amazing feeling to know that the Women Techmakers team believed in me, trusted me and chose me for this opportunity and to be part of their awesome community.

The Nanodegree

This article will give you a brief overview of the projects you will complete during the Nanodegree and the opportunities you will have as a Udacity student. I really hope you like it! 👍

Preparing for the Nanodegree — The Sprint

Java

Before starting the Nanodegree I had previous experience with JavaScript and Python. I had learned a little bit of Java through Codecademy but I had no experience building real projects in this programming language.

I decided to start a “sprint” where I would learn Java and Android essentials in a few days before starting to take the courses for my Nanodegree.

I recommend these courses to learn Java:

Object Oriented Programming

This is an essential programming paradigm you must understand to learn Java.

I recommend these courses to learn OOP:

Android Basics

To learn Android Basics I took the free courses Udacity offers:

If you have some experience with programming, you can complete these courses in a few days if you dedicate entirely to this task.

💡 Note: I first thought the courses for my Nanodegree would require knowing all the topics presented in these Android Basics courses but when I started my Nanodegree I realized that some of the Android Basics topics such as Networking, Intents and Layout were also explained very thoroughly from the beginning as well.

Software Engineering

During my Nanodegree I realized that I needed to learn Software Engineering techniques to make my code more maintainable and scalable.

I took these software engineering courses:

You will learn techniques and tools such as UML class diagrams, how to gather the requirements for your projects and how determine which classes, attributes and methods you need to create from these initial requirements.

💡 Note: These courses were amazing! I highly recommend taking them before starting the Nanodegree. You might also choose to watch specific lectures on topics you need to work on.

Nanodegree, here we go!

Support System

Mentorship

From day one you will have a mentor who will support you through the Nanodegree. I was greeted very nicely when I entered the classroom for the first time and since then my mentor was very helpful providing suggestions, ideas and links to helpful resources when I asked questions or needed a suggestion.

Forums

You will also have access to forums with great mentors that will be there to answer your questions and help you during the challenges you will find during the Nanodegree.

You can ask questions to your mentor and on the forums all the time (even on weekends! 😃)

Projects

Project 1: Popular Movies App (Stage 1)

The very first project you will build is a Popular Movies app that extracts data from The Movie Database API.

In this stage you will implement the basic functionality and layout.

It’s a very complete project that will teach you so many new concepts, especially if you are completely new to Android as I was.

Main Topics you will learn during this project:

  • Activities
  • Views
  • Responsive Design
  • Logging
  • Resources
  • Menus
  • Permissions
  • Thread Basics
  • AsyncTasks
  • JSON parsing
  • RecyclerViews, ViewHolders and Adapters
  • Intents (Implicit and Explicit)
  • Third-Part Android Libraries (Picasso, a library to load images to your app)

Udacity offers a webcast to explain:

  • How to implement a custom adapter.
  • How we can make a Class Parcelable to optimize transferring data from one Activity to another.
  • How to restore state on rotation using onSaveInstanceState.

👍 Tips

  • I recommend researching on StackOverflow how to detect if there is an internet connection available since one of the requirements for the project is to handle scenarios where there is no internet connection. Your app can’t crash under these conditions.
  • You will need to provide functionality for the user to choose between popular movies or top rated movies and update the view accordingly.

Project 2: Popular Movies App (Stage 2)

On this stage of the project you will expand the app’s functionality by allowing the user to select his/her favorite movies. 😍

You will implement an SQLite database, a Content Provider and use Data persistence methods such as Shared Preferences.

Main Topics you will learn during this project:

  • Android Activity Lifecycle
  • Loaders
  • Data Persistence (onSaveInstanceState, SharedPreferences, SQLite Database, Internal/External Storage, Server)
  • Preferences Fragment and Listener
  • SQLite database (You will also have a PDF guide of SQLite statements you can use in your project)
  • Content Providers and Content Resolvers
  • Services
  • Loaders
  • Intent Services
  • Pending Intents
  • Notifications (Please note that Notifications require a different approach for Oreo)
  • Foreground Services
  • Broadcast Receivers
  • ViewGroups and Visibility
  • ConstraintLayout
  • Data Binding
  • Accessibility and Localization
  • Right-to-Left support
  • Responsive Design
  • Fonts, Styles, Themes, Colors
  • Resource Folder Qualifiers
  • Touch Selectors

👍 Tips

For this project I would recommend watching/taking:

Project 3: Baking App

Wow! We’re already on project 3, a Baking App. This is an extremely interesting project!

In my opinion this is the most challenging project in the Nanodegree because it introduces many new concepts such as UI testing, media playback and Fragments.

I would recommend breaking down the different topics into sections and studying them separately until you feel like you have a firm grasp of each technique to apply it to real projects. That way it you can implement one feature at a time.

Main Topics you will learn during this project:

  • Fragments
  • Fragment Manager
  • Libraries
  • Media Playback (using ExoPlayer, a Third-Part Library)
  • Widgets (This is one of the best aspects of this project, I totally loved creating a widget for my app 😍)
  • Espresso (Third-party library that tests if your app’s user interface behaves and displays correctly)

👍 Tips

For this project I would recommend watching:

Project 4: Build-It Bigger

This project is mainly focused towards learning how powerful Gradle can be for Android Development.

From a very simple starter code you will create custom Gradle tasks, build types (Debug and Release) and flavors for your app (free and paid).

The free version will have ads and the paid version will not. You will create and incorporate an Android library and a Java library for your app.

This was one of the most interesting projects for me because it made me realize how amazing Gradle is and how it can improve the development lifecycle.

Main Topics you will learn during this project:

  • Gradle tasks
  • Groovy
  • Task Configuration
  • Incremental Builds
  • Working with Local Repositories
  • Declaring dependencies
  • Dependency Reports
  • Automated Testing
  • Gradle Wrapper
  • Build Types, Flavors and Variants
  • Java Libraries
  • Android Libraries
  • Proguard
  • Automatic Signing

Project 5: Material Design for Android Developers

This is a great project focused on implementing material design guidelines on an existing app.

You will learn how to use colors, how to use different resources for different screen resolutions, surfaces and much more!

The principles you learn on this project are very important to make your app look awesome to your users, a key factor for your app’s success.

Main Topics you will learn during this project:

  • Physical and Density-Independent pixels
  • Raster vs. Vector graphics
  • Resource Qualifiers
  • State List Drawables
  • Layout
  • Design Patterns
  • Surfaces
  • Gestalt Principles
  • Grids and Keylines
  • Metrics
  • Color
  • Typography
  • Fonts
  • Background Protection
  • Transitions
  • Animated Vector Drawables
  • Adaptive Design

👍 Tips

For this project I recommend taking:

Project 6: Capstone Project

Wow! We’ve almost completed our Nanodegree, time flies! 😄🎉

For your Capstone project you are free to create the app you wish, any idea you can think of. So exciting! Right? 😀 💡

I absolutely loved the experience of taking an idea and transforming it into a working product. It was a lot of hard word and a completely rewarding experience.

This project is broken down into two stages.

  • In Stage 1 you must submit a PDF file with a description of how you are going to implement the features of your app (including UI mockups for phone and tablet layouts)
  • In Stage 2 you will submit the working app 🐣

💡 The Idea

I spent a few weeks thinking about the app I would like to create.

I first analyzed what daily problems or situations people have and I came up with a few ideas but I felt like something was missing. I was going to work on this project for approximately 3 months and I wanted it to be something that I was passionate about, something that I felt it could be helpful for users.

I started writing down every idea I came up with, until… it clicked! Ever since I started working on my Nanodegree I had been tracking bugs using either Trello or a piece of paper. I knew there had to be a better way to approach this problem and I wanted to research more and ask if developers around the world were having this problem as well.

🔍 The Research

I searched online to determine if an app like this already existed but I found none. I found commercial software for this purpose but I thought they might be a little bit daunting for someone learning how to code.

This was how… BugWhiz came to life!

I decided to create an easy-to-use app to track bugs for beginner-intermediate developers.

During the courses I learned that we may end up designing products for ourselves when we should be designing for our users and how their feedback is a critical aspect of app success so I decided to do some market research to determine if the product could be successful.

SurveyMonkey to the rescue!

I created a quick survey to determine if my product would be relevant in a global market.

I sent a Tweet with a link to my survey and I was really excited when Udacity retweeted it. Suddenly people were answering my questions and I was collecting data from real potential users. That experience was priceless.

📃 The Planning

For stage 1 of the project, the first step is to determine the features you must implement (listed in the rubric) and the features you want to implement to make your app special and unique.

You can choose to work with a variety of Google Play Services and/or Firebase. The Nanodegree has a section with courses for each one of these technologies.

I decided to work with Firebase. After using Firebase I would recommend it to anyone looking for a realtime database. It updates extremely fast, it is easy to use, it has very detailed documentation and it implements security features to make your data safe.

For this project I used these technologies:

  • Firebase Realtime Database
  • Firebase Authentication
  • Firebase Analytics

You can also learn about these topics on the complementary courses:

  • Firebase Notifications
  • Firebase Storage

💻 The Development

For stage 2 you will build your project. This is a really exciting phase of the Nanodegree where you will apply everything you’ve learn to your app and implement the features you chose during stage 1.

👍 Tips

For Stage 1 you will have to submit UI mockups. I used this online tool to create them:

I recommend taking these courses for your Capstone Project:

🎓Graduation Day!

Congratulations! 🎊 🎆 You graduated from the Nanodegree! But this is just the beginning because after you complete the program you will have skills you can apply to real projects in your professional career and you will be part of a global community of Udacity Alumni.

After your graduation you will be invited to the Alumni Network on LinkedIn and Slack where you can ask questions, discuss, find opportunities and learn from fellow alumni.

You can also complete your career projects if you haven’t completed them during the Nanodegree. (Career projects are LinkedIn, Resume, GitHub profile and Cover Letter reviews)

🌐 Share links to helpful resources for your Nanodegree on this GitHub project created by Udacity Students and Alumni. ❤️

🙋 To Women Techmakers:

I would like to express my gratitude and excitement for this scholarship. I learned so much during the program.

I’ve had the opportunity to connect with awesome fellow scholarship recipients from around the world and participate in AMA sessions with amazing role models who have shaped the technology industry.

Thank you so much to the Women Techmakers team for selecting me as a scholarship recipient ❤️

If you would like apply to the Women Techmakers Udacity scholarship, I would tell you:

Do it! It will be a unique opportunity, an experience that will make you grow as a developer and as a person. Do not hesitate to apply.

Estefania.

👏 If you found this article helpful, your claps are very much appreciated 😃

--

--

Estefania Cassingena Navone
Techmacademy

Udemy Instructor | Developer | MITx 6.00.1x Community TA | Writer @Medium | CS & Mathematics Student | WTM Udacity Scholar