A former software engineer at Intuit and LinkedIn and current Springboard mentor, Kelvin Nguyen jokingly bills himself a “basic millennial.”

Two years ago, he quit his high-paying corporate job in Silicon Valley to travel and discover his passions. Now, he’s working on a digital startup called Unhavok aimed at helping Millennial and Gen-Z travelers plan personalized vacations. 

It’s essentially a machine learning-powered search engine for vacation planning that infers user’s preferences and generates algorithmic recommendations, similar to an Instagram feed or Spotify’s AI-generated playlists. 

“We want to be the end-to-end of travel, and one that’s specifically personalized and tailored for you,” Nguyen said in a phone interview. 

A niggling pain point for travelers is sifting through an overabundance of information — from travel blogs to guides to choosing between various booking platforms and online travel agencies — but there’s no existing platform for aggregating and organizing this information in a meaningful context.

The intersection between machine learning and software engineering

Nguyen isn’t alone in his thinking. Many consumer-facing SaaS startups today offer value propositions based not on an entirely new product, but a reimagined version of an old one, using AI-powered algorithms to provide a personalized experience through a digital interface. 

Take Pandora, for instance, which made the radio available through the Internet with a machine learning function to personalize channels and playlists based on user activity. Fintech startups like Ally are another example, offering digital banking services designed to eliminate the pain points of traditional banks, such as overdraft fees and minimum savings account balances. 

“Every company you see now needs to start making a transition into this,” said Nguyen. “If they’re not already, they’re doing it soon, or they’ll be taken over by newer players in the market.” 

Nguyen, who holds a B.S. in Information and Computer Sciences from U.C. Irvine, says there’s a skills gap where ML-literate data scientists don’t know how to write code, while most engineers possess insufficient knowledge of data science to apply their coding skills in an actual modeled environment. 

“The rock star or the unicorn is the one that can do both — which is a super-impossible, difficult task to do, but they’ll be the ones that make the big bucks,” he said. “So an engineer’s responsibility in the future will probably be geared more towards understanding the work of being a data scientist.”

Learning how to code is a continuous process, like playing a musical instrument

While Nguyen went the traditional route of obtaining a four-year degree, most employers don’t discriminate between university credentials, in-person or online coding bootcamps, or even engineers who claim to be self-taught. 

The most important thing is to treat coding as a continuous learning process instead of frantically rote-memorizing everything you study, says Nguyen. Treat it like you would mastering a musical instrument or foreign language.

Use every resource you can: practice coding, watch tutorials on YouTube, follow software engineers on Twitter, engage with peers on Reddit’s r/learnprogramming or contribute to open-source projects on GitHub

Despite being somewhat of a veteran engineer, Nguyen says he frequently contributes to open-source projects to keep his skills fresh. Initiating your first project can be daunting; he recommends starting with “low-hanging fruit.” Start by finding bugs in libraries or projects you already use and figuring out the root cause. 

“It’s more about getting into the habit,” he says. “Eventually, you’ll start building confidence and you’ll be able to contribute to even larger projects.” 

Skills you need to land a job versus how to succeed in the real world (no, they’re not the same thing)

When it comes to landing a software engineering job, however, the rules of the game are a little different from the “real world.” In an attempt at objectivity, most companies hire based on coding challenges and technical interviews that measure candidates’ test-taking and memorization abilities more so than their approach to problem-solving.

It’s analogous to the difference between succeeding in an academic environment (which is about passing tests and following instructions) versus succeeding in the job market. 

“But when it comes to the actual real-world stuff, it’s about knowing how to apply everything you learned: do you know design patterns, do you know how to write code that works not just with you but a large-scale system with user-developer empathies. That’s what will help you keep a job,” said Nguyen, who runs a coding blog called Caffeine Coding.  

As a Springboard mentor, he has mentor calls with each student once a week. Asked about the number-one concern software engineering students tend to have, Nguyen said: “I think their biggest fear is: can I actually land a job after this and do I have the skills to pass an interview to get the job I want?”

The most common skills gap between a junior developer and a senior one is the experience of writing production-ready code. Production involves a whole new set of parameters and limitations that don’t apply when you’re writing code for practice or in class, because your work as a software engineer has what Nguyen calls “downstream effects” not only on the source code but features other teams may be working on. 

“Having access to people that work in the industry can really be useful; it’s a very giving community,” says Nguyen.  “And just knowing that this is a resource, as long as you know how to navigate that, it doesn’t really matter where you learn from.”