I'm working on a 2D platformer and level design is taking me a long time. Are there any tricks to speed up productivity when designing tile based levels without sacrificing quality? I want to speed this up so I can focus more on programming.
1) Create your level designs and layouts before doing any "artistic" work. Good level design takes many iterations, so you want each revision of your level to be as quick as possible. Have a minimal tileset consisting of only 2-4 kinds of tile (Solid, empty, death, etc). Add the pretty clouds and shiny spikes at the end.
2) Use good tools. Lets say you need to add one platform tile to your level... At a maximum, that should consist of clicking in your tile editor, saving the file, and rebuilding the game. If you have to hand-tweak any XML files, run any pre-process scripts, etc, you're wasting time that would be better spent doing design. Ideally, you'd be able to add tiles to your level from within the game interface without waiting for a recompile or data build.
3) Know your mechanics. Exactly how many tiles can your character jump vertically? Horizontally? Running jumps? When you want to place a tricky ledge in your level, you should be able to do it on your first try (using math, diagrams, lookup tables... whatever works for you.) If you're resorting to lots of trial and error to get each jump working, take a step back and figure out why.
Hope this helps... if you're not using it already, check out Tiled (http://www.mapeditor.org/), it might help you streamline a bit.
I think good tools are probably the biggest potential for improving your process -- an improved work-flow works wonders, especially if you can eliminate any delays that occur regularly. It can be helpful to actually note down every step in the process of creating a level and looking for steps that could be:
eliminated, either through use of different tools or a different process,
automated, by writing a script or finding some tool to do them for you, or
made more efficient, through selection of a more performant tool or a change in your process.
Perhaps you're doing something that doesn't actually need to be done. Perhaps you have to run an application at some point during the process and you've been doing this by hand each time -- can you have the tool you were using for the previous step do it for you instead, or would it perhaps be acceptable for this application to be running constantly in the background?
If you need a lot of levels you could also consider procedural generation. There's a certain overhead in the amount of work required to initially set this up and get it working satisfactorily, but if you're planning on a large enough number of levels the benefits can be huge. There was a gamastura article with some good tips on procedural levels for platform games called "how to make insane, procedural platformer levels".