Unless you are a very rare type of developer, you probably spend only a small percentage of your time on algorithmic development. Algorithms are one of the central topics in college education and interviews for developers tend to feature a lot of algorithmic questions. However, the bulk of producing a quality product is often not the algorithms but rather the time spent on design, testing, integration, documentation, and other issues. This can lead to an unexpected struggle at those times when algorithmic development is essential to completing a job.
Programming competitions are one way to keep sharp. There are programming competition sites that directly pit you against others but I don’t find those as helpful because they tend to over emphasize speed. In a work setting you’re often scored more on absolute performance rather than the number of minutes required to come up with the solution. Those exercises are still useful in an offline setting if the questions are well put together and scoring can be done outside the contest. There are also a number of programming sites that provide challenges at your own pace.
Three sites for programming exercises I recommend are: