knowledge-kitchen
/
course-notes
class: center, middle # Course Intro Agile Software Development & DevOps --- # Agenda 1. [Welcome](#welcome) 1. [Who you are](#you) 1. [Topics](#topics) 1. [Structure](#structure) 1. [Software](#software) 1. [What others say](#evaluations) 1. [Conclusions](#conclusions) --- name: welcome # Welcome --- template: 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. --- template: welcome ## Me Foo Barstein - discord: @foo.barstein --- name: you # Who you are --- template: you ## 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](/content/courses/software-engineering/slides/what-is-software-engineering#labor-statistics) -- - already dressing up like Mark Zuckerberg -- - just having fun -- - here for some other reason.... it doesn't matter! -- **Welcome!** --- template: you ## What you know -- - computer programming in a reasonably modern language -- - how to [name a file](/content/courses/intro-to-computer-science/basic-computer-concepts#file-names) and save it to your hard drive and [find it](/content/courses/intro-to-computer-science/basic-computer-concepts#browsing-files) later -- - comfortable on the [UNIX/Linux command shell](/content/courses/intro-to-computer-science/slides/unix-intro) --- template: you ## What you probably don't know -- - [HTML](/content/courses/web-design/slides/html) & [CSS](/content/courses/web-design/slides/css) -- - [Javascript](/content/courses/agile-development-and-devops/slides/javascript-intro) -- - [Git](/content/courses/software-engineering/slides/git-and-github) -- - 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 --- name: topics # Topics --- template: 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. --- template: topics ## Javascript stack We will dive head-first into the **Javascript stack** for web app development. In particular, the **MERN stack**. -- - [**M**ongoDB](../data-storage#mongodb) as the **database** -- - [**E**xpress.js](../express) for the **back-end**. -- - [**R**eact.js](../react-intro) for the **front-end** -- - **N**ode.js as our general [Javascript](../slides/javascript-intro) programming environment. -- You will absorb HTML, CSS, and Javascript through **osmosis**... -- unless you're not paying attention. --- template: topics ## We will learn through osmosis? Yes. -- - This is perhaps the biggest topic of the course... how to teach yourself what you don't know. --- template: topics ## User experience design You will have to figure out how to determine what makes [a good experience](/content/courses/software-engineering/slides/user-experience-design#venn-diagram) versus a mediocre or terrible one. --- template: topics ## Skills we will develop You cannot do contemporary work without some fundamental skills. -- - Basic [UNIX/Linux commands](/content/courses/intro-to-computer-science/slides/unix-intro) -- - [Version control](/content/courses/software-engineering/slides/version-control-systems) (i.e. `git` and `GitHub`) -- - Automating the boring parts (i.e. `ssh`, [unit testing](/content/courses/software-engineering/slides/unit-testing), [continuous integration](/content/courses/software-engineering/slides/continuous-integration), [continuous delivery](/content/courses/software-engineering/slides/deployment#continuous-deployment), [continuous deployment](/content/courses/software-engineering/slides/deployment#delivery)) --- template: topics ## Questions we will answer There are common questions we will aim to answer: -- - What is [The World Wide Web](/content/courses/software-engineering/slides/web-architecture)? -- - 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](/content/courses/database-design/slides/mongo-setup)... can I learn that? --- name: structure # Structure --- template: structure ## Overview This course involves each of the following: -- - Lectures -- - Readings & watchings -- - Team project... just 1 -- - Individual exercises... a few -- - Quizzes... lots of them --- template: structure ## Grading Grading is broken down as follows: -- - 35%: Quizzes -- - 15%: Individual exercises -- - 50%: Team project --- template: structure ## 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. --- name: software # Software --- template: software ## Install these now You will need a variety of software tools. Here are a few to set up right now. -- - Git - [for Mac](https://git-scm.com/downloads) or [for Windows](https://gitforwindows.org/) -- - A UNIX-like shell, such as in Mac's **Terminal** or **Git Bash** (part of Git for Windows) or [Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/install) (WSL). Do not use the Windows' default Powershell. -- - an account set up on [GitHub.com](https://github.com) -- - [Visual Studio Code](https://code.visualstudio.com/) -- - [Node.js](https://nodejs.org/en/download/) -- - [Discord](https://discord.com) --- name: resources # 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](https://stackoverflow.com/questions/42606837/how-do-i-use-bash-on-windows-from-the-visual-studio-code-integrated-terminal) by **Mahade Walid** and edited by **FruityOatyBar** (ignore the first answe, which is outdated). --- template: resources ## Javascript - [Exploring ES6](https://exploringjs.com/es6/index.html), by Alex Rauschmayer - [Eloquent Javascript](https://eloquentjavascript.net/), by Marijn Haverbeke - [The Modern Javascript Tutorial](https://javascript.info/), by javascript.info --- template: resources ## React.js - [React.js](https://reactjs.org/) official site, including tutorials and documentation. - [React Router Tutorial](https://www.youtube.com/watch?v=Law7wfdg_ls), by Dev Ed. - Video course: [React for Web Designers](https://www.linkedin.com/learning/react-for-web-designers-2/), by Joe Chellman --- template: resources ## Express.js - [Express.js](https://expressjs.com/) official site, including tutorials and documentation. - [Build A Restful Api With Node.js Express & MongoDB](https://www.youtube.com/watch?v=vjf774RKrLc), by Dev Ed. - Video course: [Dynamic websites with Node and Express](https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/), by Daniel Khan --- template: resources ## MongoDB and Mongoose - Video course: [Databases for Node.js Developers](https://www.linkedin.com/learning/databases-for-node-js-developers/), by Daniel Khan - [Mongoose](https://mongoosejs.com/) official site, including tutorials and documentation. --- name: evaluations # 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. --- template: evaluations ## 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. --- template: evaluations ## 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!!! --- template: evaluations ## Time commitment ![Time commitment](../assets/course-intro/time-commitment.png) --- template: evaluations ## Openness ![Openness](../assets/course-intro/openness.png) --- template: evaluations ## Challenge ![Challenge](../assets/course-intro/challenge.png) --- template: evaluations ## Knowledge increase ![Knowledge increase](../assets/course-intro/knowledge-increase.png) --- name: conclusions # Conclusions -- Thank you. Bye.