¿Es la ciencia o la ingeniería?

Tienes razón. Es poco probable que te contraten como diseñador de inmediato. También es poco probable que alguna vez lo contraten como diseñador sin algunas habilidades de codificación serias. Fui contratado como diseñador y diseñé el nuevo sistema de seguridad electrónica para los aeropuertos Reagan / National y Dulles, pero también tuve que ir directamente al código en algunas ocasiones.

Sin embargo, tenga en cuenta que el diseño no es realmente la ciencia. Es más como la nave. A menos que esté publicando algoritmos, lo más cerca que estará de hacer ciencia será la depuración. Por supuesto, el propósito de hacer el trabajo correcto implica obviar el código en sus propios programas, pero siempre hay muchas oportunidades para depurar sistemas con los que tiene que comunicarse, que siempre parecen ser turbios.

No conozco ninguna forma general de aprender a disfrutar la codificación. La diversión que obtengo es ver el resultado. Durante el fin de semana, trabajé en un paquete de pintura. Anteriormente, solo funcionaba el lápiz, y no había deshacer. Así que implementé deshacer, líneas y trazos y pinceles e incluso pinceles de imagen con alfa, y usar el paquete (bajo el principio “come tu propia comida para perros” de Joel Sapolsky) para crear algunos iconos agradables de lápiz, línea y pincel con las puntas coloreado automáticamente cuando el usuario cambia el color.

El resultado es limitado, pero es rápido y resbaladizo, y eso me agrada. Parece una aplicación, y tengo que usarla como suck, y es satisfactoria. Pero tuve que hacer algo de ciencia. NSBitmapImageRep no expone suficientes operaciones de composición, por lo que tuve que desplegarme en CoreGraphics. Eso fue desagradable de hacer, pero ahora está funcionando, y sé que la infraestructura puede hacer todo lo que necesito hacer con la aceleración de hardware.

Eso es lo divertido para mí. Llegar a un nivel de madurez, donde sé que el diseño es bueno, porque puedo ver y sentir los resultados. En el camino, sin embargo, hubo muchos momentos frustrados de “no me hables ahora”.

También creo que implementé el algoritmo de línea Bresenham más rápido que nunca, desde la memoria en desuso, y eso me complació.

También disfruto destruyendo mi propio código cuando tengo una mejor idea. En general, refactorizo ​​gradualmente, pero deja un montón de cruft, y quemarlo es muy divertido.