Do good programmers need to have syntax at the tip of their tongue when writing code? What do you make of them if they google for simple stuff online? Are they good or bad(maybe they know where to look for)? Should programmers have a good memory? Is this a trait for a good programmer?

  • 1
    Depending on how "simple". Some examples/backgrounds would be useful. It may also be an inconsistency issue with the language/environment they are programming.
    – rwong
    Dec 3, 2010 at 9:49
  • 1
    I would think that would be part of the definition of a good programmer, since it falls under fast\efficient. If you can't write a line of code with a consulting a reference you aren't going to be getting anything done in a timely manner. On the other hand that isn't a call to memorize things.
    – stonemetal
    Dec 3, 2010 at 16:09
  • In C++, I usually have to look up the syntax for pointer-to-functions (member or not) as I use it not so frequently... perhaps that sometimes the syntax is just weird ? Dec 16, 2010 at 19:19

8 Answers 8


My philosophy on programming is that it's a "state of mind" and the rest is "just syntax." (i.e. not (as) important)

That said, one shouldn't have to look-up the simple stuff. At least, not for the language(s) you work with regularly. There's nothing wrong with needing refreshers and knowing how to find information is certainly a good skill to have. However, the core syntax should definitely be well known. Otherwise, you spend too much time searching and too little time programming.

  • 8
    Exactly, like a spoken language: you have to know how to speak it, but dictionaries are great help. Often, you know what you want to express before you have the vocabulary! Dec 3, 2010 at 8:42
  • @Kevin - Exactly - but you can also judge someone's fluency by how frequently they'd make such references. Most of us would use them from time to time but you'd question someone who said they could speak a language but felt the need to continually refer to a dictionary. Dec 3, 2010 at 14:07
  • @jon Precisely. Continuing the spoken/written language metaphor, with some effort we can increase our exposure to the language and improve our vocabulary. Hence my voracious appetite for reading and continued search for a good iPhone flash card application. Similarly for programming languages, when I have trouble with a particular idiom I create a snippet which demonstrates it and keep it close at hand for easy reference. And, of course, I make a point to revisit those problem areas occasionally. It took some time, but I finally memorized the pesky switch statement this way. Dec 3, 2010 at 22:55
  • I think that a more 'advanced' developer as well is likely going to have multiple languages under their belt and sometimes will confuse them. I still confuse the declaration of a multidimensional array between C# and C++ from time to time (was it "arr[][] or arr[,]") and have to look it up. Dec 16, 2010 at 4:15

It depends on what you mean, but the short answer is yes.

Are programmers going to forget a semi-colon or a brace here and there? Sure. Are they going to look up the syntax of a switch statement because they probably rarely use it? Well, I do. Will I be working with ActionScript but write it like Java instead? Definitely. It can take some time getting used to typing in a new language, especially if you've worked with a different one for years.

The real concern should be if a programmer cannot make heads or tails of the syntax even with an IDE helping them out. If the person doesn't know what a semi-colon is for, or what those fancy curly braces are, then they have more studying to do.

  • 8
    Heh, the exact syntax of the switch statement usually gives me grief as well. Dec 3, 2010 at 6:37
  • That's the same reason i stick to Python scripting, even when i prefer Ruby. I have to code in Python at work, and the back and forth would be too confusing. Dec 3, 2010 at 8:28
  • +1 for switch statement syntax - its just elusive for some reason
    – billy.bob
    Dec 3, 2010 at 9:20
  • 5
    Not to mention the myriad of languages that one knows and the syntax at times can blend together.
    – Josaph
    Dec 3, 2010 at 12:17
  • @dave I think the problem is the mix of symbols. It's usually switch, followed by something in parentheses, then an opening bracket, then the case with a label that is not in parentheses, then a colon, then the statements typically termimanted with semi-colons. And, let's not forget, the break statements. It was through effort and sheer force-of-will that I finally memorized it and I still have to double-check occasionally; just to make sure. Dec 3, 2010 at 23:08

I would definitely be surprised if an otherwise good programmer had to routinely look up syntax for a language that they were fluent in. Of course there may be corner cases that don't actually get used a lot in practice such that it would be perfectly acceptable for a good programmer to not know them but, as a general rule, a fluent programmer doesn't have to look up syntax. S/he has to lookup functions and classes from libraries :)

  • +1. I would consider myself fluent in C++ and I look up function names and arguments daily. I am never going to memorize every member of std::string, for example. Dec 4, 2010 at 2:47

If you're in a position where you're changing languages regularly or working in 3 or 4 languages at the same time there's not a lot you can do about it. For a while I ended up working on projects that required constant switching and began to refer to myself as a "reference programmer," having to look stuff up much more than I would have preferred.

  • 4
    +1 Entirely agree. Coders that hop between languages at a rate of knots (I can have 10 languages or more on the go in a day spanning many projects) do end up having trouble remembering the obscure differences between similar languages, particularly in the standard library functions. This gets worse as you get older I have noticed.
    – Orbling
    Dec 3, 2010 at 14:22
  • This is my problem, we are moving through so many things at work I can't remember even the basics sometimes. Especially since I can usually just use context, someone wrote a for loop or function nearby, I just copy that syntax. I have been forcing myself to learn syntax lately though, just counting on practice to make me memorize it is not enough. I picked one language(Javascript) to grind the syntax into my brain with. It is helping a lot, especially with whiteboard interview practice.
    – Jemmeh
    Jun 25, 2018 at 15:40

I have been writing C++ for >15 years, but I still don't know some of its arcane syntactical corners by heart.
How do you explicitly instantiate a function template again? And what's the syntax to partially specialize a template that has a template-template argument? And don't get me started about declaring a function that returns a pointer to an array of pointers to functions which take arrays of pointers to...

I suspect there's at most one or two dozen people in this world (if there are any at all) who really know all of C++' syntax by heart. And these are probably all earning their money by writing C++ compiler frontends.


I'm curious about Googling "syntax" here.

My suspicion (and fear) is that we're not talking about what parameters a call takes (because most IDEs will prompt you there so you wouldn't Google them) but actual "how to do X" type things.

IDEs have made it unnecessary to memorise precise names and parameter lists in the way that used to be required and that's made many people a bit lazy about it but that's fine.

But something you need to Google? To me that's usually not syntax, that's just something you either don't really know or are only passingly familiar with.

Of course that's not to say it's wrong to have to Google stuff - languages can be pretty broad these days and few people know everything but I would say that if you claim to be competent with a language then Google should be the exception rather than the rule.

For me unless you're doing something relatively unusual, or perhaps you're rusty with the language after a period of doing something different, if you claim to "know" a language, you shouldn't be Googling more than 10% of stuff at most, and that should be really quite specific stuff.

In reference to the idea that this is about having a good memory, it's not really. It's about the sort of instinctive feel you get for something you really (rather than superficially) know. I don't consider the fact I know how to cook a Melanzane Parmigiana without a recipe a sign that I have a good memory, it's a sign that I understand how to cook that dish - they're subtly different things.

Besides, ask yourself this, would you expect to go into a restaurant kitchen and find the chef constantly looking at a cookbook? Or to see the mechanic working on your car flicking through the Hayes manual for that model? If I saw either of those things I'd be pretty uneasy about how good that person was.

  • Comment for the down vote? Am genuinely interested in what the disagreement is. Dec 3, 2010 at 17:12
  • +1 -- Good call on syntax != api
    – Jeremy
    Dec 5, 2010 at 14:40

My opinion is No. Its not syntax which is important but your logic towards solving a problem or achieving a goal If you suppose to work on multiple languages its natural that sometime you dont remember the exact syntax.


Syntax is just the view on top of the language's underlying semantics because programming is all about using the underlying semantic bricks to build something. If you don't understand the fundamental concepts the language uses then it doesn't matter how good you are at memorizing syntax, your code will be a horrible mess. As someone once said, "Good programmers have an interpreter and a compiler in their head." Notice how there is no mention of syntax because that's not where the real work happens.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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