I don’t have kids. But there are lots of kids in my life. I’ve also worked closely with thousands of entry-level programmers over the course of my 20 years in tech.
Throughout my career I’ve been approached by parents looking for advice on how to encourage their kids to become software engineers. It is, after all, the #1 profession today, according to US News & World Report. It’s also a really fun job.
There’s a temptation to treat kids like Olympic hopefuls. Get them coding as soon as they can type! Craft an ascetic childhood of programming challenges and summer code camp! Surely, that will ensure their future success. Right?
It will ensure they understand how to write code. But the ability to produce the correct syntax does not a brilliant developer make.
Neither does an Ivy League degree in computer science. In fact, some of the best development teams I’ve worked on included people with degrees in subjects as diverse as music, philosophy, finance, and linguistics. Or, in some cases, no degree at all (including a number of the 100+ developers I lead at Atlassian). These people were all late bloomers in terms of coding knowledge, and each came to software development via their own unique path. And not because their parents pushed coding, by the way. They learned to code because they love it.
It turns out, the key ingredients for success are surprising, especially to someone like me who has spent 10,000-plus hours in front of a computer, working on code. Qualities like curiosity, perseverance, and empathy are critical and, frankly, harder to learn the older we get. If you want to equip your kids with the skills and traits they’ll need to make it as a software developer, start early and get them to go beyond the keyboard.
The best developers dive into deep work quickly and stay on task because they enjoy their work. If you’ve ever been “in the zone” at anything, you’ll know what I’m talking about and how great it feels.
While there are lots of ways to foster focus in kids, I encourage parents to go the route of giving their child unstructured time to dive deep into whatever they enjoy doing. Let them understand what it feels like to be totally absorbed in something. Whether they’re shooting hoops or drawing, they’re building the muscle memory they need to see a task through to completion.
Making software is a team sport: It takes developers, designers, product managers, marketers, and customer support engineers. So what better way to learn how to work with others toward a common goal than by playing a team sport? Or if your kid isn’t interested in athletics, they can form a band, build a clubhouse with friends, or team up to work on a project. All of these collaborative activities teach kids how to divvy up the work, play their positions, and support each other.
Not all developers are team leads, but all developers are called upon to lead projects. And it turns out, providing opportunities to practice leadership at home can also lighten the load for parents. Find something your child can be in charge of: a flower bed, one day of your next family vacation, Grandma’s birthday gift, etc. It’s not about making them do it all themselves (delegating is an important skill, too!), it’s about giving them ownership of something. Let them make decisions about what gets done, and how.
4. Emotional intelligence
Empathy is the key not only to creating software your customers love but to being a great teammate as well. Experts have written extensively about how to build empathy in kids, but I have a few favorites. The classic game of “what does that cloud look like?” introduces young kids to the idea that different people have different perspectives. Kids who are a bit older can deepen their understanding by choosing movies and books that showcase the experiences of people different from them. And for a whole-family experience, nothing beats volunteering at your local food shelf or soup kitchen.
The software industry moves fast, and people who love to learn are those who remain at the top. If you aren’t constantly learning and growing, your skills will atrophy and you’ll eventually be left behind. As with focus, unstructured time to explore an interest is a good way to foster curiosity.
Better yet, parents can nurture their child’s curiosity by connecting them with books, activities, and documentaries on whatever subject they’re into. Bonus points for parents who demonstrate passionate curiosity about their own interests. Growing up, I saw how my mom loved to learn new things. She’d spend months learning a new skill, become fully immersed in it, accomplish her goals, and then move on to the next challenge.
6. Growth mindset
Developers who approach their work from a place of continuous improvement and life-long learning are the least likely to burn out and the most likely to be happy in their jobs. Kids whose parents set an example by admitting what they don’t know (and inviting their child to come along and find the answer) have a leg up when it comes to developing a growth mindset. See also: kids whose parents take the time to explain complex concepts or systems to the best of their ability. Answering tough questions with “Well, that’s just the way it is” is expedient in the moment but does no good in the long run.
With the rise of remote work and teams distributed across timezones, the ability to express yourself clearly is ever more important – especially the ability to explain things in writing. Very young kids can get a head start by telling you about what they did at school (and don’t hold back on the follow-up questions!).
Parents of older kids can encourage journaling or writing short stories. When they’re ready, encourage them to write to companies whose products they use or to their representatives in government to advocate for things they are passionate about.
Neuroscience shows that stories activate our brains far more than facts alone. The upshot is that, whether a developer is speaking at a conference, pitching VCs for funding, interviewing for a job, or trying to get their team aligned on an idea, being able to tell a good story lets them connect with others in a more meaningful and human way.
Asking kids to recount things that happened at school is a good way to foster this skill. So is making a short adventure movie with a smartphone for their friends – the more drama the better. As a bored teenager, I and my group of friends started organizing a show-and-tell event in the neighborhood where we’d tell a story about an object and why it was meaningful to us. It began with five attendees and grew to beyond 50 people on a monthly basis.
With the steady flow of new tools and technologies, there’s always more for developers to learn. Those who can also teach what they’ve learned to others become multipliers within their company. (Boom.) Fortunately, most kids love to show off what they know, so channeling that energy into teaching usually isn’t a hard sell. They can help younger siblings learn how to tie their shoes, fold clothes, braid hair, skateboard … whatever. Older kids can hone their teaching skills even futher by becoming peer tutors at school.
The best education isn’t linear
Making software is a creative endeavor. Rather than looking for people who have the highest rankings on competitive programming challenges like Top Coder, the industry would be better served by cultivating diverse teams of people who bring different perspectives. Research consistently shows that “aha!” moments don’t just happen. They’re born of bringing various backgrounds and ways of thinking together.
Don’t obsess over following a particular path through the educational system at the expense of personal enrichment and time to explore. Learning and enrichment are the keys to future success, but burn-out is real. Heed the warnings of those child-athlete-gone-bad documentaries and encourage your kids to find their own path through early life and then send me their resumes in 10 years so I can hire them! A well-rounded childhood sets them up for a fulfilling career in software development, or wherever they ultimately choose to go.
Written by Mike Melnicki
Headof Engineering for Developer Tools at Atlassian.