foundersandcoders / coursebook Goto Github PK
View Code? Open in Web Editor NEWThe new coursebook
Home Page: https://learn.foundersandcoders.com
License: Other
The new coursebook
Home Page: https://learn.foundersandcoders.com
License: Other
This is a minor issue, but the last name game was a bit chaotic and too long. Could we ensure for Monday and record somewhere in the mentor notes that if alumni are going to join the circle they need to go after the students have all gone and it's ok for them to do it in pairs to speed things up a bit.
Introduce the concept of testing pure functions and simple utils, to get them in a testing mindset.
GET
routes
I think we need to decide on a license for our curriculum. We need to re-apply for our Netlify open source account, which requires our "project" to be licensed with a valid open source license. Since the curriculum is our main product this is probably what they care about.
Also I was thinking about other commercial bootcamps using our curriculum (e.g. http://www.turnintocoders.it/en/). I strongly believe that our curriculum should be open source, but I really don't like the idea of my work being used by for-profit entities.
My suggestion would be to use the Creative Commons Attribution-NonCommercial-ShareAlike (CC BY-NC-SA 4.0) license. This allows others to share and adapt the content, but requires them to give us attribution, not use the content commercially, and to retain the same license.
The Friday afternoon schedule currently includes:
Time | Activity |
---|---|
14:00 | Presentations |
16:00 | Stop Go Continues |
Given recent discussion on keeping presentations to under 10 minutes and FAC18's requests for feedback on their presentations, we may have additional time for other activities. It might be a nice addition to have space for 20 minutes of peer (i.e. team-to-team) feedback on presentations, supported by a README with guidance on things like, scripting (or even pre-recording) the app walkthrough and keeping code snippets and explanations short. We could usefully also add additional time for team-based SGC, which appears to have been missed out of the current weekly schedules.
Time | Activity |
---|---|
14:00 | Presentations |
15:20 | Presentation feedback |
15:40 | Team SGC |
16:00 | Stop Go Continues |
Cover choosing colour palettes, a11y/contrast, HSL?
Review the spikes topics for every week (they should map to learning outcomes/project requirements)
node
replnode file.js
http
Build your own router!
https://repl.it/@oliverjam/minimal-client-router-2
popstate
listenerHow to POST
data with fetch.
querySelector("#my-input").value
event.target.elements[name].value
Object.fromEntries(new FormData(form))
Try out TDD and learn map
, filter
, every
, some
etc at the same time
Currently, students appear to be deploying to GitHub Pages, Heroku and Netlify, depending on context. Heroku is mentioned in in the notes for the Week 5 project. Netlify is not mentioned anywhere. It could perhaps usefully be added as early as Week 2 as a way to hide API keys (where they are currently mentioned for the first and only time).
In the second half of the programme, I would like to advocate for introducing students to containerisation through deploying Docker containers to GCP. It's conceptually simple and the basics can be picked up in under a day. It's a significant gap in the curriculum and will open up junior DevOps roles to our graduates of which there are many currently available.
Integration testing to ensure the browser is actually displaying/interacting how you expect.
Based on feedback from past cohorts (and this discussion), it would be a good idea to create a short intro presentation for each week's topic (where one doesn't already exist).
I suggest we check these tick boxes as we add presentations for each week, and close the issue once every week has been covered:
Intro presentations that currently exist:
We're going to have lots of complex markdown (tables etc), which Prettier can automatically format to be consistent and readable. We shouldn't rely on contributors have Prettier configured in their editor.
Instead we can set up a GitHub Action that will auto format all markdown files in a PR and commit the change. Here's an example set up
Component CSS?
Slides and mini workshop covering how the web works, HTTP requests, methods, bodies. Maybe demo curl
?
3 different ways to render
createElement
innerHTML
and template literals<template>
elementsCreate testing week intro slides
Just raising this issue so that the HackMD documentation for the T4B project presentations and handover is linked to from the course book repo.
Hover and focus styles
GET
, POST
and DELETE
@matthewdking was reminding me at the weekend that he, @finnhodgkin and @Karyum developed a method of code reviewing in Nazareth that consisted of projecting one of the projects on the big screen and proceeding to critique and also re-write parts of it as a team, while the class all looked on. Apparently, this was very well-received and became a regular fixture for FACN3.
It reminds me of @besarthoxhaj and @izaakrogan's description of working with Campbell Morgan on one of their early projects back in the day, in what they both agreed was the most useful mentoring they ever received, when Campbell's code reviews would effectively involve him rewriting their code while Bes and Izaak looked on, asking questions as he went.
Could we institute something similar with FAC19? Perhaps we could even persuade Matt and Finn or Izaak and Bes to come in and demonstrate the technique for us before handing over to the in-house team.
Possibly we could fit a 30-minute review into the schedule at 2pm on Thursdays.
Build your own middleware
No idea what. Previously scheduled test mocking but that's in Week 8 now
We discussed how we might adapt our intro to testing at the last meeting. I presented my ideas for introducing the concept without any testing framework. I've created a rough workshop for how this might look.
We liked a few things about this approach:
module.exports
hacks)We also discussed not limiting ourselves to only testing the pure functions/app logic. Currently the Week 2 project has a ton of boilerplate to ensure students are building an app that is unit-testable. This is often a sticking point and people end up spending more time trying to understand the (unusual) structure rather than writing tests.
With browser-based testing we aren't so limited, so we can have them write tests for complete features, which will more closely match user stories. We discussed having them do pseudo-BDD, where we potentially give them boilerplate tests that match the user-stories that they have to fill out then make pass.
E.g.
test("I can add a todo to the page", () => {
const input = document.querySelector("input");
input.value = "my todo"
const button = document.querySelector("button");
button.click();
const todo = document.querySelector("li");
equal(todo.textContent, "my todo");
})
Personally testing never clicked for me because unit testing and TDD feel so removed from user-facing features. TDD especially is (mostly) a development tool for solving problems. It wasn't until I started testing actual features as if I were a user that I really got testing.
If we think linking to slides from the coursebook is a better approach than putting content into the gitbook (shame gitbook doesn't have slide mode), we might want to think about consolidating on a single tool for creating them.
Introduce sync vs async, callbacks, promises and fetch
--red: hsl(0, 50%, 50%)
, --primary: var(--red)
prefer-color-scheme
)Becoming good at technical interviews is a critical skill. It could also become somewhat labour-intensive if we were to offer more opportunities for students to practice if done in the traditional way. It also requires the interviewer to have a modicum experience to be effective. Let's explore peer led approaches.
Perhaps we could set aside 90 minutes at the same time each week from Week 11 to trial peer-led approaches to interviewing.
Here is what it could look like:
Library of challenges with associated documentation
Not sure about this one. Build a simple prototype with no CSS/JS? Excalidraw?
Could we consider introducing the basic principles of estimation and issue management in Week 1?
To be added to GitHub issues
Provide 6 user stories, 2 points each. Velocity: 12 points
Code review:
Presentation:
Build an a11y spinner. Don't use booleans for state
As referenced in @jameslevine 's mentor feedback here:
#997 (comment)
fac16 and fac17 found the introduction to express on day 1 of express week quite long and wordy, and it took longer than expected because mentors were waiting on everyone to read through.
With @bobbysebolao 's approval, I made some slides and did a test run for fac18.
and they have given positive feedback about receiving the information as a presentation.
weeks 6 and 7 on the old curriculum (postgreSQL and authentication) do have presentations to introduce the week.
Having intro presentations from week2 onwards might be a good idea, an opportunity to introduce the main topics for the week and the learning outcomes and open the room to discussion and questions.
however, this relies on the mentors for the relevant weeks preparing to deliver these presentations, thats a possible downside.
initially started this suggestion just for the express week introduction.
I'm happy to assist creating the presentations if we decide to implement this.
Concept of scoping variables. var
vs let
/const
. Block scope vs function scope. Script tag global scope
Short workshop on CSS layout to follow the Design Burst
Couple of minor things but wanted to raise them here. Happy to self-assign these if all agree.
I've created a few extra slides on spikes, jigsaw and roles.
Can we fit both the intro to project management and Spike! into the Week 1, Day 2 schedule?
Based on when both parts (weeks 1 and 2) of the original talk were presented together, I would guess that the first slide deck would need 10 minutes to present and 5-10 minute for questions. The second talk is shorter and simpler. 30 minutes is probably realistic for both together instead of the 15 minutes currently allocated.
I am a little unsure about the Research presentation guidance and "splitting the allotted time for research 50:50 - between carrying out your research, and preparing your presentation", which--after our discussion this Friday--may be asking too much for what we might want to be a shorter presentation than we have asked for in the past.
Present: Michael, Aisha, Oliver, Kristina, Dan
4/9/19 TO DO
Concept: static website
PROJECT:
Tools
Concept: HTTP
PROJECT:
Tools
EXTRA: FAC api for Weeks 2+3
Concept: build systems
PROJECT:
npm
automated testing
searchable api / form
error handling
Tools
JS
Concept: node
PROJECT: vanilla HTML form
Tools
Concept: Databases
PROJECT:
Tools
testing
Concept: Auth
PROJECT:
Tools
CSS
Concept: Express
PROJECT: User profile?
Tools
Concept: Full-stack app
PROJECT:
JS
Possible learning outcomes:
UI/UX
-
DevOps
-
QA
-
Scrum
-
UI/UX
-
DevOps
-
QA
-
Scrum
-
Explain the concept of functions being "first-class" in JS. Lay the groundwork for callbacks. https://oliverjam.es/blog/first-class-functions/
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.