Evolution is extremely complicated in practice. One useful abstraction to allow us to reason about it is selective pressure. For example, if there is a food source in the environment but nobody is eating it because it's too high up, there is a selective pressure towards having longer necks (or some other way of getting to it). This means that any mutations that result in a longer neck will be more likely to be passed on to the next generation.
This is nowhere near the full story though, the factors that affect selective pressure are numerous and interconnected:
It's a lot easier to evolve into a flying organism if you already have feathers. There may be a protein you already produce that you can use in a new way. Or an existing structure in your ear that only requires a small mutation to fill a new function. Your DNA could have taken any path but evolution has to work with what it's given.
The weather, seasons, average temperature, composition of air, dissolved nutrients in water, longer-term geologic processes etc. All these vary continuously over different time periods and impact selective pressure.
It's not just you here. There are many others of your species, all trying to evolve to suit the same environment. There are many mutations going around your population with various advantages/disadvantages already. The females of your species might have a liking for particular types of song. Or you could be a species that fights or displays for mating rights.
your cousins far removed
There are thousands of other species inhabiting the same environment. Your food is also evolving, trying to find ways to not get eaten or be less appetising. Your rival species are trying to invade your niche and take up any empty niches for themselves. There are viruses, bacteria and fungi all trying to infect you and evolving alongside you.
a bunch of others I've missed
I thought I'd have a go at trying to visualise selective pressure using noise. I'll definitely write a blog post about noise some day but all that you need to know is that it's some maths that allows you to do things like this:
For this simulation, brighter regions are more beneficial and there is a selective pressure towards them. Each square is intended to represent an individual of a species or a whole species. To simulate 'mutations', they test some random nearby locations to see which they find most beneficial and move to the best one.
With simple 2d noise, they just clump up white areas. If we add some undulation to it over time, there is a bit of nice dynamic movement.
I'm glad I got this working, it's a bit how I like to visualise evolution but what I really wanted to simulate was something more multi-dimensional. Here, 7 dimensions are represented by position, size and colour. I need to find a better way of representing these higher-dimensional points somehow; it's very difficult to make much sense of what is going on and it's possible there are bugs. Another topic to return to later I think.
Martin Falbsioner for the deer photo.
Axel Tschentscher for the giraffe photo.
licensed under cc3.0