Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Since the same question was closed in Stackoverflow, I am reposting it here

What is generally expected out of a candidate when the interviewer asks for "Design a [insert system]"? i.e. is it expected to draw UML diagrams, database table structure(if any) ?

share|improve this question
add comment

closed as primarily opinion-based by gnat, Bart van Ingen Schenau, GlenH7, MichaelT, Dan Pichelman Mar 29 at 3:12

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

2 Answers

Depending on the level and nature of the position, I could imagine more than a few different things:

If this is a senior developer or architect role then I'd imagine the main expectations would be to see which -abilities are placed in priority,e.g. scalability, maintainability, availability, flexibility, etc. What process could be drafted to mix what could be bought off the shelf versus built in-house to determine what kind of mix is optimal? What budget size, time line and head count would be involved in the project to bring this system to life? Would this be replacing any existing systems and if so what data migration strategies would be used?

Those would be more for the big Enterprise-y systems while I could also imagine on a much smaller scale a similar question. For example, being asked to write a rather simple script to move data from a database into a flat file. Granted this shouldn't be hard to map out what to do the key is to see what questions come up, what assumptions get made, and what does and doesn't get communicated in making the design. Is this presumed to run manually by a person initiating the process, set up as a scheduled task, or is there another system that such a script would be placed to run?

At a general level, I suspect what is being asked is how well does one know the parts of the requested system, communicate the details from high to low level, and understand how this could be done well. In a sense this is a bit of an ego check question as it isn't hard to see how some people may fall into the trap of assuming a lot in giving an answer while others may do nearly the opposite and assume almost nothing that either extreme could be dangerous to my mind. The ability to convey competency in clarifying what is really being asked and how fast would it be wanted would be the main things I'd notice.

share|improve this answer
add comment

It depends on the position you're interviewing for, the intention of the interviewer, the nature of the question, and possibly the room you're in. If there is any doubt, you really ought to ask the interviewer to clarify.

If you're interviewing for a position as a database developer, for example, it's pretty likely that the interviewer is asking you to provide a data model of some sort. Whether that is in the form of UML or a formal ERD or just a description of the tables you'd create is an open question. It would potentially make sense to ask the interviewer what they'd prefer or it may make sense to just pick whatever approach you're more comfortable with. If there is no white board in the room, for example, it can be a bit of a challenge to write down a formal ERD on the pad of paper you brought for taking notes-- the interview may flow more freely if you just discuss the design verbally. If the job description specifies that you need to be fluent in UML and there is a white board in the room, on the other hand, it's probably best to produce UML.

If you're interviewing for a position as a Java architect, on the other hand, it's a lot more likely that they're interested in an architecture diagram and a diagram of the classes you'd likely create. Again, whether that takes the form of a UML diagram, a diagram using a more simplistic set of symbols, or just a verbal discussion of the components in the system, the Java classes you'd create, and what those classes would do will depend on the interview.

If you're not sure what the interviewer wants (and assuming you're comfortable producing whatever the interviewer asks for), the best answer is always to ask for clarification. The interviewer will appreciate that you're not going to just run off and start doing something when the requirements are unclear. And they'll generally tell you exactly what they're looking for.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.