I really enjoy solving logic puzzles and applying my mind to new challenging problems. I believe the key to writing good software is collaborating and thinking through the problem. After that all that's left is how you tell the computer to execute your implementation. A good software developer can turn their hand to any language once they realise that is the medium used to implement their solution.
During my career so far I've built up a lot of experience working with very high volume transactional websites (at big name companies such as easyJet, Asos, Nasdaq and Play.com). This has given me valuable experience on how to write fast, maintainable and scalable code.
I am a practitioner of the BDD (Behavioural Driven Development) approach where possible or at the very least a TDD (Test Driven Development) approach. I don't know how people can write software without a specification or at the very least a test. Without this how do they know what they are writing their software to do? Writing, investigating and talking through the Spec(s)/test(s) first gives you a clear vision of what the software needs to do. Bolting the tests on after the fact (or in the worst case not at all) always leads to a more long winded and buggy solution.
For most of my career I have worked using the Agile Scrum methodology. I really like this way of working as it gives the software team a visible achievable goal each sprint. It also allows the business to react to an ever changing market (and often requirements).