So I got chatting to this developer at a lunch I went to today. He was something of a purist and was quite precious about his projects, which it was plain to see he regarded as his 'babies'. Now, I'm not suggesting this chap - let's call him Felix after the cat - was not a team player. It's just that the commercial reality of the environment he works in means that he is constantly asked to re-code and push out variants to satisfy the needs of a diversified market.
His problem, the source of his headaches, were the additions & extensions he constantly had to plan for - while still keeping sight of the original goal (which may in itself be a moving target) of the software project and product in hand. Not to mention of course the scaling back he had to do for the 'hobbyist' and non-professional versions of his software.
I empathised with Felix by trying to suggest that at least he wasn't developing in the mobile space where as much as 50 per cent of development costs (for a game for example) have to be sunk into porting and testing procedures for the variety of devices that exist. In fact, "variant management" as a discipline in its own right is starting to be openly discussed as the solution to these challenges. I would have personally suggested SCM (software change management) or plain old CM (configuration management) tools as the best solution, but maybe I'm being too old school.
Are you under attack from the spawning variant swarms? Is variant management within your head-space? Should Felix have a large glass of 'wino-strength' cider and accept that this type of variance as part and parcel of modern software development? Answers on the back of a well worn beer mat please.