Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question
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 '10 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 '10 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 ? –  Matthieu M. Dec 16 '10 at 19:19
add comment

8 Answers

up vote 21 down vote accepted

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.

share|improve this answer
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! –  Kevin Cantu Dec 3 '10 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. –  Jon Hopkins Dec 3 '10 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. –  George Marian Dec 3 '10 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. –  Steve Evers Dec 16 '10 at 4:15
add comment

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.

share|improve this answer
7  
Heh, the exact syntax of the switch statement usually gives me grief as well. –  George Marian Dec 3 '10 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. –  LennyProgrammers Dec 3 '10 at 8:28
    
+1 for switch statement syntax - its just elusive for some reason –  billy.bob Dec 3 '10 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 '10 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. –  George Marian Dec 3 '10 at 23:08
add comment

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 :)

share|improve this answer
    
+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. –  Kristo Dec 4 '10 at 2:47
add comment

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.

share|improve this answer
2  
+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 '10 at 14:22
add comment

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.

share|improve this answer
    
+1 C++ does have particular complexity in that area. –  Orbling Dec 3 '10 at 14:20
add comment

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.

share|improve this answer
    
Comment for the down vote? Am genuinely interested in what the disagreement is. –  Jon Hopkins Dec 3 '10 at 17:12
    
+1 -- Good call on syntax != api –  Jeremy Heiler Dec 5 '10 at 14:40
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

Your Answer

 
discard

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.