Monitor performance issues & errors in your code

#41: Getting your first dev job as a Python developer (part 2) Transcript

Recorded on Thursday, Dec 10, 2015.

00:00 This episode of Talk Python To Me is the second in a two part series about getting your first Python job that attempts to bring a wide spectrum of thoughts on this discussion. It's "Getting your first dev job as a Python developer, part 2". This time, we hear from the experts on episode number 41, recorded December 10th 2015.

00:00 [music]

00:00 Welcome to Talk Python to Me. A weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities. This is your host, Michael Kennedy, Follow me on twitter where I'm @mkennedy. Keep up with the show and listen to past episodes at talkpython.fm and follow the show on twitter via @talkpython.

00:00 This episode is brought to you by Hired and Snap CI. Thank them for supporting the show on twitter via @hired_hq and @snap_ci. That's right, ThoughtWorks and the Snap CI team have joined the show to keep the episodes coming. Be sure to find them on twitter and tell them thanks!

01:22 Michael Kennedy: Welcome everybody. This is part 2 in our "Getting Your First Job As A Python Developer." I hope you've listened to episode #39 where we introduced the topic and we talked to new developers who just got their first job in Python. Now we are turning the tables and we are going to talk to the experts, the people that do the evaluating and hiring and finally make the decision on who get these jobs. We have experts from a bunch of great companies including Netflix and PayPal. The format will be the same as part one. We have a bunch of guests who are experts and we are going to ask them questions and we'll kind of do a panel type discussion, we'll hear from each of them in turn.

02:03 So let me introduce the panelists: we have Roy Rapaport, Mahmoud Hashemi, Lorena Mesa, Adylzan Khashtamov, Greg Langston and Shawn Milochic. Last time I made a couple of book recommendations, I'll just repeat them here really briefly because I think the way that people should look at their career and jobs is undergoing a pretty dramatic shift. And on one hand we all have to individually take responsibility for promoting ourselves and building our skills. And the other, the landscape of employment is changing somewhat. So, if you want to explore these ideas be sure to check out "Soft Skills" by John Sonmez and the "End Of Jobs" by Taylor Parson. Ok with that, let's get onto the questions.

02:47 So you are going to hear a lot of advice from our experts and I want to make sure that you know where they are coming from, the type of people that they expect to be working with when they give this advice. So my first question to the group was what kind of Python developers do you work with and do you interview? Out first two panelists should sound familiar to you- first step we are going to hear from Roy Rapaport from Netflix. He was the guest on show 16 when we talked about how Netflix is using Python to do amazing things. And following Roy, we have Mahmoud Hashemi, from Pay Pal and he was on show 4 talking about Enterprize Python. So, let's hear from these guys, Roy is up first.

03:33 Roy Rapaport: What kind of developers do I get to hire and interview. Typically, I work with and interview two kinds of Python people: devops people focusing on orchestration and operations in an AWS environment of a large ecosystem, and people who can use Python to build solutions to some of the problems that arise in operating in these sorts of large ecosystems, so that's both ad hoc Python use to solve these sort of 5 to 10 minutes sort of problem and architecting a Python based system to for example auto discover SSL certificates in a large distributed environment like Netflix is for example, and alert us when some would expire, which was actually the first project that I got to be responsible for when I became a part of the engineering organization here at Netflix.

04:19 Mahmoud Hashemi: HI, my name is Mahmoud Hashemi, I am lead developer of Python infrastructure at PayPal and I am also the presenter of Enterprise software with Python coming soon from O'Reilly. My code is at GitHub.com/mahmoud. Dedicated listeners may recognize my voice episode number 4 of Talk Python To Me and it's great to be back on the show. Question #1: What kind of Python devs do I work with and interview. So I work with Python infrastructure engineers. Now software infrastructure is the foundation of all sorts of other software development, from web to back end to batch to automation and tools. To do well you have to have personal experience developing in two or more of those categories.

05:10 For the past year or so my team had been adjoint to the Pay Pal application security team and that's actually who I am hiring for right now. So a little plug, if you have at least 5 years of industry experience, and want to get in some ultra high performance Pythons security work, shoot me an email at mahmoud@paypal.com. All that said, one of my services on the Python infrastructure team is also performing phone and in person interviews for Pay Pal teams looking to expand their Python talent through hiring. So I hire for a lot of teams in other words. So just check out the Pay Pal careers page and if you see Python mentioned in the job description then there is a good chance I'll be doing one of the interviews.

05:57 Lorena Mesa: Hi Michael. So a quick intro to me and why I am going to be answering the questions I am answering. Hi, my name is Lorena Mesa, I am a junior on the platform team at Sprout Social here in Chicago. I am going to be addressing the questions that are geared towards the quote unquote experts or rather the person who is participating in doing the interviews for candidates on our team. So as a junior I've recently been added into the team for the interviewing at Sprout. And I think one of the things that is kind of interesting is that we'll come to talk about is what does it mean to use Python at Sprout and really who are the types of candidates we have come in. I myself came into programming being- I first started programming in grad school using R to structure my data and do what I needed to for my grad research and I then went on to explore more on my own, did an immersion program and now I am with my first software engineering position.

06:58 So the way we use Python at Sprout Social, we use Python in a few ways; the biggest way we use Python is we use for our API. We have a Django API that really glues all the data together and we take all the data that's been stored, that's been shaped into the formats that it needs to be from our Java services and is then repurposed into whatever format we need, and return it to our web client. So the predominant use for Python is going to be more in tune with web development. We do have some back end services that are written in Python but the bulk of that of our backend services are going to be Java. So any heavy data lifting is going to be predominantly there.

07:40 That being said, we do have a lot of internal tooling that is written in Python so you know, we obviously use Python to glue together some process that need to be automated so be tools that help developers, make their lives easier, if you are just exploring some data you know, I think people opt to use Python as their first language just for scripting and getting things done, or getting their 8:05 writing an initial prototype for something. And then also we do have Python we do use Fab which is for Python to do some operations work. So the type of people that I work with include web development backend service folks and then we do have an in house data scientist.

08:30 Adylzan Khashtamov: Hello Michael, thank you very much for your wonderful podcast and for letting me be a part of your cool project. So the first question is what kind of Python devs do you work with and interview? So currently we are at the biggest online travel agency in Kazahstan and our system is completely written in Python. Consequently, it means that we are looking for web developers in Python, but also because of the amount of data generated from our users is enormous, it's huge, we also should hire people who can work with this data organize and make sense from these data sets. Fortunately, Python is also the first class citizen in this area as well. So we are looking for web developers and we are looking for people with the knowledge of statistics and with the working knowledge of Python, how to connect statistics and Python and make something cool.

09:35 Now let's hear from Greg Langston from Connectria Hosting in St Louis, Missouri.

09:35 Greg Langston: At Connectria we've engaged with many different types of developers, we engage with small mum and pap style shops and also 9:49 companies. Our customers often have development teams already built into their existing processes so with most of the UI built on their side most of our work has been in developing back end services, API, integrations, and work flow automation. That's because our customers typically are partnering with us to increase efficiencies in their existing deployment pipelines, to introduce some new efficiencies in their devops continuous integration or deployment models. That being said, we also have several projects mostly written in Flask or Pyramide that integrate with our inventory and monitoring systems, with some UI components built into a microservice architecture using Docker.

10:35 We often look for candidates who may have experience with working with infrastructure as code, cloud platform modules such as AWS, this requires experience with the AWS client package for Python or some other cloud platforms STKs. We often take a cloud infrastructure orchestration approach to our development which involves understanding infrastructure components such as load balancers and data bases. So for us, having the ability to build and develop those back end services and APIs towards that orchestrational goal is absolutely critical.

11:15 And finally, let's hear from Shawn Milochik:

11:15 Shawn Milochic: For about six years I hired web application developers for a startup that provides payment solutions for clinical trials. We use a lot of Python, Django, use a lot of third party APIs, and our work was directly customer facing.

11:35 Michael Kennedy: The second question I asked everybody was: what is the most important piece of experience that you look for in a candidate?

11:42 Roy Rapaport: If I had to narrow down to most important piece of experience I would look for it would be a real production experience at some reasonable scale. Not so much in terms of size, in terms of number of machines or all that, but more in terms of mindset and orientation. I want to see a focus on building things well, automating where possible and having a long term view of the systems you put in place. And I look for time that you have applied productive laziness to solve a problem.

12:11 Mahmoud Hashemi: So, the most important fundamental skills I look for are closely related to experience environmental fluidity, and personal learning ability. Now what those mean? So as for environmental fluidity, well specifically Pay Pal uses a lot of Linux so I look for candidates that can demonstrate familiarity at the council, interacting with the operating system. While I don't usually give candidates complex algorithm and questions at the spot during interviews, I do log them into Pay Pal's test servers and have them do a little bit of basic debugging. For the experienced people, you can almost feel them relaxing into a familiar environment. For the inexperienced the terminal can be an optly named dark and scary place.

12:57 Either way, the command line is a foundational technology critical to enterprise work and I really feel it's not going away any time soon, so lack of command line comfort is a big yellow flag especially when Linux is so wide spread and easy to experiment with on your won. The other characteristic I look for is learning ability. The skills to read and research naturally absorbing and arranging information automatically because I've been burned once or twice by talented people who were honestly just too lazy to read the docs or too intimidated to read the source code. You don't have to do it in big gulps but you do need to do it consistently. So I usually look what candidates have done to learn lately, like the sources they have been consulting and so forth.

13:43 So for instance, I say, "Show me some source code you've written and what you've learned during that process. Or, "Tell me about project that sounds much simpler than it actually was." You know, I might ask, "What sites taught you the web?" Or, "Have you seen any not worthy source code lately?" "Have you read any good books?" On the other hand, I watch out for Hacker Newsy types. Some lurking is fine but I want someone ready to outgrow that consumption and commodification of the creative work that is software that gets into lead with press releases of Hacker News. Someone who is ready to dedicate time to actually create the sorts of things that others will upload.

14:31 Lorena Mesa: I think the most important piece of experience is how they approach problems and break it down and turn something that may have seem otherwise impossible or very difficult, how they broke that down into just smaller and more manageable pieces. After all, coding is about problem solving and we are building recipes to automate tests, automate things, to make an ecosystem that can work in harmony. So when they come in and they talk about problems that they have solved and how they went about doing it, really I am trying to see what was the original problem what were the ways they went about trying to solve the problem what worked and what didn't and also where is the passion, what really drives them. I think it's really important to have people who are excited about what they do and are ok when thing fail. Because, at the end of the day, you are going to try things and they might not work. But you need to have the ability to then sit down, understand what went wrong and move forward to iterate and try something else. Demonstrate problem solving I definitely think it's the most important piece of experience.

15:43 Adylzan Khashtamov: I think there are two important pieces. The first one is responsibility and the second one is maturity. Why? From my point of view and from my experience, usually people who actually have never worked before for example students, they don't lack technical skills they lack social skills. And social skills are crucial, they lack of communicability, they lack of responsibility, maturity, because majority of people think that programmers and programming in particular is an anti social and programmers are people who actually are staring at the screens all day long and writing some magical code and doing something magical. But I think that programming is a social skill as well because in order to create something, in order to create something valuable you have to communicate with many people, you have to communicate with managers, you have to communicate with your team members, you should be a good team player, you should communicate with customers, also you should communicate with the end users of your products in order to get feedback. You should be responsible for everything. You should write effectively, you should express your thoughts concisely in written form, I think writing is also very crucial skill for programmers, I mean not writing code but writing articles, express your thoughts and stuff like that. And if a person is responsible and mature, it's a great pleasure to work with him.

17:28 Greg Langston: We particularly look for experiences where developer has taken a task and research community packages that can be imported in order to complete the objective faster than if they were to write vanilla code in place of that. The reality of today is code economy with OpenSource technologies is that codes and packages likely have already been written to assist in completing particular tasks and that means mostly the challenge becomes than a kind of assembling those components together with some of your own custom development to solve the particular problem. I don't often encourage writing code without consulting existing packages, we use packages such as Request and Flask for instance quite heavily, it's just less necessary then when Python was first developed. We also require that developers know how to set up a virtual environment, in order to create isolation of their package needs which can then further be built onto continuous deployment practices. From a code centric's perspective, we look for things such as good practices around exception handling, logging, security best practices in your code, those types of things. Any code written must follow good standards around those types of things, unexpected data formats, bad Json structures, all those types of things, so those are critical tools that we review.

19:12 Shawn Milochic: The most important experience I always look for in a candidate is not knowledge with a particular piece of technology but curiosity and demonstrating that they are actually interested in programming. Anything they have not done for school or work, someone that even if they didn't get a job as a programmer they would have to write code because they are compelled to do it, it's part of who they are.

19:40 [music]

19:40 This episode is brought to you by Hired. Hired is a two-sided, curated marketplace that connects the world's knowledge workers to the best opportunities.

19:40 Each offer you receive has salary and equity presented right up front and you can view the offers to accept or reject them before you even talk to the company.

19:40 Typical candidates receive 5 or more offers in just the first week and there are no obligations ever.

19:40 Sounds awesome, doesn't it? Well did I mention the signing bonus? Everyone who accepts a job from Hired gets a $2,000 signing bonus. And, as Talk Python listeners, it get's way sweeter! Use the link hired.com/talkpythontome and Hired will double the signing bonus to $4,000!

19:40 Opportunity is knocking, visit hired.com/talkpythontome and answer the call.

19:40 [music]

20:52 Michael Kennedy: The third question I put to our panelists is really trying to dig into what you can bring and what you can work on when you don't yet have your fist job or at least your first job in Python. So, if I'm in school or I'm moving into the programming but I don't yet have a developer job what can I work on to show that I have some reasonable experience? Maybe something like an OpenSorce project, maybe you could create a little side project or mobile phone app or web site or even participate in some of these code competitions thinking of things like Kaggle, data science competitions and so on. So, let's hear what they have to say, Roy is up first.

21:34 Roy Rapaport: If someone is applying for the first job what can they present to show that they have the right skills and education. Well, first of all we don't care that much about education, necessarily we'll talk about that in moment, but it's also worth noting that it depends on your definition of what first job is. Netflix is pretty public about not hiring people straight out of college typically, we don't hire interns, but if you are talking about someone's first interaction with us, we love to see OpenSource contributions and side projects obviously I think looking at mobile phone apps is an interesting example of what you might be passionate about which is interesting, even if the actual skills related to that are not particularly relevant to us. We tend to think of skills as something you can pick up pretty easily anyway. I haven't seen much by way of code competitions so I don't know how relevant they would be. What we tend to go for really is take on exercises as part of the recruiting process which let people solve some sort of problem we've had run into in the comfort of their own home, on their own equipment, using their own time, that's actually worked really well for us.

22:41 Mahmoud Hashemi: Question #3. New hires and side projects. When it comes to first jobs and concrete projects, I'll look at anything and everything. With new developers it's just so rare to get someone with anything interesting in their GitHUb or Bitbucket account, and so that's definitely my first stop. Software is increasingly portfolio driven these days and so I do get a bit discouraged when I see developer that doesn't have a GitHub or a site or even a blog. Because you can cram for an interview and you can exaggerate on the resume but you can't really fake a meaningful commit timeline going back a year or two. Even if it's just some school projects I at least could see that you've tried and you have some basic git skills. Contributions to other projects tell a good story too. You were probably using the project for something, being productive. You took the time to understand how it worked, you were able to communicate and lived up to someone else's standards.

23:36 That's stressful for a lot of people for sure but that's got a lot in common with enterprise development too. Sci projects and apps that run in environment similar to our own are very interesting. Mobile phone apps- not as much. Side note here- code competitions and scores from Redit, Stack overflow and Hacker News are ok but honestly those skills don't really apply that well internally at the big company. In my experience, it can be sort of hit or miss this may make me kind of unpopular but some people who have high scores, high karma on those sites can tend to be a little bit impatient and unhelpful with people inside the company and not to mention the internal processes. That said, if you are someone who helps out with mentorship or gets an IRC and answers beginner questions, that can be great, definitely mention that sort of thing in your interview.

24:29 Lorena Mesa: So when it kind of comes in, ways that they can try to showcase their skillset I mean we have college, we have different types of learning, formal or not, but what I think I get most excited about is more side projects. Maybe someone started with something that isn't within their day to day role, and they got really excited about it. And then they went out there and they wanted to learn more. So if someone have a side project like they were curious perhaps about how they could take a problem that maybe perhaps all developers have which is writing good documentation. Did they recognize the need that it's somewhat painful and they are like, "Ok, how can I write a tool that will make this better?" And they then turn that into a side project. Or, maybe they are curious about machine learning and they have started a Coursera class and they are taking a project or an algorithm into their own and applying it to your project.

25:24 I think ways that we learn you know you are passionate about exploring and learning outside and creating your own projects, that really demonstrates initiative and really demonstrates a curiosity that I think is fundamental for coding. So side projects are really exciting to me and also, show the creativity of a developer. And then also Open Source contributions are pretty exciting as well. Particularly if someone has used a tool a lot and they start recognizing the holes, or a problems or even if they are saying the way I learned how to use the project is I went through inserted bugs adding documentation to an Open Source project. Adding documentation to a project might seem like a small and insignificant thing but actually can be quite useful and important. So really, side projects they may seem to be overwhelming or large but there is other ways you can go about doing it, finding a favorite tool and finding ways to contribute. So I think those are two ways that are really interesting that people can demonstrate things they have worked on.

26:27 Another thing that is definitely not required but I am intrigued by is seeing how people give back to the community at large. For example, are they participating, are they doing a mentoring program, do they act as a mentor. The Chicago Python user group has a mentoring program which I really not heard many user groups doing, so it's exciting to see someone say they have a love for something and they are ready to give back, be it as a mentor or even as a mentee are they participating in one. Giving talks at local user groups, giving talks at conferences- I think all those things are very interesting as well because it's going to show how they will create community within your work, environment and how they will be contributing to the procurement of knowledge in days to come. It's important to have people who are looking to edge the conversation rather than just participating in the conversation as it exists.

27:22 Adylzan Khashtamov: I think that everything matters. The more the better. Because, from my point of view and my experience hiring developers in Kazahstan. Usually people who are applying for their first job don't have anything to present, that's why it is very difficult to make right decision based on this. It starts to look like a Russian rulet, you start to rely on your intuition which is not the good decision making technique and I would say that it is better to make mistake and not hire a good person rather than hire wrong person. And that's why if a no previous job experience candidate show his interest in terms of Open Source contributions, side projects etc, it is definitely a big plus for him and I would highly recommend to explore a wide range of Open Source projects. It is not the only best way to explore other programming code but also opportunity to share your code and get feedback from more experienced developers which is very important in real projects where the majority of your time you spend with working with other experienced developers and working with the legacy code. So take a look at Django, take a look at Flask, Request, SQLAlchemy, and tons of excellent OpenSource projects and start exploring and contributing to them.

28:52 Greg Langston: Practical experience with the language is critical, but we do desire candidates to have some formal education in software development, typically 1- 2 years. That training can often establish good development habits such as setting up good unit tests, exception handling, logging practices, and commenting standards. We like when candidates can present examples of that practical experience with the language, sample code snippets, those types of things. We want to see what the packages they have imported, how they interact with those, and just to see what the forethought was for choosing those packages over other options because there are many in the pip space. We want to see how the developer things about their code just as much as the code itself. We also require submission of unit tests as part of our view in the process, test your own development is a critical part of our current development workflow and it greatly improves our ability to resolve bugs quickly and discover as many of those as possible earlier in the process. Given that we support cloud platforms for our customers and those platforms are constantly evolving, we look for individuals who are capable of being flexible and dynamic as a language in framework needs evolve. The reality is that tomorrow we may need different skillet for another language entirely, so we look for individuals who love to learn and pick up new skills and are energetic and work well with others.

30:31 Shawn Milochic: What I look for in general is anything that they did for themselves, for fun. So, sure, code competitions, personal websites, little things they did like project euler type things, OpenSource contributions are always good especially if it's related to the types of things we are doing or even if it's not because if there is anyone an entry level person could have fooled around with something that no one else on the team knows and can enhance the team. Everyone can learn from everyone else.

30:31 [music]

30:31 This episode is brought to you by Snap CI, the only hosted, cloud-based continuous integration and delivery [CI/CD] solution that offers multi-stage pipelines as a built-in feature.

30:31 Snap CI is built to follow best practices like automated builds, testing before integration, and provides high visibility into who's doing what.

30:31 Just connect Snap to your GitHub repo and it automatically builds your first pipeline for you. It's simple enough for those new to [CI] continuous integration, and powerful enough to run dozens of parallel pipelines. More Reliable and frequent releases: that's Snap.

30:31 For a free, no obligation, 30-day trial just go to snap.ci/talkpython.

30:31 [music]

32:01 Michael Kennedy: This fourth question is really about trying to compare and contrast the value of long term education like 4 year college degrees with hands on experience. I hear from a lot of people that it's hard to get your first job out of college, because people say you don't have any experience. But at the same time, if you don't have a college degree maybe that's a stumbling block. So I ask everyone, if they were presented with two candidates, one has a really solid computer science degree but not a lot of experience, because they have still been in school, and the other with little formal education but a couple of years of experience working with the technology they are looking for, like maybe you are hiring for a Python web job and this person has experience working with Flask and SQLAlchemy, and it's all running through engine x and load balancing, all that kind of stuff, they have been doing that for two years but they only graduated high school, how would you balance these two candidates?

33:09 Roy Rapaport: Well, you know, I am never going to decline solid formal education of course, solid formal education is great and especially as you solve bigger and bigger problems it can become more and more relevant. Big O notation for example is maybe not that relevant to you as you try to figure out how to search for a given IP address and follow with a 1000 lines, but around the time that you try to generalize this to a Netflix scale you are probably going to really want to care about the difference between say ON and ON log 33:39 for example. That said, we really are interested in problem solvers, and really what we are talking about that is practical problem solvers. And I rather see you having solved real world problems rather than gotten good grades, if I am in the position of having to pick just one of these two options. And again, since we don't look at people's first job necessarily, the educational background for us is not particularly relevant in our both recruiting process but also in terms of deciding who we are going to give offers to. I have people on my team who don't have degrees, I have people on my team with PhDs and I have no idea where the people with the PhDs got their degrees from, it's never been relevant.

34:21 Mahmoud Hashemi: Question #4: degrees. So this is an interesting question. Which one do I value more or which one does the company value more? Because management marketability really comes into it with large companies. Out of the three hires I truly consider my star hires none of them has the CS degree. One was electrical engineering, the other was math and the final one was comparative literature. The things they all had in common though were just a voracious reading habit and extensive hours spent in some Python or posix environment. Computer science degrees aren't really necessary for the majority of enterprise work, like I said before environmental fluidity and willingness to read docs are far more important. A couple of CS classes will get you some useful vocabulary and teach you time complexity though. As for the concept of a degree in general, if you want to work at a big company it's a lot easier to get in with a bachelor's. You don't need much more than that. The right two years of experience can go a long way in terms of skills development, but in terms of management marketability no degree raises a lot of eyebrows in those cases.

35:32 So in short, for enterprise software, my observation is that a computer science degree is about as good an a non CS degree plus two years of experience, which is about as good as no degree plus 4-5 years of experience at least. Most professors and academic programs don't give you all that much pragmatic knowledge, even if it's pretty old stuff like Emacs and terminal usage. Basically everything is about how you approach your assignments and free time; if you push beyond the requirements, you will learn much more. So if you are in school, take an operating systems class, take a networking class, maybe take a cripto class, you'll learn almost as much running a shared server in your dorm. Now, both of those are different types of knowledge so consider doing both. If you are not in school, Coursera and other options are far better than nothing. And I'd like to hear about those experiences in interviews.

36:30 Lorena Mesa: For candidates that have computer science degree and those who don't, I don't actually have a preference of one over the other. I think that something that's unique or maybe interesting about Sprout, we are a startup, we are in our 5th year here in Chicago, and I think startups are interesting spaces because you get people with a broader background. At least that's been my experience. And when you have people who come from different backgrounds maybe someone who is both technical and was lawyer, or maybe someone came from a PhD that wasn't in computer science and went into programming, or maybe someone who was a musician and came into that- speaking of which, these are all examples of people I know and work with that have these types of backgrounds. These are some of the most exciting people to work with because their ways of breaking in and approaching problems they come from different points.

37:18 So, definitely I think having the ability to speak about fundamentals is somewhat non negotiable, you need to understand how to talk about the complexity of an algorithm and understand its performance so you need to understand different types of data structures and what is applicable in appropriate situation. And, I think for people who don't have formal education, these are the type of things that you can learn over time or you can take the initiative to learn on your own. So while a computer science degree is definitely a good indicator of someone's skillset, it's not the end goal. We are looking for a nice combination of things so for people who don't have formal education I think what is important is that they are learning and how is it they are doing it.

38:08 Are they participating in an online learning, are they in different user groups looking for mentors, are they reading text books at home, I think all of that is really important and really for people who don't have the formal education, that you can see people who are doing this when they get to the technical interview and they are breaking the problems and you get to see how they think and how they evaluate the code and how they intend to solve the problem. So, in a nutshell, both are great backgrounds, but I think it's how you continue that learning for people who don't have formal education that's going to help compensate for some of the knowledge you are missing.

38:47 Adylzan Khashtamov: So the answer is- it depends. For example if a person with a solid computer science degree would also have a solid knowledge in a particular technology stack or domain and vice versa. And definitely I would prefer that person. But, real world situation is a little bit harder than this. And, I think that currently formal education is not a number one priority in terms of making decision to hire candidate or not. But what really matters, is the experience, because experienced person reduces cost for business, experience lowers entry barriers. Experience also reduces the likelyhood of technical depth which this person can introduce by decreasing the productivity of other developers. And nowadays the gap between people who have formal computer science education and those people who don't have is decreasing with the introduction of moocs. What is mooc? It's a massive open online course. And platforms like Coursera, like Udacity, like EDX, MIT and so on, they provide tons of high quality courses, free of charge. And I think that we are living a very special life where education is becoming cheap and affordable for everybody with the access to the internet, so you can go over there and start learning something new with thousands of students that' a great opportunity. You can collaborate with them and you can help each other.

40:32 Greg Langston: If I had to choose between someone with a solid degree and no experience and someone with a couple of years of experience but no degree, that really wouldn't give me enough information because neither one of those things tells me how a person id going to be in my group. If they are going to be a culture fit, if they are going to continue to learn, how much they really love what they do. One question I always like to ask is, "If we made you an offer, and you had an identical offer from another company, same money same everything, why would you choose us?" I want someone who appreciates the environment of a startup and the type of people they would be working with, the people that are interviewing them who talk about themselves during the interview to give them an idea of what we are like, and the main thing is a culture fit, even if they didn't know Python. And beyond that, someone who really loves what they do is willing to always learn, is always curious, is going to bring their ideas and things they discover out in the OpenSource world into our company, and make everyone better and make our product better. That is what I am looking for and the education and experience just don't matter.

41:48 Michael Kennedy: The last question was an option one- I didn't want to put anybody on the spot so I said answer if you want, otherwise just skip it, and a couple of our panelists answered it. And that question was, "Why did you hire the last person you hired?" And I asked this because it's great to talk in theory about comparing formal education versus experience versus side projects, but action often speak louder than words and in this case, I thought maybe we would find something interesting.

42:22 Roy Rapaport: Well, you know, that's actually kind of funny; the last person I hired was someone who was interviewed for a manger position for us actually we hired him for a position as an engineer because as we looked at what he was really interested in doing, he was passionate about technical innovation, and was very strong in that area, he was interviewing for a manager position because he had been a manager before and was used to working in environments where the way you got to be technically innovated was to be a manager because it's an IC individual contributor all you got to do is implement the technical decisions of your management chain. In our environment it's actually exactly the opposite of that so the IC position was a great fit for us and it was a great fit for him and his passion and what he was actually interested in doing. And that has worked out really well for us and him so far.

43:07 Mahmoud Hashemi: So I gave my most recent thumbs up to a developer who knew Django and was willing to continue working with it. But most importantly, he could start on site before the 43:17 closed. You see, in large companies, empty seats have expiration dates, and everyone is willing to gamble. Because, somebody is better than nobody and even if they are worst than nobody, then you still get a backfill when they leave or are pushed out. But this developer seems to be working out and I only helped hire him for another team so let me talk about one other one. The last engineer I hired onto my team was recruited over the course of 2 years; I met him at PyCon 2012, and we collaborated on a few OpenSource projects and eventually, the planets aligned and he was able to join my team. Real recruiting can be a really long process, not the least of which is do to weird budgeting and bureaucracy, so don't get frustrated if you are still waiting on email reply from me and do network and meet people and go to conferences and play that long game. One last piece of advice I usually give people as well is to if you are really just looking for a job you want to get into the mix with industry just make sure that your LinkedIn profile exists and says that you are a software engineer and then just change your location to the Bay area or Seattle or some other tech hub.

44:32 Adylzan Khashtamov: Actually, I hired the person just recently, about 2 weeks ago, this person is a young smart guy without actual strong computer science formal education but with some little bit of working experience. Previously he only worked in one place as a web developer, but the thing which makes him different from others is his passion for knowledge. I was amazed by his habit of reading books on a regular basis he explores and learns different moocs, we just recently took the mooc from Cursera which is called "Learning how to learn", I highly recommend this course to listeners, take a look at this course, it's very good. And he is interested not only in computer related subjects, but other stuff, like scientific, non-fiction and so on. So and also he reads tons of code from different Open Source projects and making some contributions to them. Because I think that because technology is a rapidly growing area everybody should stay hungry and be curious because we are lucky enough to be a part of something which can change people's lives in a better way and the idea of creating something that can be used by millions of people is fascinating and people who are fascinated are willing to continuously improve themselves. And I wish everybody to be fascinated and improve their life and themselves in a better way. Thank you very much.

46:25 Shawn Milochic: Rather than discuss why I hired any individual, I'd rather talk about why I have hired my favorite people that I have hired. And, there are many recurrent reasons and among them are they are interested in OpenSource, they are interested in the community that brings us the tools that we use every day. They keep themselves up to date, they follow key people on Twitter, they are on mailing lists, they go to conferences, they follow blogs, they are interested in doing things the right way. They follow the community's best practices, they use linters, they pay attention to style because it doesn't matter to a certain extent if the code works it matters that I have to be able to read it, I have to be able to maintain it. Maintainability is by far the number one most important thing in programming in my opinion, and someone who is not satisfied with meeting the requirements someone who wants to make it better, they want to do it the right way, and I don't mean an ivory tower unattainable perfection that it has to be done exactly text book perfectly, just it's done well enough that it's easy to maintain, it's easy for other people to understand they are not taking shortcuts they leave the code better than they have found it and they are someone whose code review you want to do and someone you want to talk to at lunch about code and just generally hang out with.

47:59 Michael Kennedy: Well, that's it for the questions. I really learned a lot and I think I've got a better picture of what it takes to be successful getting a developer jobs these days in general and getting a Python job in particular. So thanks so much to the panelists who contributed to this show. Before we wrap things up, Lorena and Mahmoud had a few parting thoughts for us.

48:25 Lorena Mesa: Ok, that is my questions, and I guess just kind of as a last bit I did like this question about advice new developers looking for their first job. So, my advice to anyone who is a new developer looking for their first job, especially if you are someone who feels perhaps like you shouldn't be in the field, imposter syndrome is rampant and I think many people feel like imposters, even if you've been coding since you were 8. I think what's really important is to understand the work environment you are going to be going into, first of all knowing the problem space that you will be working in, is that interesting to you, if you are a bit indifferent and are looking for just that first job in general, understand how you are as a person who codes, how do you learn best- as a new developer if you are a junior and this is your first time looking for a development job, it's going to be important that you have good support. So are there seniors that you compare with, are there seniors who will mentor you, is the place you are working- do they participate with lunch talks, do they care about hosting meetups, there is a few ways you can engage this or you know, you can even ask to do a coffee with the company that you are possibly going to be interviewing at. All of these things are really good ways if you can do a coffee with a developer on the team, if you can go to their space when they are having a meetup, all these are great ways to learn more about the team and the environment at large there. So really, best advice- be true to who you are, know what you need in order to succeed so set yourself up for success, find the team that matches your style of learning. I hope that helps, Thank you so much.

50:11 Mahmoud Hashemi: Thanks for doing this Michael, I really can't thank you enough, I'm so excited to just start sending people links to this, instead of having to go through this whole rant every single time. It varies a lot from person to person but really, everything that put in here is pretty generalizable stuff and it's what I say to basically everyone who asks me this questions. So, really good work, really good idea for a show, I am really looking forward what the other people have to say. All right, have a good day/night. Bye bye.

50:11 This has been another episode of Talk Python To Me.

50:11 Thank you to all of our panelists who participated in today's show. It has been sponsored by Hired and Snap CI.

50:11 Are you looking for a new job or a considering a change? As always:

50:11 Hired wants to help you find your next big thing. Visit hired.com/talkpythontome to get 5 or more offers with salary and equity right up front and a special listener signing bonus of $4,000 USD.

50:11 Snap CI is modern continuous integration and delivery. Build, test, and deploy your code directly from github, all in your browser with debugging, docker, and parallelism included. Try them for free at snap.ci/talkpython

50:11 You can find the links from the show at talkpython.fm/episodes/show/41

50:11 Be sure to subscribe to the show. Open your favorite podcatcher and search for Python. We should be right at the top. You can also find the iTunes and direct RSS feeds in the footer on the website.

50:11 Our theme music is Developers Developers Developers by Cory Smith, who goes by Smixx. You can hear the entire song on our website.

50:11 This is your host, Michael Kennedy. Thanks for listening!

50:11 Smixx, take us out of here.

Back to show page
Talk Python's Mastodon Michael Kennedy's Mastodon