On software development as a philosophy
We had really impressive lunchtime talk today from Suranga Chandratillake, a current partner at the VC firm Balderton Capital, and the former CEO and founder of blinkx.
One of the coolest things he talked about was software development as a philosophy and way of life. When implementing software solutions to solve large problems, developers break down the seemingly unsolvable problem into far smaller component parts, and isolate the various issues so that they can be tackled individually.
Over the course of Makers, I have found this approach so useful. This was definitely helped by using test-driven-development. As I became more familiar with tesrting, it became a framework that helped me to decompose problems into their component parts and to isolate them. Before writing any code the first question is always how can I break this down? What is the simplest scenario that I can test for?
I’d like to take his idea of software-development-as-a-philosophy one step further. In programming there is very rarely only one solution or possible implementation. Sometimes, one way is clearly superior, but in the vast majority of cases, different implementations have their own merits, and there are almost always trade-offs involved, whether that be between readability over conciseness, speed over ease of use etc. Realising that there are multiple ways to solve your problem is extremely powerful, and gives you the scope to really consider what it is that you would like to optimise for. I hope in future problem-solving situations, I will take the time explore various solutions and to consider their various merits.
Will report back on how my next problem-solving exercise goes taking this approach…
Hannah