All in the details

A glimpse into the mind of a computer programmer on campus
All in the details

T

hin bars of varying height dance across the Chromebook screen, accompanied by what to me sound like classic computer bleeps and bloops. I don’t know what I’m watching, but whatever it is is strangely mesmerizing; the sounds grow faster and faster and, gradually, a gradient pattern surfaces out of the randomness.

Senior Ryan Schuett points to the screen, explaining the difference between stable and unstable sorting algorithms. Those flickering numbers and shifting bars obviously mean something more to him than a light show, and his enthusiasm makes me want to know what it is. He is happy to explain. Despite all the technical jargon he uses, I gradually begin to understand what I’m seeing. Those white bars represent numbers, and the program is arranging them by size.

On my second meeting with Schuett, I had asked him to show me one of his recently completed projects, a sorting algorithm visualizer. Unlike many previously existing programs, his is entirely web-based and is accessible with virtually any device — even a Chromebook. As we sat outside the school library, he navigated to the list of algorithms on the site. “One of my favorites is partially combed, but random shuffle is the classic one, so I’ll just show you this,” he said.

A sorting algorithm, he explained, is a computer program used to arrange data by some value. For example, one could sort a randomized list of numbers by their size. Although it may sound straightforward, there are a surprisingly large number of ways to go about performing this task, each with its own set of benefits and drawbacks.

Schuett spoke deliberately as he described the fine differences between the different types of sorting algorithms, pausing every once in a while to make sure he used the right word or correcting himself if he said something not technically accurate. Gesturing with both arms, he described the trade-offs in memory usage, efficiency, and stability that go into choosing which algorithm type to use. “You could have it be n times logarithm of n, you can have it be stable, and you can have it not use auxiliary arrays. But you can only pick two,” he said.

One thing that stuck with me from my very first meeting with Schuett was his love for efficiency. Although he can program in a wide array of languages — C#, JavaScript, Python, Java — his favorite is C++, an older language known both for its difficult syntax and for its speed. He proudly told me about a script he worked on for his IT Essentials class. It had initially taken about a minute to run, which to many people might seem good enough. He managed to reduce the run time to about two seconds.

I

was surprised when Schuett told me that he is taking his first computer science class at RHS just this year, given his success in competitive programming; his team had come in second place in the advanced division at the HPE CodeWars competition in Roseville and first place internationally at the CodeWars Open Beta. It turned out that he was mostly self-taught.

Schuett got his start in web development when his parents enrolled him in Hackingtons, a coding school for kids. After he left, he began to teach himself how to program console applications by watching tutorials and through trial and error. For instance, he learned how to use the runtime environment Node.js in the process of building his own Discord bot.

The amount of time he spends programming each day varies widely; on some days, he told me, he spends all his time playing games with his friends and doesn’t touch his projects. On others, he spends upwards of ten hours working on code. “I have a vision in my mind for what I want it to be, and seeing that come to fruition is part of the thing that is so exciting. Seeing that happen over time will keep me engaged for an entire day,” he said.

He sometimes gets frustrated and has to step away from a project when his vision turns out to be incompatible with the code he has written, but because of his thorough debugging process, he couldn’t tell me the last time this happened. “As soon as I have a certain feature in, I go into QA tester mode and I test it and figure out any problems with it that I can see by testing it over and over again,” he said. “And then if I find a problem, I’ll fix that as I’m developing the feature.”

L

ast summer, Schuett did a paid internship at Pacific Coast Building Products. He built a prototype of an AI model that communicates with the company database and makes predictions that he hopes will eventually factor into business decisions. “Once I actually complete a project, seeing it be functional, seeing it be used by people, and seeing people enjoy it, that’s the thing I love about doing these projects,” he said. He returned to the same company for another internship over winter break and plans to go back again this summer before he starts college at Sierra as a computer science major.

Being able to stay at home while working to earn money is one reason Schuett chose to go the community college route, in addition to the free tuition. Another is his GPA. “I have a habit of not quite doing my homework here,” he told me with a grin. It isn’t that he doesn’t like school, he said — he just prefers to spend his free time working on his programming projects rather than completing homework assignments. He does hope to eventually attend a four-year university and pursue a degree in a computer science-adjacent field.

Schuett’s love for programming comes down to a love for problem-solving. “Programming isn’t completely technical,” he said. “For example, Python is much closer to human speech than some other programming languages. The toughest part about programming that many people just don’t understand is that it’s mainly logical. It’s all about the logic.”

T

he bleeps and bloops reach a fever pitch and then abruptly die out. What is left is a staircase pattern in which each step is a gradient. “Bubble sort is a stable algorithm because it produces this nice gradient. The white one means it was near the start and the gray means it was at the end. And so it remains in the same order that it was before,” Schuett says, and I finally begin to get it. “It’s really fascinating,” he says. “There’s a lot of YouTube videos about this kind of stuff, but I just wanted to make one of my own.”




Schuett’s sorting algorithm visualizer

More to Discover