It turns out we have several folks at Square who arrived at programming through boot-camps, or other non-CS paths, and feel a sort of lingering insecurity (or get explicitly told by unkind people) that their path left them without a solid grasp of “the fundamentals”.
I have the pleasure of having a boot-camp grad on our team, Amy Henning: she’s now several tech jobs in (and fantastically capable), and has a great perspective on what our industry can be like to people coming in from outside.
We decided to try an experiment for folks in our company interested in learning CS: I’ll play the grizzled veteran, and come up with provocative questions, and we’ll meet for an hour every two weeks and discuss them. I’m excited to see how it goes!
As mentioned above, the genesis of this ramble was trying to fill in the gaps that cause bootcamp grads to feel shaky. There’s an interesting (and hopefully encouraging) thing about the stuff we’re going to cover: for many of the concepts, after learning, thinking, and chatting about them for an hour or two, you’ll be more comfortable with them than many working programmers!
For every CS grad who spent entire classes working with 1s and 0s, desigining circuits to add and manipulate binary numbers, there are two more programmers who took a different path and never learned—or don’t remember—how to twiddle bits. Even a hand-wavy understanding of how the processor’s use of memory affects the speed at which your program executes will put you ahead of the 40%1 of all programmers for whom the CPU is just a complete mystery.
How to use these blog posts
As mentioned briefly before, every two weeks, we discuss a list of questions shared two weeks previously. The next day, I send out a new set of questions for folks to ponder, and we discuss those two weeks later.
There is actually a lot of material here. Working through it on your own might be overwhelming, and a group or mentor would be very helpful. If you decide to do it alone, don’t be afraid to go as slowly as you need to. There’s no time limit!
The questions for each week below are verbatim from our group, while the following posts are longer and prettier versions than we could manage to discuss verbally in just one hour.
It’ll probably be more satisfying to read the questions, and then give yourself some time to investigate or at least think about them for a while before reading the discussion posts. Or even work through the questions with a group. If you do that, please get in touch!3
I’ll try to jump between common programming languages4, but keep all snippets short and understandable.
Any errors, omissions, or tangled didactic paths are the fault of me, Zellyn.
Thanks to Amy Henning and the whole boot-camp-grad crew at Square for working through the first draft of this, making it up as we go along.
Thanks to Eric Ayers for thoughtful suggestions and comments, most of which I’m still working to incorporate!
83% of all statistics are made up on the spot2. ↩︎
Yes, including this one. ↩︎
In fact, please get in touch for any reason at all! We’re doing this to be helpful to people, and any feedback that could make it more useful to more people would be welcome. ↩︎
But my preference for Go might occasionally be obvious! ↩︎