Interview Questions Every Developer should ask an Employer

Technorati Tags:

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.


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...
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...
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".
Left by club penguin cheats on Jul 06, 2009 12:54 AM

# This is really some awesome advice. Keep it up, my colleagues would love this.

Requesting Gravatar...
This is really some awesome advice. Keep it up, my colleagues would love this. Never would have thought of some of these questions.
Left by Earn Money Online on Jul 29, 2009 2:52 PM

# re: Interview Questions Every Developer should ask an Employer

Requesting Gravatar...
About 5+ years ago, I attended an interview (after office hours) in a start-up. The CTO proudly proclaimed that they practiced Extreme Programming (at that time XP was all the rage). I remembered him saying that the programmers were expected to work at least 60 hours a week. This violated the XP recommendation by 50%, which is to have programmers work 40 hours a week to make sure they remain fresh and alert.
Left by Offshore Oil Rig Jobs on Oct 24, 2009 11:01 AM

Your comment:

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