Interview Questions Every Developer should ask an Employer

If you're like me and have been in the IT industry for 5+ years (me 10), you start to realize that the grass is not always greener on the other side in a lot of shops out there.  Before I get to the interview questions, I want to start by outlining the general types of shops and types of problems one can encounter in development shops.

Characteristics of when the grass may NOT be greener:

a) Poor Management or difficult culture & people

    micro managers who have to have their hands in every aspect and make every decision for a developer

    bad decision makers

  • non-technical oriented business makers making technical decisions
  • egoistic/cocky type of attitudes that disrupt a development environment
  • Manager plays favoritism, and dish out an unequal workload always where the "trash" always gets dumped on one particular person

b) Code & run environments that suck the life out of a developer both at work and at home in order to meet unrealistic deadlines and fix slop as the result

c) Unrealistic Deadlines based on absolutely no solid business requirements or plan of action (iterations to pad # of requests, etc.)

d) Environment is so hard core & bleeding edge to the point of missing deadlines and ultimately failing the business  (cutting edge is something different and is completely acceptable)

   examples of bleeding edge:

  • using ASP.NET MVC Preview for a  huge division-wide company white-box portal for a company with 10,000 employees or more
  • Using a lot of beta software for production applications
  • Using Silverlight (when it was first beta) to create business applications

  examples of cutting edge (based on the time of this post):

  • Using the new VS 2008 4 months after it came out which is perfectly acceptable
  • Using .NET 3.5 after it is out of beta
  • Using C# 3.0 features
  • Using WCF
  • using IE 8 non-beta or IE 7

  examples of non-cutting edge:

  • Using the .NET 2.0 framework
  • Using MS AJAX controls
  • Using VS 2005
  • Using IE 6 (this is behind the times now, even if the naive view/excuse that "most of our users are still using IE6" when most of them most likely have IE 7 and have had it for a while now)

The list just goes on and on which is typical these days in IT unless you have been lucky enough to find that blended balance of good code and good "normal" people which is very rare.

Before I move on, here are characteristics of the type of shops in IT that you could land in:

1) Shops that believe in purchasing heavy 3rd Party "Can do everything for you with less code"

Result is, you never really learn solid OOP & ORM the right way, because you're not really programming at a high level or expected to and spending more time focused on fixing bugs, figuring out work arounds/hacks to the heavy beats and limitations within.

2) Shops that know using good ORM, design patterns, have good OOP team standards, etc. and have had success coding custom applications

You learn true OOP, ORM, and other fundamentals about development that everyone should learn, and how things "really" work in code, which allows you to be able not only to support and build anything but how to build it effectively for any type of business need in a good timeframe for the business

3) Mom & Pop shops which only have around 1-2 developers and 1-2 Network Administrators and a small # of employees (100 or less). 

          Typically you get to "do everything" but the downside is that you ultimately "learn less" because you're running around "doing everything"

          This means you end up pretty much skimming the surface on a lot which looks nice on your resume for later, but not learning a lot in terms of core skills you need later such as OOP, or high level code as well as work extra hours for in many cases lower pay

4) Pure Code & Run shop:

  • Unrealistic & unspoken “magic” deadlines that seem to come up when managers feel like laying them on their developers with no real plan and excuse is because "business needed it yesterday"
  • Managers are constantly micro managing you and bugging you to hit those “magic” deadlines
  • Total disregard or lack of expectations on developers to use coding best practices, design patterns, and quality in their code. 
    • And lack of baked in time to overall  project timeline for any standards (code or testing) or thinking to take place
  • The mentality to "do whatever it takes" to get it done "fast as possible" and that users or the business don't care about design patterns, OOP, or unit testing
  • Deadlines are so rigid, that developers are working till 2am to not only get their code done, but hop around the spaghetti code that exists already in the entire application
  • No real test environment for developers or continuous integration or even good source control (subversion, or at least TFS)
  • Checked-in code to the source control repository never compiles.  This is a HUGE RED FLAG, STAY AWAY

The things you ultimately cannot control no matter how thorough you are in an interview are:

1) Outright lies given to you by the interviewer or managers to try to bait you.  Then you realize after you come aboard that half of it was not true, not even 10%.

example: We use design patterns, we have an n-layer/n-tiered architecture, and we also encourage unit testing and we do this in our applications.  You find out that none of this is true and in fact have not found one unit test or standard on unit tests, there is no business layer, you have not seen one design pattern (other than Enterprise Library) and the code is literally spaghetti (100 line methods, no OOP) etc.

2) The people you work with will be great people to work with and will remain generally team oriented, cooperative, friendly or the same that you interpreted during the time of the interview

    Typically, you really start to see the "real person" behind your interviewer approximately 6 months into your job when pressure gets tough and you are no longer that "new guy"

3) The company's stability will remain in good standing

    Even when an employer tells you the picture is rosy, that can change in the blink of an eye in today's corporate arena

4) Promises up front by the interviewer.  Do not count on them always coming true even when the interview reassures you that they will happen.

    They may not be “baiting” you, but they "could" be...so be careful how much you trust what you are hearing.  Try not to use this as part of your overall decision to take the offer.  You will most often just end up being disappointed when those do not materialize for whatever reasons.

    Example: The promise "that you will have a huge influence in how we drive standards and new ways of doing things".  That may or may not be true.

Now onto what I call my little interview flowchart for the interviewee. 

Before you start to ask the interviewer all of  yours questions first figure out what type of environment this so you can better filter the rest of your questions:

InterviewQuestionFlowchart

Questions Set #1

Are filling a new opening or an existing opening for this position?  If existing, what happened to the previous employee who was in this position?

  • You prefer to hear "new".  But if existing you don't want to hear "he wasn't a very good fit and couldn't get the job done".  It just rubs me the wrong way and personally this is a red flag when an employer says this whether it's true or not

What applications will I mainly be working on and what are the team goals for the year and this position?  What about next year?

  • always know what you'll be working on (specifics) before you accept that offer.  You may end up regretting accepting the offer if you do not establish this answer now and know what you are getting yourself into

How do you test your applications outside of unit tests?

  • preferably you want a QA department in place

Do you have a flexible work schedule?  Can you wear jeans on Friday?

  • funny or unimportant to some as this may sound, it's important that you can work in a comfortable environment...it just makes it all the better.  You're at work every day so this is an important question that affects your schedule at work and outside work as well as shows flexibility in the culture

What is the team make-up.  Do you have a DBA, # of developers and what they are working on (win, web, and what specific apps), # of PMs if any, # of Architect leads if any, and so on

  • you want a well balanced team.  You don't want a situation where you're stuck doing it all unless you love slaving night and day

Will I be mainly working on custom win or web forms, web services, etc.?  If it's several, ask them what % on each and does that % change or usually on average typically stay that way

  • if it's mainly win forms and you love web forms, make a decision if  you're willing or would be happy with switching to win forms

Do all of your applications use an n-layer/n-tier approach where most of them have a standard Data Layer, Business Layer, Presentation Layer, and if required Service Layer?

  • if non of the interviewers have any idea what you are talking about, get through the interview but move on, this place probably not for you

How are you setting up the physical n-tiers in your applications?

  • If they ask what do you mean, then they don't know the difference between the concept of n-layer vs. n-tier.  There is a difference.  Most shops don't know but they should.  If not, that's ok but if they do, all the better for you

How do you currently load balance your bigger applications?

What .NET framework are your current applications on.  What percentage in each framework?

  • You want to aim at mostly .NET 2.0 + environments

Are you using the latest version of Visual Studio?

  • your preference should be a yes

Are you using any C# Generics?

  • you want to hear a yes on this one

Are you using LINQ, C# 3.0, or ASP.NET 3.5 code in your layers?

  • if yes, all the better.  Tells you they are on top of the latest and willing to use it

What type of objects are returned by your standard CRUD methods?  Are they Generic Collections, Typed DataSets, Custom Object itself, DataSets, Arrays or what?

  • If they tell you DataSets, this is a red flag and you don't want to code in an environment like this.  If they tell you DataSets are horrible for enterprise applications and inefficient, that is a good answer

Can you describe to me how you are enforcing separation of concerns in your applications?

  • again, if none of the interviewers have any idea what separation of concerns means... be very hesitant and probe more here

How do you feel about DataSets or Typed DataSets?

  • good code shops will not use them in their data layer for good reasons

What design patterns do you use and in what layers are they used and how?  Can you give me a real example in one of your applications where you are using x design pattern?

  • if they cannot answer this question or understand what design patterns are, most likely this place or team  is not for you

Do you use any Code Generation Tools?  If so, which and what kind of patterns do the templates provide?  Who does the code generation?

  • Hopefully there is not just one person doing all the code generation, that's not the best thing...but could be ok also depending on the environment

What source control software are you using?

  • if they are using VSS this place probably is not for you.  If using TFS that's better.  If using Subversion, that's also better

Do you have continuous integration/builds?  If yes, what tools are you using for that?

  • If they do not understand what  you mean, this may or may not be a good development shop.  But still probe for more and ask a question such as "Do all your solutions checked into source control have an expectation by developers to build, and to also WORK?".  Or ask do all your developers make sure that they get latest and compile before adding new code and then recompile and test again before checking their changes back into source control?

Is the environment a test driven development environment?  Do you use unit tests?  If the answer is yes, what unit test framework are you using?  Do you have a standard that most applications are required to have unit tests in place?  What layers do you unit test on?

  • If they do not do unit tests, it doesn't mean they are necessarily bad and not a decent shop where  you might be happy to work in, but you want an environment who knows that they are preferred or use them highly in their daily process
  • Do you use code generation or do you manually create your custom classes?  Is there some sort of team standard and patterns you use and expect through each layer overall?

What mark-up standards do you have in your Presentation layer?

  • If they don't understand after you hint a few times, such as saying "how is your CSS added and maintained in your .aspx pages or user controls?", then you should really ask more to probe how clean and how much quality and care they put into their Presentation Layer
  • You prefer an environment which expects their developers to stay away from inline CSS styles, and use CSS classes and ids

What code-behind standards do you have in your Presentation Layer?

  • If they don't know what you mean, or talk about reuse by calling methods from the business layer, or you plain out ask them how their logic is coded and they just say in the code behind and they don't make calls to a business layer, this place is not for you
  • If they tell you that methods are expected not to be a ton of lines long, this is a good thing (shows they do not want spaghetti code)

Do you use user controls in your Presentation Layer?  If answer is yes, can you give me an example of where you used one, for what application and what the user control is for?

  • tells you if they are advanced in asp.net somewhat and also that they care about organizing/separating code and long .aspx pages to make it more manageable

What is the philosophy around coding standards here and how the team is managed in terms of code expectations, deadlines, and gathering of requirements?

  • this will tell you a lot.  If they are a code & run, micro manager, drill sergeant type shop who expects results in 2 days but also with perfect code, etc.
  • You don't want to hear "whatever it takes to get it done".  You don't want to hear "we try to get it out there as soon as possible and it doesn't have to be perfect".  These are signs of a do it fast no, fix it later approach to development which leads to great pains and headaches

Do you use Stored Procedures for your CRUD operations?  If answer is yes, what's your philosophy around stored procedures?  Do you have a lot of them and are they really long & full of logic?

  • If they don't know what stored procedures are or don't use them, this place is most likely not for you
  • If they say the believe in putting most the logic in the stored proc first, that's a huge red flag.  This place is not for you
  • If they say that stored procedures for an application should perform discrete functions, basic CRUD operations where the SQL is not overly complex and just serves the basic crud operation, this is a good thing.  This tells you that you will not be spending countless hours trying to debug a mess of SQL inside very long stored procs and that the logic has been moved up to OOP more and maintained at that level

Do you provide any in-house training by either internal developers in development meetings or bring outside companies into train developers on topics?  If no, then what training do you provide such as books, online training packages that we can buy into, or external vendors who may train on ASP.NET or .NET code?

    • preferably you want to hear a yes on some sort of training.  If no internal that's fine but it would be preferable that they do bring in speakers which is a good thing
    • If they provide no training or materials (purchasing of books, etc.) this job may not be a good one as most environments offer some sort of training

Questions Set #2

Are filling a new opening or an existing opening for this position?  If existing, what happened to the previous employee who was in this position?

  • You want to hear "new".  But if existing you don't want to hear "he wasn't a very good fit and couldn't get the job done".  It just rubs me the wrong way and personally this is a red flag when an employer says this whether it's true or not

How do you test your applications outside of unit tests?

  • preferably you want a QA department in place

What applications will I mainly be working on and what are the team goals for the year and this position?  What about next year?

  • always know what you'll be working on (specifics) before you accept that offer.  You may end up regretting accepting the offer if you do not establish this answer now and know what you are getting yourself into

Do you have a flexible work schedule?  Can you wear jeans on Friday?

  • funny or unimportant to some as this may sound, it's important that you can work in a comfortable environment...it just makes it all the better.  You're at work every day so this is an important question that affects your schedule at work and outside work as well as shows flexibility in the culture

What .NET framework are your current applications on.  What percentage in each framework?

  • You want to aim at mostly .NET 2.0 + environments

Are you using the latest version of Visual Studio?

  • your preference should be a ye

What mark-up standards do you have in your Presentation layer?

  • If they don't understand after you hint a few times, such as saying "how is your CSS added and maintained in your .aspx pages or user controls?", then you should really ask more to probe how clean and how much quality and care they put into their Presentation Layer
  • You prefer an environment which expects their developers to stay away from inline CSS styles, and use CSS classes and ids

What code-behind standards do you have in your Presentation Layer?

  • If they don't know what you mean, or talk about reuse by calling methods from the business layer, or you plain out ask them how their logic is coded and they just say in the code behind and they don't make calls to a business layer, this place is not for you
  • If they tell you that methods are expected not to be a ton of lines long, this is a good thing (shows they do not want spaghetti code)

Do you use user controls in your Presentation Layer?  If answer is yes, can you give me an example of where you used one, for what application and what the user control is for?

  • tells you if they are advanced in asp.net somewhat and also that they care about organizing/separating code and long .aspx pages to make it more manageable

What is the philosophy around coding standards here and how the team is managed in terms of code expectations, deadlines, and gathering of requirements?

  • this will tell you a lot.  If they are a code & run, micro manager, drill sergeant type shop who expects results in 2 days but also with perfect code, etc.

Do you use Stored Procedures for your CRUD operations?  If answer is yes, what's your philosophy around stored procedures?  Do you have a lot of them and are they really long & full of logic?

  • If they don't know what stored procedures are or don't use them, this place is most likely not for you
  • If they say the believe in putting most the logic in the stored proc first, that's a huge red flag.  This place is not for you
  • If they say that stored procedures for an application should perform discrete functions, basic CRUD operations where the SQL is not overly complex and just serves the basic crud operation, this is a good thing.  This tells you that you will not be spending countless hours trying to debug a mess of SQL inside very long stored procs and that the logic has been moved up to OOP more and maintained at that level

What type of training do you provide?

  • If they provide no training or materials (purchasing of books, etc.) this job may not be a good one as most environments offer some sort of training

Have you had any struggles with any of your applications?  Why and for what specific applications?  How long have you had these pains?

  • this will tell you just how much maintenance or bug fixing or hacks you will have to do in  your job when you have a lot of 3rd party applications as the philosophy in those types of environments

 

While ultimately you can't predict much about the people & culture, you can try to do something about drilling that employer during the interviews to get as complete of a picture as possible about the technical environment & processes before accepting that final offer as long as that employer is telling you the "real" story.


  kick it on DotNetKicks.com 

Print | posted on Thursday, September 18, 2008 10:24 PM

Comments on this post

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...
You couldn't have posted this when I was actually looking for a job? :P ... Fortunately I get to wear jeans every day!
Left by SeanJA on Sep 19, 2008 11:52 AM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...
Thanks, I'm glad it "could" have helped.

Yes, jeans are very important to developers! :)
Left by Dave Schinkel on Sep 19, 2008 9:21 PM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...
Jeans on business casual Friday baby! Yessss, that is the way to go...
Left by elèyn on Sep 22, 2008 11:13 AM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...
Can I wear headphones?

Seriously, I never thought that this was ever a question that I needed to ask, until I was in a shop where the manager banned them. He thought it made us "unapproachable" and told us that it "hurt productivity".

Completely silly of course. Now, I understand that it can be difficult to get a proper working environment in a modern office. So, I do need to shut out some of the background noise. Additionally, there are times when I should be considered unapproachable! Development is challenging mental work, and requires concentration to get right. Tough to do if you are being interrupted constantly. Even if they are senior management.

The big question is: Do you want me to do the job that is asked of me? Then back up and let me do it.
Left by Edward on Dec 21, 2008 2:44 PM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...
Seriously,

Your English is bad. Your sentences are so twisted they must be read twice to get the sense of it.

I abandoned your blog post thinking that you'd not be one of the people I'd hire.
Left by florin on Dec 21, 2008 7:40 PM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...

@florin

Then don't read my posts. Second, that's a stupid statement to make especially when you do not back up your points and then reply with horrible English on your end. And then the attack saying you would not hire me because you think my English is bad? Let me ask you, do most developers have good English skills? 

I certainly think my writing skills are pretty decent as compared to a lot of developers out there.  Also, what was so horrible about my post taht you had to come here and reply like that in the way you worded that may I ask?  I hope you do not say things like that in a work environment because being aggressive & outright rude like you did just to prove a point doesn't really put you in a very good light my friend.  I think it's presented pretty intelligently in fact and I believe this post has been very useful to many who have been in interview situations where this might help.

Also, I might add that there some <li> elements that are not showing up in my post due to some unresolved Windows Live Writer issues. So maybe you should read it again and not take aim the way you did. There are hundreds of others who read this post just fine.

If you read posts for proper grammar, let me fill you in on a word of advice and reality. most bloggers do not pay attention to it. I actually do a much better job than most.

Left by Dave Schinkel on Dec 21, 2008 8:52 PM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...
"Your English is bad."

Muphry's Law strikes again.
Left by Edward on Dec 21, 2008 8:52 PM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...

@florin

I suggest maybe YOU work on your grammar as well:

>>>Your sentences are so twisted they must be read twice to get the sense of it.

Did you mean

>>>Your sentences are so twisted that they must be read twice in order to make sense of it.

I don't mind a personal email pointing out spelling errors or what not, and I do make a huge effort compared to many other blogs out there but to reply and then try to make myself look like an ass when you clearly cannot communicate yoruself (above sentences) in proper grammar that's pretty cocky.  If you're going to throw flames, or try to be an ass, just send me the email and we can go from there.  But to reply on my blog like you just did, was pretty downright unclassy.

Left by Dave Schinkel on Dec 21, 2008 8:57 PM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...
Also, I might add that there are quite a few <li> tags that are not rendering bullets correctly in my post above. Due to some unresolved rendering issues with Live Writer they do not show up and I have not been able to resolve this. So maybe you should read it again and not take aim the way you did and in the manor you presented yourself in your reply (outright rude & unconstructive flame reply). There are hundreds of others who read this post just fine.
Left by Dave Schinkel on Dec 21, 2008 9:01 PM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...

@Edward

Exactly and thank you Ed about the Murphy's Law that just took place here with Florin.

If you are going to shoot down a post of mine because of outright  ignorance and purposely state it in a way just to be an ass about it, then you better not f*** up as well in your post reply in order to try to make me look bad ;).  Also, I would never be so rude as to post anything like this on another blog "I would never hire you" because first off, I do not know that person. Second, especially if I'm wrong, then I certainly would not make statements like this.  But really, it's because in the end, I'm just not an ass like this guy is.  So Florin, go somewhere else.

I certainly entertain all points of view here...even points against mine which is the entire point of a blog (to help people but also to debate if necessary).  That's a blog.  But when you are going to sit there and just post an ignorant flame something like "I would not hire you" outright and then you are wrong to begin with and post an even worse example of English grammar, then that's just lame.

Live and learn I guess for florin.  Ignorance and passive aggressiveness is not the way to go in the corporate world Florin.  And guess what, on top of that, analyzing your over the top reply, I would not hire you just for the stupid and rude statements you just made out in the open when you can't even write a decent sentence yourself!

Left by Dave Schinkel on Dec 21, 2008 9:38 PM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...
>>>Edward

It's not silly. I would not ask it directly, but in fact if in an interview you could sneak this in by saying something like this:

You: "So how is the team culture & work environment like here ?"
Interviewer: "What do you mean exactly"
You: "well, for example, is it a pretty laid back programming environment, such as is it common that developers put on our headphones to tune out distractions while coding ?".

I think that's important to today's programming culture. We DO need a way to think clearly and have less distractions when we code. We are engineers and it is intense.

I do not think this is unreasonable as long as you feel that you have a good feeling the interview is going well and you have that "vibe" during the interview that it is going well for your side.
Left by Dave Schinkel on Dec 21, 2008 10:02 PM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...
@Dave

Right, I suppose I didn't mean "silly".

I guess I've just been lucky before in the other environments I'd worked in. No one ever cared before. I just thought that was pretty much standard.

Well, you know what happens when you "assume"...you make an ass of you and me. :)
Left by Edward on Dec 22, 2008 8:53 AM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...
@Edward

:P

What people and employers have to recognize is that the workplace culture shifts/changes every few years. What was the environment 5 years ago may not be the same today in terms of "what's normal". For instance, it's more common for pretty much all developers to have the expectation that we use headphones in every environment I've been so far. Employers need to recognize that this is the way developers just work these days because it's just that much more effective. So I think it's definitly important that one gets into an environment who doesn't care about that...unless the environment is just one which you have to hear everything all the time (your phone rings constantly) but even then, I argue that you should still be able to listen to music to tune out things that distract.

Also, there is proof that music makes people more productive. I'm not an advocate for putting music over the loudspeaker in the office (maybe on a plant floor) but personal headphones and music stimulates the mind, not just "tunes out" other sounds. Obviously I do not need research to tell me this but it's an interesting point if an employer debates the entire issue about listening to music. Most all employers I've seen really just know that this is what developers do, and same with graphic designers because that helps us get in the groove and become more productive. Honestly if an employer tells me I can't wear headphones and there is nothing in the environment which really gives a good reason why you can't, it's a huge turn off to me. It's too rigid for me and probably that's not a place I would want to work personally.
Left by Dave Schinkel on Dec 22, 2008 9:13 AM

Your comment:

 (will show your gravatar)
 
Please add 3 and 3 and type the answer here: