Coding is only one aspect to professional programming. My job requires me to code, but it also requires me to do other things for extended periods – sometimes days or weeks go by when I'm not just coding.

I fear letting hard-won programming skills atrophy while I sit in meetings, draw architecture diagrams and annotate requirements. (Not to mention I don't trust people to write requirements who don't understand the code.)

I can't just read books and magazines about coding. I'm involved in some open source projects in my free time, and stackoverflow and friends help a bit, because I get the opportunity to help people solve their programming problems without micromanaging, but neither of these are terribly structured, so it's tempting to work first on the problems I can solve easily.

I guess what I'd like to find is a structured set of exercises (don't care what language or environment) that…

  • …I can do periodically
  • …has some kind of time requirement so I can tell if I've been goofing off
  • …has some kind of scoring so I can tell if I'm making mistakes

Is there such a thing? What would you do to keep your skills fresh?

  • 6
    On this stackExchange this kind of questions are actually the helpful ones. Why close it ? – Edeph Jul 20 '15 at 10:24
  • @Edeph Questions like this sound helpful at first, but experience has proven they have little value to the community. Please read: Why was my question closed as off topic? – user22815 Jul 20 '15 at 12:33
  • 3
    @Snowman whose experience? 25 upvotes is a "Good Question" badge. This question was also answered by a StackExchange staffer and highly ranked community member. So the community itself has clearly stated that it is a valuable question. Period. Off-topic? Remains to be seen, but valuable? Yes. – kojiro Jul 20 '15 at 13:11
  • 1
    @kojiro the question remains too broad and primarily opinion. As shown by the answers you do have, there is no right answer. Its people suggesting different ways that have worked for them. At its heart, the question is a poll. if it was to be reopened, other answers you would get would be just as varied without actually getting a right answer that is distinguishable as right from the others. – user40980 Jul 20 '15 at 13:31
  • 1
    So youre saying that the community is rather driven by a pack of mods (that are humans and are prone to subjectivism) instead of the people upvoting something because its useful for them even though it doesn't have a correct answer by definition? Not everything is black and white in this field you know? – Edeph Jul 20 '15 at 14:43

Code katas come to mind right away.

The idea is that these are repeatable exercises that you can practice until you know them cold, and you repeat them periodically to keep your chops up. Some are focused on programming, some are more open-ended and focus on thinking and design. They can be done in any language or environment and some people also use them to try out or learn new approaches (for example, test-driven development).

The site I linked to above has many ideas for katas. Another fairly famous one is the Bowling Game from Uncle Bob Martin.

  • 1
    Awesome. Qigong exercises for programmers. I love it! – kojiro Mar 2 '11 at 18:29
  • Never heard of these. They look fantastic. :) – Sergio Mar 2 '11 at 18:30
  • My personal coding time is always highly interrupted (3 kids at home). The linked page states, "You need time without interruptions". Is this actually a need, or will I still be able to learn pretty effectively if I am frequently interrupted? – Ethel Evans Mar 2 '11 at 19:22
  • 2
    @Ethel I don't know from personal experience, but I think you could still keep going. Being good at context switching would help. As you practice and become more familiar with the exercises, I imagine managing interruptions would become easier. – Adam Lear Mar 2 '11 at 19:31
  • Now that I've done some of the code kata I can comment more. I have some experience with martial arts, so I think the idea of katas is a really good one, but (at least the early) katas proposed by Dave Thomas are more like lifting weights than a traditional martial arts kata. They are hard work, but neither repetitive nor meditational enough to be the same kind of drill as a true kata at all. That said, I think you can base some good kata on his proposals. – kojiro Mar 27 '11 at 14:27

What about Project Euler ?

a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.

The motivation for starting Project Euler, and its continuation, is to provide a platform for the inquiring mind to delve into unfamiliar areas and learn new concepts in a fun and recreational context...

The intended audience include students for whom the basic curriculum is not feeding their hunger to learn, adults whose background was not primarily mathematics but had an interest in things mathematical, and professionals who want to keep their problem solving and mathematics on the edge...

  • 10
    In my opinion this is more math than programming. – Sergio Mar 2 '11 at 18:27
  • Good point - I hadn't seen the code katas in Anna's answer. – Martin Beckett Mar 2 '11 at 19:06

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