Skip to content

What to familiarize yourself with next

tim-hr edited this page Dec 22, 2016 · 1 revision

What to familiarize yourself with next

During the Prep course, you practiced component / systems thinking in miniature and you made small programs with a small subset of programming tools and techniques.

As you proceed on the next step toward being a professional programmer, you must begin thinking about components and your work on a larger scale.

This study guide will help you focus on some key topics to become aware of -- not to become expert at, there's too much material to take in one pass. Just start building up a mental framework of areas and topics of interest, and you can deepen your knowledge as you go.

I repeat: DO NOT try to absorb every bit of knowledge that's linked out from this doc, you will drive yourself crazy! Just skim around and get a sense of what topics are out there to absorb over time, begin to set up a learning scaffold for yourself for more-advanced material.

Let's organize the information in terms of what your simple, early programs didn't try to tackle just yet, but you will need to tackle as you expand your scope.

Your programs ran inside an online editor

Of course, going forward, you will need to construct programs on your local machine.

Also, right now your code is all on one page (file). As soon as you have more than one file, you have to organize it all.

You should try out and start using one of these editors:

Of course you can use any other editor you wish, but the above are some common choices to examine.

Note: The command line ones are cool because programmers work entirely with text, so keeping your hands on the keyboard and using key combos to manipulate text is extremely fast. There's a learning curve to picking them up, but just be aware of that as an option.

Your programs used only a small subset of JavaScript

First review what you know...

Then expand out to a couple of other cool things. Don't tackle all the ES6 goodies yet, it's too much material!

JS Scope

closures

hoisting

the this keyword

Prototypes

Your programs did not explicitly take into account different programming paradigms

Some major programming paradigms:

  • Imperative
  • Declarative
  • Object-oriented
  • Functional

Professional programmers are at least broadly aware of all these, and choose the best paradigm for the task at hand. Generally speaking, you should favor functional programming style because it is more maintainable, use objects as much as you need to, and avoid the straight imperative style as much as you can. The declarative style is unavoidable because that is how HTML and SQL work, and you definitely will use those technologies.

Imperative vs declarative

Object-oriented programming

Functional programming

Functional programming is a deep topic but for now just think of it as "use higher-order functions wherever I reasonably can".

Your programs did not use explicitly use CS fundamentals like data structures

stacks and queues

linked lists

sets

trees

hashtables

associative arrays

Your programs did not worry about performance

Your programs had no code management

Git basics

Your programs were written solo

Programmers collaborate on development via Github.

Github basics

Your programs were only academically code-reviewed

Professional engineers use more-formal and robust code review tools, the most popular of which is the "pull requests" facility within Github.

Your programs had no user interface

Without a UI, of course real users will not be able to interact with your program. At Hack Reactor, you will be constructing user interfaces primarily in the browser, although you are likely to have opportunities and/or reason to do so for other types of clients as well.

HTML & CSS

DOM

Your programs were not long-running

Your programs were not able to take user input over a long period of time. For a web application programmer, that implies setting up a server.

You will need to learn about:

Node.js

HTTP

Your programs did not store data

You will need to learn about databases...

SQL (relational databases)

NoSQL

Your programs did not do error handling

Exceptions

Your programs had homebrew unit tests

Pros use popular frameworks for unit testing. In JavaScript, you can familiarize yourself for starters with:

  • Mocha - test running framework
  • Chai - assertion library
Clone this wiki locally