¿Los ingenieros de software de Silicon Valley dibujan diagramas antes de codificar o saltar y codificar?

Depende Me di cuenta de que hay una dualidad en el pensamiento entre los desarrolladores de software. Algunos piensan más naturalmente en términos de algoritmos y otros más naturalmente en términos de estructuras de datos. Ambas son formas válidas de pensar sobre las cosas; Para los pensadores algorítmicos, las estructuras de datos a menudo se caen del algoritmo, y para los pensadores de estructuras de datos, los algoritmos se caen de las estructuras.

Sospecho que el pensamiento visual tiende a ser más natural para los tipos de estructuras de datos (aunque podría imaginar a un pensador algorítmico pensando en términos de diagramas de flujo).

En mi propio trabajo, si estoy haciendo algo grande, tiendo a diagramar los objetos y sus relaciones solo para obtener “el panorama general”. Para algo pequeño, como el trabajo de mantenimiento, a menudo voy directamente al código, especialmente si ya entiendo algo del problema.

El principal beneficio de dibujar diagramas no es averiguar exactamente lo que vas a hacer: es iterar a través de tu primer conjunto de errores de una manera de bajo costo.

Siempre que tenga que diseñar algo complejo, sus primeras ideas serán erróneas. Si comienzas escribiendo un código de nivel de producción al principio, es probable que deseches la mayor parte. Por el contrario, si comienza con un proceso de nivel superior como dibujar diagramas, hablar con compañeros de trabajo, pensar en voz alta o construir prototipos, iterará mucho más rápido y probablemente terminará con una solución de mayor calidad.

Personalmente, no me gustan mucho los diagramas, pero paso mucho tiempo iterando de otras maneras.

Personalmente, al ser una persona no visual, encuentro diagramas de utilidad limitada. Pero generalmente hay suposiciones del sistema que deben documentarse antes de sumergirse en la codificación.

Por ejemplo, descripciones de objetos cruciales del sistema. Algunas personas dibujarán diagramas de ellos, pero prefiero los archivos de encabezado C o las definiciones de la interfaz Java. Por lo tanto, depende de si considera la documentación de la interfaz como codificación o no. Considero que no lo es: está definiendo una API, en términos específicos del idioma. Y he creado muchos archivos de encabezado y los he eliminado, el equivalente a romper la página en la que estaba dibujando un diagrama y tirarlo a la basura.