How Outco Helped Me Get a Job at Google

And helped over 1,000 engineers on their job hunts

Sergey Piterman
Outco
17 min readFeb 8, 2019

--

This week I officially announced to my team that I’d be leaving Outco to pursue my next job at Google as a Technical Solutions Consultant. It was a bittersweet announcement since it marked an end to a significant era of my life, but it also held the promise of new beginnings. For some reason, 2019 has already been full of transitions for me. And with all those transitions I’ve experienced both a fair bit of fear and excitement. Fear from all the unknowns and lessons I’ll need to learn along the way, and excitement at how all these opportunities will allow me to grow.

In this post I wanted to share a bit of what this journey has looked like for me, reflect on some of the things I’ve learned along the way, and talk about how Outco has helped me and now over 1,000 other engineers find jobs at top tech companies, not just in the Bay Area, but all over the country.

I graduated from UC Berkeley in 2014 with a dual major in Biology and Economics and no plan for what to do next. I had some notion that I enjoyed coding and that it would play a role in my career, but I had no idea to what extent. I had taken a few courses in college and online in the past few years, but I was still relatively new to the field and never imagined I’d ever work as a software engineer.

Still, I stuck with it, and it 2015 I landed my first job teaching middle schoolers how to create mods for Minecraft at Camp Galileo using Java. I enjoyed the experience enough that I decided to commit to learning more about coding and trying my hand at becoming a software engineer.

Since going back to college to get another degree in Computer Science was out of the question for me, I turned to coding boot camps. I did my research, and 12-weeks seemed like enough time to build up my skills in an intensive learning environment to land a job in the Bay Area. If only it had been that easy…

I attended MakerSquare (which had just been acquired by Hack Reactor, which in turn has now been acquired by Galvanize), and I learned full-stack JavaScript development. It was an amazing experience, and I learned a ton about web development to where I thought I’d be ready to land my dream job anywhere. Boy was I wrong.

The reality was that most companies I spoke to required more experienced candidates (or at least so they told me) and never gave me any feedback as to how I could improve my interviewing skills or market myself better to potential employers.

And why should they? It’s not their responsibility after all, and if anything it probably would have opened them up to legal liability. They didn’t owe it to me to find a strategy that would ultimately help me find my dream job. And they definitely didn’t owe it to me to help me through the Dunning-Kruger effect.

The reality was that I had a terrible strategy when it came to actually land a job in tech and I needed more guidance to navigate through the interview process. At my bootcamp, we had touched on the topic during the final week, but it felt rushed and I was so burnt out from putting in 70+ hours a week that I wasn’t able to absorb all the knowledge. Plus, it didn’t help that at the time the company was going through restructuring and the person dedicated to helping us find jobs had been let go.

I’d first heard about Outco right after graduating through an outreach email of theirs. I was interested in the program and interviewed to join an upcoming cohort, but I delayed joining until I had gone through a few more months of rejections and finally decided it was time to get serious.

I joined cohort 11 in the fall and at the time Outco had only been around for a little over a year. Immediately after the class, I noticed a significant increase in the amount of traction I was getting on my revamped resume, and I was making it a lot further in my interviews than I had before because I had been practicing the right kinds of problems. I even landed my first verbal offer, though it was quite a bit lower than I was hoping and not somewhere I was interested in moving to. But overall things were looking a lot better for me.

After the holiday slump in hiring and a bit of travel, Outco offered me a part-time position as one of their technical mentors. I enjoyed solving algorithm problems, having learned a bit of CS previously, and some experience teaching and mentoring students so it seemed like a natural fit. Outco was just rolling out the first version of the online class and needed someone who could help teach engineers attending the course remotely.

Teaching others really highlighted how much more I had to learn about algorithms myself. I learned a lot of new problem-solving techniques, but perhaps more importantly, I learned better ways of solving problems that I had previously solved. This greatly increased my understanding of the material, which in turn made me a better teacher and mentor.

After about 3 months as a mentor, I was offered a full-time position as a Software Engineer at Outco. In addition to providing feedback and helping engineers learn the technical topics, I would also be creating new curriculum, teaching many of the lessons myself and working on some internal tools we would use at the company.

I was ecstatic. I’d be working on interesting engineering and coding problems and I got to be a part of a profitable, growing startup with a great team. I felt like I had somehow gamed the job-search by getting hired by the people who were supposed to help me find a job.

But this was my first job in tech and I was determined to make the most out of it. And I did that by applying one of the most important lessons I learned from attending Outco as a student: by focusing on how I could add value to the team.

Fast forward about two years to where things stand now and the company is on a completely different level.

We just recently graduated our 1,000th engineer. We’ve just begun our 43rd cohort of engineers. We’ve also just wrapped up our first east coast all-remote class, running from 6–9pm EST, with the goal of eventually opening up another office out there.

Our program has grown from 4 to 5 weeks in length to accommodate 2x to 3x more technical material. The classes are much more organized and structured around specific topics to help engineers learn the underlying techniques better, and the technical material has gone through several iterations based on engineer feedback and our observations on what kinds of questions were being asked on interviews and what lead to better learning. We’ve also begun to incorporate Hackerrank as a means of giving engineers objective feedback on their skills and to help them practice on a commonly used platform in the industry.

What began as a program to mainly support junior engineers out of bootcamps has grown into a much more mature and effective course designed to help a much wider range of skill levels, with a roughly even split now between junior, mid-level, and senior engineers.

Contributing to all these different projects and more has helped me grow tremendously both in terms of engineering skills but also at thinking in terms of business needs and goals. Thinking about what kinds of projects to prioritize and how to best execute on solutions to problems, whether that involves engineering work or creating a new business process, are important skills I learned while on the job. Sometimes what we needed was someone who could do a deep dive on asynchronous javascript and hacking together some Node.js scripts to manipulate Airtable data. Sometimes what we needed were recurring weekly meetings with students to work on a group project or go through some new problems not covered on the curriculum.

It’s that kind of flexible thinking and project management that I think ended up making the difference in Google’s decision to hire me. They were looking for someone with both technical engineers skills and interpersonal business skills, and I owe all of those to my experience working at Outco.

What I want to talk about now are a few specific lessons I’ve learned at Outco that I think would be valuable for engineers who are job hunting, as well as some tips for engineers considering joining and what to expect once you do.

# 1: The Curriculum is DENSE

Here’s a list of topics we cover over the 5 weeks:

  1. Big-O
  2. Counting Sorts
  3. Divide-and-Conquer
  4. Recursion
  5. Memoization and Tabulation
  6. Sliding Window
  7. Sorting
  8. Math
  9. Linked Lists
  10. Binary Trees
  11. Binary Heaps
  12. Graphs
  13. System Design and Scaling
  14. Object-Oriented Programming
  15. Matrices

And that’s just in the core 5 weeks. It doesn’t take into account all the extra material we have available but didn’t want to cram in like Djikstra’s Algorithm, A*, AVL Trees, Scrabble Problem, Topological Sort, Quad Trees and more.

Since I attended back in cohort 11, we’ve probably tripled the number of problems and really streamlined things so engineers can spend most of their time solving problems.

A common problem in most group teaching environments is figuring out what the right pace for the class is. Go too quickly, and you risk losing the folks who are slower learners or have less prior exposure to the material. Go too slowly, and you risk underserving the faster or more experienced students. That isn’t to say one group is better or worse. I think I’m actually one of the slower learners, but once I do get a concept I probably won’t forget it, which can be helpful down the line. Other folks are great at memorizing a lot of short term information that is useful for a particular project and then dumping it all and moving on to the next one. Both styles have their pros and cons.

That said, we err on the side of having too much material rather than having too little. We do this because we want enough material so the advanced folks feel challenge but also because we want you to have problems you can come back to at a later date if something didn’t quite click.

Something I see very often is people feeling like they didn’t learn a subject the first time around, like recursion for example. But once they come back to it after the course is over, they’ve suddenly mastered questions they couldn’t solve before.

It’s partly because recursion is covered throughout the course and they indirectly get practice with it. But also because things take time to digest and your brain actually does a lot of learning while you’re doing things other than coding, like sleeping (seriously). I was driving home from work when I had an epiphany about how to use functional programming on Binary Trees, and I was in bed when I finally understood Djikstra’s Algorithm.

So go into it with the understanding that not everything will make sense at first, but be patient. All of it will sink in. Which leads me to my next point:

# 2: Focus on Depth, not Breadth.

Outco is not a quick-fix. The people with the right mindset are the ones who come in every day and just do the work. The wrong mindset is to focus on trying to learn every problem you don’t know. You don’t need to know that many problems to get a job.

Learn algorithms takes time, but things tend to snowball. I think a common misconception is that people learn the most when they are just starting out, but in my experience, I learn the most when I get into a rhythm.

For example, we don’t cover Djikstra’s Algorithm in the core curriculum because it’s a bit advanced and it isn’t asked super frequently. But I did decide to cover it in an optional algorithm session on a Friday and created some slides to go along with it. When I first tried to understand it a year earlier it didn’t really make sense and felt too overwhelming to try. But the key understanding I was missing was in how heaps worked and in the time since I had last attempted the Djikstra’s I had learned a lot more about heaps. This ended up being crucial, and one night while I was lying in bed the problem just kind of clicked.

This was at a time when we were pumping out new curriculum on a weekly basis. Some of it made it into the core as we expanded things, and some material is just available as a bonus for students. But I wouldn’t have been able to keep up that kind of a pace of curriculum creation if I didn’t have the necessary background knowledge to keep it up. I had gotten to a point where a student would come to me with a new problem and I could almost immediately see the solution conceptually, even if it did take a while to code up and create slides for. That’s something I couldn’t have done a year earlier when I didn’t have the same background knowledge.

The takeaway here I think is to take your time with the subjects and learn their ins and outs. It may seem like a slower approach than trying to solve as many problems as possible. But realize you probably won’t have to solve every problem on Leetcode to get a job. Focus on fewer problems but try to learn the deeper patterns. You’ll start to realize that topics that seemed unrelated actually have a deeper connection. It will blow your mind. You’ll start to see that what seemed like 4 or 5 unrelated problems are actually just the same pattern with minor tweaks.

Here are three that I’ll do a follow up post on at some point. Try to spot the similarities:

It’s impossible to do every problem before the interview. The odds are pretty good that you’ll get a problem you’ve never seen before. So when that happens, you’re better off knowing the underlying technique than betting that you’ve solved that exact problem before.

And though I can’t go into specifics about the interview questions I was asked because of the NDA I signed, I can say that my experience working on the Outco curriculum was more than enough to get me not only the offer from Google, but also invitations to interview onsite from Facebook, Yelp, Uber and Amazon.

# 3: Focus on Adding Value

Solving algorithm problems isn’t everything when it comes to interviewing. A big piece of it comes down to attitude. One of the biggest lessons I learned early on from Outco was to shift my mindset to one of adding value to a company. How can I serve? What can I bring to the table?

It’s an empowering mindset because it allowed me to figure out what my strengths and weaknesses were. By taking ownership and being focused on the work, I was able to identify needs and problems that other people hadn’t even considered that required my unique set of skills and talents. And it’s something I’ve come to believe that people are implicitly hired to do.

A great article that talks about this can be found here:

In section 9, it talks about how employees progress in their jobs. At first, they are given problems, solutions, and how to execute those solutions. Their job is just to do the execution. As they progress their job will then need to encompass figuring out how to execute the solution, to coming up with the solution, to identifying what are the relevant problems the company should be focusing on.

Over time, if you want to progress in your career, you’ll have to do things that no one told you to do. That isn’t to say you should be reckless or work on whatever you want. But as you grow, you’ll start to realize what the important problems are and you’ll have to take it upon yourself to solve them. That’s what taking initiative looks like, and it comes from the mindset of adding value to others.

The wrong mindset, which I had before the program, was to focus on ‘what can I get out of working for this company?’ It’s a very egocentric mindset and it’s not encouraging from an employers perspective. Who wants to work with someone who is just going to be planning their next career move? When the focus is internal like that, it’s impossible to be present enough to what the needs of the company and your peers are. It was only when I started to get out of my own head that I was able to do more meaningful work and see what problems were around that needed fixing.

Whether that was rearranging the furniture in our back office, or rearranging the curriculum so topics would build on each other in a more logical way. There are no opportunities too small to add value and make a difference. Because at the end of the day, it’s all the small actions that add up.

So some practical advice from this point would be to figure how you can add value to someone else’s life. That could be as simple as writing a blog post, or sharing a short video of you solving a problem, or organizing a study group/meetup, or even just thanking someone over social media who created something useful. There are so many ways you can add value out there, and it’s something I wish I had realized WAY earlier.

# 4: Take the Long View

When I graduated in 2014, I had no idea what I wanted to do for my career. I had some vague sense that I enjoyed coding and I continued to take classes and learn new concepts for some reason I couldn’t explain. Ultimately those ended up making a huge difference in my life, but it wasn’t apparent at the time. To some outside observers, it seemed like I was wasting time or stuck doing what was familiar in college: taking classes with clear goals (pass or fail), rather than jumping into the real “adult” world.

But eventually one thing led to the next, and I found myself in positions with greater and greater responsibility and requiring more and more technical knowledge. It didn’t happen overnight but over the course of several years. It took a lot of hard work and focus. I never thought I’d work at a place like Google, but I also never thought I’d work at a place like Outco. I never thought I’d be good at algorithm problems, but I stuck with it because it felt right and this is where it has gotten me.

Sometimes I see engineers who feel like they aren’t getting better at solving problems, but those are the times when they have to trust the process most. The 5 weeks is a long enough timeframe to where you won’t always notice progress from day to day. It’s like going to the gym and trying to notice differences every morning. Usually, you won’t notice anything because the changes are subtle. However, if you compare photos at week 1 and then week 4 you’ll probably see a stark contrast if you’ve stuck to your program.

That’s exactly what happens at Outco. Don’t try to learn everything at once, and realize you may not be ready to learn a certain topic the first time you see it. Like if I gave you this problem:

You may not have seen anything like it before and feel confused at how to even approach it. You might even start wondering how many other problems out there you never heard of. But spending hours on this problem may not be the right place to start for you. It requires prior knowledge about graphs, recursion, post-order depth-first traversal and how something called “topological sort” works. If you’re missing any of those pieces you’re going to have a hard time with this problem. But that’s okay, focus on learning all those building blocks first and then come back to it later. Just doing that might clarify some things about the problem.

It’s important to realize that the anxiety at not knowing something is just you uncovering some “unknown unknown.” Now it’s a “known unknown” and you can focus on understanding a new solution. Don’t get caught up on the fact that it seems like there’s just one more thing you need to learn. Your mind will play tricks on you and make you wonder how many other problems out there are like this, and this can feel overwhelming. But this is progress, and there’s really just one underlying technique you need to grok. It will take time, but you’re headed in the right direction. Solving this problem deeply should help you understand a wide variety of similar problems. And this process can potentially take weeks, depending on your starting point.

But a few weeks to learn a problem that is probably on the more advanced side of what you might get asked on a technical interview is nothing compared to how long you have to wait for some efforts to pay off.

To give you another example, before Outco I had no idea what the interview process would be like at a place like Google. The turnaround time between first hearing from the recruiter to actually signing the offer ended up being something like 6 months. That’s an insane amount of time!

Now granted, that may not be the typical case, and I had some other circumstances around why it took so long like holidays and having a few extra interviews. But if I didn’t have a sense that things could take that long, I would have gone crazy waiting for an email from them that wouldn’t come for another few weeks. And it’s not like I was twiddling my thumbs during those 6 months, there was plenty of work to be done at Outco. That isn’t to say everyone’s search is going to take that long, but a few months is not an unreasonable amount of time to expect at all.

So take the long view. Things have a way of working themselves in the end, once you’ve worked at them long enough. And don’t underestimate the impact small actions can make down the line.

I gave the recent graduating class this example:

At the end of each week, engineers get a chance to give us feedback on how we’re doing as a company. This feedback often helps us improve and refine our curriculum. Now, this may not affect the class that just had the material, but it could help a future class down the line. Those changes might help a future outcoder get a job faster, which isn’t an unusual occurrence. Almost every month I’ll talk to people who got a problem in an interview that we had just covered in class. Sometimes it will be right after a 1-on-1 session. Let’s say this problem makes a difference in them getting hired, and a few years down the line, you have them as an interviewer when you’re job searching again and you connect over the fact that you were both outcoders at one point. And you ultimately get an offer from that company because the interviewer was friendlier to you because of your shared experience.

Seem farfetched?

This is almost exactly what happened to me at one of the companies I interviewed for. I had a student who I had taught a year prior interview me in the first round. Completely by chance.

What are the odds, you might ask? Hard to say. But remember, the Bay Area is a small place and the actions you take have a way of coming back around one way or another. Almost like Karma.

I think 2019 will be an exciting year for the company. All the trends seem to be pointing in a favorable direction. Our curriculum is cointinuing to be refined, we’re churning out tons of new class material and streamlining things more and more. Our community of alumni engineers is growing to where we’ll have plenty of opportunities to help new outcoders network and find jobs at their dream companies. And we’re finally in a place where we can start taking a much deeper and more data-driven approach to teaching.

We’re a small company still, but I can see a clear need in the market for what we’re doing, and we’ve got a great team to make that happen. If you’re reading this and you can relate to the struggles of the job search check us out at Outco.io. If you want to see if you pre-qualify technically for the course you can take our Hackerrank challenge here.

Hopefully you enjoyed this blog post on my journey so far. I know I’ve enjoyed writing about it. Stay tuned, I’ve got a lot more posts in the pipeline I’m excited to share.

--

--

Sergey Piterman
Outco

Technical Solutions Consultant @Google. Software Engineer @Outco. Content Creator. Youtube @ bit.ly/sergey-youtube. IG: @sergey.piterman. Linkedin: @spiterman