Course Intro - Agile Software Development & DevOps
Agile Software Development & DevOps
Welcome
Course description
We learn how to build software following contemporary best practices.
This course is as much about process as it is about product.
Students work in teams to produce a software product of their choosing.
Me
Foo Barstein
- discord: @foo.barstein
Who you are
Profile
Who are you, really?
-
trying to use up college credits
-
doing what your parents and advisors tell you to do
-
interested in becoming a software developer
-
maybe already are a software developer
-
hoping to find a decent-paying job
-
already dressing up like Mark Zuckerberg
-
just having fun
-
here for some other reason…. it doesn’t matter!
Welcome!
What you know
-
computer programming in a reasonably modern language
-
how to name a file and save it to your hard drive and find it later
-
comfortable on the UNIX/Linux command shell
What you probably don’t know
-
How to create software from scratch
-
How to work in a team over a long time
-
How to set up workflows so that conflicts resolve themselves
-
What it’s like to have your work continually monitored by a boss
-
How to automate away your own job
Topics
Agile development
We will learn agile development’s origins.
-
In what contexts are “agile” principles useful.
-
What are its own unique challenges.
-
In particular, we will follow the Scrum framework for agile development.
Javascript stack
We will dive head-first into the Javascript stack for web app development. In particular, the MERN stack.
-
MongoDB as the database
-
Express.js for the back-end.
-
React.js for the front-end
-
Node.js as our general Javascript programming environment.
You will absorb HTML, CSS, and Javascript through osmosis…
unless you’re not paying attention.
We will learn through osmosis?
Yes.
- This is perhaps the biggest topic of the course… how to teach yourself what you don’t know.
User experience design
You will have to figure out how to determine what makes a good experience versus a mediocre or terrible one.
Skills we will develop
You cannot do contemporary work without some fundamental skills.
-
Basic UNIX/Linux commands
-
Version control (i.e.
git
andGitHub
) -
Automating the boring parts (i.e.
ssh
, unit testing, continuous integration, continuous delivery, continuous deployment)
Questions we will answer
There are common questions we will aim to answer:
-
What is The World Wide Web?
-
How do you do xyz?
-
I have an idea for an app… is it hard to do?
-
Should I go to a start-up academy, or just study at NYU CS?
-
My internship requires me to know express-validator…. what is that?
-
My friend is making mad money at a start-up using MongoDB… can I learn that?
Structure
Overview
This course involves each of the following:
-
Lectures
-
Readings & watchings
-
Team project… just 1
-
Individual exercises… a few
-
Quizzes… lots of them
Grading
Grading is broken down as follows:
-
35%: Quizzes
-
15%: Individual exercises
-
50%: Team project
Texts
No single textbook is necessary nor sufficient for this course. We will refer to various online resources where relevant.
- Our technology stack is very popular, with plenty of good documentation and tutorials.
Software
Install these now
You will need a variety of software tools. Here are a few to set up right now.
-
Git - for Mac or for Windows
-
A UNIX-like shell, such as in Mac’s Terminal or Git Bash (part of Git for Windows) or Windows Subsystem for Linux (WSL). Do not use the Windows’ default Powershell.
-
an account set up on GitHub.com
Useful resources
Setting Up Bash within Visual Studio Code
WINDOWS USERS - you should use Git Bash or Windows Subsystem for Linux (WSL) rather than Windows’ default Powershell or other command line shell program. To set Git Bash or WSL as the default terminal shell within Visual Studio Code, you can try to follow the instructions in the second answer here by Mahade Walid and edited by FruityOatyBar (ignore the first answe, which is outdated).
Javascript
- Exploring ES6, by Alex Rauschmayer
- Eloquent Javascript, by Marijn Haverbeke
- The Modern Javascript Tutorial, by javascript.info
React.js
- React.js official site, including tutorials and documentation.
- React Router Tutorial, by Dev Ed.
- Video course: React for Web Designers, by Joe Chellman
Express.js
- Express.js official site, including tutorials and documentation.
- Build A Restful Api With Node.js Express & MongoDB, by Dev Ed.
- Video course: Dynamic websites with Node and Express, by Daniel Khan
MongoDB and Mongoose
- Video course: Databases for Node.js Developers, by Daniel Khan
- Mongoose official site, including tutorials and documentation.
What Others Say
The Good
A sample of comments left by former students:
It is really a hands–on experience in developing an app! Really happy to see an idea coming to life.
The structure of this course is so well–organized! This is definitely the number one course I will recommend people take if they want to learn about software development.
The group work we had to do throughout the entire semester helped me learn many things about time management and as well as how real life projects in developing apps and websites work.
I really liked the class! Prof. Bloomberg is eloquent and thorough in his explanations of concepts.
The Bad
A sample of comments left by former students:
There was too much time spent on the unnecessary parts. This led to the situation that there was not much time for the actual project work. I think it will be better if we could directly dive into Sprint 0.
More focus and time spent on the second half of the course
It could improve by not having quizzes, as they don’t help me improve or learn much.
This class had really unclear grading – graders need to be more fair and clear with their rubrics and grading system
While it is the nature of a teamwork class, I would like for there to be more protections in place for students who are doing the bulk of the work.
The Ugly
It made me learn that terrible graders can ruin an otherwise decent class.
The worst. the whole course is a shitshow. My biggest waste of tuition fee.
The worst professor ever. Pissed every single day taking his class. He just never cares much about his classes.
If you have no prior web dev exp with MERN stack, AVOID unless want to self-study for 4 months and work with trolls in group pj. Lecture is absolute joke, only terminology, then expects you to know everything and start coding. 0 support, arrogant & vauge to questions usually. Grade: A tho cuz I wrote tons. But, AVOID, dont try!!!
Time commitment
Openness
Challenge
Knowledge increase
Conclusions
Thank you. Bye.