Tuple Chief Technology Officer Spencer Dixon talks learning to code

Tuple Chief Technology Officer Spencer Dixon talks learning to code

Spencer shares his tips for newbies, explains how he got into coding without a degree and discusses what his work as Chief Technology Officer at screen sharing app Tuple involves. Spencer and his two indie hacker co-founders at Tuple had already made $8,000 in revenue before the product, a complex engineering project for a team of three, had even launched! Enjoy the interview.  

Hey, thanks a lot for doing the interview! Could you give an introduction for coders who want to know more about you?

I’m the CTO and primary developer of Tuple,  a real-time remote screen sharing application tailored to facilitate pair programming. A good way to think of it is as FaceTime but for software developers.

The Tuple stack is somewhat unique in that we’re very polyglot. It has seven languages: Ruby, JavaScript, C++, Objective-C, Objective-C++, C, and Swift. Each language was chosen for what it does best and it has allowed us to move quickly with a very small team (three of us). I’ve also been spending a lot of my free time learning Rust in an effort to go cross-platform.

I was born and raised in Boston, MA which is where Tuple is based. Before becoming a programmer, I dropped out of college to be a traveling salesman but realized my impact in the world had a low ceiling in that role. Writing software has allowed me to make a positive impact at scale.

Screenshot of Tuple

What first got you interested in programming?

My first experience programming was building conditional logic games using PowerPoint in middle school. I’m not sure if you can call that programming but it got me excited about computers.

In high school, I took a multimedia course where my cousin and I built a first-person shooter game in Flash. I was hooked. After that class, I took a web development class where we learned Dreamweaver CS3 and I finished my semester project in like two weeks.

My teacher let me work on personal side projects for the rest of the year. I remember buying this Dreamweaver for Dummies book on eBay and using it to build a PayPal powered e-commerce shop for a business I had started with my dad.

Around then I got really into Diablo 2 and started downloading hacks to make the game more fun. I set up this Diablo 2 bot (written in Java) that would farm items for me. After seeing how powerful automation was, I remember thinking to myself: “One day I want to be able to build something like this for myself”.

I didn’t know enough to change any of the bot’s code, so I was at the mercy of whatever config variables the developer let me tweak. Looking back, I wish I had dug into that interest more instead of letting it lay dormant for many years.

What was your experience learning code at a bootcamp like?

My time at Launch Academy was one of the densest learning experiences of my life. When you’re new to a topic, the value of having a guide or map to direct learning is immense. Bootcamps provide that map. I firmly believe you can learn on your own without a bootcamp, but it will take longer and be more difficult to sustain motivation. I’m excited to see efforts like freeCodeCamp.org offering those maps but for free.

Although my time at bootcamp was challenging, it was also incredibly fun. Getting those ‘aha’ moments with my peers felt so good. Also, realizing other people struggled with the same topics I was struggling with really helped to alleviate some of my imposter syndrome. Knowing there would be someone hacking away early in the morning or willing to stay late with me kept me motivated to study longer hours than I would have on my own.

One facet I loved about the bootcamp was how everyone was coming from a different previous life. We had lawyers, teachers, rock climbers, EMS services—you name it. Pair programming with all these different people really helped to cross-pollinate my problem-solving skills and make the experience more enjoyable.

Do you have tips for coding bootcamp students?

My number one piece of advice for people going through bootcamps is ask a lot of questions! So many people are afraid of looking uninformed that they don’t speak up if they don’t understand something or they want to figure out the answer on their own and aren’t willing to get help.

Since there is not much time in a bootcamp, it’s best not to get stuck on a topic for more than a couple hours. You’ll have plenty of time in the real world to get stuck on problems for days or weeks. Ask for help early and ask often.

It’s paramount to be ruthlessly honest with yourself and identify what you know and don’t know. A lot of CS concepts build up on top of each other and having a weak foundation will stunt your growth as you get to more advanced topics. If you’re paying $10-20k for the program, you want to ensure you’re extracting all of that value.

I know not everyone can afford to do this but if you have the means to take some time off before the bootcamp, it can be beneficial to get ahead of the curriculum before going in. Imagine if each week the concepts you’re learning are a review instead of the first time you’re introduced. It takes a lot of self motivation but it will enable you to ask better questions during the program. Instead of asking how to do something, you’ll be able to ask why things are done a particular way.

Can you talk us through the process of getting your first job as a web developer?

My process was somewhat atypical. The bootcamp I attended offered me a job as an instructor before the program was complete. I accepted that offer, and after teaching for a few cohorts, I connected with an old classmate who recommended me for my first full-time developer role.

Going through the curriculum another couple times was very valuable, but I did start to wish I could spend more time coding versus teaching. I think in an ideal world after graduating from a bootcamp you get the opportunity to teach the curriculum for at least one semester and then do some sort of apprenticeship program in the real world.

My advice for juniors looking for jobs would be to keep your GitHub activity up. If I was hiring a newer engineer, I would want to look at a variety of their example work to see if they care about their craft and if they’re a good communicator. If you have the bandwidth, see if you can contribute to some open source projects that you care about. Even if it’s just updating a project’s documentation, it shows that you’re a good citizen and would be a good teammate.

Can you tell us what a typical day for you looks like just now as Chief Technology Officer and what Tuple is all about?

I’m extremely fortunate in that my cofounders are handling sales, marketing, and support. This frees up my time to almost exclusively write code. I’m currently working on a “Sound Check” feature which will show folks the volume of their speaker and microphones and let them change audio devices.

If I had to breakdown my coding time, it would probably be: 50% working on new exciting features, 25% fixing bugs and making the app more robust, 10% looking into issues brought to our attention via support tickets, 15% experimenting with potential performance improvements or new UX enhancements.

What’s it been like developing a challenging project like Tuple with your two co-founders?

It’s been a roller coaster of emotions. In the early days, we built the app at a much higher level in JavaScript since that’s what I knew best. We weren’t able to get the performance we demanded with that iteration so we had to start from scratch at a lower level. This happened again and so we went even lower.

That first year my free time was almost exclusively spent reading programming textbooks to level up in a lot of concepts that I would have learned in a traditional CS degree. This included learning about C, C++, video codecs, Cocoa/macOS development, networking protocols like UDP, RTP, RTCP, SCTP, WebRTC signaling, and how macOS works at a fundamental level.

As soon as we had the finances coming in from presales, we invested it on hiring experts to help level us up and tune our algorithms for our specific use cases. In hindsight, I’m glad I learned things in the order I did. The bootcamp allowed me to favor getting things done and providing real value over theory, and when I needed to learn the theory I was in a good position to be able to do it.

This experience has been a good reminder that graduating from a bootcamp is the beginning of your education and not the end. Bootcamps empower you to start making your own learning maps.

I’m very happy I decided to quit the day job and dive into the deep end. Starting Tuple has been the single greatest learning experience of my life with bootcamp being the second.

Has your lack of Computer Science degree ever been brought up when looking for jobs?

Nope. No one has even asked me if I have a college degree. Coding is very much a meritocracy. If you can show real-world projects that are well crafted and you’re a nice person, you won’t have a hard time finding a job.

The key is to level up your skills enough and work in public so people have something to see. Some folks will be skilled enough after a bootcamp while others may need a few extra months. Don’t get discouraged if it takes you a few extra months. Everyone learns at a different pace and comes into the bootcamp with different amounts of background knowledge.

What are your ambitions for Tuple and how can it help developers?

Pair programming is a fantastic way to level up your coding skills. You get to learn how other people approach solving problems, what they do when they’re stuck, how they google answers, and what sorts of hotkeys they set up to be more productive.

I’m very proud of where Tuple is today but I think it has the potential to be significantly better. I hope to add more teaching tools into the app and continue to increase the performance. I’ve been studying game engine developers for the last six months and hope to merge in some of those concepts into Tuple soon.

What advice do you have for people that have no experience of coding but want to begin?

Anyone can do it! Start small and build up slowly over time. Understand it’s normal to feel overwhelmed by how much there is to learn and know that feeling will probably never fully go away.

Don’t get caught up on which language you start with; be more focused on learning the fundamentals since those will translate to all languages. For language number two, pick something very different from your first language.

Try rebuilding simple versions of your favorite apps. It’s fun and you’ll learn a lot in the process. It’s okay to abandon side projects if you no longer find them educational or fun to hack on.

Find a group of people to help hold you accountable and to ask questions. When you get stuck, try explaining the problem to someone even if they don’t know how to code. That process is called rubber duck debugging and it’s surprisingly effective. Remember that it has never been a better time in history to teach yourself how to code. There is an insane amount of free resources and forums to ask questions. If you ever want someone to pair program with, reach out to me! spencer@tuple.app.

About the author
Pete Codes

Pete Codes

Hey, I'm Pete and the creator of this site. I am a self-taught web developer and I'm based in Edinburgh, Scotland.

Self-taught developer success stories

Get into tech without a CS degree

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to Self-taught developer success stories.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.