Spencer shares his tips for newbies, explains how he got into coding without a degree and discusses what his work at screen sharing app Tuple involves. Spencer and his two 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.
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.
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.
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.
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.
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.
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.
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.
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.
Do you want a developer job but don't have a Computer Science degree? Pass Triplebyte's quiz and go straight to final onsite interviews at top tech companies
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.
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! email@example.com.
Thanks Spencer! If you want to discuss this article, hop on over to the brand new Slack channel! By joining the newsletter you will get an invite code.
— nocsdegree (@noCSdegree) November 8, 2019
You can prepare for technical interviews with AlgoExpert - use the code "NOCS" and get 15% off.
Claim your page on DEV before someone else does
Level up every day