This is the first in a series of my answers to Jurgen Appelo's list of
100 Interview Questions for Software Developers.
Jurgen is a software development manager and
CIO at
ISM eCompany, according to
his About page.
The list is not intended to be a "one-size-fits-all, every developer must know the correct answer to all questions" list.
Instead, Jurgen notes:
The key is to ask challenging questions that enable you to distinguish the smart software developers from the moronic mandrills.
...
This list covers most of the knowledge areas as defined by the Software Engineering Body of Knowledge.
Of course, if you're just looking for brilliant programmers, you may want to limit the topics to [the]
Construction, Algorithms, Data Structures and Testing [sections of the list].
And if you're looking for architects, you can just consider the questions under the headings
Requirements, Functional Design and Technical Design.
But whatever you do, keep this in mind:
For most of the questions in this list there are no right and wrong answers!
Keeping that in mind, I thought it would be fun for me to provide my off-the-top-of-my-head answers, as if I had not
prepared for the interview at all. The format will first list the question, my initial response (to start
the discussion), followed by a place I might have looked for further information had I seen the questions
and prepared before answering them.
Though I hope otherwise, I may fall flat on my face. Be nice, and enjoy.
Requirements
- Can you name a number of non-functional (or quality) requirements?
I'd first mention performance and security, from the user's perspective. I'd then mention meeting minimum
requirements for metrics like code coverage in testing and dependencies in our design. I don't consider
code quality out-of-order when it comes to requirements.
The non-functional requirements
page at Wikipedia lists several examples. Notable exceptions from my quickie-response: accessibility,
documentation, portability. There are several that are listed that I consider covered by what I've listed,
but I missed some that caused me to say
- What is your advice when a customer wants high performance, high usability and high security?
My "advice" starts with the questions: "What do you consider X to be?" where X belongs to the set {"high performance",
"high usability", "high security"}. I might offer that I consider "high performance"
to be a misnomer, as it's either acceptable or not, and that unless the customer defines it, I don't
know how we'd even attempt to measure something as vague as "usability."
I'm not sure where I'd prepare for this question. Any suggestions are appreciated.
- Can you name a number of different techniques for specifying requirements? What works best in which case?
I can name several: tell me in person, tell me over email, tell me over IM or
over the phone.
I know that's not what you're looking for. You're looking for answers like "use cases." It all boils down to the same.
I might even mention "unit tests" here. That's part of the spec, as far as I'm concerned, and for almost
any software I write for myself, it's the only way I specify requirements (except for maybe a very informal to-do
list).
Face-to-face works best in most cases, I'd gather.
The answer after doing some research: ¡Ay, ay, ay, no me gusta! I didn't see this coming. There are a number of things that could qualify as answers
(Prototyping, Storyboards, Modeling, ..., State transitions) that I knew about beforehand. I thought to include
none of them.
- What is requirements tracing? What is backward tracing vs. forward tracing?
My response? "I don't know anything about requirements tracing. I'm willing to learn."
Once again, Wikipedia tells us about requirements
traceability, illuminating the issue for us.
- Which tools do you like to use for keeping track of requirements?
I generally use a combination of a text file and emails, as far as the client is concerned. If it's a larger
system, I'll use something like Sharepoint, Basecamp,
or another system that performs a similar function. I have no preferences, because nothing I've ever used
compares to a simple list. If it does, it's equally useful.
I don't know that I'd say I like any of them. In reality I prefer a simple to-do list that I encode in
tests (insofar as I'm capable of writing the tests) and knock them out one-by-one.
- How do you treat changing requirements? Are they good or bad? Why?
I don't give a value judgement on changing requirements: they are inevitable. They can be good or bad depending on
how the client handles them.
I always try to let the client know: I can do X amount in Y timeframe. You asked for Z total.
Here's an estimate for each item in Z, pick X from it for our current Y timeframe. I'll get back to you every Y timeframe to show a demo,
and you can choose X from the remaining Z again (with changes based on circumstances if required). Feel free
to fire me when you have enough out of Z that's functional. (Ok, I probably wouldn't say the last sentence in those
terms, but I'd find a way to say it, if for no other reason than to sell them the rest of the process.)
As far as looking it up before the interview: I've review Agile literature. Searching any of the agile yahoo groups
for the question at hand ought to be good enough.
- How do you search and find requirements? What are possible sources?
"What do you mean?" would be my response. I really don't know. What does searching and finding requirements mean?
Does it mean figuring out how to do requirements that I don't know how to accomplish?
If so, the first step is Google. In
the rare event no one that I can find has had my problem, I'll go traipsing through the source code if
it's available.
Clearly, I don't know where to start here.
- How do you prioritize requirements? Do you know different techniques?
I rarely prioritize requirements. I let the customer decide. I give them a relative cost of implementing
X requirement vs. implementing Y requirement, and let them decide. If Y requires X, then I tell them
so.
I know of different techniques - take "random" for example. I don't know what they might be called. But I
cannot think of anything better, even if it were decreed as a Top 10 Commandment for Prioritizing Requirements.
No web search for this comes to mind. I'd review a couple of process management books if I had no clue.
This seems to be a decent discussion,
if you must have one from me from a cursory browse.
- Can you name the responsibilities of the user, the customer and the developer in the
requirements process?
The user will be the person using the software, versus the customer being the one who pays for its development.
I hate that distinction. The developer programs it. Responsibilities? In my ideal organization, I'd have:
-
Developers working with the Customer to manage requirements.
-
Developers working with the User to make the application work for them regardless of the Customer (I've
seen too many projects where the User had to use whatever the Customer purchased, even
if the purchase was ... little yellow bus-ish.)
-
Customer/User having daily meetings with the developer
-
Developer making the best software he/she can given the constraints.
Again, I don't know where I'd look this up before being asked. Suggestions (again, as always) are most welcome.
- What do you do with requirements that are incomplete or incomprehensible?
I send an email saying "I don't understand what you mean. Please read the very small attached book
and get back to me."
Just kidding, of course (at least in most cases. I've been recently tempted to send that exact email, as it happens.)
I just ask them to clarify. If I don't have contact with the customer, I ask the intermediary to clarify or
get clarification.
Outside reading: Agile, and hopefully other processes for some compare and contrast.
I think these are decent answers to start a discussion with. If you're a hiring manager, what do you say? Would you show me the door, or keep me around for a while longer?
It's not quite as hard as
Steve Yegge's list
of things to know (I'll get to that eventually), but it's a good (and more well-rounded!) list nevertheless.
How would you answer the
Requirements questions?
Hey! Why don't you make your life easier and subscribe to the full post
or short blurb RSS feed? I'm so confident you'll love my smelly pasta plate
wisdom that I'm offering a no-strings-attached, lifetime money back guarantee!
Leave a comment
hahaha... this was pretty funny. I think I would have flubbed these questions much worse than you. But I put in a lot of effort and sincerity for my users, which I think people notice.
Also, like the caveat that there is no right or wrong answer, but really the responses they elicit will give the asker some insight into the person's character and attitude, which is (some might say) a very big factor. A wise interviewEE can also use his/her responses to figure out if the interviewER is a moron or not (I've been reading The Daily WTF quite a bit).
Posted by
KaJun
on May 27, 2010 at 07:22 PM UTC - 6 hrs
This is a great list of questions to initiate intelligent discussion around software development...
But it's only a small fraction of the larger interview process to ensure you get quality candidates on board. I actually put together a blog outlining interview strategies:
http://www.customsoftwarebypreston.com/software-de...Thanks,
Brett
Posted by Brett Miller
on Nov 07, 2010 at 08:52 AM UTC - 6 hrs
This is a great list of questions to initiate intelligent discussion around software development...
But it's only a small fraction of the larger interview process to ensure you get quality candidates on board. I actually put together a blog outlining interview strategies:
http://www.customsoftwarebypreston.com/software-de...Thanks,
Brett
Posted by Brett Miller
on Nov 07, 2010 at 08:52 AM UTC - 6 hrs
Sam,
Look - I am not a developer, just a manager trying to replace a hell of a good developer I lost the natural food chain. I grabbed the 100 questions as one angle of looking at understanding replacement knowledge. I went on the web and went through all of the EMOtional chatter about how unfair these questions were as a whole - I throughly enjoyed you going out there and answering and the common sense answers in each catergory you gave - good for you - good for us. now if you need a job, I know of this opportunity....
Posted by Jeff
on Aug 03, 2011 at 06:38 PM UTC - 6 hrs
display your answers in simple language every one can't understand your language
Posted by ajay
on Aug 22, 2011 at 08:30 AM UTC - 6 hrs
Answer to question 8)
I would give highest priority to all the task in critical path, next priority would go to 2 critical path and so on.
See "Critical path Method" in Wiki to understand this.
Posted by Trilok
on Sep 08, 2011 at 11:23 AM UTC - 6 hrs
My strategy - If you can't convince them, confuse them!
Posted by rich4321
on Aug 04, 2012 at 03:33 AM UTC - 6 hrs
What motivates you?
Posted by Marco Serrano
on Feb 11, 2013 at 07:36 PM UTC - 6 hrs
@Marco: Curiosity and problem solving are fun for me, which is why I got into this field.
Money doesn't hurt either, though I'd say it's a secondary motivator as opposed to the primary ones I listed above.
Posted by
Sammy Larbi
on Feb 12, 2013 at 07:20 AM UTC - 6 hrs
Visit the following link to learn some commonly asked Interview Questions for the job or vacancy of Software Engineer or Software/Web/Desktop Application Developer. It also includes OOP, C#, ASP.NET, ADO.NET and SQL Interview Questions.
http://sohaiby.blogspot.com/2013/09/software-engin...
Posted by
Sohaib Ahmed
on Oct 12, 2013 at 04:04 PM UTC - 6 hrs
it's being useful. thanx alot
Posted by dreamland
on Apr 13, 2017 at 04:59 AM UTC - 6 hrs
Very useful tips for those people who are going to give their first interview. I have also read nice blog on interview which let you know that is your interview can you get the Job and very insightful. Keep Sharing.
Posted by
atul
on Aug 30, 2017 at 02:29 AM UTC - 6 hrs
Bonjour,
Nice to be visiting your blog again, it has been months for me. Well this article that i’ve been waited for so long.
I have a report with a List region inside the body, and then a table inside the List Region.
I like what I see!
However, when the logical page has many records, the table header will show on page 1, but disappear on page 2 and beyond.
<a href="
https://asha24.com/blog/plsql-interview-questions-...">
Is there a way to keep </a> the table header showing permanently?
I have already tried all the General/Row Header options on both the table and the List Region, to no avail. It might be that I have the table inside a List, preventing something.
Awesome! Thanks for putting this all in one place. Very useful!
Shukran,
Ajeeth Kapoor
Posted by Ajeeth Kapoor
on Apr 21, 2018 at 05:33 AM UTC - 6 hrs
Greetings Mate,
Brilliant article, glad I slogged through the Answering the 100 Interview Questions for Software Developers: Requirements it seems that a whole lot of the details really come back to from my past project.
why is saying c programming is a based on java?
Very useful article, if I run into challenges along the way, I will share them here.
Obrigado,
Irene Hynes
Posted by Irene Hynes
on May 07, 2018 at 12:26 AM UTC - 6 hrs
Awesome article. It is so detailed and well formatted that i enjoyed reading it as well as get some new information too.
Posted by mulesoft training videos
on Oct 31, 2018 at 01:24 AM UTC - 6 hrs
Leave a comment