Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I find myself aiding novice programmers relatively often; explaining why their code won't work when they ask, suggesting solutions and the like. The people I'm helping do have a formal education in programming from a first-year degree-level module, in Java, but I feel like I can't communicate with them very well.

For example: one might write a function but not understand why it isn't executed, not realising they forgot to call it. If I use phrases like "(make a) call (to) the function/it" and "pass it the.." I get blank looks.

My normal process then would be to find some place in their code where they call a function from the language, and tell them they can call their own functions in the same way as they called this other function. Sometimes even that gets blank looks.

Are there other pieces of vocabulary that are more suited to (better for?) helping novice programmers? Or is this not an issue of communication?

share|improve this question
Spreadsheet users know how to call a function. Many can write their own. There's something fundamentally wrong here. – JeffO Feb 24 '12 at 3:02
@JeffO I had been feeling something was amiss, but wanted to give that module and those people the benefit of the doubt – AndyBursh Feb 24 '12 at 3:07
Wait, what? Programmers you're working with don't know what 'calling a function' and passing arguments means? That's as basic as you can go without drawing them pictures and using metaphors involving cats and dogs. This goes beyond a communication issue and unfortunately might be an issue with lack of knowledge. I reread your question and it seems like they basically took an introductory level course and that's it? – birryree Feb 24 '12 at 3:55
@AndyBursh: how did such students get it to the second year? Hope they won't pass the exams and choose a job outside software development. – Doc Brown Feb 24 '12 at 7:16
Perhaps sock puppets would help – MattDavey Feb 24 '12 at 10:03
up vote 13 down vote accepted

They'll have to learn the proper terms eventually, the sooner the better.

Use them correctly, and explain them whenever you get a blank stare. Just try to send the right signals, that it's OK to ask about anything they don't understand - the only stupid questions are those you don't ask.

share|improve this answer
I was about to post almost exactly the same response then yours loaded. :) +1 – Tom Squires Feb 24 '12 at 9:06

In general

When a person doesn't understand you, you have two alternatives:

  1. Adapt the vocabulary according to what the person knows or not,

  2. Explain to the person the terms she doesn't understand.

The first case works well when the person knows already the technical vocabulary quite well, but not enough, or not in your domain.

For example, you may use the term method in C# or Java, and the person who mostly works with some other language would not understand this term. You will then explain that in C# or Java, method is referring to what we usually call function (for example in C), and that there is no such a thing as function in C# or Java. In PHP, for example, both methods and functions exist, and have a different meaning. If the difference is too painful for the person, you will talk about functions for the sake of simplicity.

In your precise case, you can hardly choose the first one: "make a call to the function" cannot be reformulated in any simpler way. A call is a call. You can't simplify this more.

This means that you have to choose the second way: explain to the person each technical term.

  1. Either point the person to a dictionary or Wikipedia, which works very well for basic concepts and terminology.

    I would choose this for commonly used terms. For example, I would rather invite the person to read Wikipedia to understand what is polymorphism, or what are covariance and contravariance. Those terms are already explained very well, so don't need to reinvent the wheel here.

  2. Or explain in your own words.

    I would choose this for terms which are specific to the context and/or accepting wide range of definitions. For example, Wikipedia is not very helpful to understand the Microsoft's vision of cloud computing, and I would rather explain myself what is cloud to somebody who will be working on a Windows Azure application.

In your particular case

The people you are talking to are lacking the most basic concepts and terms used in programming. They can't continue without learning this core vocabulary, because they are unable to communicate at all: they can't read books about programming or blogs, they can't listen to their colleagues, and they even can't really ask questions on Stack Exchange websites, since nobody will understand what they are asking.

In your case, rather than searching for suitable vocabulary, I would spend a few days or weeks teaching them some core programming concepts and the commonly used terms. After a few days, you will be able to talk to them without being required to constantly "draw them pictures and use metaphors involving cats and dogs".

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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