Today we’re diving into the .NET interview. Our guest today is Bobby Davis. Bobby ran into trouble finding fresh talent for his companies so he decided to start training developers himself, which is how Coder Foundry was formed. Bobby helps students win the technical interview because Coder Foundry does a lot of work on job placement and technical interview training as well.
Hi, Bobby. I gave a little overview but tell us what you were up to before you started Coder Foundry and also about the companies you're running.
I'm running two software companies; one is a standard .NET consultant shop where we write custom code for developers or for other projects. We also launched a product company, Advanced Fraud Solutions. We do check and credit card fraud and work for 500 customers in about 48 states.
For all of these things we needed technical talent. We started interviewing people and we realized that there's a dearth of talent, but a lot of people didn't have great interview skills.
So from that we launched Coder Foundry so that we could better train people for jobs, and hopefully place them into work and bring some of that talent into our other companies.
And you've hired some Coder Foundry graduates?
Absolutely. I think Bill Gates said it best, “Eat your own dog food.” We put them through the paces for 12 weeks and then find out if they're a good fit for either Core Techs or Advanced Fraud.
In general do they do as well as people who have a ton of experience or as well as CS graduates at least?
There's a myth I think. When you say “I'm looking for a junior or mid-level or a senior developer.” A lot of times in the small companies you need people that code and really the mid-level is how much you want to pay for someone.
Here at CoreTechs and Advanced Fraud Solutions, once they come on board they're expected to perform their duties. Everyone we've hired out of Coder Foundry is still with us, we haven’t fired anyone so that means that Coder Foundry is working for us and it's working for them.
Tell us a little bit about the roles that you have hired developers for when you are hiring for your other two companies.
What we're trying to do is get the classic mid-level to senior level .NET developer. Deeper than that, we're looking for people that have actually built things before and that means they can build things for us. So the pure CS graduate that’s coming out with zero real world development experience, we're not too interested in.
We need people that have come out of a bootcamp or something like that, that have actually built applications from the ground up.
Does it mean that you have to have had a job as a developer before you apply?
No. The six people we hired out of Coder Foundry before didn't have any previous development experience.
On a more general high level view, what types of companies typically hire .NET developers?
.NET is what we call “in the enterprise” so you're looking at large corporations all the way down to medium-size businesses. They're typically running .NET to build a web application or sometimes what we call an internal line of business apps or even their products that are facing customers. When we help people on the solution side, they’re building our products that we sell to customers.
What is the culture at a company like that? Is it similar or different than other dev shops?
I don't think there's any difference between the cultures. I think that all of the companies are different, but we do know and you could probably talk to a lot of development managers, you do have to have a culture that's conducive to development.
A lot of developers want to work from home or have some flexibility in their schedule. No .NET developers, or any developers, ever want to have to be in the office at 8:01 or “you're in trouble.” They want have flexible schedules, things like free lunch Fridays, which we do here, free soda; there's just a lot of things.
So the culture, regardless of where you're at, what everyone's doing is similar because we need to attract them.
All development jobs are highly sought after but .NET is a particularly highly sought after skill. Why do you think there's that talent gap right now?
Colleges typically don't teach .NET; they don't do it.
What do they teach? If you get access to a programming language in a CS undergraduate program, what are you learning?
Usually Java. You may see some other scripting things like PHP or Perl. That's what they're learning and it's not that you can't transition over to C #. But if I can pick between the two, I'll pick a person who knows C # versus "Hey I know Java but I can transition to it."
Let’s dive into some specific interview tips. Tell us first about some of the top mistakes that you've seen developers make during a technical interview in your experience.
The biggest thing from the technical interview, apart from obviously being on time and all those kinds of things that are standard interview fare, is that they don't talk about things they have built. We train them at Coder Foundry to talk about their code. What interviewers do - and we all do it because we don't have a lot of time – we’ll go to the internet and say "give me the top 50 C # interview questions." We print that off and walk in a room with it and we start going down what I call “code trivia.” And you're testing, “Can he remember the answers to all of these questions?”
What happens to a lot of developers is the interviewer may ask a question that is completely obvious to them but it's not obvious to a developer or maybe it’s asked wrong and because they miss one of the code trivia questions, they can't work there. The interviewer says, “I can’t recommend them to work here, he didn’t know this…”
What we teach them to do is take control of the interview by saying "Hey that's a great question, let me tell you how I solved that with an application I wrote and let's talk about the application I built."
What are some of the more theoretical topics that someone could expect to see in a .NET interview?
I can guarantee you, you can go to any .NET interview, they're going to ask you "Give me the four access modifiers in an object" and so the answers are Private, Public, etc. So while some may be able to answer that, it still doesn't demonstrate whether you can code or not. The better answer would be "You know, I was creating an object last week and I had to make this Public because I wanted the person that’s consuming this to be able to call the function. And I made it Private because I didn't want people to call this when they consume that function." That way you demonstrate a knowledge about the topics instead of just answering them with an academic answer.
Have you noticed that a technical interview will change with the company? Does a company usually ask about the technologies that they specifically use? How can you predict what subset of questions you're going to be asked?
Our goal, what we teach our students, is that you're going to run into what I call code trivia; that's what's going to happen. Your job is to not answer all of those questions by making them talk about the application that you’ve created. So when they ask "Tell us about date-time value types…" what they're really looking for is "Do you understand that date-times can’t be null and if they are null, how do you make them nullable in .NET?"
That's what we're asking, and a lot of times a junior guy may know the answer to that but he doesn't know how to relate his experience to that question. What he can say is "Well, I wrote this bug tracker application and we had date-times. Let me show you how I handled date-times in that application and maybe that will answer your question." So that’s how you answer it, but also you should demonstrate better knowledge.
What if you get stuck in a situation where the interviewer is asking you about a specific .NET skill that you do not have or you don't even know the word that they're talking about?
What you can do is you still point him back to your applications and say "That's a great question. I don't know the answer to that directly." And then hopefully you can somehow relate the answer to something you've already done. Because really what we're looking for is can you build an application? And a lot of times, the short term memory of the 50 .NET interview questions doesn't really demonstrate if you can build an app or not. Maybe we can say that's a good determiner. Most interviewers walk out of the interview and say "Hey, I think he can do it. I’m pretty sure he can, he seems smart, let's hire him," but you don't know for sure. It'd be better to say "Hey, you know what? He built this application, I like it."
What should a new developer bring to their first interview? Do you bring a resume? Do you bring your portfolio? What's important?
The biggest thing is if you're coming out of a coding bootcamp whether it’s Coder Foundry or anywhere else and you've never had a development job, your resume isn't going to help you a whole lot. But you definitely have to bring it because that's what we do; we interview people with their resumes.
But you need to have a portfolio that you can show them and typically the best way to do that is to bring a laptop or say, “Can I show you my portfolio online and show you these apps that I've built?" If you did that before they even asked you a C# interview question, you might circumvent the whole process and get them talking about your app and talking about your code.
How long have you been in this industry?
In Coder Foundry we've only done this about 18 months but with .NET I've been interviewing people since we opened up in 2002, so it's been a long time.
Have you noticed that the interview has changed over the last 10 years, like gone from being more whiteboarding to maybe more practical like taking people through your portfolio?
A lot of times what they're doing with the whiteboarding is they're trying to get you to talk about code. If they want you to whiteboard a particular solution, you can do that; a lot of times you have to do that. We teach our people here that you have to learn how to draw a database diagram on a whiteboard. You have to learn how to diagram an object and those types of things. So you need to be able to do that.
The other thing that we’re seeing our employers do is give out code tests which is again a way to understand, can you code or not.
When you bring your portfolio, what types of projects should you start with? Are there things that you shouldn't show an employer? Are there types of projects that you should make sure that you show a future employer?
I think anything that demonstrates what I call “the three phases of an app,” which is something that's secured, something that uses a database and something that's displayed on a web application.
So you have all three phases of the application development - and that could be anything. You could secure your movie collection or you could secure anything like that. What you shouldn't show is someone's system that you built that’s proprietary. That's like "Hey, we're looking at this other person's system.” That's not cool. I would show my own things that I have built.
If you're going into a .NET interview and you have an application in a different language, is it still worth showing off?
But demonstrating your code definitely is what you need to do; just talk about your code.
That was one of my questions because I hear a lot, especially in the boot camp world, if you go to a Ruby on Rails bootcamp, you can still get a job in Python or a different object-oriented programming language. Is .NET similar in that way or will it take a little bit longer?
I don't think so. You can move around, there's a ton of opportunities. The ecosystem for .NET right now is big anyway that you're not going to usually have to make those decisions. But if you do, in a project you're going to look at Java, so C # and Java are very similar, I think you can make the transition easily.
How does Coder Foundry specifically prepare students for those technical interviews? Are you doing constant whiteboarding or do you reserve it to a part of the week?
Every Monday is an interview session so we interview every student every Monday. We've broken our curriculum into 1-week sprints and not only do they have to technical interview, they also have to demonstrate and show us what they've built during the last week; and that's like a check in with the development manager, so we teach them how their job’s going to be. That allows them to get used to demonstrating software, talking about code and then answering tough and technical questions.
Then we grade them every Monday and say how they did, what they missed. We get increasingly harder and more technical with the interviews as we go through the 12 weeks.
When do they start interviewing? When are they ready to start going on to their first interviews? Or should you start before if you think you're ready?
What we try to do is in week 9, we've already engaged some students in interviews. We try to line up - and it doesn't always work out this way depending on who's hiring or not - but we try to have interviews before they graduate.
What are some of the companies that Coder Foundry students have gone on to work at?
There have been a lot of them, just all over the board. In North Carolina we have a lot of companies you may not know the name of but they're in manufacturing, they're in medical services, also we’ve hired a bunch. We've worked at financial companies, financial institutions have hired them so they're all over the board, and we’re actively engaged with companies trying to find them opportunities.
If somebody wants to learn more interview tips from you, I see the link of your profile below, where should they go?
CoderFoundry.com/newjob gives them all the tips and the things that we're doing in the 12-week class to help them pass a technical interview. The main thing we teach them is talk about your code, you've got to have a portfolio. Then we also go into things like how you should dress.
How should you dress?
A kid came into an interview and he's wearing flip-flops. That's casual, and it's a little too casual for an interview setting. What we counsel students on is that you can't over dress for an interview, really, except maybe if you’re in a tuxedo. A suit and tie works, a blazer and a tie works and if you don’t know how to pick an ensemble, just go with a white shirt or ask someone in your circle and say "Hey, what should I wear?" Ties work, even if the organization's innovative, to be casual.