Software FAQ

And by "frequently" I mean either (1) asked of me enough that I'm creating a stable public reference for it or (2) not asked of me very often, but I think more people should be asking it.

Should I attend a bootcamp?

Bootcamps are largely useful as a commitment device. A good portfolio project has as much signaling value as a bootcamp--much of the job-market value of the bootcamp simply is whatever project or portfolio piece you create in it--and needn't carry the negative signal a bootcamp can (pegging you as very junior).

So: maybe, depending on how you work best, but almost certainly not if the bootcamp isn't a very good one.

What book should I read to learn programming?

You probably shouldn't base your learning around a book. It's more effective to pick a project (initially something very small) and try to see it through, doing Web searches for help along the way. If you need some other sort of structure around your learning, a good MOOC relevant to your interests (search "MIT OpenCourseWare" on YouTube) is a good option.

I want to learn fundamental algorithms and data structures. What should I study?

Tim Roughgarden's MOOC (lectures available on YouTube) is a good place to start. MIT OCW (also largely available on YouTube) is usually my first YouTube search to learn about or brush up on some particular CS topic. I find it handy to have CLRS around, and Skiena's book is a nice complement to it. But you don't need any books.

How did you get into programming? How did you get your first job?

See here.

Home page