(Previous: “Simple” != “Easy”)
This post has been a long time coming.
Back in October, when I had been learning to code for a while on my own, I realized that I needed to invest in some kind of outside training to help me get to my goal of becoming a professional software developer faster.
I applied for Ada Developers Academy, and got through the interview round, but since it’s really competitive, I started looking into Seattle area coding bootcamps while I waited for a final response. I looked at Coding Dojo, Galvanize, General Assembly, and Code Fellows, and in each case, I had a lot of doubts and questions. The bootcamps ranged from about $10,000 to $20,000 for 3-6 months of classes, and they all claimed a lot of success stories, but I still worried a lot about falling behind, or being the only non-tech background person in the class, or feeling left out as a woman.
In December I found out I didn’t get in to Ada. I was sad, but still determined to reach my goal. The Ada rejection letter recommended Kal Academy, a place I hadn’t heard of in my research.
Since Kal’s classes were pay-as-you-go ($25 per class), without the upfront financial commitment of the bootcamps, I decided to try a couple of classes and see if it was a good fit.* Kal recommended starting with her Object Oriented Programming class.
Kal is a Senior Software Engineer at Microsoft. She also has professional teaching experience at UW, among other places. And she doesn’t mess around.
The first class, Kal jumped straight into Object-Oriented programming, using practical real-life examples that were easy to follow.** Some teachers hold off on OOP until students have mastered a lot of other things, but Kal’s philosophy seems to be to run toward the hardest things so they’ll feel less scary, and I really appreciated that.
In our class, one person had a lot of tech experience, one was brand new to programming, and I was with a couple of others somewhere in the middle. More than half were women. All of us were able to follow, ask questions, and work on our homework projects, which we could scale to our level.
As part of the class, we built a full stack site in C#, using the .NET framework, with a SQL Server database. Watching Kal navigate Visual Studio helped me get the hang of the built-in tools at our disposal, as well as debugging and updating Nuget packages. And outside of class, we each built our own projects in addition to the class ones, building off the concepts of database design and coding fundamentals we were learning (here’s my Language Exchange Project, and git repository if you want to see… there is a lot I would build differently now, but I’m still so proud that it was my first C# project!).
Kal is good at explaining high-level concepts, and also good at providing practical, code-along instruction. Even though each class was only about an hour long, I walked away with hours of additional resources to look up, try out, and play with. It was like getting a week’s worth of water from one hour drinking from a fire hose.
When that class finished, I immediately signed up for Kal’s Algorithms and Data Structures class:
Again, I was surrounded by students on a lot of different levels, and this time almost all were women.
In the Algorithms and Data Structures class, Kal went through data structures one at a time: Arrays, Strings, Hash Tables, Linked Lists, Trees, Heaps (and some bonus asides on bit manipulation as well). She talked about how the structure was built, what it was generally used for, what its strengths and weaknesses were, any algorithms we should know, and time and space complexity.
After each data structure was introduced we went to work pseudocoding typical interviewing problems encountered with that structure. Homework was more pseudocoding, on a whiteboard, without any kind of IDE to help.
And then, to help us run toward the hardest things, Kal also set up mock interviews for us. At Microsoft. With real developers.
My hands were actually shaking when I showed up for the mock interviews. The other women from my class looked equally nervous. The idea of having to solve a problem in front of someone else, in code, was absolutely terrifying. But then, after doing it once and surviving, it wasn’t so bad anymore. And after doing it twice (we each got to do two mock interview sessions), we were smiling and laughing and talking again.
Doing the most terrifying thing, and surviving, turned out to be exactly what we needed.
(If you want to read some other reviews, check out Kal Academy’s Yelp page.)
(Next: One Year Later-Some Thoughts)
*Kal Academy classes are also modular, so unlike the one-size-fits-all path of most bootcamps, you can take as many classes as you want, in whatever you’re interested in, for as long as you want. Here’s a list of some of the classes, if you want to get a better idea. I might do something in SQL next, but I haven’t decided yet.
** I’m not going to write Kal’s OOP examnples here, since I don’t want to steal someone else’s educational content, but they were a lot better than the other explanation of OOP I usually hear: “Think of a duck as an object. It has properties–two wings, two feet, one head. And it can do things–quack, waddle, swim. Objects are like that, they have properties and functionality.” I can’t say enough how much I dislike this example. Sometimes it’s a car, a fish, or a boat, but it’s always the same basic idea, and has absolutely no connection to real-world programming. In all of my experience writing code, I have never been asked to program a fish. Also, it gets really confusing when you start talking about inheritance and other broader concepts. Take Kal’s class for a much, much better example.