A living document and resource made available by member contributors to use as a go-to list of materials for software development.
- GitHub Student Developer Pack - The best developer tools, free for students.
- Clean Code by Robert C. Martin
- PragPub - Collection of tutorials & books covering a broad range of languages
- The Pragmatic Programmer by Hunt * Thomas
- Programming Pearls by John Bentley
- Javascript: The Good Parts by Douglas Crockford
- TECHLEAD (free) - The greatest tech lead of all time!
- egghead.io (paid) - Concise courses for badass web developers.
- Confreaks.tv (free)
- Pluralsight (paid)
- iTunesU Ex: iOS8 w swift (free)
- funfunfunction (free)
- CodeFights - CodeFights is the most fun way to practice your programming skills.
- Hackerrank - Competitive coding and recruiting
- CodinGame - Solve problems with programming
- CodeChef - From complete beginner to expert, interactive programming challenges for everyone!
- Elevator Saga - Your task is to program the movement of elevators, by writing a program in JavaScript.
- Khan Academy - Computer Programming (free)
- Khan Academy - Computer Science (free)
- Khan Academy Hour of Code - Got an hour? Learn to code! (free)
- awesome - Curated list of awesome lists
- OSSU/computer-science - Path to a free self-taught education in Computer Science!
- Idiomatic.js - Principles of Writing Consistent, Idiomatic Javascript
- JSbooks - a collection of free javascript ebooks
- Eloquent Javascript
It is possible to generate very nice, complex websites by using a script to build all the resources, and then only put the static HTML, CSS, JS, and other assets up on the web
Web Dev is a really broad topic, but it can be a great way into software development for a lot of reasons:
- it touches on many parts of what makes computers useful to humans,
- there are so many pre-existing frameworks and tools that it is fast to come up with useful software and only touch on things that are unique to your task
- there is a high demand for people with even minimal skills
- much of the technology (html, css, JS) is highly fault-tolerant
With that said, there are a lot of routes to go here. A minimal set of things to learn would be some kind of web framework that renders the data in a way that can be used by web browsers, as well as some ways of thinking about that development. Ultimately, all you're doing is generating a document that is loaded by the browser... here's an overview of the whole process.
Fortunately, you probably don't even need to know many specifics to develop solutions for the web... a lot of frameworks will do things for you. Here are some framework guides:
- Ruby on Rails
- Codecademy's introduction to Rails
- Django - a Python-based framework for the web
- Express: a Node-JS based framework
- Symfony: a PHP based framework
- Wordpress isn't really a framework, though some folks use it as if it were
- Bento.io - A guided tour through curated, free coding tutorials
- Codecademy - Great way to quickly get up to speed in a new langauge
- Learn to code the hard way - A collection of coding tutorials focusing on repetition of fundamentals
While there are a lot of good things about using a graphical windowing system to do stuff with computers, it is usually way, way faster to do some tasks by interacting with the operating system in plain text:
Once you have an idea of what you can do with the command line, you need a good way to do it in other places. SSH is a great tool that lets you make a secure connection to other computers:
Avoid the chaos that is multiple folks working on a bunch of files. Maintain a clear history of the changes you've made. USE SOURCE CONTROL!