A hopefully-useful collection of stuff to check out.
- JavaScript (front and back end)
- CoffeeScript (compiles into JavaScript)
- Go (forgot to tell you about this one, it's super cool)
- Python
- Ruby
- Closure
- Haskell
- Erlang
And, of course,
- Everything in the Unix Philosophy
- DRY
- SOLID (object-oriented design)
The lingo. These are things to look up and learn about.
The key to learning how to program is Google; the key to Googling is knowing the right search term; and the key to that is knowing the jargon.
- Design pattern
- Anti-pattern
- Framework
- Architecture
- Refactoring
- Code smell. Love this one.
- Unit testing
- Build automation
- MVC
- All the Wikipedia pages on the software development process.
- Programming styles:
- Functional
- Object-oriented
- Imperative (only good for very simple programs, a.k.a. “scripts”)
- Node.js (JavaScript)
- Ruby on Rails (Ruby)
- Django (Python)
- MongoDB (a “NoSQL” database)
Version control is essential for every project, but especially if you're working with a team. Most modern companies use git
, and GitHub, as you might expect, is based on it.
- Git
- GitHub (and here's my profile)
It's important to be able to manipulate code efficiently. The less time your brain spends dealing with the interface between your mind and your machine, the more fluently you can express your thoughts as code. Woah.
- Atom (very new and cool)
- Sublime Text (solid and dependable)
- Vim (incredible, but probably not worth the time to learn—it's taken me years)
- Salary negotiation. Great blog post.
- StackOverflow. I can't even begin to describe how important this site is.
- Hacker News. Name says it all.
- Codecademy. Good way to introduce yourself to a new language or technology.
- Why numbering should start at zero. A beautiful line of thought, elegantly rendered into crisp prose, by one of the great early computer scientists. This is just one of many reasons why FORTRAN and Matlab are terrible.