Cómo aprender a pensar más rápido y más creativo en el desarrollo de software.

Piensa más rápido? Ciertamente, la experiencia ayuda, ya que puedes aportar una gran cantidad de potencia de fuego “oh, he visto este patrón antes” para enfrentar un problema. Además, si sabe, increíblemente bien, las API y la sintaxis de un lenguaje, puede pensar en el código que está escribiendo en un nivel superior, sin ralentizarse para intentar recordar el paquete sangriento en el que se encuentra. Por ejemplo, ¿fue javax.ws.rs o esa cosa en apache.jetty.fml? Y sabe que puede escribir, diga (_1.x) en lugar de, diga (foo => {return foo.x}) si conoce bien la sintaxis, al menos en ciertos idiomas.

La familiaridad con los patrones ayuda mucho ya que ayuda a estructurar su pensamiento, esto se relaciona estrechamente con su experiencia, excepto que los patrones le permiten obtener beneficios de la experiencia de otras personas.

También puede seguir las mejores prácticas, como TDD, que le permiten pensar en los problemas de manera más eficiente y estructurada.

Ahora, la creatividad.

La mayoría de las personas no le dan a esto el pensamiento que merece a un nivel meta. La creatividad no es un tipo de magia que proviene de algún rincón oscuro de la psique. Hay muchas herramientas que he encontrado que ayudan con la creatividad, muchas.

  1. Restricciones Es contrario a la intuición, pero en el segundo momento en que pones las restricciones correctas de un sistema, la ideación se vuelve mucho más fácil. Por ejemplo, hago desarrollo de recetas. Si solo trato de pensar en una receta, podría luchar un poco para pensar en algo. Pero todo lo que tengo que hacer es limitarme, por ejemplo, a recetas que incluyan tomillo o recetas con influencia mexicana o tailandesa, y de repente tengo cincuenta ideas, porque tengo un buen punto de partida.
  2. Duales Un ejemplo fantástico de la aplicación de los duales es la invención de la programación reactiva, donde los duales se aplicaron para derivar la idea de objetos observables a partir de la idea de colecciones iterables. Busque la dualidad y el video que discute los orígenes y el diseño del marco reactivo en .NET. Es encantador. En un sentido menos abstracto, me gusta aplicar lo que yo llamo inversión, que es un enfoque liviano para los duales, en el que adopto un enfoque que se nos ha ocurrido e intento encontrar formas de girarlo 180 a lo largo de un conjunto de ejes. Para derivar nuevas ideas.
  3. Aplicación correcta de la navaja de afeitar de Occam: obtenga formas creativas de eliminar partes móviles de su aplicación.
  4. Hibridación: a menudo, la mejor solución del mundo real implica la aplicación de múltiples enfoques a la vez a un problema (sí, en oposición directa al dictamen de Occam. El mundo es un lugar sucio.) Por ejemplo, me gusta usar ambas identidades numéricas e identidades de cadena en objetos que expongo a través de interfaces REST. Las identidades de cadena son mutables, pero forman URL encantadoras. Identidades enteras para cuando quiero referencias inmutables, como en esquemas internos. Muchas veces, generar muchas ideas y luego hibridarlas puede generar buenas soluciones.
  5. Colaboración. Otras personas son geniales
  6. Sospecho que encontrará muchas cosas sabrosas sobre la creatividad, que se aplican a la codificación, de escritores como IDEO. Polinización cruzada. En términos más generales, mirar otras disciplinas y leer sobre diversas soluciones a problemas interesantes en campos distintos al suyo, puede ser muy divertido y gratificante.

Eso es un buen paquete de inicio, ¿eh?

Trabaja más inteligentemente y aprende habilidades de pensamiento creativo .

Puede trabajar de forma más inteligente desarrollando y utilizando siempre código reutilizable . Cada vez que escriba un nuevo código, intente hacerlo reutilizable: ajústelo a un proceso genérico y documéntelo bien para que pueda reutilizarse rápidamente la próxima vez (sin tener que leer el código para entender cómo usarlo).

A medida que el tiempo avanza, construirá una biblioteca de componentes reutilizables que se pueden reutilizar y encontrará que trabaja más rápido porque no reinventa la rueda.

Esto le permitirá ganar tiempo para aprender habilidades de pensamiento creativo y aplicarlas para generar nuevas ideas. Por ejemplo, ¿qué hay de desarrollar un marco genérico para apoyar el enfoque anterior?

hmm, más rápido y más creativo? Esos parecen objetivos opuestos. La creatividad llega cuando la mente está relajada y no se apresura a producir más y más. Creo que lo que quieres decir es más rápido y más productivo. Si eso es lo que quieres, entonces aprende todos los patrones de diseño y estudia el código existente y simplemente construye la compilación. Si realmente quieres más creatividad, entonces no estudies nada, solo construye sin ninguna investigación. Terminas con algunas cosas creativas, estoy seguro.

Ser creativo no se trata de velocidad, se trata de tener menos y mejores ideas. Solo necesitas una gran idea cada año para tener un gran año.

Para ser más productivos en el trabajo, significa enfocarse en ser más efectivo es traducir los requisitos reales del usuario en una solución que se pueda mantener. Esto requiere práctica.