Breaking Into Software Engineering With Advanced Development Skills
The turning point came in a classroom, not a studio.
“I initially wanted to be a producer and mix engineer,” says Advanced Program in Software Development certificate graduate Jackson Kaplan. “But after one programming course, I realized I had a serious interest in software engineering and taught myself C++ the following summer.”
While Jackson had taught himself C++, he knew writing code and engineering software weren't the same thing. He wanted to learn how to structure larger systems, think more rigorously about performance and develop the habits that separate hobbyists from professional engineers. That moment sparked a shift from music technology to software development, one that would eventually lead him to our program and, later, to a full-time engineering role at Meta.
A Nonlinear Path Leads to Clear Direction
Jackson’s journey into tech didn’t follow a traditional script, but each step added clarity.
“I had a bit of a windy academic path,” he says. “I attended Reed College studying biochemistry and molecular biology for three semesters and then spent about a year working at In-N-Out Burger before beginning my music tech degree at CalArts.”
What began as creative exploration at CalArts quickly turned into technical curiosity and then commitment.
“I had a few additional programming courses at CalArts after the introductory one that got me interested in software in the first place,” Jackson recalls, “but the bulk of my coding ability was self-taught. I had made a few little toy projects, but I wanted to learn how to move beyond just coding and learn how to properly structure large pieces of software.”
That desire to move beyond the basics led him to our certificate.
“I’m an East Bay native, so it was pretty much a no-brainer to choose UC Berkeley Extension when I wanted to obtain some more formal training in software engineering,” Jackson enthuses.
“The hard part about self-teaching is that you don't really know what you need to know,” Jackson continues. “Extension set me on the right path, and I now use C++ daily. Without Extension, I don't think I'd write code that was as well-structured as I do now.”
Through our program, Jackson wasn’t just writing code; he was learning how to think like an engineer.
“My online courses were great, and my instructors were always incredibly helpful,” he recalls. “They had really good assignment pacing and engaging quizzes/tests. They would go beyond just the on-paper answer and help me understand the deeper context of the concepts.”
Extension set me on the right path, and I now use C++ daily. Without Extension, I don't think I'd write code that was as well-structured as I do now.
The Moment Everything Clicked
Every student has a moment when concepts shift from theory to intuition. For Jackson, that moment came in one defining course.
“My real ‘aha’ moment was the Data Structures and Algorithms class,” he says. “It was the first course that really showed me how to think about code as math and take a more formal approach to solving programming problems.”
That shift replaced trial-and-error with intention.
“From that point on, I felt like I had the right set of tools that I could stack together to solve problems in code instead of just hacking away at solutions,” Jackson muses.
And with that came efficiency and precision. “Before UC Berkeley Extension, I would often use brute force, but I’ve since learned how to be more thoughtful and use cleverer approaches to solve the same problems with less overhead.”
With stronger fundamentals in place, Jackson was ready to apply his skills in a professional setting.
“I got an internship after completing the program, and I truly believe that Extension helped me convert that internship into a full-time position,” he remarks. “Without Extension, I may not have been able to ramp up to the company’s codebase as quickly as I did.”
Today, he’s working at Meta on emerging technology that blends software with hardware.
“I’m an audio software engineer at Meta, working on the team responsible for hearing features on the Meta smart glasses, namely Conversation Focus,” Jackson says.
It’s work that requires both creativity and rigor—skills he built through structured learning.
Beyond gaining the needed technical knowledge, our program gave Jackson something just as critical: confidence in his path.
“This certificate let me prove to myself that I really could pursue a career in software,” he says. “Discovering a love of coding when you’re at art school can be a little harrowing. You start to worry about whether you’ve ‘made a mistake.’ But my certificate from UC Berkeley Extension gave me the confidence to make the hard pivot from the arts to software.”
I got an internship after completing the program, and I truly believe that Extension helped me convert that internship into a full-time position.
Advice for the Next Generation of Developers
Jackson’s advice reflects the same mindset that helped him succeed: Stay curious, stay engaged and don’t go it alone.
“Don’t be afraid to bug your instructors!” he says with a laugh. “Software is a very alien world when you start out, but a lot of foreign concepts can make a lot of sense if you have someone knowledgeable explain them to you.”
He also emphasizes the importance of building true foundational skills, especially in an AI-driven landscape. “I am of the firm opinion that an engineer cannot have a strong coding ability without ‘getting their reps in,’” he explains. “It’s vital to take the time and write code by hand because you make mistakes and build a strong intuition.”
Jackson’s goals reflect a continued commitment to growth: Not just upward, but deeper.
“As time goes on, I just want to get lower and lower level with the software that I write,” he says. “With any luck, you’ll find me as a staff engineer or tech lead, employing the skills I first honed at UC Berkeley Extension to ensure that the vision of the product is realized with seamless execution and robust performance.
“My education at Extension was the seed that, through practice, grew into a strong ability to write software that gets the job done without wasting resources.”