Skip to content

Commit d266e27

Browse files
author
Luca Sartori
committed
Final README draft
1 parent b1e66d5 commit d266e27

File tree

6 files changed

+192
-26
lines changed

6 files changed

+192
-26
lines changed

README.md

+192-26
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,31 @@
11
# JavaScript / Angular Bootcamp - 2018
22

3-
Welcome to the bootcamp, training time has begun
3+
## IMPORTANT DISCLAIMER
4+
This is not your typical _crash course_, this is a Bootcamp.
5+
6+
What does that mean?
7+
8+
- _You will give your best_
9+
10+
- _We will give our best_
11+
12+
- _We will all have a good time_
13+
14+
15+
But most important, there will be **A LOT** of humor, because a happy developer _(student, pupil, padawan, you get the point...)_ is a great and hard working developer.
16+
17+
18+
_That said..._
19+
20+
21+
## Welcome to the bootcamp, training time has begun
422

523
![Workout](assets/workout.gif)
624

725
Please, use this repository as a base for you training phase. The idea is to
826
fork this project so everyone use the same folder structure for the
927
exercises.
1028

11-
1229
#### Index
1330

1431
1. [Objective](#objective)
@@ -39,7 +56,7 @@ exercises.
3956

4057
### Objective
4158

42-
This course teaches the basics of JavaScript development and [Single Page Applications](https://medium.com/@NeotericEU/single-page-application-vs-multiple-page-application-2591588efe58) with Angular.
59+
This course teaches the basics of JavaScript development and [Single Page Applications](https://medium.com/@NeotericEU/single-page-application-vs-multiple-page-application-2591588efe58) with `Angular`.
4360

4461
[index](#index)
4562

@@ -82,7 +99,7 @@ exercises as wanted.
8299

83100
### Materials
84101

85-
1. You will need to install [Node.JS](https://nodejs.org/en/) (Version 8) (NVM is strongly recommended - [Unix](https://github.com/creationix/nvm#installation)/[Windows](https://github.com/coreybutler/nvm-windows))
102+
1. You will need to install [Node.JS](https://nodejs.org/en/) (Version 6) (NVM is strongly recommended - [Unix](https://github.com/creationix/nvm#installation)/[Windows](https://github.com/coreybutler/nvm-windows))
86103

87104
2. The recommended IDE is [Visual Studio Code](https://code.visualstudio.com/). However, you can use any IDE of your preference.
88105

@@ -105,7 +122,7 @@ The boot camp is organized in the following way:
105122
![Calendar](assets/calendar.png)
106123

107124
The first week is oriented to learn the basics around JavaScript and Node. This
108-
Bootcamp assumes you already know the basics of Js syntax. If this is not your
125+
Bootcamp assumes you already know the basics of `Js` syntax. If this is not your
109126
case, it is recommended to take a look to the following topics:
110127

111128
- [Js Values, Types, and Operators](http://eloquentjavascript.net/01_values.html)
@@ -131,7 +148,6 @@ You will learn about Cross-Compiled apps, Hybrid Apps, and Progressive Web Apps.
131148
awaiting for you is making last week's app more scallable, you will add lazy loaded modules with routing and you will
132149
upgrade the security with some route guards.
133150

134-
135151
### General Guidelines
136152

137153
1. [Team play](http://www.dummies.com/how-to/content/ten-qualities-of-an-effective-team-player.html) is encouraged but the work will be evaluated per person.
@@ -141,7 +157,7 @@ You must look for support and guidance from your PM, teammates and tutors.
141157

142158
3. All code and documentation must be in English.
143159

144-
4. Js Code must adhere to this [Coding Style Guide](https://github.com/airbnb/javascript).
160+
4. `Js` Code must adhere to this [Coding Style Guide](https://github.com/airbnb/javascript).
145161

146162
5. Ts and Angular Code must adhere to this [Coding Style Guide](https://angular.io/guide/styleguide).
147163

@@ -150,7 +166,7 @@ You must look for support and guidance from your PM, teammates and tutors.
150166
### Learning Days ###
151167

152168
Each day you will grab the fundamentals of the key building blocks for usual
153-
Js/Ts/Angular applications.
169+
`Js/Ts/Angular` applications.
154170

155171
On each learning day you will have to:
156172

@@ -163,7 +179,7 @@ following practice.
163179
You will implement the previously gathered knowledge in simple coding activities.
164180

165181
3. **Commit:**
166-
You will commit all your code on a daily basis, when you finish your practice. This will not apply for code of Week 4.
182+
You will commit all your code on a daily basis, when you finish your practice. This will not apply for code of Week 3 and 4.
167183

168184
# Introduction
169185

@@ -179,13 +195,15 @@ You will commit all your code on a daily basis, when you finish your practice. T
179195

180196
[index](#index)
181197

198+
_Now let's get down to business_
199+
182200
# Week 1: JavaScript and Node 101
183201

184202
## Day 1: The Secret Life of Objects
185203

186204
![Suspicious](assets/suspicious.gif)
187205

188-
Js is often called an Object oriented language, but actually that isn't 100% true. In Js
206+
`Js` is often called an Object oriented language, but actually that isn't 100% true. In `Js`
189207
we have what's called `Prototipal Inheritance`.
190208
In this lesson you will learn all about the Prototype, Inheritance, Getters, Setters, Constructors and Polymorfism.
191209

@@ -206,7 +224,7 @@ We still have that ~~hideous~~ beautiful `Prototype` under the hood, so don't ge
206224
## Day 2: Going Regular with RegEx (Also, learn how to hunt those bugs)
207225
One of the most ~~hated~~ used features on any kind of language are Regular Expressions, aka RegEx. Those are **REALLY** powerfull strings (they are more like a really special kind of strings) that allow you to capture any pattern you want on any kind of string. You can make sure all emails accounts end up with `@something.com` or all the names are at most 4 characters long... you get the idea.
208226

209-
Also, you will be learning error handling and some of the finest debugging techniques out there. Or, as I like to call them, **_learn how to properly use the browser console_**.
227+
Also, you will be learning error handling and some of the finest debugging techniques out there. Or, as I like to call them, **_learn how to properly use your tools_**.
210228

211229
Read up and catch 'em all
212230

@@ -230,7 +248,7 @@ The code comes to life. All works fine (at least if you coded right :unamused:)
230248

231249
![Magic](assets/magic.gif)
232250

233-
No, no it's not. It's the browser's engine. Js runs inside a browser on a [VM](https://en.wikipedia.org/wiki/JavaScript_engine), that VM could be
251+
No, no it's not. It's the browser's engine. `Js` runs inside a browser on a [VM](https://en.wikipedia.org/wiki/JavaScript_engine), that VM could be
234252
[V8](https://developers.google.com/v8/) (Chrome), [SpiderMonkey](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey) (Firefox), [Chakra](https://github.com/Microsoft/ChakraCore) (Edge) or [Nitro](https://developer.apple.com/documentation/javascriptcore) (Safari)
235253

236254
For day 3 you will learn about the Browser, the Document Object Model (basically the whole thing you are seeing on the browser's window) and DOM Events.
@@ -248,7 +266,7 @@ The browser and the server (the little computer thingy that lives on the cloud a
248266

249267
- [HTTP](http://eloquentjavascript.net/17_http.html)
250268

251-
Users communicate with the application via `forms`, those are fill up sections which where designed on a time before Js where all interactions with the server where made while navigating to a new page. That kind of interaction is **SO** web 1.0 but, we still use `forms`.
269+
Users communicate with the application via `forms`, those are fill up sections which where designed on a time before `Js` where all interactions with the server where made while navigating to a new page. That kind of interaction is **SO** web 1.0 but, we still use `forms`.
252270

253271
- [Forms](http://eloquentjavascript.net/18_forms.html)
254272

@@ -257,16 +275,17 @@ Users communicate with the application via `forms`, those are fill up sections w
257275
Look into [`src/week1/day3`](src/week1/day3) in there there're some `index` files, poke around and follow the instructions.
258276

259277
## Day 4 and 5: require('Node.js')
260-
So, at this point you pretty much are up to speed with Js. But Js does not only run on a
278+
So, at this point you pretty much are up to speed with `Js`. But `Js` does not only run on a
261279
browser. **YES** you read me right, you can make a `server`, a `robot`, a `game`, you
262280
can eve run it on an _Arduino_. The sky's the limit.
263281

264-
How is that even possible you ask? Well, Js' community was aways **HUGE**, so it was more than expected that a person asked `Why not?`
282+
How is that even possible you ask? Well, `Js` community was aways **HUGE**, so it was more than expected that a person asked `Why not?`
265283
That's how [`Node`](https://nodejs.org/en/) was born.
266284

267-
Node.js is a Js runtime that runs outside the browser on a V8 VM, there's a Node fork for almost everything.
285+
`Node.js` is a `Js` runtime that runs outside the browser on a V8 VM, there's a Node fork for almost everything.
268286

269-
So, first, to understand how node works, you need to learn one last thing about Js, `Modules`
287+
### Reading
288+
First, to understand how node works, you need to learn one last thing about `Js`, `Modules`
270289

271290
- [Modules](http://eloquentjavascript.net/10_modules.html)
272291

@@ -284,7 +303,7 @@ Then you can go on with this
284303
- [How npm works?](https://docs.npmjs.com/how-npm-works/npm3)
285304

286305
### Exercise:
287-
Look into [`src/week1/day4-5`](src/week1/day4-5) in there there're some `js` files. Those 2 are Node.js apps, they don't work as you would expect from any other `.js` file.
306+
Look into [`src/week1/day4-5`](src/week1/day4-5) in there there're some `js` files. Those 2 are `Node.js` apps, they don't work as you would expect from any other `.js` file.
288307
You will need to use the command line:
289308
```
290309
luca.sartori@AR-IT12688:~/bootcamps/ui$
@@ -319,48 +338,195 @@ Don't be afraid to Google stuff, no developer remembers everything
319338
[index](#index)
320339

321340
# Week 2: TypeScript and Angular 101
341+
So, here we are. This is the first step into a whole new world. It doesn't matter if it's [Angular](https://angular.io/), [React](https://reactjs.org/), [Vue](https://vuejs.org/) or any `Js` framework. The latest generation of those tools makes the whole development process a breeze.
342+
Welcome to the SPA world.
322343

323-
### Reading:
344+
![New World](assets/newWorld.gif)
324345

325-
## Day 6:
346+
Here at Globant we are technology agnostic, every developer is welcomed to study anything he wants. However we do recommend from a maturity and scalabilty points of view `Angular` or `React`.
326347

327-
### Exercise:
348+
This Bootcamp will be made around `Angular` that does not mean that you should stop there, if you want to dig into `React` please do, it'll help you in the future.
328349

329-
## Day 7: Unit Testing
350+
**SO**... going back to our business: **`WEEK 2`** - Beginning our project.
330351

331-
### Reading:
352+
## Day 6: TypeScript 101
332353

354+
Let's start with [TypeScript](http://www.typescriptlang.org/), basically a superset of `Js`, with some advantages
355+
1. Types
356+
```
357+
var number: number = 1;
358+
var word: string = "1";
333359
334-
### Exercise:
360+
return number === word;
361+
// IS NOT THE SAME
362+
363+
number = word;
364+
// CAN'T BE DONE, DIFFERENT TYPES
365+
```
366+
2. Intellisense
367+
368+
![Intellisense](assets/intellisense.gif)
369+
370+
3. Generics - generic code for any type
371+
```
372+
class Greeter<T> {
373+
greeting: T;
374+
constructor(message: T) {
375+
this.greeting = message;
376+
}
377+
greet() {
378+
return this.greeting;
379+
}
380+
}
381+
382+
let greeter = new Greeter<string>("Hello, world");
383+
384+
let button = document.createElement('button');
385+
button.textContent = "Say Hello";
386+
button.onclick = function() {
387+
alert(greeter.greet());
388+
}
389+
390+
document.body.appendChild(button);
391+
```
392+
4. Transpilation - write in Ts, get ES6, ES5, ES4, etc...
393+
![Transpilation](assets/transpilation.png)
394+
[_Taken from Ts Playground_](http://www.typescriptlang.org/play/index.html)
395+
396+
Relax, you can always keep writing Js with TypeScript
397+
398+
And there's more and more... but that's for you to read:
335399

400+
### Reading:
401+
- [TypeScript in 5 minutes](http://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html)
402+
- [Basic Types](http://www.typescriptlang.org/docs/handbook/basic-types.html)
403+
- [Variable Declarations](http://www.typescriptlang.org/docs/handbook/variable-declarations.html)
404+
405+
## Day 7: Still Ts
406+
Get ready, there's a lot where the previous day came from.
407+
408+
### Reading
409+
- [Interfaces](http://www.typescriptlang.org/docs/handbook/interfaces.html)
410+
- [Classes](http://www.typescriptlang.org/docs/handbook/classes.html)
411+
- [Generics](http://www.typescriptlang.org/docs/handbook/generics.html)
412+
- [Enums](http://www.typescriptlang.org/docs/handbook/enums.html)
413+
- [Type Inference](http://www.typescriptlang.org/docs/handbook/type-inference.html)
414+
- [Type Compatibility](http://www.typescriptlang.org/docs/handbook/type-compatibility.html)
415+
- [Advanced Types](http://www.typescriptlang.org/docs/handbook/advanced-types.html)
336416

337417
**Notes:**
338418

419+
There is no excercise section on these two days because as this is a superset of `Js` you already know how it works. Take them as free days so you can digest all that new info about `Ts` specific features.
420+
421+
All `Ts` code will be evaluated with `Angular` as that's the language it uses.
422+
339423

340-
## Day 8, 9 and 10:
424+
## Day 8, 9 and 10: Angular 101
425+
So yes, here we are, `Angular`. The **ONE** framework (as they say) you may know it for it's previous generation, the highly important and famous _angular.js_.
426+
427+
_But as they say... water under the bridge._
428+
429+
`Angular` is a new framework, a new codebase and **A LOT** of new features. The team wanted _so bad_ to emphasize the _new_ part that the ditched the `.js` part of the name (commonly used on Js frameworks) and they adopted [_semver_](http://semver.org/).
430+
431+
The current version is 5.0, but we will focus on version 4.x as this is more mature and stable and most of the features of 5.0 are not difficult to learn after picking up 4.x
341432

342433
### Reading:
434+
- [Angular Quickstart](https://angular.io/guide/quickstart)
435+
- [Angular Intro - Tour of Heroes](https://angular.io/tutorial)
343436

437+
### ~~Not So~~ Optional Reading
438+
- [Angular CLI](https://github.com/angular/angular-cli)
344439

345440
### Exercise:
346441

442+
The exercise for the week, is simple. We want you to be friends with `Angular`, so what's best than talking to each other?
443+
444+
You will do the `Tour of Heroes App` featured in the intro above. For that you'll have to follow the instructions on the page. However, as we want you to make the code, not copy/paste it there's a catch.
445+
446+
_You will need to make a commit after every step, each one with a difference of at least 20 minutes. That way we can **at least try** to believe that you typed the code_
447+
448+
Keep in mind:
449+
1. The app must be under [src/week2](src/week2)
450+
2. You will need to install Angular CLI
451+
3. You are expected to follow `Angular`'s code standards
452+
4. Make a personal touch, you should be listed as a hero (cool powers only :grimacing:)
453+
347454
[index](#index)
348455

349456
# Week 3: Angular 201
457+
Things are getting serious, are you ready to dive deep into `Angular`'s architechture?
458+
459+
![Study](assets/study.gif)
460+
461+
You will learn about the fundamentals, the good ways, the more performant and powerful approaches.
350462

351463
### Reading:
464+
- [Architechture](https://angular.io/guide/architecture)
465+
- [Displaying Data](https://angular.io/guide/displaying-data)
466+
- [Template Sintax](https://angular.io/guide/template-syntax)
467+
- [Lifecycle Hooks](https://angular.io/guide/lifecycle-hooks)
468+
- [Component Interactions](https://angular.io/guide/component-interaction)
469+
- [Component Styles](https://angular.io/guide/component-styles)
470+
- [Attribute Directives](https://angular.io/guide/attribute-directives)
471+
- [Structural Directives](https://angular.io/guide/structural-directives)
472+
- [Pipes](https://angular.io/guide/pipes)
473+
- [User Input](https://angular.io/guide/user-input)
474+
- [Forms](https://angular.io/guide/forms)
475+
- [Form Valitdation](https://angular.io/guide/form-validation)
476+
- [NgModule](https://angular.io/guide/ngmodule)
477+
- [Router](https://angular.io/guide/router)
478+
- [Http Client](https://angular.io/guide/http)
479+
- [Testing](https://angular.io/guide/testing)
480+
481+
### ~~Not So~~ Optional reading
482+
- [Flexbox - CSS leveled up](https://css-tricks.com/snippets/css/a-guide-to-flexbox/)
352483

353484
### Exercise:
354485

355486
[index](#index)
356487

357488
# Week 4: Angular 301 and stuff
358489

490+
So... you've got your `Angular` going, you read a **LOT** of stuff last week, you started a SPA. So... What's next?
491+
492+
![Homer Scholar](assets/homerSquareRoot.gif)
493+
494+
There're still a lot of stuff to read, some of them really work better under specific conditions or requirements. Remember:
495+
496+
_KEEP IT SIMPLE_
497+
498+
If there's a more advanced or complicated way to get to a solution it doesn't always mean that's the better approach.
499+
500+
With that in mind, here are some more advanced _(or not, this **whole** crash course was made by a bored developer on a few days span)_ features that every one should know, and at least being able to explain them.
501+
359502
### Reading:
503+
- [Dinamic Component Loader](https://angular.io/guide/dynamic-component-loader)
504+
- [Animations](https://angular.io/guide/animations)
505+
- [Reactive Forms](https://angular.io/guide/reactive-forms)
506+
- [Dynamic Forms](https://angular.io/guide/dynamic-form)
507+
- [Bootstraping](https://angular.io/guide/bootstrapping)
508+
- [Dependency Injection](https://angular.io/guide/dependency-injection-pattern)
509+
- [DI in Angular](https://angular.io/guide/dependency-injection)
510+
- [Hierarchical DI](https://angular.io/guide/hierarchical-dependency-injection)
511+
- [DI in Action](https://angular.io/guide/dependency-injection-in-action)
512+
- [Server Side Rendering](https://angular.io/guide/universal)
360513

514+
### ~~Not So~~ Optional Reading
515+
- [Progressive Web Apps](https://developers.google.com/web/progressive-web-apps/)
516+
- [PWAs on Angular](http://www.youtube.com/watch?v=C8KcW1Nj3Mw)
517+
- [Hybrid Apps](https://developer.telerik.com/featured/what-is-a-hybrid-mobile-app/)
518+
- [Hybrid Angular Apps - Ionic Framework](https://ionicframework.com/)
519+
- [Cross Compiled Apps](https://developer.telerik.com/featured/defining-a-new-breed-of-cross-platform-mobile-apps/)
520+
- [Cross Compiled Apps with Angular - NativeScript](https://www.nativescript.org/)
521+
- [Cross Compiled Apps with React - React Native](https://facebook.github.io/react-native/)
361522

362523
### Exercise:
363524

364525
**Some advices**
526+
- Dont't get scared. Even the most successfull Software Engineers and Architects forget things sometimes.
527+
- Google is your friend, independence and curiosity are great values that every developer need to have.
528+
- The only way to learn is to fail, so keep failing.
529+
- Theory is nice, but you need to get your hands dirty if you want things to stick.
530+
- Remember, _a happy developer is a great developer_ (_also_, **coffee** is your best friend)
365531

366-
## Important:
532+
Kudos and keep ~~failing~~ learning!

assets/homerSquareRoot.gif

1.84 MB
Loading

assets/intellisense.gif

26.9 KB
Loading

assets/newWorld.gif

969 KB
Loading

assets/study.gif

445 KB
Loading

assets/transpilation.png

90.8 KB
Loading

0 commit comments

Comments
 (0)