Você está na página 1de 8

Contents

Contents ........................................................................................................................................................ 1
Your Guides ................................................................................................................................................... 2
Presentation Resources ................................................................................................................................ 2
Examples ....................................................................................................................................................... 2
Building a Team............................................................................................................................................. 3
A Yoda ....................................................................................................................................................... 3
Some Padawans ........................................................................................................................................ 3
A Protocol Droid........................................................................................................................................ 3
A Qui-Gon Jinn .......................................................................................................................................... 3
Project Tips.................................................................................................................................................... 4
Divide and Conquer .................................................................................................................................. 4
Organize Requirements ............................................................................................................................ 4
Delegate but Update ................................................................................................................................. 4
Go With What You Know .......................................................................................................................... 4
Project Requirements ................................................................................................................................... 5
Project Examples ........................................................................................................................................... 5
Code Teaching Tool ................................................................................................................................... 5
Random Movie Picker ............................................................................................................................... 5
My Ship! .................................................................................................................................................... 5
Community CLI .......................................................................................................................................... 5
Test Database................................................................................................................................................ 6
Users ......................................................................................................................................................... 6
Widgets ..................................................................................................................................................... 6
Resources ...................................................................................................................................................... 7
Great Tutorials .......................................................................................................................................... 7
Server Libraries ......................................................................................................................................... 7
Complete Web Solutions .......................................................................................................................... 7
Database Storage ...................................................................................................................................... 7
Front-End Helpers ..................................................................................................................................... 7
Templates.................................................................................................................................................. 7

Your Guides
Richard Key

Matt Hernandez

Chief Code Wrangler


5 years XP (1.5 Node.js)
Favorite Pony: Conquest
@busyrich

Software Craftsman
7 years XP (1 Node.js)
Favorite Pony: Applejack
@fiveisprime

I have been teaching myself web development


since I was a teenager. I feel in love with the web
and slowly grew my knowledge. A little over a
year ago I starting using Node.js and have not
looked back since.

I was an enterprise application developer for


many years before discovering whats possible
with web applications. This eventually led me to
node.js, which changed the way I look at backend development and the future of the web.

Presentation Resources
Presentation Slides: Google Presentation
Examples GitHub Repository: https://github.com/BusyRich/goingnode
Node.js & MongoDB Hosting: https://modulus.io/

Examples
The examples in the GitHub repository are organized into branches that correspond to
the various examples in the presentation. You can checkout each branch to view and
use the corresponding example.
Hello World
branch helloworld

Mongoose

Express

branch mongo

branch express

Express Views
branch views

All Together
branch master

Building a Team
Good teams are comprised of a mix of skill levels, backgrounds, and ultimately
opinions. These differences create a unique combination of ideas that can solve
problems in a very interesting way. In a way you want a sort of Fellowship of the Web
that can handle a project from all its fronts.

A Yoda
A veteran is required to bring experience to the team, one who knows all
the angels of a project, from server to client. They should not only be able
to come up with tested solutions, but will also help teach and guide those
less experienced members. They are the Yoda or Gandalf of the group.

Some Padawans
On the other side of the coin, it is also good to have one or two novices to
balance out the long developed processes of the veteran. Novices are going
to have a new outlook, a different perspective of technology and
development, which the veteran may have never needed or learned. These
are the Padawans or Hobbits of the group.

A Protocol Droid
Most minds do not think in terms of data, theories, and algorithms. This is
why it is crucial to strive to have that kind of mind in your group. A data guru
who understands the structure of data, how data links together, and more
importantly how to efficiently get all the data needed for a specific use case.
They are the C-3PO or Aragorn of the group.

A Qui-Gon Jinn
It is also important to have someone that understands how to put together
an understandable interface. They understand what people expect from
certain features and how those interactions play out. They are empathetic
to the end user and are not afraid to give input on what will make things
easier for the ultimate use for the product. They are the Qui-Gon Jinn or
Arwen of the group.
Even though these are different lines of approaching a project and often require
different experiences to learn, one team member can fill more than one role. It is also
possible that a couple members can pool their resources to fill a gap in the group. The
key is building a team to fill all these roles, even if all the member do not fit exactly one
of these needs.

Project Tips
Divide and Conquer
This is more than a cheesy adage to describe teamwork. It is a great way to approach
the project as a whole. Instead of thinking of one large system, think in modules, small
tools and sub-systems that communicate and work together to form the larger system.
However, they are also self-contained, which can be replaced with upgrade or rethought
pieces. This is crucial for larger systems.
This also allows easier delegation of tasks because each module can be developed
relatively in parallel. As long as a standardized communication method is agreed upon,
the possibilities are only limited by the number of hands you have to build with.

Organize Requirements
Any self-respecting project will need some defined use cases, technical requirements,
and time tables. In the case of a small, single day project, this takes the form of not a
large document of specifically outlined requirements, but a simple verbal
communication. Never-the-less, it is key to nail down these initial thoughts and organize
them into tasks that need to be done.

Delegate but Update


Each team member should always have a task ahead of them. Even if everything
seems to be in order, there is always room for improvement. Not only should everyone
have work, but the team as a whole should be keeping track of updates as things move
forward. This makes continuous progress (integration?) much easier, as those who
need to know will know and others can be conscious of important changes or
enhancements.

Go With What You Know


While it is true that learning Node.js is the goal, there are always conventions that are
close to our hearts. It may not be language dependent at all, it may just be as simple as
code style. Whatever it may be, development will always go smoother if you go with the
things you are used to and know well. Perhaps you prefer a particular client-side library,
or maybe you just know a particular data schema really well, but it is always better to try
and cut out work by sticking with what you can do best.

Project Requirements
All projects should, at least, follow these loose guidelines to help maximize learning
about Node.js.

A REST API build with Node.js


Utilize a MongoDB database
A front-end website that uses views and communicates with the API
Some sort of real-time feature, such as an auto-updating list

Project Examples
These are some cool ideas that you can use for inspiration

Code Teaching Tool


Instead of just throwing code up on a screen, how about an online, interactive code
editor that allows you to live-code right to all your students. It consists of a teacher view,
which allow you to code, while your students watch and follow along with the teacher.

Random Movie Picker


When you dont know what movie to watch tonight, why not just go to the random movie
picker? Pick a genre and it is spin up a random movie for you to watch, along with
where you can rent and buy the title online. If you would rather see what other people
are watching, there is also a real-time list of recently selected movies.

My Ship!
In a game where your ship is falling apart faster than one person can repair, you have to
look to a team of friends to help keep your ship running until it can make it to the next
port. Splitting up into roles, each team member is responsible for a piece of the ship
assigned by the captain, taking the form of a mini-game you have to complete. This
could be the engine room, this could be the med-bay, and it could even be the cargo
hold. Half the fun is figuring out what skills your location will require.

Community CLI
Whats more fun than a command line interface? A command line interface where
everyone gets to mess with everyone else. Less of a game and more of a run social
hangout, the community CLI is simply an interface where every command run effects all
connected piers, instead of just yours.

Test Database
Some examples and your application will require connection to a MongoDB database.
In the GitHub repository there is a database dump with the following collections seeded
with test data to help get your data on. The mongorestore command can be used to
import the data.

Users
Good ol user data.
Field
id
username
firstName
lastName
age
email

Data Type
number
string
string
string
number
string

Example
123456
megaawesomedude22
John
Doe
26
awesome@example.com

Widgets
A generalized item that can be used for lots of things.
Field
id
name
description
category
attributes
owner

Data Type
number
string
string
string
object
objectId

Example
434563
Super Widget
Some super widget.
areas
{attrOne:234,attrTwo:important}
ObjectId("52615850f5751af021000001"),

Resources
Node.js Docs
The History of Node.js

Great Tutorials

Server Libraries

Beginner's Guide

Express

Full JavaScript Stack

Hapi

Building an MVC website in Node.js

Strata

Using MongoDB with Express


Using Redis in Node.js
Using Hapi
Awesome Node Modules

Complete Web Solutions

Database Storage

Sails

MongoDB

Meteor

Redis

Geddy

Front-End Helpers

Templates

Backbone

EJS

Knockout

Handlebars

AngularJS

HAML

Você também pode gostar