Due to the lockdown caused by the COVID-19 pandemic, I had saved time from commuting to work, which I can utilize for my personal growth. It was a solid reason for discovering new technologies and leveling up. And, during this period, E-learning platforms were offering programs for free or at a significant discount. So, I decided to begin the lockdown period by learning backend development.
Choosing Udacity Course
I had some ideas about the Nanodegree programs from Udacity because I had received part 1 of the Frontend Nanodegree program as a scholarship in 2018. The main focus of these programs is on creating projects from what you have learned from video tutorials. I believe, using your knowledge to make something give you more confidence in what you have learned. Watching videos will only get you halfway, remaining dependent on how you use it.
As a professional frontend developer, having some experience with backend technologies will be helping me in the long run. Hence, I decided to take the Full Stack Nanodegree program.
About Full Stack Nanodegree
If you are looking to increase your skills in frontend development, you will be highly disappointed with this course. I recommend you look into Frontend Nanodegree or some Udemy course. This course focuses really on backend development with the frontend side of things already templated out for you.
Also, make sure you have a basic understanding of HTML, CSS, SQL, and Python. Python3 is the backend language of choice for this course.
Here's the link to the course.
Tech Stack I learned
- AWS platform overview (I'm overwhelmed by the tons of options available in it. Still, I find it difficult to do anything with AWS. Mostly due to the services like Vercel Now or Netlify, which makes deployment very easy.)
For me, developing projects is an essential part of learning new technologies. I believe in practical knowledge and confidence are only achieved by building projects. And I am happy that the main focus of this course was on this.
These are the key elements that I got to learn while completing five projects from this course.
Here, I learned how to use SQLAlchemy ORM to execute CRUD operations with RESTful APIs using Flask on the Postgres database. Discovered how the ORM layer helps to hide complexities of database compatibility (ability to change between various databases without modifying code), pythonic code (avoid writing raw SQL query, and relying on Python objects). I also learned the practice of making changes to table structure using migrations files.
This project helped me gain a lot of insights into backend development.
This project was more on structuring API and formatting response and writing documentation. Understood the importance of having a consistent response structure on API endpoints and developed standard error handlers methods based on HTTP status codes. Also, written test cases of the API endpoints using Python's unittest library.
In this project, I had set up RBAC (Role-Based Access Control) for authentication and authorization using the Auth0 service. I learned about Python decorators (nifty function wrappers) and JWT. Here, I created a python decorator that validates a user's JWT token and only allows access to the API method based user's role.
AWS CI/CD Pipeline and deployment
Here I explored some AWS services and created CI/CD pipeline using AWS CodeBuild and deployed a sample flask application to EC2 container.
This was the final project, where we had the choice to choose the project topic. And develop it from scratch using all the concepts from the previous lessons. For this project, I used Nextjs on the frontend, Flask as the backend framework, Postgress as a database, Google OAuth for authentication, and Heroku for deployment.
I was able to graduate 👨🎓 from the Nanodegree program within one month as I desired.
Maybe having a bit more of frontend touch into the course would have been welcomed. But none the less, I enjoyed working through this course and learned a lot during the process. If you have any questions, do reach me out on twitter.