¿Es la habilidad de un programador la creatividad más importante para codificar su trabajo? Si no, ¿qué es?

La programación puede considerarse como construir, modificar y reparar una máquina infinitamente flexible. Las cosas que utilizamos para realizar estas tareas pueden considerarse kits de herramientas y herramientas individuales. Como los juegos de herramientas y las herramientas individuales son software en sí, las nuevas herramientas y juegos de herramientas están constantemente disponibles y se modifican.

Se debe centrar la atención en las herramientas que utilizan habilidades, y especialmente para mantenerse al día con lo que está disponible y agregarlo al kit de herramientas según corresponda. (Hacerlo es bastante costoso en tiempo, menos dinero). La creatividad de un programador de variedades de jardín estándar se relaciona con el reconocimiento de problemas, la selección de herramientas y la aplicación de herramientas.

En la fabricación tradicional, los “fabricantes de herramientas y matrices” eran los maquinistas más creativos, donde los maquinistas habituales utilizaban el conjunto de herramientas existente y las extensiones especializadas para ese kit de herramientas, adquiridas para el trabajo en particular o creadas por el fabricantes locales de herramientas y matrices.

Una de las habilidades cruciales necesarias para un buen uso de herramientas y una nueva selección de herramientas es ignorar por completo los componentes internos de los productos. Hay especialistas para diseñar y construir las nuevas herramientas. Existen formas económicas de aprender qué pueden hacer las herramientas y cómo hacer que lo hagan. Gran parte (¿la mayoría?) De educación académica de alto nivel en ciencias de la computación, etc., es en realidad capacitación para la fabricación de herramientas en lugar de la selección y uso de herramientas.

Un programador creativo está muy familiarizado con los detalles del dominio de su aplicación (lo que hace su empleador para ganar dinero para pagarles) y tiene un extenso juego de herramientas organizado para facilitar la navegación y el uso. (La mayoría de las bibliotecas de objetos son ejemplos de kits de herramientas extraordinariamente frustrantes y lecciones útiles sobre cómo no construirlos).

Los diseñadores y constructores de herramientas son expertos en la aplicación de herramientas en un nivel inferior de abstracción. Son capaces de mantener una cantidad mucho mayor de conocimiento detallado inmediatamente disponible para su uso apropiado. Puede valer la pena pensar que los diseñadores creativos de herramientas (software) construyen cajas negras opacas y buenas desde adentro hacia afuera. Cuanto más opaca sea la herramienta y su uso sea más obvio, más creativo será el creador de tomas.

No distinguir cuidadosamente estos diferentes tipos de programadores y programas es un error tradicional.

Es difícil nombrar una sola habilidad que sea más importante para un programador. Pero no clasificaría la “creatividad que codifica su trabajo” como la primera, ni siquiera atada a puño.

En cierto sentido, toda la programación es una actividad creativa. Pero “codificar creativamente su trabajo” implica algo diferente.

Seamos claros: si hay una forma estándar de resolver un problema en particular (o parte de un problema), es tarea del programador usar la solución estándar. En muchos casos, es un trabajo de los programadores escribir código aburrido, porque eso es lo que se necesita.

Sí, hay momentos en que un problema particular requiere un enfoque creativo. En ese caso, creativamente puede brillar. Pero casi todo su trabajo diario estará más cerca de ser aburrido que creativo.

Y si resuelve un problema de manera creativa donde una solución “aburrida” funcionaría, y el próximo programador tiene que pasar horas averiguando qué hizo y por qué, realmente ha fallado en su trabajo.

La habilidad más importante es la resolución general de problemas. En mi opinión, esto requiere creatividad, pero no diría que es * todo * acerca de la creatividad; Es un cierto * tipo * de creatividad. Entonces, quizás lo más importante es una amplia experiencia y conocimiento que * permite * esa creatividad, luego la creatividad.

Soy un programador novato con muchas preguntas. Sin embargo, una respuesta a casi todas las preguntas para todo ha estado en la misma línea. Dicen ‘La habilidad para resolver un problema es la habilidad más importante’, supongo que la creatividad también es una habilidad muy buena.