Skip to content
This repository has been archived by the owner on Jun 28, 2022. It is now read-only.

Latest commit

 

History

History
209 lines (138 loc) · 13.9 KB

File metadata and controls

209 lines (138 loc) · 13.9 KB

Webcast: About the Full-Stack Web Developer Nanodegree

Here is a link to the video

##What is Full-Stack Web Development? Full-Stack Web Development is a combination of front-end and back-end web development; a full-stack web developer is, in essence, a generalist.

Front-End web development is all about 3 main technologies: HTML, CSS, and JavaScript. These are rendered and run by a browser after being served to the browser by a server.

Back-End web development is all about the servers themselves, which access and store data by connecting to the front-end.

Full-Stack Web Development combines the two, essentially doing everything involved with a website.

##What is the Full-Stack Web Developer Nanodegree about? The Full-Stack Web Developer Nanodegree (or FSND, for short) is mostly about the back-end of web development. It assumes that you have a moderate knowledge of HTML, CSS, and JavaScript before you begin the Nanodegree.

In the FSND, you'll work with a lot of different tools and technologies. In particular, you'll work with: - Databases (Including Relational (SQL) Databases) - Google App Engine - Flask, a Python web framework (much like webapp2) - OAuth - Think Facebook or Google sign-in with your app - Virtual Machines - Git / Github

You will also build web applications and host them yourselves. Your Python skills will improve, as will your ability to use documentation. The FSND will teach you quite a lot, and it will set you up well for future projects you may want to build yourself. You'll be able to prototype just about any website with what you learn in the Full Stack Web Developer Nanodegree.

The main programming language you'll be using will be Python; you will use some HTML, CSS, and play around with Javascript a bit, but mostly you'll be using Python. You will also learn SQL, allowing you to play around with databases.

You'll dive into both the Flask framework and virtual machines quite a bit in the Full Stack Web Developer Nanodegree.

###What is a framework? The general problem of web development is very broad; it has many kinds of websites, applications, users, and devices, so there is a lot of work to do to make a web application to function. A framework tries to make that simpler by giving you the tools to build an application. For instance, a framework will give you a system to handle HTTP requests and turning them into function calls. It's something that every website will have to do it somehow, and it's an abstract thing, so a framework will do it for you. The framework you use in the Intro to Programming Nanodegree (i.e. IPND) is webapp2; we'll use Flask with Google App Engine in FSND. The most popular framework for Python is Django, but Flask is up there as well. The Full Stack Web Developer Nanodegree doesn't us Django as Django does so much for you that it is more difficult to teach from, so it goes over Flask, a micro-framework.

Before diving into detail about the Full-Stack Web Developer Nanodegree, we should go over what is expected prerequisite knowledge.

##What is expected pre-requisite knowledge for the Full-Stack Web Developer Nanodegree?

  • Basic Front-End Web Development
    • You'll need to know basic HTML and CSS, and there will be Javascript provided for you in exercises that it will be helpful to be able to read and understand. Not much Javascript knowledge is required.
    • IPND already provides you with this background!
  • Basic Python experience
    • Writing Functions, loops, using OOP, writing Classes
    • Stage 3 of IPND will overlap some with the first course in FSND
    • You will need to be comfortable using documentation and looking up how to use tools

###What gaps may need to be filled in from IPND (the Intro to Programming Nanodegree)?

  • You’re ready to dive right into FSND after you finish IPND! For guidance if you are deciding between the Full Stack Web Developer Nanodegree and the Front End Web Developer Nanodegree:
  • Choose the Full-Stack Web Developer Nanodegree if you really like Python and enjoyed the sections of IPND dealing with Python
  • Choose the Front-End Web Developer Nanodegree if you prefer working with HTML and CSS

If you are worried you don't have enough experience to jump right in, we can take a look at what you will (or did) learn in IPND:

##What you learn in the Intro to Programming Nanodegree

###From Stage 1: In Stage 1 of the Intro to Programming Nanodegree, you will learn the basics of HTML and CSS, as well as how they fit together. You'll get practice with developing your own static web pages, building the foundations with HTML and formatting them with CSS. You'll learn a variety of HTML tags and attributes, as well as how to use them.

You will also learn how to use various tools common in programming, like a text editor (we use Sublime Text).

###From Stage 2: In stage 2 you will learn the basics of Python, including:

  1. Strings
  2. Loops (for and while)
  3. Variables
  4. If statements
  5. Types (like int, str, and bool)
  6. Lists
  7. Tuples
  8. Mutability
  9. Functions
  10. Return statements
  11. Print statements
  12. Debugging Python code
  13. Problem Solving

This will set you up to be able to build your own programs!

###From Stage 3: In stage 3, you will continue learning Python, this time getting into its object oriented side. Here you will learn about:

  1. Classes
  2. Objects
  3. Methods
  4. Instances
  5. Instance variables
  6. Inheritance
  7. Method Overriding
  8. Import Statements
  9. The Python Standard Library
  10. Importing External Libraries
  11. Using documentation

###From Stage 4: In stage 4 of the Intro to Programming Nanodegree, you will build the backend of a website using Python and Google App Engine. You'll learn:

  1. How to install, run, and deploy with Google App Engine
  2. How to use the .yaml file with GAE (Google App Engine)
  3. How to navigate folders appropriately when referencing different files with GAE
  4. Google Datastore
  5. How to use the webapp2 framework
  6. How to use jinja2 templates
  7. How to use Python dictionaries
  8. How to use the modulus operator in Python

###From Stage 5: Stage 5 in the Intro to Programming Nanodegree will provide awareness of a variety of things instead of providing a higher level of competency. Some of the concepts in computing you will develop awareness about will be:

  1. Using JavaScript to bring web pages to life.
  2. Using APIs to easily access powerful data.
  3. Recursion
  4. Parallel computing
  5. How to solve large and long problems.
  6. Responsive Web Design: How to make web pages look good.

As you can see, everything you need to know to be prepared to jump into the FSND is covered in IPND!

#What will students learn in the Full-Stack Web Developer Nanodegree?

##Full-Stack Web Developer Nanodegree Structure

These are the projects you'll build and the classes that will prepare you to build each of the projects. You'll have access to all these in the Nanodegree:

###Project: Movie Trailer Website

You will write server-side code to store a list of your favorite movies, including box art imagery and a movie trailer URL. You will then serve this data as a web page allowing visitors to review their movies and watch the trailers.

###Course: Programming Foundations with Python You will already have taken this full course in IPND!

###Project: Tournament Results

You will develop a database schema to store the game matches between players. You will then write code to query this data and determine the winners of various games. The final product won't be something easy to look at on a webpage, but it will allow you to determine who should play who in a tournament!

###Course: Intro to Relational Databases You'll explore a different kind of database, similar to the Google Datastore you work with in stage 4 of IPND. Here, you'll be learning SQL.

###Project: Item Catalog

This project will let you get very creative. You will develop an application that provides a list of items within a variety of categories as well as provide a user registration and authentication system. Registered users will have the ability to post, edit and delete their own items.

###Course: Full Stack Foundations Here, you learn the foundations of the Full Stack and Web Development in general. You'll learn Flask and dive deeper into databases.

###Course: Authentication and Authorization This course will teach you how to have users sign in through something like Google, and you can go to the website you are connecting to and request user data, like a picture.

###Project: Conference Organization App

You will develop a cloud-based API server to support a provided conference organization application that exists on the web as well as a native Android application. The API supports the following functionality found within the app: user authentication, user profiles, conference information and various manners in which to query the data.

###Course: Developing Scalable Apps with Python Here, we go deeper into Google App Engine. The course will teach you how to make sure your apps can be quick and responsive even with large amounts of traffic, utilizing the resources of the web.

###Project: Linux-based Server Configuration

You will take a baseline installation of a Linux distribution on a virtual machine and prepare it to host your web applications, to include installing updates, securing it from a number of attack vectors and installing/configuring web and database servers. You'll be using Amazon's AWS cloud.

###Course: Linux Basics for Web Developers

##Differences between FSND and FEND (Front-End Web Developer Nanodegree) FEND is much more visual and design oriented, while the Full-Stack Web Developer Nanodegree deals mostly with the Back-End, and is therefore more technical.

With the Full Stack, you'll be using mostly Python, whereas you'll be using mostly Javascript (and HTML and CSS) with the Front-End.

If you do plan to take both of them, it may make more sense to take the Front-End Web Developer Nanodegree first, as you'll know exactly what the small amount of Javascript you deal with in the Full-Stack Web Developer Nanodegree does.

You can go straight into the Full-Stack Web Developer Nanodegree from IPND, though; there is nothing that you need to know going into FSND that you don't learn in the Intro to Programming Nanodegree.

##How will skills learned in IPND transfer to FSND? The skills you learn in IPND will more or less all directly transfer to helping your learning in the Full-Stack Web Developer Nanodegree. You will be expected to know the HTML and CSS you learn in IPND as you get into FSND, and you will dive even deeper into Python. You will also be using Google App Engine in FSND, although with a different framework. The things you touch on in stage 5 of IPND will also be useful, whether it is Javascript, using APIs, or solving long and complicated problems.

##What kind of career does the Full-Stack Web Developer Nanodegree prepare you for?
The Full-Stack Nanodegree will prepares you to essentially be a entry-level Back-End web developer, and, when combined with the Front-End Web Developer Nanodegree, will prepare you for a Full-Stack position.

##From Engineers you've talked to, what do they like the most about being a full stack developer? It's very easy to go from having an idea, to being able to make an actual website which can prototype that idea.

There is also a ton of variety in Full-Stack; you'll constantly doing new things, inventing new solutions to any variety of problems.

##What does planning for a project look like for a Full-Stack Web Developer? Planning can be fun. It's easy to think of all the features you could add to a potential application, but the most important thing to do is to start small. Otherwise you will have a difficult time making progress. What does the most basic version of your application look like? Build that first. Then add new features and functionality slowly but surely. It can also be a good idea to plan out what you want your application to look like beforehand. You can build out basic templates of each page and then write the back-end code that connects to those pages.

##What would the day to day of a Full-Stack Web Developer look like?
Full-Stack engineers spend a lot of time designing, meaning that you spend a lot of time planning on how you want to model a program, including what features the program will have, what the most effective ways of solving something the problems involved are, etc.

##What other tools and languages not taught in FSND might a Full-Stack Web Developer use on the job? The Full-Stack Web Developer Nanodegree uses Python exclusively. Although Python is used quite a bit in industry, it is not the only language that is frequently used in web severs. Other programming languages you will frequently encounter on the web include PHP, Ruby on Rails, APS.net, Java, and Node.js.

There are also many different frameworks, like Django, which are not covered in FSND.

There are also non-relational databases, which, although less common, are things you may possibly encounter on the job.

##How useful is Full-Stack knowledge/experience for engineering in general You'll get better at using Python, which can itself be used for a large variety of things. More importantly, getting better at one language in an in-depth way helps you learn other programming languages in the future.

As much of software is becoming cloud based and running on servers, and Back-End Web Development (which is mostly what the Full-Stack Web Developer Nanodegree teaches) is all about using servers. This means it will be a very useful knowledge base for all types of software engineers.

If you are looking to go into mobile development, what you learn in Developing Scalable Apps will prepare you for developing the back-end of web-based mobile applications.