As a child I aspired to be an inventor. Lego blocks, circuits, anything I could get my hands on, I’d experiment with and learn what I could do with it. I dreamed of a day when I would be able to build a robot myself.
Programming was been the first practical realisation of that aspiration, as it allowed innovation and creation, the ability to dream or envision a website or application and turn it into reality. With the right set of tools, an idea can be brought to life.
As a result of what some might call ‘obsessive traits’ my knowledge is quite diverse and in many cases the interests merge. My own deeper studying of psychology aids in eCommerce development and design by understanding the need, where possible, for empirical testing, along with being able to apply standard human behaviour (i.e less clicks to purchase leading to a greater chance of buying). It has also lead me to understand my own blind-spots and where to compensate for them in programming. An example of this would be the confirmation bias experiment where participants were asked to identify the next number in a sequence and work out the rule. The sequence they were given was 2, 4, 6. Most correctly guessed the next number would be 8, but incorrectly guessed that the rule was “adding 2 to each new number”, when in fact it was simply “any set of ascending numbers”. The failure to test alternative hypotheses was confirmed in other similar experiments, and there are practical applications of this in unit testing. A simple example being testing the cases that should work, and not testing cases that shouldn’t, something far too common.
In development, this has resulted in me specialising in a few key areas (specifically Rails and Ruby) while also understanding the full stack from servers down to interpreter internals. I’m able to write code in most major languages, but to truly know a language requires learning the idioms, experiences with common issues and bottlenecks, and knowing the best practices.