Just wondering if anyone could help me with a question I've been asked in a couple of interviews recently, in regards to system development.
Both time it's been soething of a highlevel question and I just wasn't sure what type of things the interviewer would be looking for in an answer.
The question is basically:-
"Explain to me how you would go about inplementing a user interface application, what would you need to do?"
I mean do they mean, I need to find out what data the user needs to input into the system, how I would design the system (UML), what model I would use (MVC etc), it seems such an open question, I haven't really known how to answer it in a quick'ish way but also in a 'professional' way.
Open ended questions are great. They give you the opportunity to choose the direction. I think what you wrote here is the initial answer. Start with listing the high level steps/phases as you did. If the interviewer doesn't cut you off, go back through another pass where you add some more detail.
Keith Seller wrote:
I mean do they mean, I need to find out what data the user needs to input into the system, how I would design the system (UML), what model I would use (MVC etc)
Did you ask the interviewer to elaborate? It is not just a test. You are talking to someone. When you are not sure, ask.
Keith Seller wrote:
it seems such an open question, I haven't really known how to answer it in a quick'ish way but also in a 'professional' way.
First of all, there is nothing wrong with an open question. In fact, it is better -- as you can steer the conversation to some of your good points. And why would you want a "quickish" answer? Don't you want to get into a conversation?
As Henry had suggested, an interview is a two way process. If you are not sure, get it clarified before you go on to answer. From the above question, I think the interviewer is trying to find out a) you understand the software development life cycle SDLC b) you don't just jump to coding without going through the much needed steps like analysing the requirements, identifying gaps in the requirements, high level & detailed design, documentation, writing or thinking about the test cases, etc.
-- Firstly, you would gather or analyse the high level requirements. Go through the usecases, etc. Identify any gaps in the business requirements doco, etc.
-- You will start to work on your high level design and then detailed design documents.
-- The high level design should address the objectives, assumptions, risks, high level architecture (MVC, etc), technology and framework selection, design alternatives, pros and cons of each alternative, and why a particular alternative was chosen?, high level system or platform requirements, non functional requirements like logging, auditing, SLA's (Service Level Agreements like response times, 24x7 availability), raising alarms for the service dockets, etc.
-- The detailed design should address the functional requirements in more detail with UML diagrams like sequence diagrams, class diagrams, etc.
Logical and physical ER (Entity Relationship) diagrams, etc. Anything that is required for you to start coding.
-- Once the high level and detailed designs are signed off, you would be starting your implementation phase. In this phase, you would
-- start planning and writing the unit tests, setting up your IDE, setting up your database, etc.
-- you will be selecting a typical usecase from the requirements document and start building the full end to end vertical slice. This will not
only validate your high level design, detailed design, and technology/framework selection, but also highlights any gaps or major issues early
enough in the development phase. This will also make your successive usecases easier to implement.
Thanks for that guys, maybe my answer wasn't as much woffle as I first thought, cheers.
Just quickly I had another qestion on a telephone technical interview in which I was asked
"Using a JSP/Servlet frontend, how would I cope with a a complicated form?"
I asked for clarification on what the interviewer meant by "compicated" and he said
"Well if you had a form with a lot of parameters on it, how would you deal with it? You wouldn't just post everythign to the Servlet?"
I was a bit confussed because I don't think I have ever come across a situation where you wouldn't want the data within a form to be posted to teh Servlet. I said you could do some pre-Servlet logic in a Filter maye to check for blank values and such but just got a kind of
"Mmm... OK." (next question) type of response.