Grandes Pensamientos Sobre la Ingeniería de Software

A veces, un breve pensamiento puede traer ideas increíbles.

Maximiliano Contieri
DotTech
6 min readOct 10, 2020

--

Hay algunas citas geniales que he estado recopilando.

Las utilizo como inspiración para algunos artículos.

Foto por Zac Durant en Unsplash

Diseño de software

Solo hay dos cosas difíciles en Ciencias de la Computación: invalidación de caché y nombrar cosas.

Phil Karlton

Primero haga el cambio fácil (advertencia: esto puede ser difícil), luego haga el cambio fácil.

Kent Beck

Los lenguajes de programación orientados a objetos admiten el encapsulamiento, lo que mejora la capacidad del software para ser reutilizado, refinado, probado, mantenido y extendido. El beneficio completo de este soporte sólo se puede obtener si se maximiza el encapsulamiento durante el proceso de diseño.

Rebecca Wirfs-Brock

Las cosas simples deben ser simples, las complejas deben ser posibles.

Alan Kay

La simplicidad es un requisito previo para la confiabilidad

Edsger W. Dijkstra

Antes de que el software pueda ser reutilizable, primero debe ser utilizable.

Ralph Johnson

La mayor parte del software actual se parece mucho a una pirámide egipcia con millones de ladrillos apilados uno encima del otro, sin integridad estructural, pero hecho por la fuerza bruta y miles de esclavos.

Alan Kay

La optimización prematura es la raíz de todos los males.

Donald Knuth

Cualquier problema en informática se puede resolver con otro nivel de indirección.

David Wheeler

La informática no se trata de máquinas, del mismo modo que la astronomía no se trata de telescopios. Existe una unidad esencial entre matemática e informática.

Michael R. Fellows

El mayor incremento del rendimiento es la transición del estado no operativo al estado operativo.

J. Osterhout

No puedo estar tan seguro de la informática como de la biología. La biología tiene fácilmente 500 años de problemas interesantes en los que trabajar. Está en ese nivel.

Donald Knuth

Una computadora te permite cometer más errores más rápido que cualquier otro invento, con las posibles excepciones de las pistolas y el tequila.

Mitch Ratcliffe

Foto por Shahadat Rahman en Unsplash

Lenguajes de programación

Mucha gente tiende a mirar estilos de programación y lenguajes como religiones: si perteneces a uno, no puedes pertenecer a otros. Pero esta analogía es otra falacia.

Niklaus Wirth

Se ha escrito más código bueno en lenguajes denunciados como “malos” que en lenguajes proclamados como “maravillosos”, mucho más.

Bjarne Stroustrup

Sun Microsystems tenía las personas adecuadas para convertir Java en un lenguaje de primera clase, y creo que fue el personal de marketing de Sun quien se apresuró a sacarlo antes de que debiera haber salido.

Alan Kay

Sólo hay dos tipos de lenguajes: los que la gente se queja y los que nadie usa.

Bjarne Stroustrup

Foto por You X Ventures en Unsplash

Planificación / Gestión

El costo de agregar una función no es sólo el tiempo que lleva codificarla. El costo también incluye la adición de un obstáculo para la expansión futura. El truco consiste en elegir las funciones que no luchan entre sí.

John Carmack

Einstein argumentó repetidamente que debe haber explicaciones simplificadas de la naturaleza, porque Dios no es caprichoso ni arbitrario. Esa fe no consuela al ingeniero de software.

Fred Brooks

Puede producir hardware en masa; no se puede producir software en masa; no se puede producir en masa la mente humana.

Michio Kaku

Cualquier organización que diseñe un sistema (definido de manera amplia) producirá un diseño cuya estructura es una copia de la estructura de comunicación de la organización.

Melvin Conway

El optimismo es un riesgo laboral de la programación: la retroalimentación es el tratamiento.

Kent Beck

Foto by Bench Accounting en Unsplash

Código limpio

Siempre codifique como si el tipo que termina manteniendo su código fuera un psicópata violento que sabe dónde vive.

John Woods

Cada vez que escribe un comentario, debe hacer una mueca y sentir el fracaso de su capacidad de expresión.

Robert Martín

Mucha complejidad en el software proviene de intentar hacer que una cosa haga dos cosas.

Ryan Singer

El código eliminado es código depurado.

Jeff Sickel

Cualquier tonto puede escribir código que una computadora pueda entender. Los buenos programadores escriben código que los humanos pueden entender.

Martin Fowler

Cualquier código propio que no haya mirado durante seis meses o más bien podría haber sido escrito por otra persona.

Ley de Eagle

Un día, mi hija entró, miró por encima del hombro un código Perl 4 y dijo: “¿Qué es eso, insultos?”

Larry Wall

La depuración es dos veces más difícil que escribir el código en primer lugar. Por lo tanto, si escribe el código de la manera más inteligente posible, por definición, no es lo suficientemente inteligente como para depurarlo.

Brian Kernighan

Algunas personas, cuando se enfrentan a un problema, piensan “Lo sé, usaré expresiones regulares”. Entonces ellos tienen dos problemas ahora.

Jamie Zawinski

El código es como el humor. Cuando tienes que explicarlo, es malo.

Cory House

Un nombre descriptivo largo es mejor que un nombre corto enigmático. Un nombre descriptivo largo es mejor que un comentario descriptivo largo.

Robert Martín

Hablar es barato. Enséñame el código.

Linus Torvalds

Foto por Raquel Martínez en Unsplash

Calidad del software

El código legacy es código sin pruebas.

Michael Feathers

La exactitud es claramente la cualidad principal. Si un sistema no hace lo que se supone que debe hacer, todo lo demás importa poco.

Bertrand Meyer

A medida que los tests se vuelven más específicos, el código se vuelve más genérico.

Robert Martín

Los tests de software no sólo garantizan la ausencia de errores, sino también la presencia de valor.

Amit Kalantri

La calidad es gratuita, pero sólo para aquellos que estén dispuestos a pagar mucho por ella.

DeMarco y Lister

Nada hace que un sistema sea más flexible que un conjunto de pruebas.

Robert Martín

Por regla general, los sistemas de software no funcionan bien hasta que se han utilizado y han fallado repetidamente en aplicaciones reales.

David Parnas

Hay dos formas de escribir programas sin errores; solo la tercera funciona.

Alan J. Perlis

Foto por Kelvyn Ornettte Sol Marte en Unsplash

Refactorización

Siempre que tengo que pensar para entender lo que hace el código, me pregunto si puedo refactorizar el código para hacer que esa comprensión sea más evidente de inmediato.

Martin Fowler

Foto por National Cancer Institute en Unsplash

Programación Orientada a objetos

Que no quede ninguna duda de que el diseño orientado a objetos es fundamentalmente diferente de los enfoques tradicionales de diseño estructurado: requiere diferentes formas de pensar sobre la descomposición y produce arquitecturas de software que están en gran parte fuera del ámbito de la cultura del diseño estructurado.

Grady Booch

Inventé el término “orientado a objetos”, y C++ no era lo que tenía en mente

Alan Kay

Parte del objetivo de esta serie de artículos es generar espacios de debate y discusión sobre el diseño de software.

Esperamos comentarios y sugerencias sobre este artículo.

Este artículo también está disponible en inglés aquí.

Hilo original en Twitter

--

--

Maximiliano Contieri
DotTech

I’m a senior software engineer specialized in declarative designs. S.O.L.I.D. and agile methodologies fan. Maximilianocontieri.com