¿Los programadores profesionales no se sienten frustrados por tener que intentar y encontrar soluciones a problemas que solo pueden resolverse de manera estrictamente lógica? ¿Su capacidad de perseverar proviene de un impulso innato para resolver acertijos?

A pesar de que hice un doctorado, en realidad estoy más en el lado de los “rompecabezas de odio”. Nunca resolví ni un solo Sudoku y la única matemática que disfruto es la matemática que puedo usar para un problema. Es por eso que la universidad fue realmente genial para mí, porque me obligó a pasar por todas las matemáticas, etc., que nunca hubiera tocado de otra manera.

Al mismo tiempo disfruto de nuevos y sofisticados problemas. No disfruto del Sudoku o del codificador de tope o lo que sea, porque esos son rompecabezas que fueron resueltos por un millón de personas antes. No disfruto de las aplicaciones web repetitivas que se han escrito sin cesar antes.

Bueno, por supuesto, cuando comencé hace 20 años, explorar la programación era emocionante y místico por sí mismo. Así que no me importaba mucho si otros ya escribían lo mismo (pero para mí era muy importante escribir algo que me pareciera genial).

Pero un rompecabezas resuelto (artificial) no me da una gran sensación de logro. Por otro lado, encontrar la causa de un error realmente desagradable después de días de desesperación lo hace. Ver tus creaciones llegando a la “vida” también lo hace. Normalmente estoy más impulsado por la meta. Pero si el objetivo parece valer la pena, el camino también se vuelve agradable.

El álgebra lineal se volvió interesante una vez que pude usarlo en aprendizaje automático o en gráficos de computadora.

Así que realmente no puedo decir que me guste hacer rompecabezas, pero no siento que mi trabajo haga rompecabezas todo el día. Es encontrar soluciones a problemas concretos. Esto podría implicar una u otra tarea que se pueda comparar con rompecabezas.

No sé de dónde viene el OP, pero todos los problemas de trabajo que no son problemas de personas no parecen resolverse por medios no lógicos. La programación no es única en este sentido.

Yo personalmente no me frustro por la resolución de problemas de software. Mientras no tenga requisitos de rendimiento en tiempo real o problemas de acceso a los datos, el software puede hacer lo que se supone que debe hacer, de alguna manera, eventualmente. Las computadoras son notablemente confiables y las herramientas son medio decentes. Puedes encontrar una manera de crear o arreglar cosas. A veces me tomó semanas para un solo error, pero lo he hecho.

Si quieres frustración, ve a hablar con un ingeniero mecánico o eléctrico que no pueda diseñar algo porque viola las leyes de la física. O un médico que intenta tratar a un paciente con un cáncer agresivo terminal. Golpear tu cabeza contra problemas irresolubles es frustración. Mucha gente ingresa a la ingeniería de software porque es menos frustrante.

No, eso no es realmente lo que es la programación profesional.

Odio los rompecabezas, realmente los hago. No veo ningún valor de entretenimiento en Sudoku, crucigramas, etc.

La programación profesional trata de resolver problemas, pero no me refiero a problemas en el sentido matemático, me refiero a problemas en el sentido comercial .

Como programador profesional, generalmente no se esperará que se siente y resuelva problemas lógicos, se espera que resuelva problemas comerciales y problemas prácticos.

Se le mostrará un sitio web que funciona en Chrome, pero no en Safari, y se espera que lo arregle.

O se le mostrará un servicio REST y se le pedirá que lo consulte cada hora y ponga los resultados en un archivo de Excel.

O tal vez se le pida que encuentre una manera de cambiar 10,000 archivos XML en 10,000 archivos de Word.

Son cosas así.

Tal vez eso sea cierto para algunos programadores, pero para muchos de nosotros es realmente más sobre la creación de software. Después de todo, los albañiles pueden sentir un deseo innato de transportar objetos pesados ​​y tener un físico adecuado para eso, pero principalmente solo quieren construir cosas, además de que necesitan dinero. Es lo mismo con los desarrolladores de software.

El hecho de que las computadoras operen según estrictos principios lógicos es algo que probablemente la mayoría de nosotros disfrutamos. Cuando le dice a una computadora que haga algo, no se estresa y comienza a discutir con usted sobre la mejor manera de hacerlo. No te dice que tus ideas son idiotas, incluso si lo son. No tiene que intentar que llegue a un compromiso incómodo con sus otras computadoras, que están hartas de escucharlo y quieren hacer lo suyo. Simplemente hace lo que le dices que haga.

Si no hace lo que querías, es tu culpa o hay una razón por la que obtuviste resultados inesperados. A veces es bueno lidiar con problemas que tienen soluciones. Puede ser más relajante que tener problemas que pueden no tener una solución clara, como es común en la mayor parte del resto de la vida.

El software también es en parte una actividad creativa en el sentido artístico de “creativo”. Tu objetivo es diseñar una interfaz de usuario agradable. Si no hay una interfaz de usuario, tu objetivo es diseñar un código elegante. Un programa realmente bien escrito es como una pequeña y hermosa máquina con cada parte que coincide exactamente con cada otra parte, y cada uno de los bits es completamente desmontable y reemplazable.

Si hay una cosa en particular, aparte del dinero, que nos mantiene a la mayoría de nosotros, es probablemente el deseo de agregar “una característica más” a nuestro software. Puedes encontrarte agregando “una característica más” durante meses y meses con bastante facilidad. OK, has agregado la característica X, pero ahora lo que la haría realmente genial sería la característica Y. ¿Cómo puedes resistirte? Y, por supuesto, la característica Y no va a ser el final. Tu programa termina siendo como un buen libro que no puedes dejar de leer fácilmente, o una serie de televisión en la que te mantienes sintonizado porque realmente quieres saber qué sucede a continuación.

A veces, agregar estas funciones me parece un poco aburrido o estresante, especialmente si tiene una fecha límite. Pero luego aún desea agregarlos, al igual que leerá varias páginas de un libro que no son nada especial, si sabe que algo realmente genial vendrá después de eso.

Muchas personas disfrutan tanto de los problemas lógicos que pagan por la oportunidad de resolverlos. Basta con mirar el sudoku y los crucigramas.

Los programadores son como esas personas, excepto que descubrieron una forma de cobrar para resolver problemas lógicos. ¡Genio!

Si no eres un programador, te sorprendería la cantidad de creatividad que existe en la codificación. El hecho de que no sea un arte visual no significa que no haya mucho arte en él.

Encontrar el arte en mis tareas es a menudo la única manera de mantenerme sano. Sé que no tengo que hacer esto de inmediato, así que retrocedo un paso y empiezo a considerar el programa desde un nivel superior. Un buen lugar para comenzar es el diseño. ¿Cómo encaja esta característica en el diseño general de la aplicación? ¿Cómo está interactuando con otras características? ¿Hay formas claras de hacer que el comportamiento sea aún más revelador de intenciones?

Usted ve, sus jefes no pueden y no pueden entender el sitio de manera mecánica . Si desea que los ingenieros construyan un puente, es probable que solo piense en dónde se supone que comience, finalice, qué tan alto se supone que debe subir, y si es realmente insensato, la ubicación de los soportes y su constitución y similares.

Los ingenieros que construyen el puente, sin embargo, se ocupan de todo lo demás . La altura de las barandillas, sus materiales, el diseño particular que van a utilizar y las concesiones que presentan. Cómo ejecutar el cableado para la iluminación. Qué tipo de mediana va a estar separando el tráfico. Todas las pequeñas cosas.

Cualquier proyecto lo suficientemente grande como para involucrar a ingenieros, e incluso muchos proyectos que no lo hagan, tendrá un espacio enorme en el que se pueden pensar, especificar e implementar las cosas, pero depende de los ingenieros hacerlo realmente, como Los clientes solo están interesados ​​en el producto terminado y lo que quieren obtener de él. Este es el espacio en el que puedes ser creativo.

Con el software, este espacio puede ser muy, muy grande. Las características solicitadas a menudo se pueden hacer de docenas de formas diferentes. Incluso las imágenes a menudo se dejan en manos del equipo y solo se cambian si al cliente no le gusta. Los detalles arquitectónicos, como en qué pila se ejecuta el back-end, a los clientes no les importa mucho y solo tienen una apreciación simbólica o incorrecta de las ventajas y desventajas de una solución u otra.

La codificación es una locura divertida una vez que empiezas a apreciar todos estos pequeños detalles.

En realidad, lo contrario es cierto. La lógica puede resolver problemas de software. Es una aplicación sencilla, y siempre funciona. Compara esto con los problemas humanos. Algunos problemas humanos son intratables. La lógica no los resolverá. Gastar sangre y tesoros no los resolverá. En comparación, los problemas informáticos son tan fáciles de resolver que es posible que se arrepienta de haber regresado a casa al final del día.

La programación es un medio para un fin; El objetivo es construir algo. Resolver problemas, o más bien describir lo que está tratando de lograr utilizando una secuencia eficiente de instrucciones para una máquina, es solo el obstáculo necesario para lograr ese objetivo.

De esta manera es similar a un escultor que trabaja una pieza de piedra natural en un objeto de arte. El artista no está buscando un ejercicio físico, sino que es necesario para producir lo que tiene en mente.

A veces, diseñar una solución elegante para su problema de encontrar esa secuencia de instrucciones puede ser satisfactoria. Otras veces no lo es y solo quiere que funcione para que pueda seguir adelante. Me imagino a ese escultor experimentando emociones similares cuando trabaja en su arte.

¡Los problemas que se resuelven por medios lógicos son grandes! Tienen sentido Las soluciones tienen sentido. El mundo tiene sentido. Calman cualquier programador normal.

Son los problemas ilógicos los que causan frustraciones. Oh, tengo que usar este paquete de software específicamente en mi proyecto porque el cto firmó un contrato con alguna compañía porque se veía bien en el papel, pero en la práctica es terrible. Etc. Esas son las que causan frustración y requieren “perseverancia”.

Si usted es un “programador” y la frustración le resulta más fácil que la fatiga, las ideas, la casualidad, la curiosidad, el sentido del deber (para su familia, la sociedad, la causa, etc.), entonces la solución es * que * está mucho más lejos. de ti. El problema nunca se resuelve solo. Cada segundo que gasta formulando una solución (consciente o inconscientemente) o participando, su desarrollo lo acerca más al cierre que cualquier otra cosa que pueda o deba hacer. Todo lo demás es una distracción o un mal necesario.

Un problema desafiante es como una mujer hermosa, bella y sofisticada que juega duro para conseguir. El enigma / problema no le da mucha importancia a su motivación o compensación ni a lo inteligente que es. Si no le das tu tiempo o no siempre estás dispuesto a abandonar las ideas preconcebidas o no estás dispuesto a cuestionar lo que sabes, alguien más la cortejará.

Llámelo perseverancia, llámelo trabajo, llámelo dios. Al final del día, el problema es estrictamente intelectual.

Personalmente, no. Prefiero cosas que solo pueden resolverse por medios estrictamente lógicos. Las cosas son predecibles, y cuando hay un problema, sabes que puedes llegar al fondo de él simplemente razonando a través de él. Y cuando algo funciona, seguirá funcionando (y si deja de funcionar, usted sabe que algo cambió y puede averiguar qué fue).

Es mucho más fácil que los problemas impredecibles de “personas”. En mi opinión, las personas que tratan los problemas de las personas de manera consistente y exitosa son los verdaderos héroes. Nunca podría hacer su trabajo.

Odio los rompecabezas como los Sudokus, pero me encanta la programación. Sobre todo, porque te permite crear algo nuevo de la nada. Cada vez que construyo software, me siento un poco como un escultor, en cierto sentido es como un tipo especial de arte. Y creo firmemente que el “efecto de flujo” creado por esta experiencia es lo que nos llevó a la mayoría de nosotros a la programación.

No soporto los rompecabezas. Soy ingeniero, no científico.

Quiero cosas para trabajar. Con rapidez. Seguramente. Ser fácil de mantener. Fácil de trabajar.

Persevero porque soy ingeniero, y cuando me establezco una meta, quiero que esa meta se cumpla. No me gusta fallar en las cosas. Preferiría aprender, experimentar y aplicar nuevas técnicas antes que rendirme. Preferiría que el dinero o el tiempo se acaben en lugar de declarar ‘busto’ antes. A menos que los datos prueben que no se puede hacer algo dentro de nuestras restricciones.

Nunca he entendido por qué la gente disfruta de los rompecabezas. Pero me alegro por ti, si te traen placer.

Ciertamente no puedo hablar por otros programadores; sin embargo, resolver problemas, a menudo con lógica, es la razón por la que disfruto de la (ed) programación. La única vez que me sentía frustrado era cuando a los humanos, normalmente no programadores, les cambiaban las especificaciones o no sabían lo que estaban pidiendo y cuando lo recibían, no les gustaba. “Sé que me diste lo que pedí; Pero, no es lo que quiero “.

Hay cosas que la programación puede hacer y cosas que no puede hacer. Lo más importante que no puede hacer la programación es hacer que sus usuarios sean mejores seres humanos o, intencionalmente, mejores trabajadores. Es un hecho bien comprendido por los programadores que hacen que un programa no sea válido para los idiotas. La madre naturaleza hará un mejor idiota.

No puedo responder por los demás, pero para mí, disfruto resolviendo acertijos y arreglando cosas (físicas), y se relaciona con no frustrarme con encontrar soluciones. Para mí, es un pequeño juego para descubrir la manera de hacerlo funcionar, así que es algo divertido para mí.

Eso no quiere decir que no me siento frustrado en absoluto. Si bien las restricciones pueden llevar a soluciones creativas, ciertas restricciones hacen que sea más difícil encontrar una y, a veces, llegar con lo que parece una solución alternativa que una solución adecuada. O bien, conozco una solución, pero sé que implementarla será un problema, así que intentaré encontrar una mejor (a veces sin éxito).

En general, no es una lucha encontrar una solución, así que no hay nada por lo que perseverar. Simplemente el acto de encontrar una solución lógica es divertido, y verlo trabajar en acción vale más que el tiempo y la energía. Solo necesito el tiempo para pensar.

La codificación es un problema estrictamente lógico y se adapta a las personas con ese tipo de cerebro. El diseño del sistema, sin embargo, es muy creativo. El problema es que los buenos programadores son promovidos al diseño y, por lo general, no son muy buenos en eso.

En mi caso, un gran sí. He estado tratando de resolver cosas desde que puedo recordar (alrededor de los 3 años). La programación es solo una evolución natural de eso. Tanto que cuando llegué a 65, no podía retirarme, la programación era demasiado divertida.

La belleza y la satisfacción de resolver por medios lógicos, es solo eso, hay una garantía en ello.

Eso solo, hace que sea una experiencia muy satisfactoria, en mi opinión.

Intente comparar las dos perspectivas de:

“¿Dónde puse las llaves de mi coche?”

y

“¿Cuál es la raíz cuadrada de 520 ^ 5 * (i- (e / pi))?”

Sé cuál de ellas, estaría gritando, más temprano que tarde, sobre.

En realidad me parece bastante creativo el trabajo. Después de décadas de práctica, los patrones lógicos que se combinan son bastante intuitivos, y puedo concentrarme en lo nuevo que nunca había hecho antes, lo que hace que el problema sea realmente interesante. Ya no tengo que usar la lógica para demostrar que lo que estoy haciendo funcionará, de lo que un pintor tendría que recordar su primera clase de arte para mezclar correctamente sus colores y cargar su pincel.