

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

I started programming as a freshman in college. I&#x27;m currently a junior and I&#x27;ve been very dissatisfied with my progress.  I&#x27;ve noticed a lot of coding &quot;bootcamps&quot; 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.<p>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&#x27;m currently interested in web development. I&#x27;m also really interested in AI and machine learning, so ideally I&#x27;d create a &quot;bootcamp&quot; where I develop the skills to build web apps that effective use ML algorithms.<p>I created a list of my current skills based on four levels of knowledge: no experience, beginner, intermediate, and advanced. Here&#x27;s my list:<p>Data Structures and Algorithms: Beginner<p>Databases: Beginner<p>Version Control: No experience<p>Frontend Web Development: No experience<p>Backend Web Development: Beginner<p>Machine Learning&#x2F;AI algorithms: Beginner<p>Software engineering principles: Beginner<p>Unix&#x2F;Linux commands: Beginner<p>[did I forget anything important?]<p>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&#x27;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?
======
a3n
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](http://www.youtube.com/watch?v=loxJ3FtCJJA)

~~~
canremember
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.

------
ronyeh
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.

------
tom_b
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.

~~~
canremember
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.

~~~
tom_b
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.

------
nnash
Check out sites like [http://www.codecademy.com/](http://www.codecademy.com/)
[http://teamtreehouse.com/](http://teamtreehouse.com/) and
[https://www.codeschool.com/](https://www.codeschool.com/) and check if there
is anything relevant on [https://www.coursera.org/](https://www.coursera.org/)
for something free to get you started you should checkout
[http://prework.flatironschool.com](http://prework.flatironschool.com)

