Ask HN: How can I create an effective personal coding bootcamp?

6 points by canremember ↗ HN
I started programming as a freshman in college. I'm currently a junior and I've been very dissatisfied with my progress. I've noticed a lot of coding "bootcamps" arise in the last year or two (HackReactor, Dev Bootcamp, etc.), and I think the real value is that students get hundreds of hours of intensive practice guided by experienced mentors.

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 ] thread
I think you have a great idea, and I'm looking forward to some great responses. But I'm going to suggest something different. Not instead of, just not what you're asking for.

Try 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

I'm a CS student, but the fact that I've made so little progress with the confines of the classroom is what made me contemplate this idea in the first place. I could try for an internship during the summer, but I'm concerned about getting a good one. I'm smart, willing to work hard, and love to learn, but I feel I'm at a disadvantage since my skills are still so limited.
The most effective bootcamp is jumping into a project and seeing it to completion.

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.

Good for you! My thoughts are that it would be cool to mix pure "learning" exercises with "portfolio" pieces.

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.

Thanks, this is good advice. I'd consider an internship, but I'm concerned that most of the good ones wouldn't accept me since I'm still lacking in several areas. I'm willing to put in the work to learn quickly on the job, but I feel like I'd probably fail a technical interview.
Trust me, companies recruiting for internships know that you don't know anything yet. I interned and did co-ops after my first sophomore semester. Probably more than half the purpose of big corp internships is to fill the recruiting pipeline. Startups and small companies may need a more "ready to hack" person, but you'll find that out quickly.

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.