S1E10: From coding bootcamp to software engineer with Joshua

Updated on | Sign up for learn to code tips


In today’s episode of the Learn to Code With Me podcast, I speak with Joshua. He is a graduate of App Academy, one of the top coding bootcamps in the United States. He currently works full time at Asana as a software engineer.

Joshua began his career in the music industry. He has a Master’s and Doctorate in composition, but his interest in the technical side of things paved the way for a career change. Joshua started by learning how to code on his own, but eventually decided he wanted to attend a coding bootcamp.

Joshua discusses his experience at App Academy as well as the technical interview process he went through before getting hired at Asana. He shares advice on how to make real connections with potential employers. Plus, he highlights the importance of building challenging projects to showcase your technical skills. Ultimately, Joshua reminds us that bootcamps are best at preparing you to embrace on-the-job learning.

Laurence:
Hey everyone, welcome to the Learn to Code With Me podcast. I'm your host, Laurence Bradford. In today's 10th episode, I have special guest, Joshua Penman. Once upon a time, Joshua was in the music industry. However, he wanted a career change later in life. Very shortly after he decided to change directions, he found himself applying to coding bootcamps. He ended up getting accepted into App Academy, one of the top coding bootcamps in the United States.

Today, Joshua is a software engineer at Asana. In our conversation today, we talk about a whole bunch of things, including his experience at App Academy, to what it's like now working full time as a software engineer. Show Notes for this episode plus a full transcript can be found at learntocodewith.me/10. Enjoy the show!

Hey guys, I'm here today with Joshua. Joshua, thanks so much for being here.

Joshua:
Hey.

Laurence:
Could you tell the audience a bit about who you are and what you do.

Joshua:
Sure. My name is Joshua Penman and I work for Asana as a software engineer. My training was in music. I got a Master's and Doctorate in composition. I wrote music for small films and commercials and I toured with an electronic classical band. I wrote music for orchestras all around the country and the world. But I never really wanted to be a music professor and the touring life was really hard and I was always kind of fascinated by computers. At various points I thought to myself, 'I wonder what it would be like to be a software engineer,' and amazingly, I have gotten to find out.

Laurence:
Wow, so, how long ago was it when you first began teaching yourself how to code, even if it was just a little bit online or something?

Joshua:
Well, you know it's been a slow burn for a long time. I did BASIC when I was a kid and then I did some things using these high level graphical interface languages, Reactor and Max for music applications. Then I started learning modern languages, I started with Ruby, bits and bobs of it in the middle of 2014.

Laurence:
Got it. So that's not too long ago when you began learning Ruby, but it sounds like you were doing other technical stuff before then.

Joshua:
Yeah, electronic music is very technical.

Laurence:
Oh yeah, trust me, I'm learning that. As I mentioned before we began recording, I actually found someone to help me edit these because I got into some of these editors for the music editing and I was just completely lost. It's definitely technical.

Joshua:
Yeah, and it's its own whole rabbit hole.

Laurence:
Oh yeah, it was something I was not trying to crawl down. So, as the audience may not know, but of course I know, you went to App Academy.

Joshua:
I did.

Laurence:
When was that again?

Joshua:
Basically, I hit a kind of nadir in my life in late 2014 and December 15th, 2014 I said, "I'm going to be a software engineer." December 16th, 2014 I got the algorithm design manual and began reading. I applied to coding bootcamps. I read everything I could find on the subject just to get a state of the world, to understand what's the environment like, what are the platforms, languages, objects in the world that I ought to know about? I already knew some Ruby. I began teaching myself JavaScript.

I got into all of them and ended up going to App Academy because they had an opening the soonest, although after visiting some and reading more around, it seemed to me that the top of the line were really App Academy and Hack Reactor and then between the two it was definitely about timing. I built a little JavaScript app to visualize some graph theory algorithms I was learning, so that was my introduction to JavaScript.
Then I went to App Academy

Laurence:
How long is App Academy?

Joshua:
App Academy is 12 weeks.

Laurence:
12 weeks. And where is that based?

Joshua:
It's in San Francisco.

Laurence:
San Francisco, okay got it. Were you living there before?

Joshua:
No, I was actually living in Los Angeles.

Laurence:
Okay, so you relocated there and then you got a job afterwards and you're still there in San Francisco.

Joshua:
Correct.

Laurence:
Okay, cool. You're there for 12 weeks and then, I think I mentioned this, I was looking at your LinkedIn before the interview. You had another job right after App Academy, right, before Asana?

Joshua:
No.

Laurence:
Oh, no, so you went straight to Asana?

Joshua:
Yes.

Laurence:
Okay, great. I love Asana, I think I already told you this but I recently switched over to it, just in the beginning of 2016 and it's been a game changer for my productivity.

Joshua:
That's awesome.

Laurence:
Yeah, I really enjoy it. I was really excited when you said that you worked there. When you were at App Academy did they have career resources? Did you begin applying to full-time jobs while you were still there?

Joshua:
Yeah, to some degree. They encouraged us to apply to a lot of jobs while we were there. It was part of the curriculum. The way App Academy works is that there isn't really a sharp close of the program. It's kind of, there's a bunch of curriculum and then the end kind of peters out because there's actually some more lectures on algorithms that you can go to after the so-called end, and there's still resources you can access to help you find jobs.

You're still able to come into the office after the so-called end of the program. It's really, as they like to say, it ends when you get a job. It was definitely a very supportive environment for just coming in every day and working on the job of getting a job.

Laurence:
I know App Academy is one of the programs where you don't pay for the program up front. Instead, they take a percentage of your salary, correct?

Joshua:
Correct.

Laurence:
Okay, cool. Is that something you were looking for when you were applying to different bootcamps?

Joshua:
Well, first of all I want to say they do take a deposit. It's non-trivial but it's not...it's $5,000, so there's definitely an up front cost, but it's not like the up front cost of some of the other places.

To be honest, when I started the whole process, I saw the statistics for acceptance rate for all these programs and I didn't believe it. I really liked that App Academy literally put their money where their mouth was. They weren't making money unless people were getting jobs. It's not something that was the game changer for me, but it was definitely something that made me believe that they were really serious about what they were doing.

Laurence:
Yeah, I think it's really nice that coding bootcamps offer that. It seems like there are more and more that are doing something like that or offering different payment options aside from just paying a huge chunk up front.

Joshua:
Yeah.

Laurence:
I want to transition a little to the interview process at Asana. Could you give a little glimpse of what that was like?

Joshua:
Sure. The first step actually is what we call a recruiter screen. Which is a conversation with a recruiter to get a sense of where the candidate is in terms of their thought process, in terms of their interview status, where they are in relation to looking at other companies, what they're looking for. It's a very soft screen. Nobody really gets cut off at the recruiter phone call.

There is a recruiter screen, I guess that's different, that's where recruiters will look at people's resumes and decide whether or not to go to the next step. I had the first recruiter call. After that there's a coding challenge. I did the coding challenge. After that there is a phone screen.

After the phone screen, this is about an hour long phone screen, after the phone screen there's an onsite. The onsite lasts for four or five hours. One comes into Asana, talks about some technical questions, has lunch. I think with bootcamp grads they do a deep dive into some of the projects someone has done. Talk about your projects, answer some interview questions. You do a little bit of coding, talk about the code that you wrote, and that's about it.

Laurence:
Yeah, so basically the recruiter screen, which is kind of like the initial thing, and then there's a coding challenge, which I assume is online?

Joshua:
Yeah.

Laurence:
Then you do a phone screen which is about an hour and then if you make it past that point you're pretty much there for like a full day onsite?

Joshua:
Yeah. Sometimes we split people up and have them do onsites in two pieces and sometimes we do the full day at once.

Laurence:
Cool. I kind of want to backtrack just a bit, I should have maybe asked this before, but I'm just curious about how you even got to the recruiting screen or the coding challenge. Did you apply for the job online or did you maybe meet someone at a networking event that worked there? What was that like?

Joshua:
It's different for me than it has been for other people. I would like for us to very much be open to anybody who applies to jobs at Asana or who meets me, or whatever. However, I actually had a friend from college who
referred me.

Laurence:
Okay, that's good. I think most, actually, I don't know the number off the top of my head, but I know that the likelihood of you actually getting the job or an interview is significantly higher when you are being referred by someone who already works there, just because there's that trust already, you know? So I definitely think that's a great way for people to go about getting a position somewhere, through someone they know.

Joshua:
I totally believe that. The one thing I would say is, I am very, and maybe this is just sort of an after effect of my time in the music industry, but I am very wary of so called 'networking' events. It doesn't feel like a very effective way to do things. I think career fairs can be good.

Laurence:
I was just going to say, I don't really like networking events personally, and I know a lot of other people don't. To some of the people I've spoken to since doing these interviews and just in general, the best jobs that people get when they get these really great opportunities are through people that they know. When they meet them it's not like, 'hey, we're at a networking event.' It's more natural. Maybe they volunteered together at an organization. Or maybe like you, you guys went to college together. Or maybe, for instance, I go to a coworking space and there's a lot of people that I meet here, sometimes that may lead to projects. It's never like, 'I'm at a happy hour handing out business cards.'

Joshua:
Exactly. That doesn't go. I met a wonderful ex-neighbor of my step-father's cousin who worked at Google.

Laurence:
That's so distant but I get what you're saying. You never know.

Joshua:
That's exactly it. In fact, he was going to refer me to Google. In fact I got a referral to Google through App Academy, so I didn't actually need his referral, but I had a very nice meeting with him. He had tea with me. He was ready to put me in as a referral, and that kind of thing really works. But it has to be from this personal standpoint because if you're at one of these places where everybody's giving out business cards it's so removed from the human that it's very hard for it to turn into something that is workable.

That said, there are moments, such as career fairs at boot camps or similar where, or at colleges, where we send people and set up a table. That's a very serious and real way to meet people at a company. In that case it's not a referral as much as you are just meeting this person and saying, "I'm interested," and they get to talk to you and put you into the system.

Laurence:
Yeah. I think I did go do some career fairs in college but for me nothing ever came out of those. But I imagine if you're doing it through the bootcamp it's quite different. When I was at college I also had no idea what I wanted to do, so a career fair maybe isn't always the best thing. I kind of had to have a better idea of what I wanted to do. I really like that story though, about the step-dad, what was it? The step-dad's neighbor's cousin?

Joshua:
No, step-dad's cousin's neighbor.

Laurence:
Step-dad's cousin's neighbor who worked at Google. I love that though. I think these are the kinds of things that you should be looking out for when you're looking for a job, especially at a company like Google. These third degree or maybe even fourth degree connections are kind of distant, but you can make them work.

Joshua:
You can, although I want to acknowledge right now that that is, definitely a form of privilege because not everybody moves in social circles where that's going to be likely. It's something that I'm glad I had. That said, I know other people who I probably could have gotten a referral in another way and I know other people who have gone straight in the front door. It 100% helped.

Laurence:
You're definitely right about it kind of being privileged in some ways because not everyone's going to have those resources and you were living in, you said Los Angeles before you then were living in San Francisco which are both in bigger areas. I live in Boston right now, which is also a bigger area. I feel like when you live in these kind of cities, since there's more people, there's more of these cousin, neighbor kind of relations. And I know there are people that live in less populated areas and then it may not be the case so much for them.

Transitioning a bit, I saw on your LinkedIn that you had a handful of projects, one was the Twittersphere. Did those projects, actually, were you building those when you were at App Academy?

Joshua:
I have three projects that I consider part of my portfolio and one before I went there, which was Graph Playground, which was what I talked about, the interactive exploration of graph theory. One, the Twittersphere, I did build on the side during App Academy. There's clixr, which was my final project for App Academy.

With all of them I was really trying to build, not just an easy thing that used the tools we were taught but something that was really impressive that showed that I learned to do something. I solved a bunch of technical challenges and have something that really looks good and is demonstrative of a certain kind of technical skill to show employers.

Laurence:
Yeah. So when you were interviewing at Asana then, did you talk a lot about the projects that you built?

Joshua:
Yeah, there was one section that we had a moment to talk about projects. Like, "What are some technical challenges you overcame?" That's a classic interview question. One should be able to have a few good stories to tell. The questions that one is always, you have to be able to answer for interviews, especially as a bootcamp grad, is "Well, so you've had an interesting journey, tell me a bit about yourself." You can't stumble there. You
need to have the story.

By the time I was at Asana, I had done so many onsites I had it down. I had all the beats, all the moments, the surprise transition, I had it all set. In a sense, it's a performance. But it's a performance you know you're going to give and it's a performance that isn't a lie, it's a performance that, if you rehearse it, actually makes it effective for them to understand who you are.

Similarly, "What's a good example of a technical problem that you've solved recently?" That's a great way to demonstrate your thinking. Demonstrate that what you did was hard. One of my favorite examples that I used to give was how I dealt with the problem of the incredible jankiness that was caused in the Twittersphere when I was first calling to three.js to generate 3D meshes for every letter to display these Twitter messages. These tweets. I really am of this century. I do know they're called Tweets.

Laurence:
No problem. I think the side projects and referencing during interviews, I thought of something I didn't even realize when you began talking. How many onsite interviews did you do then, before you got to Asana?

Joshua:
I remember that I had two straight weeks of onsites.

Laurence:
Oh wow.

Joshua:
You can never tell when you're going to get, you know, every company works on a different schedule, but it happened to line up that I had a bunch of them straight in a row. Asana was fairly at the end so I will say that it was my 8th or something like that.

Laurence:
Okay, cool, so that definitely gave you a lot of practice then, leading up to it.

Joshua:
Oh yeah. We also practiced a lot at App Academy. I had done so many problems on the whiteboard before I stood in front of a whiteboard at an interview.

Laurence:
That's good. Do they also go over the soft interview questions? The behavioral interview questions, I guess they would be called.

Joshua:
They did to a degree. Not hugely, but yeah, we talked about them.

Laurence:
Got it. So, you've been a software engineer at Asana. Has there been anything that you've learned since you started working there, that you just didn't expect. Maybe it's something you didn't learn before at the coding bootcamp or in your own studies.

Joshua:
Absolutely. The whole nature of what I do here was only barely touched at at a bootcamp. Bootcamps don't prepare you to actually do this job. They prepare you to get to a point where you're almost barely, possibly, showing that you have potential to learn this job. There's been an enormous amount of on-the-job learning every day.

I have learned more here than I did at the bootcamp. From everything like, how to really write well-maintainable, extensible code, to how to think about infrastructure, to anything in the command line, we barely touched real Unix Utilities. Just ways of thinking, at a much more abstract level, about systems and state and really what it means to architect production code.

Laurence:
Have you kept in touch with anyone from App Academy?

Joshua:
Yeah, there's a group of us who send each other Facebook messages now and again, get together sometimes.

Laurence:
That's nice. I'm just curious, has anyone else kind of said similar, like "Whoa, you're there writing Enterprise software and it's just kind of like night and day," this huge jump, once again?

Joshua:
I think a lot of people felt that way, but not everybody. I think that different of us got different jobs. Some people got jobs doing static site for Lumosity for example, and that's kind of like what you learn at the bootcamp. A lot of people got less high-level jobs than I did so I think it was less of a stretch, but there's a huge chunk where we all feel like we dropped in the deep end and we've had to learn how to swim.

Laurence:
Okay, so final question. If there's a person who has no technical experience whatsoever but they want a job as a software engineer, what is one thing that they could do today to take a step in the right direction?

Joshua:
I think that all the things that I did, I would recommend that someone else do. The bootcamp honestly isn't necessary. What it does do is it provides a focus and a safe space for spending a lot of time coding. It picks out subjects that one might not necessarily realize are the foundations of being a software engineer. If one understands what those subjects are, the resources are out there. There are books out there. I personally very much dislike the Codecademy style teaching things, I think there's a lot more value in reading documentation and just trying to build something.

I think if I had any advice it would be, just try to build something. It's unbelievably frustrating at the beginning because you don't know how to do thing one. Wanting to build something and wanting to see something manifest will pull you through the frustration. You'll read a hundred Stack Overflow articles and a hundred bits of MDN and start to get a sense of how this stuff is put together.

Just going through it and starting to understand what good code looks like and what good code feels like is, it's kind of a journey. Before you get there, you just sort of have to write a bunch of bad code and write a bunch of things that just kind of hack together and get something to work.

Specifically, if one wants to be a professional software engineer one has to really understand algorithms. It's part of the interview process. It's part of the set of things we just decided we want people to know, even though they don't really come up that much. Nobody is dealing with a binary search tree on a daily basis but there is probably a significant correlation between understanding these basic abstract data structures and being able to write good production code or being able to learn to write good production code. I think the algorithm design manual is an amazing resource. I recommend it highly. I loved it.

Starting to read that, starting to learn to build things, JavaScript, you know the basics: JavaScript, HTML, CSS. Just getting oneself to the point where one understands these things. That sounds easy, it's not easy at all, but it is available and the amazing thing is there are resources available for all of it.

Laurence:
Well, thank you so much Joshua for talking with me today. Finally, where can people find you online?

Joshua:
You can email me, if anybody is interested. I'm available at joshua@asana.com. Very easy.

Laurence:
Okay, cool, thank you. And thank you for making yourself so accessible.

Joshua:
Yeah, absolutely.

Laurence:
I hope you guys enjoyed our conversation. Again, the Show Notes for this episode plus a full transcript can be found at learntocodewith.me/10. In today's show, Joshua and I talked about getting a job in the tech industry.

I believe that one of the best ways to get your foot in the door for an interview is by being on LinkedIn. LinkedIn is the professional network. If you're not on it, you're making a big mistake. That's why I created my 5-day LinkedIn crash course. This crash course will show you the basics of getting your LinkedIn profile setup, how to write a stand out headline, summary, and experience section, and what recruiters and hiring managers look for on your LinkedIn profile. You can get the crash course at learntocodewith.me/linkedinbook. Again, that's learntocodewith.me/linkedinbook.

I hope you enjoyed the episode and I'll see you next time!

Key takeaways:

  • Career fairs are a good way to make real connections. Showing interest face to face can get you in the system.
  • Build things that prove what you learned. Make projects to fully showcase your technical skills.
  • Get comfortable with the different steps of a technical interview. Prepare yourself with stories that detail your journey and the challenges you’ve overcome.
  • Understanding algorithms is a standard component of software engineer interviews. If you want to be prepared, have a firm grasp of algorithms before you start interviewing.
  • Bootcamps may not always prepare you to do the job you want to get. However, they show you have the potential to learn on the job.
  • Start figuring out what good code looks and feels like. You have to write a bunch of bad code to understand how good code works.
  • Just try to build something. Wanting to complete the task will help pull you through the frustration when you first start out.
  • Learning the basics—HTML, CSS, and JavaScript—will give you the right kind of jump start as you learn to code.

Links and mentions from the episode:

Thanks for listening!

Thanks so much for tuning in! Remember, you can listen to the Learn to Code With Me podcast on the following platforms:

  1. The LTCWM website (https://learntocodewith.me/podcast/)
  2. iTunes
  3. SoundCloud
  4. Stitcher

If you have a few extra minutes, please rate and review the show in iTunes. Ratings and reviews are extremely helpful when it comes to the ranking of the show. I would really, really appreciate it!