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've been programming for about 10 years, and I've started to migrate to more of a project management position. I still do coding, but less often now. One of the things that I think is holding me back in my career is that I can't "let go". I think I fear letting hard-won programming skills atrophy while I sit in meetings 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?

share|improve this question
add comment

3 Answers

up vote 14 down vote accepted

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.

share|improve this answer
    
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. –  Anna 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
show 3 more comments

Apparently Zed Shaw has recently released some drills himself:

Daily Code Drills

an experiment to see if a daily drill in typing code makes it easier to then code. Try to do this every day for as long as you can or until you can do the whole thing in 10 minutes...

It currently only has Ruby and Python, but I would be surprised if he didn't add C or other languages.

share|improve this answer
add comment

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...

share|improve this answer
6  
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
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.