When working on multiple projects simultaneously (for the sake of simplicity let's say half time each on two projects), which is better? Should the two projectsUse the same language? Same/similar frameworks?Use entirely different languages?Additionally, is it best if they are target for similar platforms, or different (web v. desktop v. mobile v. utility library for internal use)?The first responses that come to mind areThey should be similar, and play to the strengths of the developer to help him handle managing both of themThey should be as different as possible to help the developer keep organizedSince I've never done this in a professional setting, I was hoping more experience programmers could shed some light on the best way to go about doing this.EDIT:This question is assuming the existence of multiple other projects, each of which is underway (I think some underway and some brand new with no design decisions yet made would be too broad for one question). When choosing between existing projects for a second project, should a developer consider how similar his new project is to his current project, and how should that affect the decision?
Multiple projects - similar platforms or as different as possible?
language agnostic;time management;multitasking
First of all, the actual requirements should drive the decision behind what language, frameworks and tools to use. If the requirements allow you to work on similar languages, frameworks and tools, then you should definitely try to keep things as consistent as possible.  You want to keep things similar for the following reasons: Less context switching for a developer is good - There is a lot less context switching when you allow your devs to use the same languages, tools etc... All they have to switch is between 'domains' but not between languages with different syntax and/or completely different principles.Development environment complexity is less - It is complicated enough to set up your dev environment for a single kind of application stack, you do not want the pain of having to set up more than what you have to.Consistency is good - Keep as much as possible consistent between the two projects, like coding standards, directory layouts, etc. Imagine a new dev coming onto the project and trying to understand both apps. They would require twice the ramp-up time.UPDATE:The question changed significantly, and my understanding is that you are asking the following... I have a project that I am working on right now. I would like to pick up another project to work on simultaneously with the other. Is it better to pick a project that is similar to the existing one, or a completely different one.This depends entirely on what you want to get into. Do you want to learn a new language altogether? I would focus on the new language. I personally do better when my focus is not divided between projects so I like to work on a single thing at least for a couple of days before I switch to something else. As far as the type of language is concerned, if you learn something that is close to the original one (Java->Groovy), you will probably pick it up faster, you will have less frustration and less context switching. However, you might not get a great perspective on how much two languages can really differ (Java->Ruby or LISP->C) in their principles. 