Since April 15, nearly two million people have watched a video uploaded by 24-year-old software engineer Namanh Kapur: “How I Would Learn To Code (If I Could Start Over).”
The promises of this popular presentation are obvious: To a new developer, what are the bits of programming that you really need to know? And do you really need a four-year computer science degree to sling code?
In an email interview this week from his home in Houston, Kapur described the massive viewership as “insane” and “something I could never have predicted.” But he also believes the video fills a real need in the world today. “I think a lot of people are interested in coding and software engineering but don’t know where to start… That’s why my video resonated with them.
“I also think the pandemic has forced us to be indoors for extended periods of time and that’s given people a lot of time to grow and better themselves.”
Kapur only started the YouTube channel five months ago, exploring topics like “Software engineering benefits that actually matter” and “Why I studied computer science (and you should too).”
But audiences responded most to Kapur’s insightful tips on how to become a programmer, all densely packed into a concise 13-minute prescription that concludes with tips on practicing for your very first coding interviews.
And it also examines how we prepare for programming careers from an enjoyable and fresh perspective: with glorious 20/20 hindsight.
Kapur says the comments it’s received have been “positive” and “heartwarming.” But there’s one reaction that’s been especially gratifying: “the people who said my video convinced them to take the plunge and start on their software engineering or coding journey….
“I think coding is a universal skill everyone should know, so I’m excited more and more people are looking to start their journeys.”
The Road Not Taken
Kapur’s own educational experience was rich and comprehensive, judging by his LinkedIn profile. Kapur graduated from Rice University with a master’s degree in computer science, and then completed software engineering internships at both Schlumberger and Microsoft, as well as an engineering fellowship at Kleiner Perkins.
Since June of 2020, Kapur’s been a software engineer at the online-checkout company Bolt (which he describes as a high-growth startup). An online resume shows he’s even placed first in two of Bolt’s internal hackathons.
One of the first things Kapur’s video stresses is that it doesn’t take a bootcamp or even a college degree to become a programmer. “It’s definitely harder, but if you’re willing to put in the work, you can definitely learn how to code by yourself.”
“In fact, if I could go back, I don’t know if I would’ve gone to college,” he said
As the video’s description explains, “If I could start over, I’d spend more time doing practical projects rather than focusing on theory.”
But even before that, Kapur’s first piece of advice in the video is “Adopt a coding mindset” — that is, simply believing that every bug have you a solution waiting to be found with some patience and persistence.
Kapur warns that this mindset also inevitably leads to searching for solutions to common problems like broken toasters or blinking internet modems — but it’s a kind of superpower, which will have your friends and relatives coming to you for technical support.
“It took me years to realize, not everyone is like this,” Kapur explains in the video. So while your befuddled parents can Google just as well as you can, “they don’t believe they can. And to be a coder, you need to believe you can, as a fundamental truth.
“Because when it’s 4 am and you’re working on a programming assignment, and you’ve tried everything but you still can’t figure out the bug — the only thing that will keep you going is knowing there’s a solution. You just need to find it.”
Kapur’s video also advises humility — remembering the day he stopped blaming his computer and admitted that his code was buggy. “The second I recognized that and truly internalized it was the day I started growing in my coding journey.”
“You don’t have to be a good computer scientist to be a good coder. But you do have to be a decent problem solver.”
But this also implies a willingness to learn, another key aspect of the coding mindset. In the video Kapur shares that his experience of him at various companies has taught him one thing: that there’s always a new stack, always a new language to learn, or an entirely new paradigm or platform.
“At hackathons my teammates would want to use buzzwords like ‘machine learning’ and ‘the cloud’ and I’d have no idea what they were saying. But I’d figure it out,” he said.
Kapur’s conclusion? “You don’t have to be a good computer scientist to be a good coder. But you do have to be a decent problem solver.”
From there it’s a small step to learning data structures like arrays and hash maps, as well as the basic order in which code gets executed (and how it’s affected by logical operators and loops), eventually moving to the basic principles of objected-oriented programming .
“In my opinion, these are the highest-yield topics,” he said.
But as a separate step, Kapur also recommends learning scripting, for onerous everyday chores like renaming files or data manipulation. “Or sometimes you just want to write code to produces code.” Kapur provides the example of a quick script that generates SQL query strings for an internal database.
This everyday code doesn’t need to run behind a full-fledged web app — but creating it will still improve your abilities.
“Coupled with a coding mindset, you now have a practical tool to solve some of your daily problems.” And Kapur also offers one more specific tip: choose one programming language to learn deeply.
Learning by Doing
For more practical experience, Kapur’s video also recommends entering hackathons. “You’ll learn a lot, you’ll work with other people, and it’ll give you a taste of what real-life software engineering feels like…
“Except real-life software engineering projects aren’t completed in 48 hours, and you actually have to test your code. And you’re not as sleep-deprived.”
But you do get the experience of delivering a finished product to customers — in this case, your judges. “The best way to learn programming is by doing,” Kapur stresses. “And ideally, you work on something you’re passionate about.”
“So pick a topic you’re interested in, and build something.”
The last step for new coders? Practicing for the coding interviews they’ll inevitably encounter on their way to a full-time software engineering job.
There’s books to help. Kapur recommends “Elements of Programming Interviews in Python,” and offers a list of topics that may come up. There’s even sites that set you up with a partner to take turns conducting mock interviews.
But one of my favorite things about the video is the way it combines practical advice on what and how to learn with the real-world lived experience of a practicing programmer.
While recommending studies of recursion and sorting algorithms, Kapur notes one of the ironies of coding job interviews. “Chances you’ll use any of this at the current job? Close to zero. Chances you see these concepts in interviews? Pretty high.”
Kapur’s video also recommends getting familiar with the tools used in real-world developer environments — and at this point, Kapur turns to the text-only interfaces of terminal windows. When Hollywood shows hackers in movies staring at black screens with complicated characters “The one thing they got right is that they’re using the terminal.”
“I promise you, sooner or later, you’re going to have to get comfortable with the terminal. So you might as well start now.”
And as the video winds to a close, Kapur offers his audience of aspiring programmers a mix of both enthusiasm and encouragement.
“I can’t say the journey will always be rosy. But I promise it will be fulfilled.”