views:

8519

answers:

8

I've seen some good questions and answers on here regarding developer interview questions, but what software architects and systems architects? I'm looking for a few essential questions that you feel every software and/or systems architect must know.

+1  A: 

I think this is a good one: "What do you feel every software and/or systems architect must know?"

That will let you figure out if the candidate has the same views on what is important that what you think is important in your organization.

Hallgrim
That's an interesting approach, I guess.
Kilhoffer
+1  A: 

This post has some good situational questions. As for "essential" questions, thats subjective.

+2  A: 
  1. When should you use interfaces and when abstract classes?
  2. Inheritance or Composition?
  3. Give him a task to model the classes for a simple system like "Managing the neighborhood video rental store". Goal: See how he thinks and does he applies randmoly some design patterns. Then review the design and if you don't throw away more than 50% of the classes he designed, then he is good :)
m_pGladiator
+2  A: 

What's the difference between Interface oriented, Object oriented, and Aspect oriented design/programming? What problems are they each suited for? When have you used them?

Tom Carr
+7  A: 

We usually present them with a problem, and ask them to solve it by diagramming out their solution and talking through it with us. The problem is usually something like a massive report-generation job queue that must support scalability issues, error handling, logging, multiple threads from multiple computers accessing a common database, persistence (and computers going down), alerting users when the job is done, etc. Getting responses to all of these tells us how experienced the person is.

Mike Comstock
A: 

Two favourites from our interview pack.

  1. Imagine you have a webserver that serves from a local disk. Currently it handles 600 requests per second. What would you expect to happen if you switched to a NAS solution such as NFS?
  2. One of the interactive features of our website is a polling system. Basically a page can have a set of radio buttons against a set of choices, and a submit button. Clicking the submit button submits the selected user choice to the server, and presents a page of results. How would you approach the design of your back end system? What if a database couldn’t be used in the design?
Rob Wells
number 2 there is a bit weak. asking design of the back end and no database is good, but the page with a submit button is weak staging in my opinion.
This is what we do. We are talking on a major web site with *huge* volumes when people are asked to vote via other, heavily associated, media. (-:
Rob Wells
+6  A: 

In my opinion there is nothing better than a concrete problem. The one that I would like best has many variations and is also appropriate for a senior developer. Namely present some vague requirements for a small application and ask for a table layout for that application. You are looking at everything from what questions they ask you, to how good their solution is, to how they deal with your throwing in unexpected requirements.

This gets you down to a concrete design issue very quickly. While it seems database specific it is not, because a table layout is fairly easily translated to a set of classes - it is the same design skill. No matter what solution they come up with you'll be able to introduce requirements they haven't thought of. Particularly since they are working on the board. It is open-ended, so you can drill as far as you want and then move on.

An example of an application you might ask about is the following. "My boss is a big fantasy baseball fan. He wants us to build a reporting application so he can track statistics on various players. It will be your job to layout the tables we will report off of, and generate the canned reports. I'll take care of getting the data into that format. Let's start with the tables you want to use."

If you think this problem is too simple, try solving it with several friends critiquing you. You'll be surprised with how many issues they can come up with. Everything from, "What happens if my data load fails in the middle? Will your schema let me re-run it?" to "Players get traded from year to year." to (if you're nasty) complications that can come when players change their names.

A: 

What design patterns have you used in building the systems you've designed and how well did they work out? Which design patterns do you find to be the most useful? Of the design patterns you know, which was the most complicated to learn?

What kind of infrastructure have you gotten into the trenches and really gotten to know well? Here expect a laundry list of any kind of environmental setting but this may be important as if the person will be designing web applications and all they have ever done in embedded systems, you may have an initial hurdle of how well does this person know about web stuff.

JB King