There has been so much talk about code schools versus traditional degrees or other methods of gaining entrance into the world of software development. But, what are the benefits of going the route of a code school to get your foot in the door versus any other more formal way of learning? Listen to episode 22 and find out all this and more.
Sara Mei – programming guru extraordinaire – joins us to discuss many aspects of programming and pair programming. Her experience with mentoring developers and organizing technology events offer up some fantastic advice that you won’t want to miss.
Sarah has extensive knowledge with Ruby and Rails languages and has some great mentoring expertise to draw from and is ready to share that with you in episode 22. She is also an expert speaker and organizer at many conferences. So, listen in while Sarah Mei fills you in on some of the many things she has learned during her career in the tech industry.
Sarah’s Bio:
Sarah is a Ruby and JavaScript developer based in San Francisco, California. As the Chief Consultant at DevMynd Software, she spends most of her time pairing with her clients’ developers, helping level up their team. Her particular areas of interest are Object-Oriented Programming, service refactorings, growing teams, and inter-developer dynamics.
She has written about my experiences pair programming and also her approach to testing but her most popular article, by a huge margin, is about the dangers of shiny new technology.
Sarah is writing a book with Sandi Metz about how to refactor Rails applications towards happiness and she can be found on Twitter, GitHub, and LinkedIn.
Episode Highlights and Show Notes:
Arsalan: Today we have Sarah Mei. Sarah is a JavaScript developer, a Ruby developer, a conference organizer, a speaker, an author, and a lot more. So, Sarah, how are you?
Sarah: I’m doing well. How are you?
Arsalan: I’m doing great. I know a lot about you. I know you have your hands in a lot of different things. You are involved in the community, you’re a programmer, and I think I can call you and activist of some sort because you talk about a lot of issues that people face in conferences, especially women. But, before we do all that, I want people to get a feel for who you are. So, could you describe yourself for the audience? How do you see yourself?
Sarah: I’ve been a developer for about 20 years now. I am currently the chief consultant at Devmynd. What that usually means is that I do short-term, 3 to 6-month projects with teams. I go in and help them level up on something like pair programming, Ruby, Javascript, test leveling, factoring and etc. That’s what I do for my day job.
Sarah: I also do other things as well. I am one of the organizers for RubyConf and RailsConf, which are the 2 largest Ruby conferences in the world as part of my work with Ruby Central. I am also on the board of RubyTogether, which is a group that is working to make Ruby’s structure more stable. I am also one of the founders of Rails Bridge, which is working to get underrepresented folks into the Rails communities. I’ve also started working on something called Bridge Foundry, which is a higher level group which is helping to bring the Rails Bridge model to other communities.
Sarah: I also do a lot of conference speaking. Most of my talks are about things like software design, team dynamics, how those two things intersect, how you build software in a group, and how you do that with developers who tend to not have the highest levels of people skills.
Arsalan: That’s absolutely true. People skills is a skill that programmers tend to struggle with. I think a lot of us are introverts by nature. We are not used to expressing our opinions or sharing our feelings. Can you tell us a little bit about some of the struggles that new and aspiring developers have gone through in your experience?
Sarah: Yes, absolutely. I do some mentoring with one of the code schools here in San Francisco called Hackbright Academy. They are a women’s hack Academy that teaches Python. One of the things I’ve discovered is that I don’t really need to know much Python in order to help people because a lot of the times it’s the concepts that they have trouble with and they really just need help figuring out what to Google, and that is a pretty useful skill.
Arsalan: Google-oriented programming.
Sarah: Absolutely.
Arsalan: I have some mixed feelings about Stackoverflow. When it first came into existence, it was amazing. I would use it as a user and it was a good place to get a reputation, but also a great place to get answers within seconds to a difficult problem. That happened years ago, but now I see so many questions without any answers. I have to say that these days I would recommend going to Google first and to Stackoverflow second. What do you think about that?
Sarah: Yes, I always go to Google first. But, at least for the type of things that I’m looking for, they usually tend to be higher up on the Stackoverflow results. So, I find myself the Stackoverflow quite a bit. I did a lot of Stackoverflow questions several years ago when I had a job that left me up with a lot of free time. It was fun. I haven’t answered a question in about 3 to 4 years, but I still get points on there when people keep putting them up.
Arsalan: Yes, Stackoverflow and Google are both great resources. So, today I want to talk to you about how you guide new and aspiring developers, some perhaps without a computer science degree. You have some experience because you are one of the mentors at a code academy. How do you see these code academies versus a regular computer science degree?
Sarah: I think they are quite different, for sure. When I started Rails Bridge with Sarah Allen back in 2009, we did a thing where we would have people come in for a day to try out Rails. The people who were excited about it often wanted more classes to take and there wasn’t anything for us to really point them at. At that time, there weren’t any code schools and there wasn’t even a dev boot camp, which I think was pretty close to the first one. There were community college classes, very expensive $3k corporate training places, or you could go the 4-year degree route. But, none of those seemed like something we wanted to recommend. So, having the coding academies available as an option has been amazing because you have these people who are switching careers and discover that they like programming. The coding schools give them a way in. That is obvious and not as expensive as a four-year degree or some of the other options.
Arsalan: So, it is an inexpensive way to get your foot in the door and learn the essential skills to get your first job. You’re not going to become the world’s best programmer or have the breadth of knowledge, but would it be fair to say that you would have enough knowledge to hold your own in an entry level position?
Sarah: Yes, I think so. It depends on the term of your program, but it can be enough to get your foot in the door in a junior internship program or as a junior developer. I worked on a team of developers where there was a recent code school grad and a recent college grad and the difference between the two was interesting.
Sarah: When working with the code school grad if we were talking about something that’s was more computer science and she didn’t understand it; we would talk about it for a few minutes and look it up on Wikipedia and figure it out. The computer science grad to attend of new all of that for certain, but the CS engineering degrees tend to focus less on the software developing side of things and the communications side of things that the code schools do. In my experience it was easier to spot-learn the computer science stuff, than it was to spot-learn the communications stuff.
Arsalan: true, but this may not apply to every CS grad. Some CS grads will go and practice what they learn from Opensource projects and other places. But, just because you have a computer science degree doesn’t necessarily mean you’re a great programmer.
Sarah: The computer science stuff is all on Wikipedia if you ever need to learn it. Having a computer science background can be helpful, but a lot of computer science programs do not teach you how to program. Learning how to program is a byproduct of doing the degree program.
Arsalan: Absolutely. That’s because their goal is different. They are not trying to produce IT workers or programmers. They are trying to produce computer scientists, which is absurd.
Sarah: I think of computer science degree as similar to an English department at the University. There are many aspects to the degree program that you need it for everything. So it still has its own department. Applied computer science is basically something that you need in every other scientific discipline at this point.
Arsalan: the goal is different. Their goal is to sort of enhance the knowledge that we have in computing and logic. I think it is more logic than anything else. But when it comes to technologies you might learn about artificial intelligence or other networks, compiler design, or other complicated topics and algorithms. While you may later develop a new algorithm or something, the thing is, most companies don’t really need that. The companies that are doing the hiring are looking for people who can build applications to solve real-world problems and often by using the Ruby and Rails frameworks. As it turns out Ruby and Rails are very intuitive. So it was very interesting when I found out that most code schools are using the Rails framework to teach programming. Is there a particular reason for that?
Sarah: I think part of the reason is because it’s relatively easy to get started with. It’s visual, which is very helpful to a lot of people. I think there are a lot of people out there who are motivated by what you can do with programming, but not necessarily by programming itself.
Arsalan: Is that because Rails has a very supporting and encouraging community?
Sarah: I think all open source communities have struggled with being open and welcoming to newcomers to an extent. I think it that we have more experience in this area because we’ve dealt with it for a while before other technical communities started really getting involved.
Arsalan: So, let’s say I’m somebody who’s working in another profession and I’m intrigued by software development to the point that I’m considering switching over. I have a few choices. I can start learning on my own through books, blogs or something else. Or I can go to code school and receive more rigorous training and perhaps a recommendation for some open jobs. What are some tips that you could give me as somebody who is switching from one field to computer science that will help me?
Sarah: I’m going to give you the easy answer first. The biggest thing that helps me is you can restrict your Google searches so that you are not seeing things that are two years old, because, an answer that was posted two years ago is unlikely to be true now. Learning how to do search results that only showed me things that were posted in the last year has been a huge thing for me.
Arsalan: When information is old, like if you get an old news article from two years ago, the information is useless.
Sarah: Yes, that is almost always true with software development except in some very limited cases. The other tip that I would suggest is to not sell yourself short. You have a lot to offer to a team. There’s going to be some people who don’t value that. It’s really easy to get into that mindset and it’s very difficult to avoid it, but less experienced developers often have a lot to offer often from their previous lives. There are all these skills that people have that go beyond the code that they can contribute and I think that a lot more of these companies are starting to see and appreciate that.
Arsalan: I think this is a really good point. In addition to the team dynamics, I think there are benefits coming from a different background. We talk about diversity, like racial diversity, ethnic diversity, religious diversity, lifestyle diversity, and even job diversity. In job diversity, they bring their different perspectives and I think that can be really good for team dynamics. But, I also think that for a startup, it is critical to have people from different backgrounds, so that you’re not in this monoculture or thinking with tunnel vision. If you’re building a product for a segment of the population, but you don’t have anyone who represents that population, then you really don’t know where they’re coming from.
Arsalan: the problem that I see is that we tend to try to get these rock star developers for every position, especially in the Silicon Valley, but also throughout the rest of the country. It’s this rock star developer wanted mentality. I see it all the time.
Sarah: I think in order to be in the public’s eye like that, you have to be focused on yourself. You have to have a lot of internal narcissism around. “I am worthy. I am someone that other people should be around.” While I think this can be a good thing, I think that optimizing for that is probably not what you want in a team. If you get a lot of rock stars together, it might be amazing, but it might also be a train wreck. More often, I see it turn out as a train wreck then amazing.
Sarah: Another thing that I see a lot of is people wanting to hire mid-level and senior-level developers.. The companies that I see succeeding are the ones who have figured out how to hire less experienced developers and hire junior level developers, and work with them usefully. It’s a different way to approach teamwork when you have folks coming from a different place.
Sarah: so, when you bring on the first junior developer. You have to change a lot of the ways that you typically work. Things that were implicit before now have to be said out loud. You don’t always know what those things are. It’s kind of like a blind spot. You have to bring on these junior developers to know what those things are. Discovering them can be painful because you need to create an environment where the junior person will be comfortable asking questions.
Sarah: I think the trap that people always fall into is that they hire developers who all work the same way. And this can be more efficient, but you spend less time talking and more time building. But the question is: are you building the right things?
Arsalan: Yes, I think the communication is a fundamental problem in any company. I feel that a lot of companies are trying to hire just one person and that would be the most experienced person that they can find. The problem that I see with that is, we have a bunch of people who are purportedly senior. That doesn’t necessarily mean that they know the right things to do. There’s no communication that really surfaces. So, you collect a technical debt. But also you make decisions that are not necessarily good for the business or the product, but nobody knows because their egos come into play.
Sarah: A lot of times people will post a job, but then say that nobody applied except for white men. Then, you wonder why and you go and look at the team page and see that most of them are white men. There are quite a few mid-level and senior developers that come from minority groups, but they don’t apply because it’s difficult to tell whether or not they can be successful at a place like that. And so those people tend not to change jobs so much because changing jobs is a risk unless it’s someone they know or someone that’s in their network. This is why networking is so important.
Arsalan: That’s a very good point. Let’s say that you have a company that once diversity, but is finding it hard to locate diverse talent. Don’t make it explicit. Make it implicit. Let the public know that you are looking for a diverse group to apply. I think that unless you state this very explicitly you are always going to have some kind of bias because of the unknown.
Sarah: Yes, absolutely. I think that this is another case that shows that having a network is really important. I think that good managers who are able to hire good talent are often the ones who have spent years building up this network of people who they’ve met on social media, among other places. Having the ability to talk to someone and letting them know that “I would love to have you on my team. If you’re interested, here’s the job, which is posted, let me know” and this is often the most successful strategy, but it does take time.
Arsalan: So, the ability to network is very important if you are looking to hire someone, or if you want to get hired. I want to encourage people to go and put themselves out there. Don’t be afraid to put yourself out there. There are a lot of nice and supportive people out there. Even if you have three solid years of experience, but they are looking for someone with five years of experience, you should still apply.
Sarah: Yes, there are some interesting studies that show that men will apply if they meet at least 60% of the job skills, but women will only apply on an average of about 90% of the job skills requested. They often give this long list of things that they would like you to have. But, with their really screening for is someone who they feel they can work with and who is going to be a good addition to the team, but a lot of times they just really don’t know how to write job ads. So they’re kind of crippled in their way of how to hire and that sometimes comes to play in the interview as well. Even if you only meet half the criteria, you should still apply and tell them why you’re excited about the job.
Arsalan: I want to talk about conferences because there’s just so much to talk about. Conferences are interesting because they exist and they thrive and every year we have more and more applicants who are trying to go there and more people who are trying to present. I know that the vast majority of developers have never been to a conference. I also know that you work with conferences. So, as a new developer, I might be struggling just to keep a job or to learn to program. Maybe that’s for someone with ten years or more experience. Why should I go?
Sarah: when I first started going to conferences. It was all about going to the talks. I would go to every talk that I was able to go to. Then I realized that going to a conference is not about the talks. Most conferences have various tracks that you can attend, but the most important track that you could attend is called the “hallway” track. That’s the track where you stand outside of the session in a hallway and you talk to all the people who are there. And you can go to lunch with them, or to dinner with them. This is very difficult to do for the introvert. It’s all about making those connections. My personal rule was to make at least one connection at every conference I attended.
Sarah: The networking aspect of this is invaluable and can potentially lead to more opportunities later on. Another great thing about conferences is that there are often people there who are hiring. So you have this possibility a skipping the whole HR process. The conferences can provide a much faster way of getting in front of people quickly.
Arsalan: People get together for the purpose of sharing their knowledge. If it’s a Ruby conference, people are there to talk about Ruby. So if you have a Ruby question or Ruby comment, people will be glad to answer your questions. But as a first-time conference attendee, my question to you would be I don’t know if I should talk to one of the speakers or just pick a random person in the hallway. Should I do some research so that I know who to pick at the conference to talk to or to take to lunch or dinner? Should I see if I can find them on Twitter and have a twitter conference with them? Or do you think that you should just go and see what you find?
Sarah: I think that either approach could be successful. If you are interested in talking to a speaker and going to a talk, try to come up with some interesting things to talk to them about it. It’s because I guarantee they’re more interested in talking to you about it, then you realize.
Arsalan: I’ve heard other people tell me that it’s not a good idea to line up in front of the speaker after the talk because there could be ten or twenty people there waiting to shake hands with them, or to talk with them. Some people have suggested that it’s better to tweak them or contact them to let them know that you’re interested in saying hello and then finding them elsewhere like in the hallway or asking them to meet you for coffee or something. As a speaker, do you think there’s any truth to that?
Sarah: I think it depends on the speaker. A lot of speakers have a preference to how they want to be contacted and they may even indicate that in the slides during the talk. As for talking with the speaker right after their talk, I am not opposed to it. If somebody wants to talk to me after one of my presentations, but as you said, it can get a little hairy sometimes, if there are around twenty people standing there waiting.
Sarah: That’s also true if there’s another talk scheduled to be in the same room afterward. One thing that a presenter can do that I’ve seen it work really well with others is to kind of herd everyone out of the presentation room and either into the hallway or an area with couches or even another vacant room and have a discussion there. Try with different speakers because there’s definitely going to be some speakers who are harder and easier to approach than others.
Sarah: It’s really helpful to speakers who you approach when you offer up some comments or suggestions like “I really liked your talk, it reminds me of…” I appreciate that, but what’s really helpful to me are people who make suggestions to me that help me to further develop my topic like, “have you thought of this?” or “have your thought of that?” People who offer up suggestions are very helpful for me to improve my talks for the next time, except for those who are argumentative.
Arsalan: Yes, don’t have an argument with the speaker. People who are being argumentative or forceful at a conference often are the ones who discourage some groups of people, like some women or other groups from participating in the conferences or going because who wants to go and see that kind of behavior? It’s not restricted to programming or the tech industry either because when you speak up and then someone shuts you down, it’s not a nurturing and learning environment anymore. Can you tell us about your own personal experiences and how we can improve things?
Sarah: Most of the people who go to conferences want to do the right thing. Often, when we are not clear about what the right thing is, people can have different interpretations. There are some people out there who are definitely bad actors and there are others who are inadvertently currently contributing to the problem. This is why in the last couple of years. The Ruby community and the tech community, in general, have pushed for codes of conduct at conferences. Because I think that we do need guidelines and reassurances that the conference organizers have your back if something does happen and lets you know what steps you need to take to handle that situation. It also lets the conference authority know how to handle the situation if it happens because pretty much something usually happens at every conference.
Sarah: I think that some things that are equally important to talk about are things called micro-aggressions. These are things that people do without really realizing it. For example, if someone mistakes me as someone else’s wife rather than an actual participant, or if someone sees a black person and thinks that they must be in the wrong place. These are things that may not necessarily violate the code of conduct, but they do make people feel as though they are outsiders. The goal of every conference is to help people to feel like they are part of the community and anything that takes away from that is something that conference organizers will want to avoid. Micro-aggressions are a harder problem to tackle.
Arsalan: I think some of this is on the organizers because they are responsible for the well-being of the attendees and ensuring that everyone is taken care of. I think about 75% of this is on the community itself as well. I’m aware of certain incidents where at a conference something inappropriate was happening. A woman was being harassed in front of other men and other attendees, and nobody said or did anything. That incident got swept under the carpet because that person was really powerful. If I were not a very good state of mind and unable to plead my before the conference organizers, then I would expect others within the conference community to step in to file a complaint on my behalf. We can do better than this as a community.
Arsalan: We have to wrap things up and will have to do another interview at another time, but if you’d like to say a few things about what you’re working on, or how people can get in touch with you, then this is your time. Then, we will continue this discussion in a follow-up interview.
Sarah: I’ve been doing quite a bit of writing related to this kind of stuff. You can find most of it on the Devmynd blog. I also talk about a lot of the stuff on Twitter, which is the place where I talk about these things the most. Twitter is also the best way to reach me. I’m always interested in talking more to people about their conference experiences, looking for jobs, and being a junior developer. Thank you for having me.
Arsalan: Absolutely. And all of these show links. We will try to include at the end of this podcast. Sarah is a wonderful person to talk to you if you’re a new developer. If you’re an aspiring developer, looking to change careers, want to join the code camp, or if you want to talk about getting started, I think that she would be happy to help you. I would be happy to forward a message if you would like to add a comment to the blog MentoringDevelopers.com. Or, you can go in and give us a rating on iTunes@MentoringDevelopers.com/iTunes. We will make sure to forward your messages to Sarah Mei. Sarah, thank you so much for joining us and we will have to have to back.
Important Links
- Microsoft
- RailsBridge
- RubyConf
- RailsConf
- BurlingtonRuby
- ClojureConf
- JSConf
- Devmynd
- Ruby Central
- Ruby Together
- Rails Bridge
- Bridge Foundry
- Hackbright Academy
- Stackoverflow
- Devbootcamp
Thanks for Listening!
Do you have some feedback or some advice for us or our audience? Please give us a review on iTunes, Spotify, Google Podcasts, or Stitcher and share your thoughts.
If you found this episode useful, please go ahead and share it with your friends and family. You can also listen directly and give your feedback on the website.
You can subscribe to Mentoring Developers via iTunes, Stitcher Radio, Spotify, or Google Podcasts.
Podcast: Play in new window | Download