Interview questions - best way to learn the answers
-
AWdrius wrote:
but when working in team you need to know how certain patterns are named to make communication faster and more fluent.
in my 17 years of programming, i have never had a discussion with a co-worker about a "pattern".
double ditto.
Watched code never compiles.
-
I consider myself a good developer, fellow developers and managers as well as clients have told me the same. I code to standards and make sure it is done correctly. So why is it that in an interview when asked a question about code I get stumped and not able to answer it correctly? Am I the only one that does this? Can you BE a great developer without being able to tell you the definition of polymorphism or the like? I know I can do the work, very well. So what can I do to learn the definitions of things? I am thinking of making cue cards and going from there. They have helped me in the past. What do you think? What is the best way for you to learn? Also, do you know definitions and meanings of everything you do? Thanks
I have the same problem. What does seem to work in my experience interviewing is to talk through an example. Of course you need to make sure interviewer is ok with that. I think a well articulated example how and why you used polymorphism impresses them better than the textbook answer.
-
AWdrius wrote:
but when working in team you need to know how certain patterns are named to make communication faster and more fluent.
in my 17 years of programming, i have never had a discussion with a co-worker about a "pattern".
-
OK, this'll be a little long because this is a huge bug bear of mine. The only reason you can't explain something is that you don't understand it. I have never met anyone who was unable to explain something that they understood. I meet lots of people who think they understand things but can't explain them, and on pressing they discover they don't. I fall into this category myself quite often. I saw this so many times when lecturing. People could give the text book definition of something but couldn't explain it. It's the difference between knowing and understanding. I test knowledge by whether or not someone can "teach" it. So in an interview situation I would ask the person to "teach" me how something works, or why some technique can be handy. Testbook definitions are meaningless in that situation. If you find you are stumped when it comes to explaining polymorphism it's because a) you don't actually understand it and b) while compensating for not understanding it you are getting hung up on the text book definition. For the record, my significant other has exactly the same problem as you, also with Polymorphism funnily enough. Now, you can use techniques in your code without fully understanding them. The hundrends of libraries, tools, frameworks and principles etc that we have to use mean that we spend big chunks of our time using things that we only superficially know (but don't understand). I still need my cheat sheets for a significant number of technologies. And that's fine, it's fine with technologies and tools to not get them on a deep level. If I had someone sitting in front of me who had trouble remembering the exact syntax of how to mock an object using Rhino Mocks, It would be interesting, but I wouldn't care too much. If they couldn't explain in their own words why you would want to mock an object I'd be more concerned. If I had someone sitting in front of me who claimed to be good at OO but who couldn't teach me about polymorphism I'd be very concerned. The best way test whether you understand something is to find someone who doesn't understand it and try to teach them. If you feel you get stuck on Polymorphism then use it. Create a demo and show it to a work colleague. You will feel the click in your head when you move from knowledge to understanding (for me it's "duhn duhn" the sound from Law And Order, it might be different for you). Stick at it, but forget about memorising text books. -Richard
Hit any user to continue.
I agree +5 Well said...
-
Marc Clifton wrote:
Personally, what I find much more difficult, interesting, and useful, is learning the lingo of the domain, be it Wall St. or aeronautics or *cough* the entertainment sector, boatyards, etc.
The way I earn my living, this is essential. I don't suppose I write academic-standard code (but hey, it compiles, runs, and is stable :) ) but when I get a project, the first thing I do is really understand the client's business, to the point where I can sit in a management meeting and understand everything, jargon and all. I also interview all the users who are going to work on the system, because their understanding of the problem is often very different to management's at the fine detail level. This also gives the users some feeling of ownership in the project, and this can be hugely useful further down the road. Oops - wandered off topic there, sorry. :-O
Chris C-B wrote:
because their understanding of the problem is often very different to management's at the fine detail level.
That is SO true. And not just at the fine detail level, but even the large picture. When there's a difference of perception of the problem at the high level between management and users, that's a huge red flag for me that the project is going to end up in flames--the disconnect that management has with users typically portends that users will not, ultimately, be supportive of the effort. And therefore, my livelihood, haha.
Chris C-B wrote:
This also gives the users some feeling of ownership in the project, and this can be hugely useful further down the road.
Exactly! Marc
-
I bet you can be a great *solo* programmer/developer/engineer, but when working in team you need to know how certain patterns are named to make communication faster and more fluent. I was like you a couple of years ago, but then I spent some time learning a proper names for patters, structures, etc. and it is kinda worth knowing them (-. So keep up and you will eventually be there.
Trust is a weakness.
Funny enough I used to work in the past with two different Java teams. The first team was mostly from mediocre/least said/ or wannabe programmer individuals and every second word coming out their mouths was “pattern” pronounced with self-confidence. In the moment I released in what I’ve get into I ran from there like a Salma Hayek from Pete O'Hanlon. The second Java team was from complete professionals who had created a huge complicated and bug free system using Java. These guys learned me, the C++ and SQLServer zealot, to like some aspects of Java and to respect Oracle. And for three years working with them I’ve never heard the word “pattern”, ever.
The narrow specialist in the broad sense of the word is a complete idiot in the narrow sense of the word. Advertise here – minimum three posts per day are guaranteed.
-
AWdrius wrote:
but when working in team you need to know how certain patterns are named to make communication faster and more fluent.
in my 17 years of programming, i have never had a discussion with a co-worker about a "pattern".
Chris Losinger wrote:
i have never had a discussion with a co-worker about a "pattern".
this used to be true for me. but lately people in the office have really gotten into project runway.
modified on Monday, November 8, 2010 1:28 PM
-
OK, this'll be a little long because this is a huge bug bear of mine. The only reason you can't explain something is that you don't understand it. I have never met anyone who was unable to explain something that they understood. I meet lots of people who think they understand things but can't explain them, and on pressing they discover they don't. I fall into this category myself quite often. I saw this so many times when lecturing. People could give the text book definition of something but couldn't explain it. It's the difference between knowing and understanding. I test knowledge by whether or not someone can "teach" it. So in an interview situation I would ask the person to "teach" me how something works, or why some technique can be handy. Testbook definitions are meaningless in that situation. If you find you are stumped when it comes to explaining polymorphism it's because a) you don't actually understand it and b) while compensating for not understanding it you are getting hung up on the text book definition. For the record, my significant other has exactly the same problem as you, also with Polymorphism funnily enough. Now, you can use techniques in your code without fully understanding them. The hundrends of libraries, tools, frameworks and principles etc that we have to use mean that we spend big chunks of our time using things that we only superficially know (but don't understand). I still need my cheat sheets for a significant number of technologies. And that's fine, it's fine with technologies and tools to not get them on a deep level. If I had someone sitting in front of me who had trouble remembering the exact syntax of how to mock an object using Rhino Mocks, It would be interesting, but I wouldn't care too much. If they couldn't explain in their own words why you would want to mock an object I'd be more concerned. If I had someone sitting in front of me who claimed to be good at OO but who couldn't teach me about polymorphism I'd be very concerned. The best way test whether you understand something is to find someone who doesn't understand it and try to teach them. If you feel you get stuck on Polymorphism then use it. Create a demo and show it to a work colleague. You will feel the click in your head when you move from knowledge to understanding (for me it's "duhn duhn" the sound from Law And Order, it might be different for you). Stick at it, but forget about memorising text books. -Richard
Hit any user to continue.
Agree whole-heartedly with this. "Teaching through" a problem is also a great way to get through particularly troublesome architecture difficulties or debugging issues. I have a small stuffed animal on my desk, and that sea otter is one damned fine developer with all the free programming lessons he's been given.
-
AWdrius wrote:
but when working in team you need to know how certain patterns are named to make communication faster and more fluent.
in my 17 years of programming, i have never had a discussion with a co-worker about a "pattern".
Chris Losinger wrote:
in my 17 years of programming, i have never had a discussion with a co-worker about a "pattern".
Switch to Java (or SmallTalk if it still exists) and you'll have plenty of such discussions.
-
OK, this'll be a little long because this is a huge bug bear of mine. The only reason you can't explain something is that you don't understand it. I have never met anyone who was unable to explain something that they understood. I meet lots of people who think they understand things but can't explain them, and on pressing they discover they don't. I fall into this category myself quite often. I saw this so many times when lecturing. People could give the text book definition of something but couldn't explain it. It's the difference between knowing and understanding. I test knowledge by whether or not someone can "teach" it. So in an interview situation I would ask the person to "teach" me how something works, or why some technique can be handy. Testbook definitions are meaningless in that situation. If you find you are stumped when it comes to explaining polymorphism it's because a) you don't actually understand it and b) while compensating for not understanding it you are getting hung up on the text book definition. For the record, my significant other has exactly the same problem as you, also with Polymorphism funnily enough. Now, you can use techniques in your code without fully understanding them. The hundrends of libraries, tools, frameworks and principles etc that we have to use mean that we spend big chunks of our time using things that we only superficially know (but don't understand). I still need my cheat sheets for a significant number of technologies. And that's fine, it's fine with technologies and tools to not get them on a deep level. If I had someone sitting in front of me who had trouble remembering the exact syntax of how to mock an object using Rhino Mocks, It would be interesting, but I wouldn't care too much. If they couldn't explain in their own words why you would want to mock an object I'd be more concerned. If I had someone sitting in front of me who claimed to be good at OO but who couldn't teach me about polymorphism I'd be very concerned. The best way test whether you understand something is to find someone who doesn't understand it and try to teach them. If you feel you get stuck on Polymorphism then use it. Create a demo and show it to a work colleague. You will feel the click in your head when you move from knowledge to understanding (for me it's "duhn duhn" the sound from Law And Order, it might be different for you). Stick at it, but forget about memorising text books. -Richard
Hit any user to continue.
I use polymorphism all the time (as I imagine we all do) yet the word is too abstract (no pun intended) for me to spit out a concise definition on demand, but if you want me to describe how inheritance can be used to change the behavior based on type, I can do that readily. On the other hand, I have a friend who can wax eloquently on polymorphism for hours but couldn't explain type inheritance. He lives in a much more abstract world than me, while I live in a rather more concrete world. We have great discussions, because I can take his abstractions and put them into some really interesting implementation, and when I talk to him about implementation, he often points me to new ideas in abstraction. The point being, I don't really think it's a lack of understanding that I can't spit out the definition of polymorphism, it's more related to what domain (that word again) I live in and where I choose to focus my attention. Most IT techy-words I basically just bleep over, like Linus reading War and Peace, because I don't connect to abstract terms. Maybe I should have taken Latin in school. ;) Marc
-
AWdrius wrote:
but when working in team you need to know how certain patterns are named to make communication faster and more fluent.
in my 17 years of programming, i have never had a discussion with a co-worker about a "pattern".
OK, so how you go around describing say (the very popular as of late) singleton pattern or factory method, etc. Then again, English is not my first language (or the last one (- ), so for me it is easier to describe the approach to a problem using "standardized" language than dancing around (-.
Trust is a weakness.
-
Marc Clifton wrote:
Personally, what I find much more difficult, interesting, and useful, is learning the lingo of the domain, be it Wall St. or aeronautics or *cough* the entertainment sector, boatyards, etc.
The way I earn my living, this is essential. I don't suppose I write academic-standard code (but hey, it compiles, runs, and is stable :) ) but when I get a project, the first thing I do is really understand the client's business, to the point where I can sit in a management meeting and understand everything, jargon and all. I also interview all the users who are going to work on the system, because their understanding of the problem is often very different to management's at the fine detail level. This also gives the users some feeling of ownership in the project, and this can be hugely useful further down the road. Oops - wandered off topic there, sorry. :-O
Chris C-B wrote:
sit in a management meeting and understand everything, jargon and all
That is a must. I remember how confused I was when jumped into airlines industry.
Chris C-B wrote:
Oops - wandered off topic there, sorry.
It works for me to get to the Launge and read some stories while some algorithm compiles at the back of my mind.
Trust is a weakness.
-
OK, so how you go around describing say (the very popular as of late) singleton pattern or factory method, etc. Then again, English is not my first language (or the last one (- ), so for me it is easier to describe the approach to a problem using "standardized" language than dancing around (-.
Trust is a weakness.
we talk about them as singletons and class factories, not as "patterns" but as a "singleton" and a "class factory". and since both terms predate the "Design Patterns" book, i don't see them as being part of the "patterns" craze. maybe other people do.
-
Funny enough I used to work in the past with two different Java teams. The first team was mostly from mediocre/least said/ or wannabe programmer individuals and every second word coming out their mouths was “pattern” pronounced with self-confidence. In the moment I released in what I’ve get into I ran from there like a Salma Hayek from Pete O'Hanlon. The second Java team was from complete professionals who had created a huge complicated and bug free system using Java. These guys learned me, the C++ and SQLServer zealot, to like some aspects of Java and to respect Oracle. And for three years working with them I’ve never heard the word “pattern”, ever.
The narrow specialist in the broad sense of the word is a complete idiot in the narrow sense of the word. Advertise here – minimum three posts per day are guaranteed.
Deyan Georgiev wrote:
And for three years working with them I’ve never heard the word “pattern”, ever.
But at some point people in a team start to name a code that performs a certain functionality. All this "pattern" business went out of hand after recruiters started to demand to know what it is, but in its finest it is not a bad thing.
Deyan Georgiev wrote:
The first team was mostly from mediocre/least said/ or wannabe programmer individuals and every second word coming out their mouths was “pattern” pronounced with self-confidence...The second Java team was from complete professionals who had created a huge complicated and bug free system
Somehow I feel that first team was made of "fresh" programmers, the new age ones, so they probably learned word "pattern" in a uni. The second, experienced, team is made of old wolves, so no wonder they don't use bling words (-. But I still think that you need to keep ones mind open. Hell if walking of hands is the new age programmers requirements I will eventually learn how to do it than become obsolete :).
Trust is a weakness.
-
we talk about them as singletons and class factories, not as "patterns" but as a "singleton" and a "class factory". and since both terms predate the "Design Patterns" book, i don't see them as being part of the "patterns" craze. maybe other people do.
So I do not see a problem here, if your singleton means the same functionality as mine, all is good. I don't care if you call it a pattern or something else, as long as we can understand each other. But as pattern buzzword raises and more and more people (well, programmers) understand it, I call it a pattern. When they start talking about singleton pans, I will call them "pans".
Trust is a weakness.
-
I consider myself a good developer, fellow developers and managers as well as clients have told me the same. I code to standards and make sure it is done correctly. So why is it that in an interview when asked a question about code I get stumped and not able to answer it correctly? Am I the only one that does this? Can you BE a great developer without being able to tell you the definition of polymorphism or the like? I know I can do the work, very well. So what can I do to learn the definitions of things? I am thinking of making cue cards and going from there. They have helped me in the past. What do you think? What is the best way for you to learn? Also, do you know definitions and meanings of everything you do? Thanks
I have a very good memory, but difficulty in accessing it. I've long noticed that I heavily depend on some sort of physical interaction to retrieve information. For example, at home my wife and kids will often as a question on how to do something with the computer. I'll often know I know the answer, but won't remember it until I start physically doing it and then it will come rushing back. When I program, I need intellisense or at least online help with a good index. I can't say how many times I remember functions, classes and methods by simply finding the proper name in an index. Even the physicality of typing on a computer helps me remember things--I've long learned this doesn't work so well with pen and paper.
-
AWdrius wrote:
but when working in team you need to know how certain patterns are named to make communication faster and more fluent.
in my 17 years of programming, i have never had a discussion with a co-worker about a "pattern".
Chris Losinger wrote:
in my 17 years of programming, i have never had a discussion with a co-worker about a "pattern".
Is polymorphism a pattern though? We talk about patterns all the time at work since they are common ways of solving problems. But I doubt any of us could give a text book definition of polymorphism. I know I can't.
Todd Smith
-
AWdrius wrote:
but when working in team you need to know how certain patterns are named to make communication faster and more fluent.
in my 17 years of programming, i have never had a discussion with a co-worker about a "pattern".
-
Deyan Georgiev wrote:
And for three years working with them I’ve never heard the word “pattern”, ever.
But at some point people in a team start to name a code that performs a certain functionality. All this "pattern" business went out of hand after recruiters started to demand to know what it is, but in its finest it is not a bad thing.
Deyan Georgiev wrote:
The first team was mostly from mediocre/least said/ or wannabe programmer individuals and every second word coming out their mouths was “pattern” pronounced with self-confidence...The second Java team was from complete professionals who had created a huge complicated and bug free system
Somehow I feel that first team was made of "fresh" programmers, the new age ones, so they probably learned word "pattern" in a uni. The second, experienced, team is made of old wolves, so no wonder they don't use bling words (-. But I still think that you need to keep ones mind open. Hell if walking of hands is the new age programmers requirements I will eventually learn how to do it than become obsolete :).
Trust is a weakness.
AWdrius wrote:
Somehow I feel that first team was made of "fresh" programmers, the new age ones, so they probably learned word "pattern" in a uni. The second, experienced, team is made of old wolves, so no wonder they don't use bling words (-. But I still think that you need to keep ones mind open. Hell if walking of hands is the new age programmers requirements I will eventually learn how to do it than become obsolete .
In fact most of them was older than me/I was 28-29 those days/ claiming a long years of programing experience. Their problem was that they were so narrow minded and so stuck with Java that even a simplest SQL statement/let alone Transact SQL/ or small utility that needs to be created on C\C++\Delphi was mission impossible for them. And because their narrow specialization they had problems to grasp even some new Java technologies. Everything out of the box was PITA for these guys, I had the feeling that I’m working with zombies.
The narrow specialist in the broad sense of the word is a complete idiot in the narrow sense of the word. Advertise here – minimum three posts per day are guaranteed.
-
I consider myself a good developer, fellow developers and managers as well as clients have told me the same. I code to standards and make sure it is done correctly. So why is it that in an interview when asked a question about code I get stumped and not able to answer it correctly? Am I the only one that does this? Can you BE a great developer without being able to tell you the definition of polymorphism or the like? I know I can do the work, very well. So what can I do to learn the definitions of things? I am thinking of making cue cards and going from there. They have helped me in the past. What do you think? What is the best way for you to learn? Also, do you know definitions and meanings of everything you do? Thanks
Swelborn wrote:
So why is it that in an interview when asked a question about code I get stumped and not able to answer it correctly?
That's the way it's set up :)
Swelborn wrote:
Can you BE a great developer without being able to tell you the definition of polymorphism or the like?
You don't have to answer everything correctly, you're not Google and no-one will be expecting that you can rehash all your studybooks. You will be judged on how you react when confronted with something that's not in your short-term memory. Will you propose to further investigate, or would you become angry?
Swelborn wrote:
I know I can do the work, very well. So what can I do to learn the definitions of things?
Being able to sum up (correct) definitions doesn't impress me - too many developers who can vaguely tell what's on the stack and what isn't, while not being able to implement basic error-handling. Show me that you understand the definition, I want to make sure that you know what you're doing. And it's a bonus if you have a strategy for the moments that you're confronted with a question/situation that you don't know the answer to.
Swelborn wrote:
What is the best way for you to learn?
To teach :)
Swelborn wrote:
Also, do you know definitions and meanings of everything you do?
Yes/no. Once there's a need to explain something, you'll need to define some things. The most concise explanation is often equal to the definition of a subject.
I are Troll :suss: