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.

I'm a novice programmer. I study languages such as C, C++, Python and Java (mainly focusing on C++). I'm what you'd call "young and inexperienced" and I admit that because I can't claim otherwise.

As a student, I have many other problems besides programming. I practice programming as often as I can, and especially because my teacher gives me a lot more exercises than the rest of the class (it's a very low level), so oftentimes I spend weeks doing something else such as school projects or sports, or traveling, anything besides programming.

Don't get me wrong though, I love programming. I love to build functional code, to watch as a program comes alive at the push of a button, and to learn as much as I can. The thing is, I simply don't have much time for it.

Straight to the question, now: does your programming knowledge decrease as time passes and you don't practice? You may ask "how much time do you mean?". I don't mean a specific amount of time, but for reference you could take a month-two or even a year as an example.

By knowledge I mean anything from syntax to language functionality.

share|improve this question

closed as primarily opinion-based by gnat, MichaelT, Martijn Pieters, haylem, John R. Strohm Feb 27 at 10:47

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

3  
"for reference you could take a month-two or even a year". Not practicing a month or two is 99.9999% safe. Not practicing for a year is not a big deal either - assuming the firm practical knowledge here, as opposed eg to the stuff one quickly crammed to pass the exam –  gnat Apr 2 '12 at 11:51
    
@gnat Well, stuff crammed for an exam isn't even safe for a week in my experience, let alone a month or year. –  Izkata Feb 25 at 4:54

9 Answers 9

up vote 28 down vote accepted

Obviously, programming is something you learn to do, not a set of facts or information. That said, it's more like riding a bike or speaking a language. There are theories too, but it's more about putting them to practice.

Even so, like anything, if you don't use it your brain will start to drop the information. Your brain is like a muscle that way. After a period of time you'll most likely remember broad concepts but not specifics about syntax and lesser-used functions. For example, you may want to do a for loop or iterate over a list and know that it's something like while List.hasNext() or for item in list or for index, item of list but not writing it very confidently.

The good thing is, you'll know what you want to do. You just need to look it up. So I wouldn't be too worried about it. It'll come back to you. The important thing is to learn how to solve problems with programs. All programming languages are usually capable of doing the same things, but most of the time in different ways. You might forget that Ruby or Python have comprehensions and write too many for loops instead, but you'll get the job done.

As for how much you'll forget or remember, I think that kind of depends on how active your mind is and how old you are. I don't think I developed a fully functional brain until I was 19. At that point memorizing anything for me was a snap. Everyone is different.

In sum: details always fade, the rate they fade depends on you, all languages are trying to make it easy to solve the same problems, so maybe it's more important to learn how to solve problems. :)

share|improve this answer

Anything not used will eventually atrophy.

share|improve this answer

I'm the owner of a small business, meaning I'm The Guy. So when the website needs updating, I have to be Zend/MVC guru. When I need to hacksaw data or tweak webpages, I find I'm needing to use php. When I'm wrestling with Quickbooks, I can find myself using faux-QB queries, Visual Basic, php, mysql, linux, and windows in a miasma of technology soup. Oh right, and I do CAD work when a vendor needs drawings, which means I have to be a mechanical engineer / designer and figure out file formats and what it takes to get people the knowledge that is inside my head clearly. We just ran out of catalogs again, so I bought Adobe CS5 and took the InDesign file for the old catalog and tweaked it for new catalog. I'm also the electrician and networking guy that builds cables when needed.

Given all that experience over the last 10 years, I've found that I do forget things within about a month. BUT when immersed into it again, the brain will spark memories that send me to php.net or digging through old/legacy/ancient code I've written. Same for the CAD work; there's a huge project I've been in and out of for over a year. When I turn that computer on, it takes a day for all the updates to complete and licenses to sort out and then two to five more days to get to where I was when I left off.

I'm finding the hardest to pick up again each time is the Quickbooks qodbc programming. :P I've done MySql and PostgreSQL off and on over the years and with my cheats text files where I save particularly useful queries, I can pick that stuff up real quickly.

Summary: keep all of your work forever, play with it every 6-12 months, when you need to revisit that code, you probably will not have regressed too much, and expect to be full speed again within a week.

share|improve this answer

General programming knowledge or programmatic problem solving skills do not age really, but language-specific or framework-specific knowledge gets outdated after a while.

share|improve this answer

Methodologies and the likes doesn't decrease if you don't practice, but remembering the correct syntax and libraries surely does.

I mainly use Java, C++ and C#. But for the last two years, I've been using Java only occasionally (if a bug needs to be fixed in a legacy system). So I often struggle a bit to remember what the correct syntax is or which library I need now.

share|improve this answer

does your programming knowledge decrease as time passes and you don't practice?

Knowledge, no (at least not the Big Picture concepts). Skills, yes.

share|improve this answer

Knowledge does decrease somewhat, you may find yourself forgetting some of the syntax or the more complex aspects of a certain language. At first, it may also be hard to structure your code if you don't practice, but after a while that will come back.

share|improve this answer

Learning to program is learning how to problem-solve more then anything else. I've been in the situation where I hadn't programmed for over 10 years. Yes, the syntax details I had and have to look up regularly but the problem solving skill was still there.

share|improve this answer

As with all brain activities, knowledge start to fade after literally seconds. That continues over seconds and minutes (short term). Some is transferred by the hippocampus to long-term memory, where the fading process is much slower.

An analogy that I like more than the muscle is "the sponge". Learning and using is like adding water which makes the sponge nice and plump and 'heavy'. Stop adding water and it'll start to dry up and lose weight. Neurologists may like this analogy ;)

Some things that can counter that are:

  • Repetition. Do any task enough times and you'll remember it.

  • Nemonics. Whether visual, aural or whatever these can be really helpful.

  • Flexibility. Rather than knowledge itself, the ability to take on new tasks is key and is helped by frequently doing completely new activities.

  • Exercise. Well known to help the brain and with memory.

  • Making notes. Not (so much) for future reference but because the actual process of making them helps lock the knowledge in ones mind.

share|improve this answer

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