Advice from a developer, industry executive, and startup CTO

I recently had the pleasure to serve as a section leader for Stanford’s innovative Code In Place program. This global program was taught by Stanford instructors for people with no prior coding experience. Students covered the first half of Stanford’s introductory computer programming class going from scratch to writing Python projects to read and process data files and images. More than 80,000 people started an application for the course. Acceptance was only limited by the number of section leaders who each led weekly live sections in groups of 10 people.

I’ve long been an advocate of lifelong learning. It’s a large part of what excites me about running a startup (the opportunity to learn from wearing many hats). It’s why LegUp is a strong advocate of internships that allow bootcamp graduates to gain real-world programming experience. At the end of the course, a few section leaders led AskMe Anything sessions. I wanted to share summaries from people looking to continue their software learning and careers.

How do I start a career as a software developer or data scientist? How do you think about this change in your 30s or 40s?

I'm a continuous learner and believe it's never too late to pick up new skills. I started the process of learning about and made a transition to startups in my 40s. When thinking about a transition like this mid-career, my question back is - what are you more passionate about? I've found you can never go wrong following where your passions lie. It will help you put in more effort and give you more satisfaction in your job and in life.

When thinking about a transition like this mid-career, my question back is - what are you more passionate about? I've found you can never go wrong following where your passions lie. It will help you put in more effort and give you more satisfaction in your job and in life.

Code In Place gave students a great foundation with Python. It's a popular language with many available libraries to build upon for data science or general programming projects.Beyond that, I'd recommend not only taking classes such as introductory Machine Learning, but also doing some side projects. When I got back into programming a few years ago, I started with a simple project - building an Alexa-based voice application for Blackjack. I used this project to play with new technologies such as Machine Learning. I built a data pipeline to analyze how people played against the "book recommendation" which uncovered the 100 most misplayed hands. I then wrote a feature that let people improve their game by practicing those hands. If you can find a passion project like that, this type of end goal can help you stay with learning as you take theory into practice.

As you continue to learn and practice your development skills, publish your work on a public forum like Github. This shows others that you are practicing your skill and can even serve as a sort of resume. One tip - even if it's a project that you're working on by yourself, be sure to open (and resolve) issues as you go. This gives people reviewing your project a quick view of the history of your project. It also helps, especially if the project is incomplete, to show that you are aware of what features and issues need addressing.

Do you recommend people start their development careers at a large company or a startup?

 It depends on the individual. Startups are great for giving you freedom and ownership. But they suck forgiving structured best practices to follow. A large company is great if you learn best by following laid-out best practices or focusing and iterating on well-defined problems. Startups are a good option if you're a self-motivated learner, learn best by doing, are not afraid to fail, and are able to learn from those failures. They give you far more responsibility and experiences than you would get otherwise.

What's your recommendations for deciding which skills/technologies to invest time in when learning to code?

There are a lot of technologies, programming languages, and concepts to learn for sure! When starting out, pick a popular language like Python, Javascript, or C#. These languages let you build end-to-end solutions and have large online communities and resources. Spend time playing in the front-end UI, developing APIs, and even looking at how to store data within databases. You'll gain an appreciation of different types of technologies and "ways of thinking." It will better show you where you might want to specialize based on what you love.

Spend time playing in the front-end UI, developing APIs, and even looking at how to store data within databases. You'll gain an appreciation of different types of technologies and "ways of thinking."

Code In Place gave people an understanding of Python. But it's worth looking at other languages to get a sense of what's most to your liking. Once you find a language you like, go deep with it to speed up your learning of programming concepts. Most languages have similar concepts so once you have a foundation in one it's usually not too hard to pick up another.

Honing Leadership Skills

Could you speak about your experience developing and honing your leadership skills? What are the most important skills needed to lead a team of engineers and make major technology decisions for the whole organization?

I've found the most important skill is an ability to continually question to compare different options. I'm not an expert on all (or even most!) of the technologies needed to run a large organization, but I usually have people in the group who are. My experience with general technology problems and running product roadmaps guides my questioning. Knowing when I’m satisfied with an approach and deferring to an expert opinion is important as well. It may sound trite, but I find DaleCarnegie's "How to Win Friends and Influence People" is a great resource to hone your leadership skills. A lot of managing is understanding the needs of your team and how those can come together to best deliver a project.That's a process of breaking a problem down into smaller pieces and assigning them to people based on their skills and interests. But to get the most out of your people and have them dedicated towards their work, it helps to understand what motivates them to do their best.

A lot of managing is understanding the needs of your team and how those can come together to best deliver a project.

What has been more fun - leading a team or being an individual contributor? What did you like/dislike about both?

I've found greater joy from being hands-on coding, but I also realize that I can't do it non-stop. After a few weeks of heads-down coding, I find that I want to work on more strategic aspects. So I take a break. I talk with customers to see if I'm meeting their needs or build strategy around our longer-term goals. I can't see myself in a"classic" individual contributor role. But I also can't see myself in an executive role completely removed from the tech. That's one of the things I love about the startup life - for me it's the best of both worlds.

How was the leap from CTO at a large company to creating a startup? What inspired the transition, and when did you know the timing was right?

It wasn't an easy journey - and spanned several years. I started angel investing in startups about six years ago, giving me some exposure. Then two years ago an old co-worker started her own company. I was an advisor and got to see them grow. She introduced me to more people in the community, and I started advising and doing side projects for different startups. I decided I wanted to make the leap. I was at Expedia, and if you've been following them in the news, you'll know that the company had been having some struggles. Even before the recent downturn in travel, there were changes throughout last year that led to the CEO's departure in December.I left in the middle of that, which helped give me the incentive to make the leap. If you're interested in reading more about it, I wrote another blog post that talks more about my journey to LegUp.