@headius give it away :) ruby is so much faster than java at finding the shape of a solution even if it doesn't end up being the solution— Jacob Perkins (@TheDataChef) February 21, 2014
I found this tweet in Charles Nutter’s Twitter feed. Something about it struck me as “right”. Nothing about the languages in particular, but the description of a problem as having a shape feels right and specifically for the problem of product development.
I’ve long thought of products as having a shape and the process of building products is trying to discover that shape. When the process is working well, you discover the general shape, then you sit with it and use the product. As you use the product, you discover cracks and edges. You use these cracks to inform your development. You develop around these cracks and sometimes you get a foothold. These footholds are veins of code that are rich for development, you can use these as a wedge to discover new areas of the shape you are discovering.
Contrast this with big products that were designed ahead of time. They designed the shape, rather than discovered it. Then when developing the product, they impose their shape on the problem. I’ve never seen this process work.
Good product development is more a process of exploration and discovery than of design and construction.
I realize I’ve just described the lean vs waterfall methods of software development, I’m ok with that.