Welcome to LEARN!
Firstly, congratulations on making the decision to become a software developer. No matter what past experience you have, after you've completed this program you'll be able to build a fully-functioning database-backed web app that is responsive, dynamic, and interactive. That, however, is not the greatest skill you will gain here at LEARN. You might ask, "What's more important than learning a skill that will get me a job in something great like software/web development?". But here, we aim to teach you how to LEARN how to program, so that you can continue to teach yourself. In web development, the only constant is change, and you will repeat this learning process over and over throughout your career.
Repetition! Now there's something that will help you learn how to do something. Sure, everyone learns differently, but repetition of something is necessary no matter how you learn. Together we're going to take a web page and break it down into its basic parts and then learn how to build it back up multiple times and in multiple ways. First thing to learn, however, is how to make a static web page with HTML, CSS, and Bootstrap.
HTML (Hyper Text Markup Language) is the code that tells a browser what to display on your screen and has been around since 1989. It has evolved and is currently in its 5th generation. Where things show up in a browser window is mostly due to the use of CSS (Cascading Style Sheets) which, while proposed in the early 1990s, didn't become big until around 1998.
CSS allows designers the ability to position, color, size, and do many other things with the content on a web page. Together HTML and CSS allow designers to make static web pages that are visually stimulating and unique. A static web page doesn't have much to offer, but with the use of Bootstrap we can also make our web pages responsive to changes.
Ruby on Rails, or just Rails, is going to take all of the information that you've learned and combine it into a format that is incredibly easy for other developers to understand. Code that other people can't understand is a very sad thing, and using Rails properly will ensure that doesn't happen. The organizational format that Rails uses is commonly called MVC, or Model-View-Controller. It will help you organize your program into small chunks of code that are themselves organized by what they do.
If you're don't think you've ever used a database before, here's a surprise... You have! A database is, in its simplest form, a way to store information in an organized manner in a computer. Ever used an Excel spreadsheet with multiple sheets? That's a simple database. Organized your emails into different folders? You've just created a database. The type of databases that we'll be using in class are SQL based.
SQL stands for Structured Query Language and is how most database backed programs send information to, and receive information from, the place where they store their data. There are several SQL type database programs (and even some that don't use SQL), but the program we'll be using is called PostgreSQL. Most programming languages today don't require users to actually type the SQL commands, but instead have an interface which translates your commands into SQL commands. We're going to spend a couple days on SQL so that you can understand how the database works behind the scenes, but we'll quickly transition to using ActiveRecord, an ORM (Object Relation Mapper) built into Ruby on Rails to help us translate database records into objects that we'll use in our programs.
Modern web applications are powered by APIs. An api is a data interface for front end applications and other applications to make requests against. We'll be using other people's apis, and building our own, to build rich, data driven applications. Using rich and interesting data sets is a lot of fun, and we're going to have a blast. Apis will expand your opportunities for creativity dramatically.
During pair programming in class we will be using the Pomodoro technique. This will accomplish two things:
Whether it's a call or a Facebook message, many distracting thoughts and events come up when you're at work. The Pomodoro Technique will help you log your distractions and order them according to priority levels.
We can keep track of the time by using the Tomato Timer. This is simple to use and will keep you on track.
Try some simple desk exercises. WorkAwesome is a good source for these or simply take a walk. Do a simple hand or neck massage to release tension and breathing exercises. Do a quick organizational chore. Just something small, like reorganizing your bag or your desk area. And it is important to hydrate.
At LEARN we use the Core Protocols to facilitate effective communication.
Some of the most used protocols are:
As you become more familiar with the keyboard, it is important to start to use keybindings to quicken up how you navigate around a file. The fewer times you have to move your hands away from the keyboard, the more efficient you will become as a programmer. Below are some of the more useful keybindings in Atom:
|How to indent and out-indent lines||`tab` / `shift + tab`|
|How to indent and out-indent blocks||`cmd + l` (multiple times), then `tab`|
|How to comment/out a line or block||`cmd + l` (multiple times for a block), then `cmd + /`|
|How to move lines up and down||Select line(s) if necessary, then `ctrl + cmd + up` or `ctrl + cmd + down`|
|How to do multi-insert||click in various places with `cmd` pressed, then type the change, and finally click out|
|How to split pane left/right/up/down||`cmd + k`, `left`/`right`/`up`/`down`|
There is a useful cheat sheet with more keybindings here... Atom Cheat Sheet
Atom on the LEARN work stations have been set up to autosave, that is files are automagically saved when you click in another window.
For more info on MVC and why its important, we recommend this video:
Get to your terminal
Change the look
|pwd||shows what directory you are in|
|ls||list out all directories and files available|
|cd||is your home directory|
|cd desktop||puts you into the desktop directory|
|mkdir my_folder||creates a new directory called my_folder|
|open .||opens the directory as if you double clicked on a folder.|
|atom .||opens the atom editor within your current directory.|
|;||semicolon allows multiple commands in sequence.||cd /drag/and/drop/folder||puts path to directory||cd ..||goes back one directory||history||see all commands used|
|clear||clear the terminal|
|Arrow up/down||scrolls through history of commands|
|alt-(arrow key)||moves cursor to beginning of command|
|tab||when half-way through a command, tab will autocomplete|
|command - k||clears the screen|
|command - +||increase Terminal text size|
Tab completion is great for terminal-only approaches to accessing projects, however, for the local system you can simply drag and drop any file or folder to the Terminal window, that will enter a full path at the point of the cursor. Once the Finder item has been dropped into the terminal, the entire path to the item is automatically typed out instantaneously, maintaining both proper capitalization as well as automatically filling in the appropriate \ before a space appears.
Working in Terminal and Atom
Todays Tentative Schedule
9:00 - 9:30 - Initial Meet and Greet
9:30 - 10:00 - Welcome Package
10:00 - 11:00 - Contents, working forms, emotional wellbeing
11:15 - Pairing Demo
11:15 - 12:00 Icebreaker
12:00 - 1:00 Lunch
1:30 - Tech Stack Presentation
2:30 - Command Line
3:30 - Git Demo
5:00 - End of Class