¿Qué hacer cuando la codificación comienza a sentirse aburrida, como si todo fuera más de lo mismo? [cerrado]


33

Comencé a programar a la edad de 6 años en un Commodore 64. Ahora tengo 28 años y tengo que completar 4 cursos de un primer grado en Ciencias de la Computación.

Estoy empezando a aburrirme con escribir código después de todos estos años. He tomado un curso de Ciencias de la Computación en lenguajes de computación teóricos y 10 años de codificación de sistemas C en el campo de la seguridad de red y simplemente no recibo ningún estímulo al escribir código.

Puedo escribir código en C, C ++, Python o el lenguaje que desee, pero no puedo entusiasmarme con lo que estoy haciendo. No puedo sentir ningún desafío. He escrito código multiproceso, proxy HTTPS MITM y una aplicación WSGI sin la necesidad de ninguna habilidad de algoritmos específicos.

Siento que todas estas cosas nuevas son todas iguales, con abstracciones o automatización más simples (o más), pero todo me suena igual. Una y otra vez. El lenguaje computable es todo computable de Turing, por lo que la codificación es solo una replicación de un patrón similar en este subconjunto de una función parcial.

En mi trabajo diario, me siento aburrido incluso buscando errores, haciendo pruebas de referencia en el código o solucionando el problema con la biblioteca X, Y, Z.

Soy una persona muy curiosa Siempre me estimula algo. Pero no puedo ni siquiera cuando veo un gran código. Me siento más cómodo en cómo funcionan las cosas.

¿Es hora de avanzar en mi carrera? ¿O para obtener cosas más desafiantes en informática? Tal vez obtener un título importante en CS?

Empecé a leer mi primer libro sobre gestión de proyectos "Peopleware" y me estoy interesando más en el ciclo de vida del desarrollo de software. ¿Qué sugieres hacer?

Tal vez tratando de entrar en Google o Microsoft o Apple como lo han hecho algunos amigos míos. O tal vez una carrera profesional más gerencial. También he tratado de encontrar un buen libro sobre reglas de comunicación y "personalidad de las personas" para prepararme para la posibilidad de ingresar a la gerencia.

¿Alguna sugerencia?

PD: Tengo mucho interés, no estoy deprimido :) Me encanta la montaña, el senderismo, la sesión de fotos y soy un escalador deportivo, me encanta nadar y hacer deporte en general, a veces corro, en realidad yo ' m leyendo un libro sobre la historia de mi país (Italia) desde AC hasta hoy y me encantan los viajes (este verano hice 4000Km para ver mucho lugar en España y escalarlo, todo en solo 3 semanas, no un día festivo sino un maratón 24 km de trekking me lastimaron la hernia), amo el teatro y la vida en general


Gracias a todos, pensar en todas las respuestas me da la oportunidad de aclarar mi camino.

A modo de resumen, podemos generalizar sobre la respuesta más votada.

En primer lugar, todas las personas votan por la necesidad de hacer de nuestro trabajo un soporte para su vida y no la única razón para permanecer en la vida (este no es mi caso), por lo tanto, si solo tiene una razón de vida si trabaja, viene rápido a una situación realmente depresiva. Como la gente dice, Viena no te espera :)

Después de este recordatorio, la gente sugiere:

  • aumentar la complejidad técnica en la que estoy trabajando para aumentar el desafío y aburrirme menos al respecto.
  • cambie el campo de experiencia a un campo no técnico tratando de convertirse en gerente o haga avanzar a un cuidador en un campo no técnico relacionado con su trabajo.
  • cambiar el campo de especialización en otro tipo de desafío técnico, ¿eres un programador de sistemas? intente aburrirse menos desarrollando aplicaciones para humanos para que pueda sentirse más cómodo viendo a las personas usando su útil software
  • avanzar en tu carrera de informática en tu trayectoria académica

Para mi propósito, la respuesta correcta es avanzar en ciencias de la computación, creo que la programación no es la única forma de obtenerlas y creo que puedo sentirme mejor al obtener otro camino en ciencias de la computación diferente del cuidador de ingeniería de software.


10
Esto es realmente deprimente. ¿Por qué quieres ser gerente?

14
Desafortunadamente para usted, y si bien puede sonar duro, los gerentes deben entender cómo comunicarse de manera efectiva. Lo que escribiste arriba es extremadamente poco claro y apenas comprensible. Si está planeando un cambio de carrera en la gestión, trabajaría en sus habilidades de comunicación antes que nada. Perdón por tu situación.
George

9
@George: Creo que (pero admito que no estoy seguro) está escrito por alguien que no habla / escribe inglés como primer idioma.
FrustratedWithFormsDesigner

2
Vea De qué sirve la metaprogramación para obtener una metáfora divertida sobre este tema (hacer lo mismo en todas partes).

2
@George: por supuesto, el inglés no es mi primer idioma. Empiezo a editar para mejorar mi inglés y explicar mi frustración por la codificación.
abucheos

Respuestas:


50

Eso estaba destinado a suceder.

Si su interés principal reside en el código, lo volverá loco, frustrado y deprimido de vez en cuando, algún día de forma permanente.

Interesarse en desarrollar productos y disfrutar viendo a la gente usarlos. Ese es el objetivo final de escribir el código, ¿verdad? El código es simplemente una herramienta para hacer algo más grande.


Mi primer interés no es solo la codificación, soy un escalador deportivo, me encanta ir al teatro, me encanta viajar y ver nuevos lugares, 2/3 ciudades europeas cada año y 4000 km en mis vacaciones de verano. Este no es el punto. He pensado que he llegado al punto de no retorno sobre la codificación. Todos los problemas en mi trabajo no son tan difíciles de manejar y no puedo obtener más desafíos. Creo que la respuesta correcta es cambiar de trabajo y obtener más desafíos en problemas más complejos. en realidad ya estoy en una división de investigación y desarrollo.
abucheos

@boos, prueba clojure.org/Jobs
Trabajo

2
+1 ¿De qué sirve la codificación sin objetivo? Es similar a seguir construyendo un muro en lugar de una casa.
Mayank

+1 Empecé a codificar y continué hasta ahora (más de 10 años) solo para hacer juegos y ver a la gente disfrutarlos. He estado en algunos períodos realmente difíciles en los que comencé a comprender que al final no sabía nada. Reaprendí todo desde el principio en ese momento, porque todavía quería hacer juegos para la gente.
Klaim

Esto ciertamente ha funcionado para mí. Recientemente realicé un pequeño trabajo de desarrollo gratuito para la empresa de mi esposa y aunque apoyar el software es un poco molesto, ha reavivado un placer en la codificación que no había sentido por un tiempo.
hermiod

21

Contestaré tu pregunta con una pregunta ...

¿El trabajo de un programador es codificar o resolver problemas?

Dices que estás aburrido porque escribir código parece algo que has hecho antes, como cada fragmento de código ya se ha hecho antes.

Pero, ¿cómo llegó a la conclusión de que ese código es el código que debe escribirse? La mayoría de los problemas tienen cientos de formas de resolverlo, pero solo hay una mejor manera.

Si realmente no encuentra ningún desafío, curiosidad o interés en encontrar soluciones, o en la resolución de problemas, entonces realmente debe cambiar. Aunque no estoy seguro de que sería la gestión del desarrollo de software. No quisiera trabajar para un administrador de software que sintiera tanta apatía por la resolución de problemas. Probablemente debería ser una industria diferente, con un conjunto diferente de problemas.

Si te encanta resolver problemas pero no te gusta la codificación, tal vez no estés encontrando suficientes problemas para resolverlos. Cada vez que mi trabajo comienza a sentirse tedioso, creo que hay un problema que resolver. ¿Por qué estoy haciendo un trabajo ocupado? ¿Qué solución se me ocurre que elimine el trabajo ocupado de mi trabajo? Esa es la belleza de la programación.


1
@Rnesis: me encanta resolver problemas, ¡me encanta la codificación! Este es el corazón de mi "pregunta". El problema de todos los programas es siempre lo mismo, buscar algo, ordenar otro, si esto hace eso, si es otro, a otras cosas, conectarse a un DB, conectarse a un servicio remoto, comunicarse con él, volver a otro servicio, etc.
abucheos el

1
@boos - Gracias por la respuesta, agregué un párrafo para "si te encanta resolver problemas".
Nicole

9

Me parece que has hecho MUCHA programación procesal y te has cansado de ello, lo cual entiendo completamente. Especificar paso a paso es muy similar en todos los lenguajes de procedimiento.

Como parece que tienes muchas actividades que no son laborales, te sugiero que aprendas algunos de los conceptos que no se parecen a lo que sabes ahora y, sí, hay muchas, pero para comenzar, recomendaría Haskell porque es

  • funcional: escribes funciones que juntas para crear funciones más grandes que finalmente resultan en un programa.
  • Evaluación diferida: en lugar de especificar paso a paso, el tiempo de ejecución extrae los valores necesarios según sea necesario. Esto significa que es muy común tratar con listas infinitas en sus programas.
  • coincidencia de patrones: en lugar de tener estructuras if grandes, se enumeran los patrones para el aspecto de los parámetros, y el tiempo de ejecución selecciona el patrón apropiado y ejecuta el código correspondiente.

Aquí hay una función de clasificación completa:

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

(Ver http://www.haskell.org/haskellwiki/Introduction#Ease_of_understanding para una explicación)

Si algo de esto es nuevo para ti, te animo a que comiences a aventurarte.

Buena suerte, diviértete.


+1 Esa es la misma conclusión a la que llego después de leer el OP. El OP necesita alejarse del procedimiento. El mundo de la programación es mucho más grande, ¡solo necesita salir y explorar! :)
Darknight

8

Las computadoras son consumidores aburridos. Cuando codifica interacciones de máquina a máquina todo el día, la máquina reacciona igual siempre. Bueno para terminar el proyecto, pero tedioso después de un tiempo. Realmente ayuda a romper la monotonía con algo que no está directamente relacionado con la máquina.

He encontrado inspiración tanto en la fotografía como en el estudio de la experiencia del usuario. Piénselo, ¿cómo es que Apple puede hacer que mucha gente salve sobre sí misma para que salga lo siguiente de Santa Clara cuando otros vendedores reciban una respuesta tibia? ¿De verdad crees que Android habría tenido una respuesta tan grande si Apple no se hubiera resistido a lanzar iPhone en Verizon durante tanto tiempo? Te daré una gran pista: no es necesariamente que estos productos sean tan avanzados tecnológicamente. Hay un gran componente psicológico en la manía.

Comprender el diseño del producto y la experiencia del usuario es algo de lo que muchos de nosotros tenemos mucho que aprender. ¿Qué hace que alguien funcione? ¿Cómo diseñas algo lo suficientemente genial como para que la gente deje la solución establecida? ¿Cómo creas tu propio culto tecnológico como Apple (no es que aspire a ser un líder de culto)? Todas estas son preguntas muy interesantes y estimulantes. Retroalimentan el desarrollo de software, pero ahora su enfoque es diferente.


1
+1 Encuentro mucha satisfacción en la programación y creo que me gusta por los aspectos de diseño, pero admito que la falta de un aspecto visual en la programación no me deja completamente satisfecho. A mí también me encanta la fotografía e intento practicar otros tipos de diseño, como gráficos o arquitectura.
Nicole

Prueba la programación del juego: D, es sobre todo problemas visuales
Dominique McDonnell

7

¿Probablemente no tienes suficiente desafío técnico?

  • Pruebe sistemas altamente distribuidos. ¿Puede codificar fácilmente un sistema para recopilar registros de 1000 computadoras en un clúster, con precisión de microsegundos?
  • Prueba en tiempo real. Empaque todos sus procesos en una rotación de un motor.
  • Pruebe la visión por computadora o el procesamiento de imágenes. Las habilidades matemáticas, las habilidades de fórmula a código, las habilidades de optimización son útiles.
  • Prueba la IA. ¿Ves cómo la computadora de IBM juega a Jeopardy? Probablemente haya cierta sofisticación algorítmica involucrada en esta área.

Etc. Por supuesto, prepárate para ganar inicialmente menos en un campo donde las cosas son desafiantes para ti, no aburridas.


4

Encontré motivación al pasar a un campo que no tiene soluciones "correctas", estoy escribiendo herramientas editoriales y mi trabajo es tan bueno como los usuarios lo encuentran útil. Conozco a muchas personas no técnicas y juntos estamos tratando de idear formas de mejorar el software con el que necesitan trabajar, encuentro que la interacción humana y la necesidad de cambiar constantemente de perspectiva son completamente agradables y de repente la codificación no es tan tedioso ya.

Sin embargo, sé que no es para todos, algunos manejan la inseguridad de no tener una medida objetiva de la calidad de su trabajo más difícil que otros.

Pero es una opción que vale la pena considerar.


4

Sí, a veces tengo la sensación de que en realidad se está escribiendo el mismo tipo de código una y otra vez. Pero no, todavía no estoy aburrido. ¿Porqué es eso?

Porque básicamente disfruto descubriendo nuevas formas de codificación y formas nuevas, concisas y elegantes de expresar algo en código. Hay dos formas posibles de hacerlo: aprender nuevos lenguajes de programación o aprender nuevas bibliotecas o marcos.

Aprender un nuevo lenguaje de programación se ha vuelto más fácil para mí con cada idioma que he probado. Y después de un tiempo, dejó de ser muy interesante. Pero luego, hace uno o dos años, sin embargo, finalmente llegué a la programación funcional, que como paradigma de programación es lo suficientemente diferente de OOP como para ser un nuevo desafío. Siento que esto realmente ha enriquecido mis capacidades de programación y me ha dado una nueva perspectiva desde la cual puedo ver un problema de programación. Ahora estoy tratando de descubrir diferentes paradigmas de programación, en lugar de solo diferentes lenguajes de programación. Ese es un desafío mayor.

En segundo lugar, aprender una nueva biblioteca, marco o API: como has dicho correctamente, los nuevos marcos a menudo no resuelven nuevos problemas; simplemente lo resuelven de una manera diferente, por ejemplo, agregando una capa adicional de abstracción. Quizás esto sea posible porque las computadoras de hoy son más poderosas que las máquinas anteriores; o, tal vez, porque en general estamos mejorando en la escritura de software.

Este último bit probablemente necesita alguna explicación. Daré un ejemplo: durante mucho tiempo, mientras practicaba mis habilidades de programación, nunca pensé realmente en el mantenimiento del código que estaba escribiendo. Desde que comencé a programar en un trabajo, mi perspectiva ha cambiado. Escribir código mantenible a menudo es muy importante en un entorno corporativo, porque cada hora que dedica a la codificación cuesta dinero real, por lo que una corporación intentará conservar el código existente si es posible, y es probable que eventualmente tenga que pasar por alto su código a un sucesor

Encuentro que escribir código mantenible es en realidad un gran desafío. A menudo significa que no escribirás un código de ensamblaje súper inteligente y altamente optimizado (recuerda The Story of Mel: ¿un programador real , alguien? ;-) En cambio, es más probable que aproveches la abstracción. Cuanto más cerca pueda obtener su código de algunas reglas comerciales y el dominio del problema, mejor. Ahí es donde entran todas esas nuevas bibliotecas. Si le permiten escribir código para que sea limpio, claro, conciso y fácil de entender, entonces eso es algo bueno.

Lo siento si esta respuesta es algo larga. Traté de mostrar de dónde proviene mi motivación en la programación ... y me interesaría saber si en algún momento sentiste lo mismo, y si (y por qué) tu motivación finalmente se fue, de todos modos.


todo el lenguaje y todos los paradigmas y, de manera general, pueden recordarse a una "Máquina de Turing", independientemente de lo que aprenda un nuevo idioma, un nuevo marco, todo el cálculo puede ser realizado por una máquina de Turing, por lo que no puedo entusiasmarme más con la codificación. Me encanta escribir código limpio, y a veces me encanta escribir fragmentos de código realmente extraños para bromear con mi colega, como una especie de pequeña ofuscación.
abucheos

1
+1 También me siento así. Creo que mi desafío favorito personal no es tanto hacer algo nuevo, sino hacerlo de la mejor manera posible. El mejor cumplido que pude recibir fue: "Leí tu código y lo entendí perfectamente". Me encantan las revisiones de códigos donde nadie puede pensar en nada para mejorar.
Michael K

@boos, si te gusta la teoría, entonces hay miles de temas en cs / matemáticas / física en los que perder la cabeza.
Job

3

Si estás cansado de escribir código, si no te emociona, si te aburre, bien podría ser el momento de un cambio. Podrías considerar pasar a un puesto de administración, y administrar y guiar a otros codificadores con tus años de experiencia. O intente pasar de lado a la arquitectura del sistema, donde podría diseñar y planificar sistemas y otras personas harían la mayor parte de la implementación.

O bien, podría cambiar de carrera por completo, a algo que no tiene absolutamente nada que ver con las computadoras. ¿Te has preguntado cuál sería el trabajo de tus sueños si alguien te lo diera?


3

Comienza a jugar con microcontroladores. Es la aplicación de talento de programación más refrescante y emocionante que se me ocurre.


2

Parece que los puntos de partida de nuestros antecedentes son similares, ya que ambos comenzamos a programar alrededor de los 6 años en máquinas similares y hemos entrado y salido de la programación por varias razones. Ninguno de mis títulos tiene nada que ver con la programación, tengo todos los títulos de música, aunque he tomado algunos cursos de informática de nivel de posgrado.

Creo que tiene razón al observar que los programadores a menudo resuelven los mismos problemas repetidamente y que lo "nuevo" se basa en lo "viejo". Que te des cuenta de este hecho es para tu crédito; demasiados desarrolladores y empresarios ven las nuevas tecnologías como completamente desconectadas de las antiguas.

Entonces, resolver ese tipo de problemas no es interesante para usted. ¿Qué sería interesante? ¿Te gusta resolver problemas en general? Tal vez una vida como desarrollador de software "comercial" no es para ti.

Sé que he proporcionado más preguntas que respuestas, pero espero que responder estas preguntas proporcione una idea de la dirección que debe tomar.


2

Me parece que estás atrapado. Estás en una situación en la que no quieres estar y no sabes cómo salir de ella. Mi consejo es simple: hacer algo diferente solo por hacer algo diferente. Incluso si no resuelve su problema, probablemente lo desatascará.

Puedo escribir código en C, C ++, Python o el lenguaje que desee, pero no puedo entusiasmarme con lo que estoy haciendo. No puedo sentir ningún desafío. He escrito código multiproceso, proxy HTTPS MITM y una aplicación WSGI sin la necesidad de ninguna habilidad de algoritmos específicos.

No tome esto de la manera incorrecta (estos son logros decentes), pero esta no es una lista completa de todos los problemas desafiantes y emocionantes en la programación. Todavía hay muchos problemas difíciles por resolver. Los problemas más desafiantes implican trabajar a escala. Ha escrito una aplicación WSGI, pero ¿ha escrito una que pueda manejar mil millones de visitas al día? Ha escrito código de subprocesos múltiples, pero ¿ha escrito código de varias computadoras (con cientos de computadoras)?

En resumen, si quieres intentar hacer algo no técnico, hazlo. Pero no lo haga porque siente que ha resuelto todos los problemas que hay que resolver porque ese no es el caso.


Por supuesto, sé que hay muchas cosas desafiantes aquí :) ¡Soy un pequeño programador ahora mismo! El problema es que la complejidad en torno a la programación no me hace feliz. Con toda la respuesta que obtengo, necesito estudiar más cosas académicas para sentirme apostado. De todos modos gracias :)
abucheos
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.