Ya hemos hablado aquí en otras ocasiones sobre el problema de encontrar una forma metódica de crear programas grandes que no fallen. Es un problema no resuelto y hay gente que está dedicando sus vidas a encontrar nuevos paradigmas y cambiar la forma de programar que tenemos, pero hay otra tendencia que consiste en resignarse y aceptar que la programación nunca será como la arquitectura o la ingeniería de caminos.
Dos de los ingenieros de java defienden esta última posición en su libro The Pragmatic Programmer. Pero también circula por internet una interesante entrevista a los autores dividida dos partes: Parte1 y Parte2.
Básicamete su argumentación es que cuando construyes un edificio tendrá el mismo aspecto que en el mapa del arquitecto y éste se queda practicamente inmutable en el mismo sitio durante años y años, solo tenemos que hacer una mínima manutención. Mientras que en un jardín plantamos las semillas y no podemos saber realmente cual será el aspecto final, debemos ir retocando contínuamente cada planta para que el jardín no se convierta en un caos. La verdad es que la metáfora del jardín se parece mucho más a mi día a día con la programación que el caso del edificio.
There is a persistent notion in a lot of literature that software development should be like engineering. First, an architect draws up some great plans. Then you get a flood of warm bodies to come in and fill the chairs, bang out all the code, and you’re done. A lot of people still feel that way; I saw an interview in the last six months of a big outsourcing house in India where this was how they felt. They paint a picture of constructing software like buildings. The high talent architects do the design. The coders do the constructing. The tenants move in, and everyone lives happily ever after. We don’t think that’s very realistic. It doesn’t work that way with software.
We paint a different picture. Instead of that very neat and orderly procession, which doesn’t happen even in the real world with buildings, software is much more like gardening. You do plan. You plan that you’re going to make a plot this big. You’re going to prepare the soil. You bring in a landscape person who says to put the big plants in the back and short ones in the front. You’ve got a great plan, a whole design.
But when you plant the bulbs and the seeds, what happens? The garden doesn’t quite come up the way you drew the picture. This plant gets a lot bigger than you thought it would. You’ve got to prune it. You’ve got to split it. You’ve got to move it around the garden. This big plant in the back died. You’ve got to dig it up and throw it into the compost pile. These colors ended up not looking like they did on the package. They don’t look good next to each other. You’ve got to transplant this one over to the other side of the garden.
¿Pensáis que la programación será siempre una disciplina como la jardinería o llegaremos algún dia a crear una disciplina ingenieril formal para crear software?



