i could have sworn i would never write about comparing software development to building stuff in the real world, but during my work on my van, i've come to realize there are striking similarities between the two.
on the construction level, the two are very different. having written software all my life, i'm used to the luxury of inconsequential design errors (as long as they're caught soon enough.) when you're building stuff out of real materials, you can't afford to go back to planning too many times after execution has started. i have to work very slowly to avoid making stupid mistakes.
where the real similarities begin, in my experience, is in requirements analysis. requirements in software are very difficult, and most often overlooked, cause, you know, software is infinitely malleable, as they say. most of the time, the first possible solution is the one that is implemented. most of the time, requirements are not complete (at best), or simply consist of a work order, and it is left to the developer to fill in the blanks, something a lot of developers just don't have the necessary experience or incentive to do well. this is where there is a direct parallel between building a home in van, and building software. it would have been extremely difficult for me to hand over the project to someone else, and have them deliver a van that will satisfy all of my requirements. there are a myriad of concerns that have to be addressed, and even if there are universal rules for design, my specific situation is different enough that no standard solution will fit. the only way for me to get the right van for me is to spend a lot of time and energy visualizing different ideas, needs and situations, let the ideas happen and try to pick the ones that will fit together like a jigsaw puzzle. this is what we do with prototyping in software... when we do it right. in my experience, prototyping in software is more often used as a sales tool - to convince management or the customer that you have a good idea. if i had handed the van project over to a conversion van specialist, no matter how good a craftsman he is, he had better be a master requirements analyst, or the project would be a failure.
i mentioned the shelf/piano desk already. this is but one example. i'll probably elaborate in further posts.