Judges and the Self-Taught Developer
Interviews and the coding SATs #
Hi everyone! I’m writing every weekday, examining software development from the perspective of a mostly self-taught build and release engineer. I’ll talk about current tools and trends, where we were and how we got here, pressing dilemmas in the build world, interesting niches…and whatever else gets me riled up each day. Thanks for coming along!
Computer Science vs. Software Development #
Fight!
Honestly, from over here, they seem–if not in opposition, at least to be solving different problems. Computer Science is big theories and models. Software Development is about managing states and plugging things together. Of course there is overlap, and I’m being reductive. I don’t have a CS degree, so anyone who does, please chime in.
But there’s even an MIT class called The Missing Semester that guides poor confused CS students through the surrounding ecosystems of Unix, the shell, version control, build systems, ops, etc. You know. The “glue.” The stuff that gets things done. The stuff around which I’ve built my tech career.
And yet. I’ve always assumed that the higher-level CS classes were full of secrets. That once you’d implemented your own hash map, profound wisdom and savvy judgement would guide you all of your days. Luke Skywalker was doing okay working with hands-on projects and picking up pieces of a framework as he went along. But at some point, he hit that plateau and had to go to Dagobah and learn about hash maps.
So that’s how I got into programming judge sites.
Corn, Fox, Chicken, Lizard, Spock #
One bit of fun the computer scientists had been keeping to themselves? Competitions where folks solve specific problems in clever ways. And not just those “we just want to see how you approach the problem” interview puzzlers popular in the nineties.
Here’s a problem! Solve it with a program. Solve the puzzle!
Automatic testing of your solution (with a set of sample inputs, plus random ones) gives you quick feedback. Homework, but you know, more fun.
What do we get out of these? My main goal was to sharpen my logical mind while improving my practical implementation skills. I wanted to get better at problem solving, and better at doing so with certain programming languages.
I like getting things to work. But the best part is seeing other people’s solutions. There’s always a different approach, or an interesting language idiom to pick up.
Exam Day #
My experience of software development has always focused on the “glue” aspect. Get things to work together. Make everyone else’s work fit more easily. Write a script that automates a thing.
But there’s a certain thrill to sitting down to a more abstract task! And these days, this kind of skill assessment is more than likely to be part of your next interview. So why not skill up a bit? Work on those core muscles!
There are so many online programming judge sites. Here are a few I’ve explored:
Codewars has a fun “leveling up” mechanism
Leetcode is organized around specific algorithms and interview challenges
Codeforces seems focused on competitive contests
DM OJ collects some of that Northern Bounty for us all to learn from
For the self-taught programmer, or for someone whose job involves just a bit of programming on the side, these sites can give you a great sense of what you know and what you can work on. Flex!