-
Notifications
You must be signed in to change notification settings - Fork 86
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.
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:
- vim (command line only)
- emacs (command line only)
- Sublime Text (graphical interface)
- Atom (graphical interface)
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.
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!
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.
Functional programming is a deep topic but for now just think of it as "use higher-order functions wherever I reasonably can".
- Eloquent JS Chapter 5
- Mostly Adequate Guide to Functional Programming -- this whole book goes very deep but this chapter is a good review of what we covered in Prep
- A practical intro to functional programming -- this doesn't use JavaScript but is easy to follow along. Just know that a "lambda" is a fancy word for an anonymous function.
Programmers collaborate on development via Github.
Professional engineers use more-formal and robust code review tools, the most popular of which is the "pull requests" facility within Github.
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.
- MDN page on DOM
- DOM Enlightenment - this is pretty deep, just skim to get the flavor of a formal approach to DOM manipulation.
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:
- very high-level video describing web app request/response
- HTTP basics -- just skim this to get a sense that knowing this protocol is going to be very important for understanding how you get your browser code to interact with your server code.
You will need to learn about databases...
- random marketing blurb on NoSQL db's -- don't worry too much about these right now, but they are in heavy use, and be aware that SQL databases by no means the only game in town.
Pros use popular frameworks for unit testing. In JavaScript, you can familiarize yourself for starters with: