Ask HN: How can I create an effective personal coding bootcamp?
I want to create a coding bootcamp for myself so I can improve as a programmer and be able to build and ship useful things. I'm currently interested in web development. I'm also really interested in AI and machine learning, so ideally I'd create a "bootcamp" where I develop the skills to build web apps that effective use ML algorithms.
I created a list of my current skills based on four levels of knowledge: no experience, beginner, intermediate, and advanced. Here's my list:
Data Structures and Algorithms: Beginner
Databases: Beginner
Version Control: No experience
Frontend Web Development: No experience
Backend Web Development: Beginner
Machine Learning/AI algorithms: Beginner
Software engineering principles: Beginner
Unix/Linux commands: Beginner
[did I forget anything important?]
The idea is to create a cohesive program that could boost me to intermediate in as many of these topics as possible in a relatively short amount of time (probably during the summer when classes are out). But I'm really unsure about how to go about this. Has anyone done anything similar, or have any advice on how to create an effective program?
7 comments
[ 2.7 ms ] story [ 25.4 ms ] threadTry to arrange your life so that the majority of your day is spent doing things on and related to your list. It's really hard to rack up the hours needed for what you want in your spare time, so make it your main time.
Is programming and related knowledge a significant part of your major? If not, can you change that, or keep your major but change your emphasis?
Can you work in a job (part time or full), or a work study or intern position, that challenges your list?
Can you give up some relatively worthless activity (I'm not judging) for awhile, and replace it with intense, sweaty coding?
"I want to create a coding bootcamp for myself so I can improve as a programmer and be able to build and ship useful things." Then start building today, and ship tonight. Build and ship crap, and lots of it. Seriously. Ship.
Ira Glass on Story Telling, Part 1. (2, 3 and 4 are in the right margin.) http://www.youtube.com/watch?v=loxJ3FtCJJA
For example, you can create a web app that plays checkers against the user. You can pretty much do this as a static HTML page with a JS engine handling the UI and AI.
Once you're done with that, create a webpage that allows the user to play no limit texas holdem against one or more bots.
Another great way to learn really fast is to read a lot of code. Search for JS game engines, and try out each one. Download their sample projects and run them. Read through the code. Instrument it with console.log's. Step through it with a debugger if necessary. Then start modifying the sample projects to add new little features.
After you're done playing with the sample projects, dig into the source of the JS game engine. Learn how it's done. Then repeat with the next JS game engine.
The learning exercises might consist of simply coding up a few simple exercises in the areas you have listed. Pick a decently rated text and do a few problems.
The portfolio work should probably approximate working systems (e.g., mini-products). Since you are interested in web dev, throw together some working web apps that have full front-to-back-end stack.
Another option, and this one worked out well for me personally, is to take advantage of a cooperative education and internship opportunities. You'll gain a perspective on coding in the "real world" that you'll never get working on personal projects.
Another quick observation, not meant to discourage at all - we all lack in several areas. Always. I think for hackers, one of the only skills that matters is that you have established your ability to learn how to do details on the fly (like pick up a new language) while holding onto the fundamentals that help you stay productive and organized.
In other words - hang onto the "I have so much to learn" attitude, but be confident in your "getting things done" ability along the way.