Hey, thanks a lot for doing the interview! Could you give an introduction for coders who want to know more about you?
Hi mate, thanks a lot for reaching out to me! I’m Tobi Ogunnaike. I work as a software engineer for Pinterest in San Francisco. I’m on the Engineering Productivity team in the Infrastructure Organization. If those terms mean nothing to you, don’t fret. You can think of it this way - we are a team whose charter is to build internal tools for Pinterest engineers so that they can build, debug, deploy and run their workloads (services, jobs etc) in a safe, scalable, reliable and quick way. Our customers are other Pinterest employees. My major focus right now is to build a delightful experience to introduce CI/CD to Pinterest.
I’m not sure exactly where my interest came from but it was probably a combination of three main factors - my dad, my friends and talking to a ton of people.
My dad has told me many stories about his programming joys. Working as a petroleum engineer in the 80s, he had very early access to a personal computer and he has lovingly evangelised ad nauseam about the magic of about being able to effectively speak to this inanimate object and have it do things for you. The possibilities were and remain endless.
After university, I realized many of my old friends and peers had created startups and went back home (Nigeria) to pursue their dreams. I remember wondering how and why they were able to do this. One big theme stood out - these were software-enabled startups and many of them could program! Point taken.
In 2016, I moved to San Francisco to play a part in the ongoing biotech revolution. I was oh-so-in-love with the idea of programming biology to solve some of the world’s most stubborn problems - energy production, environmental degradation, access to clean water etc. But then I moved here, and I started speaking to people. Crazy, I know. But over many months, I spoke to enough people here in the Bay, and learned enough about the magic of software that I got inspired and wanted to try it out myself. It also helped that I grew to despise the mundane, soul-wrenching aspects of my biotech lab job.
Not really. My interest in computer science and programming really sprouted in my last year of college. Moreover, I studied chemical engineering and honestly if I could go back, I would probably choose it again. In hindsight, I would try to take more computer science classes online but I really have no regrets with my degree choice.
Chemical engineering taught me things that I’ll take to the grave - effective problem solving techniques, the psychological self-trust that I believe and know that I can learn difficult things, and the chance to study ethics, large scale industrial accidents and experimental design (including how to identify flaws, bias and inaccurate conclusions).
Ironically, some of these topics (especially ethics and experimental bias) are topics that today’s computer science curricula need more of. While there’s been progress in the last few years, we’re not there yet. In today’s world, software and data affect the world in a massive, immeasurable way. The surface area of impact (for good or bad) is billions of people and given my background, I feel especially well-poised to think about the impact of technology on society.
Like the name suggests, bootcamps are intense. The volume of material and the pace of learning are no joke.
- Timed coding challenges
- Classwork exercises
- Homework and review
- Guided self-study
Timed coding challenges covered common problem-solving techniques used widely in computer science such as recursion, using frequency counters and using multiple pointers. Classwork exercises allowed us to dive into building apps, games or features after we’d studied a concept. And the homework was there to stretch us. Even if we had done “everything”, there was always room to do more in order to further develop our skills. While demanding, I felt I had adequate support (both technical and well-being wise).
I’m really glad I attended Rithm School for these reasons
- Company projects Rithm School offers students the opportunity to deliver software projects for companies. Working on your personal projects is good but developing software for an external entity is simply another level of accountability — you learn to read and understand foreign code, you learn to navigate a production codebase, you get to interact with experienced developers (sometimes in other timezones), and you might even get to work with another programming language
- Debugging When stuck, our instructors repeatedly told us to “step through the code” line by line to understand what the computer is doing at each stage. Developing this muscle memory early in my development career has proven invaluable for me. Till this day, I use the debugger keyword like it’s
- Small class sizes Rithm School is committed to always having small sizes. My class had 10 students and 3 instructors. This meant I could ask questions for days! And I never had to wait very long to get help.
I check Slack on the way to the office to look for any messages that require my immediate attention. When I arrive at the office, I check JIRA (a software tool for tracking tasks and projects) to briefly review my progress relative to my stated sprint deliverables. After a brief review, I provide a status update to my team via Slack - we use a Slackbot that asks questions such as “what did you do yesterday?”, “what are you doing today?” and “are you blocked by anything?”.
Then I move onto development - working towards my deliverables and providing code reviews to my teammates. Sprinkle in some meetings (anything from design meetings, brainstorming sessions, customer check-in meetings etc), multiple coffees, lunch and some weekly one-on-ones and that’s a full day’s work.
Effective learning looks very different for different people. So you should adjust your tactics to what works for you. There’s no one single path. So don’t feel like you need to complete 100% of FreeCodeCamp tutorials in order to “be a real developer.”
Nonetheless, here are some tips for improving your skills
- Build something you want to exist in the world - no matter how small, or how “silly” it is. Just build it. Give it a go. Then do it again.
a) how to search for help when you get stuck
b) how to read documentation, use new tools and new technology
c) how to setup applications
d) how to organize code and debug failures
e) how to talk to people about the things you’re working on
These are all skills you will use in your day-to-day job as a software engineer.
- Teach people or write about your work. In order to elegantly and clearly explain a concept to someone, you need to understand it deeply. So whenever you’re working on something, I’d recommend trying to explain that thing to a friend or yourself or even better, to someone who doesn’t program.
Document your progress and celebrate small wins.
Tech moves incredibly fast and it often feel like there is so much to learn and you’re always a million miles behind all the new, snazzy stuff. Many people in the industry (new and seasoned) experience imposter’s syndrome. Amidst the mini-feelings of inadequacy, I think it’s helpful to remind yourself where you started from. There was a time you didn’t know what a variable was. Now look at you doing stuff! (And if you don’t currently know what a variable is, you can learn that too!)
- Sleep. This might seem like a moot point. But someone out there needs to hear it. Please, for the sake of all that is loved and revered in your life, get some rest as you learn programming. This stuff is not easy. A well-rested you is a more productive and more capable you. So sleep. Future you will thank you.
- Find a community of learners It’s easy to feel lonely and uninspired when you spend four hours on a stupid bug that you can barely understand. Having other learners around you going through the same thing makes this feel less terrible. Community can be virtual (FB groups), physical meetups or just a buddy that you regularly check in with and vent to.
Join the brand new community for No CS Degree developers - get help, share tips, make friends.
No, they’re top secret. Kidding. The last thing I built was an app that texted voice-synthesized audio messages to friends. Imagine replying your best friend via a British Siri instead of boring text. It’s silly but I built that because I wanted to play with the Twilio, Google Storage and Google Text-To-Speech APIs. The plan is to extend it to make it more useful. Perhaps a daily “automated podcast-style” roundup of news you’re interested in. I’m not sure yet.
In the past, I built a miniature “Netflix for podcasts” app and a personal website with Gatsby. And in the future, I may explore working with Fitbit and Spotify. Imagine an app that senses when you’re stressing out (via heart rate measurements) and sends you a chill song or guided meditation to calm your soul.