¿Un programador deja de mejorar una vez que consigue un trabajo a tiempo completo y una familia?

Esta es una gran pregunta, y no creo que haya una respuesta que funcione para todos.

Pero no, creo que los programadores con una familia y un trabajo a tiempo completo mejoran aún más.

Como punto de referencia, lidero un equipo de programadores de Magento en Boulder, Colorado, y he trabajado con lo bueno, lo malo y lo loco en los últimos 14 años, con 10,800 proyectos y más de 275,000 horas de desarrollo.

Permítanme comenzar con los programadores que no tienen un trabajo / familia a tiempo completo:

[Seleccione * de all_programmers donde life_status = ‘single’ y dependientes = 0 orden mediante programación_skill DESC; ]

Un nuevo desarrollador, recién salido de la escuela, está tratando de descubrir la vida, cómo vivir con compañeros de cuarto y otras habilidades para la vida. A menudo están fascinados con las nuevas tecnologías por el bien de la tecnología. Sí, sin una familia, tienen un “coeficiente de arrastre” bajo. Pueden trabajar de noche, de noche, durante todo el día, y nadie confía en ellos. Es un gran momento en su vida, y algunos programadores usan esto para aprender mejor cómo programar. Otros solo usan el tiempo extra para mirar televisión, jugar videojuegos y pasar el rato. He vivido esto Es asombroso. Eres libre y puedes vivir la vida. No tienes a nadie pidiéndote que te levantes y tomes un vaso de agua cuando te sientas cómodo en el sofá.

Alguien con un trabajo familiar / a tiempo completo:

[Seleccione * de all_programmers donde life_status = ‘familia’ y dependientes> 0 orden mediante programación_skill ASC; ]

Alguien con una familia ahora está apoyando a un cónyuge e hijos. Sí, están haciendo su trabajo porque quieren aprender, quieren crecer y desarrollar su carrera. Algunos de ellos hacen esto y siguen creciendo y aprendiendo. Algunas personas todavía están atrapadas en la escuela secundaria y quieren seguir saliendo todas las noches con sus amigos y fiestas.

Pero la mayoría de los programadores con familias que he encontrado tienen un enfoque tremendo. Saben que lo que hacen en su trabajo de programación los ayudará a tener éxito y les proporcionará una vida estable a su familia. Están dispuestos a aprender y expandirse, porque saben que es algo que los ayudará con su futuro. Hay menos drama y menos ego. Debido a ese berrinche que el otro chico nuevo acaba de lanzar … no tienen nada sobre su adolescente de 14 años :).

Descubrí que es menos probable que alguien con una familia abandone el trabajo un viernes por la mañana porque estaban de fiesta hasta tarde un jueves … no quieren decepcionar a otros en su equipo (que tienen que recoger su trabajo), así como poner en peligro su trabajo.

Descubrí que alguien con una familia está feliz de seguir invirtiendo en su futuro y aprender nuevas habilidades. Porque si eres programador, sabes que en lo que estás trabajando hoy no será en lo que estés trabajando en tres años. (A menos que sea un programador de FORTRAN o COBOL y use muchas declaraciones GOTO).

Para mí, tengo un hijo de 8 años y otro de 11 años, así como un cónyuge. Ella también trabaja, pero vivimos en una parte costosa del mundo, y nuestros ingresos pagan la casa, la comida, la ropa y todos los gastos locos que conlleva la crianza de los hijos. Para mí, cuando me siento desmotivado en el trabajo, sé que voy a aprender más, ampliar mi base de conocimientos y seguir mejorando cada día. Porque no solo tengo a mi familia apoyada en mis esfuerzos, sino que en muchos casos, mi trabajo apoya a las otras personas de mi equipo y a todas las personas de sus familias.

Espero que esto responda la pregunta. Siempre estoy feliz de chatear por teléfono: puede comunicarse conmigo al 303.473.4400 o contactarme a través del sitio web de Customer Paradigm aquí: http://www.customerparadigm.com/…

En mi experiencia personal, la programación en el trabajo puede ser mucho más efectiva para mejorar las habilidades que trabajar en proyectos paralelos, especialmente si “programar por diversión” significa el tipo de proyectos de juguetes hacky, no revisados, no probados y de una sola persona que utilicé pasar mucho de mi tiempo libre antes de comenzar mi trabajo actual. Escribir una gran cantidad de código como ese sin ninguna retroalimentación de mis colegas ciertamente me ha ayudado a aprender y experimentar con tecnologías y a memorizar APIs de uso frecuente, etc., pero realmente no me ha convertido en un mejor programador en términos de diseño de software, arquitectura, estilo u otro habilidades fundamentales (Si está trabajando con un equipo de código abierto más grande que realmente se preocupa por la calidad del código y le da la oportunidad de diseñar partes importantes del sistema, es probable que sea una historia muy diferente, pero nunca lo intenté).

He redescubierto otros pasatiempos desde que comencé a trabajar a tiempo completo, por lo que definitivamente no paso tanto tiempo libre codificando como lo hice durante la escuela de posgrado, pero aún siento que estoy mejorando mucho más rápido a través de revisiones de códigos, discutiendo con colegas y En general, proyectos a gran escala y más desafiantes que antes comencé a trabajar a tiempo completo como SWE.

Lo que todavía me gusta hacer en casa es aprender nuevas herramientas, marcos y teoría, por ejemplo, jugar con TensorFlow o asistir a MOOC, pero ha pasado un tiempo desde que comencé el último proyecto paralelo real que tomaría más de un fin de semana y no lo hago. No creo que eso haya afectado negativamente mi aprendizaje.

Muchos del 10% de los programadores que conozco no trabajan mucho fuera de la oficina (o desde casa, si trabajan desde casa ese día). Podrían leer un poco de tecnología para divertirse, pero en general aprenden lo que aprenden en el trabajo. Son geniales y mejoran cada año.

Por el contrario, algunos del 10% inferior de programadores profesionales que conozco trabajan horas extras regularmente. Simplemente no son productivos. Están luchando por aplicar lo que saben y no les queda tiempo para aprender más de manera efectiva. No pueden pasar a cosas nuevas porque no tienen éxito donde están. Es difícil moverse si está fallando en su trabajo de manera fundamental.

También hay personas que trabajan y juegan computadoras y son increíbles, y personas que trabajan y juegan computadoras que son pésimas.

¿Puedes ser excelente y seguir creciendo como programador y tecnólogo con solo el tiempo dedicado a la oficina (por ejemplo, 45 horas a la semana)? Absolutamente. También puedes fallar con el mismo esfuerzo. Se trata de la persona, su habilidad, su talento y su ética de trabajo.

Entonces, no, un programador no deja de mejorar cuando pasan mucho tiempo oliendo las rosas fuera del trabajo. Es más complicado que eso. Pero todos pueden avanzar y mejorar.

¿Eh? ¡No!

Encuentro las premisas detrás de esta pregunta defectuosas en 2 cuentas. Primero, que no puedes aprender nada nuevo en un trabajo de tiempo completo. Segundo, que no puedes aprender nada con una familia.

La pregunta de si 10 horas es excesiva o no es un arenque rojo. Claro, eso está comenzando a ser condiciones difíciles si ese es el horario sostenido. Masticar a la gente y escupir sus restos muertos. Por otro lado, si es un trabajo que te resulta tan estimulante que quieres trabajar esas horas por tu cuenta, esa es una situación diferente.

¿Cuál es el supuesto subyacente aquí? ¿Esa escuela es el único lugar donde aprendes? La escuela apenas rasca la superficie. Te da suficiente conocimiento para meterte en la puerta. Proporciona una línea de base para darle algo para llevar a una variedad de trabajos, pero luego esos trabajos tienen su propia profundidad.

A menos que esté escribiendo informes TPS todo el día, un trabajo de tiempo completo requerirá que aprenda una gama completa de habilidades adicionales. Si es tan desconcertante que ya no puede soportar pensarlo más, consiga otro trabajo. Este es un campo que se basa en la estimulación intelectual. Usa eso.

Hace unos 25 años, tomé la decisión consciente de que cualquier trabajo nuevo que tomara tendría que tener algo nuevo que pudiera aprender. Claro, quería poder aplicar la experiencia que ya tenía directamente, pero el trabajo tenía que ofrecerme más que solo pagar. Tenía que ofrecerme una forma de crecer y mejorar.

Tenía que ofrecerme la oportunidad de aprender un nuevo lenguaje de programación, un nuevo paradigma de programación, una nueva tecnología, un nuevo segmento de la industria. Tenía que ofrecerme algo nuevo que pudiera agregar a mi currículum que aumentara mi versatilidad y comercialización en un mundo cambiante.

Las cosas que me hacen un candidato viable para el trabajo ahora no son las mismas cosas que me hicieron uno al comienzo de mi carrera. Tenía que aprender y adaptarme con el tiempo, y me aseguré de que cada nuevo trabajo me diera esa oportunidad.

Desde el lado de la contratación, al estar en equipos de entrevistas buscando currículums, puedo decirle que cualquier persona que haya hecho lo mismo una y otra vez en diferentes empleadores es rechazado de inmediato a menos que tengan un conjunto muy especializado de habilidades que son limitadas. Lo primero que se le viene a la mente a todos es: “¿Qué le pasa a esta persona que no avanza y recoge algo nuevo?”

Los empleadores para los que he trabajado buscaron personas que muestren evidencia de ser impulsados ​​por la curiosidad intelectual. No buscan a las personas que están satisfechas con seguir con lo que sabían cuando comenzaron sus carreras, haciendo lo mismo día tras día hasta el infinito.

Quieren personas que puedan aprender en el trabajo. Quieren personas que puedan avanzar e innovar y seguir siendo competitivas, porque así es como avanzan e innovan y siguen siendo competitivas como empresas.

Si ve una compañía que no está buscando eso, entonces probablemente esa no sea la compañía para usted. Tal vez han encontrado un nicho cómodo en el que pueden viajar para siempre. O tal vez se seque y desaparezcan en un par de años. De cualquier manera, no es un entorno particularmente atractivo.

Tener una familia ciertamente cambia las demandas de su tiempo y sus prioridades. No significa que dejes de aprender. Simplemente significa que tiene consideraciones adicionales a las que debe adaptarse.

Ciertamente, hay momentos en que la familia consume todo su tiempo no laboral. Pero sus hijos crecen, aprenden y se vuelven independientes también. Aún tienes tiempo para ti mismo. Use algo de eso para invertir en aprender y crecer usted mismo.

Puede hacerlo tan fácilmente en casa con los niños cercanos como en cualquier otro lugar. Puedes estudiar, trabajar en código, construir, probar, lo mismo que cuando estabas en la escuela o en el trabajo. Tener una familia ciertamente significa más fuentes de distracciones e interrupciones, pero no pone fin a su mejora. Es posible que necesite crear un ambiente de aprendizaje, una habitación donde pueda cerrar la puerta o una esquina a la que pueda ir, y decirle a la familia que cuando esté allí debe quedarse tranquilo.

Aprender y mejorar nunca termina. Aprender a hacerlo bajo una variedad de condiciones es en sí mismo una habilidad útil.

No estoy de acuerdo con tu premisa.

Los programadores adecuados miran el código todo el día y no quieren ver ninguno cuando llegan a casa.

Los programadores excepcionales, las 10 veces personas que todo el mundo quiere contratar y a quienes se les paga en consecuencia, llegan a casa con las cabezas llenas de ideas de los pensamientos que tuvieron durante su viaje, y pasan algún tiempo haciendo cosas de trabajo o, más probablemente, atacan con gusto. proyecto paralelo que tienen en marcha o instalan ese nuevo lenguaje o plataforma del que habían oído hablar.

La diferencia es que a los programadores excepcionales les gusta la programación, e incluso si fueran infinitamente ricos, aún cortarían el código porque disfrutan el proceso.

EDITAR: Solo para aclarar a todos aquellos que han tomado un paseo en el buen barco, indignación justa: no estoy sugiriendo que los empleadores requieran que los empleados trabajen horas extendidas, ni digo que los programadores excepcionales no tengan otros intereses, lo que estoy observando es que los programadores excepcionales disfrutan de la programación y la incluyen, por elección, como parte de su tiempo de recreación. Es una tendencia humana natural que las personas disfruten de lo que hacen bien y hagan lo que disfrutan. Por elección. Es un círculo virtuoso; No es un comercio de esclavos.

Conozco programadores que pueden irse a casa y (en su mayoría) dejar el trabajo detrás de ellos hasta el día siguiente. Nunca he sido uno de esos. Siempre he tenido al menos dos proyectos personales en ejecución, y algunas veces codificando en la noche. Mis proyectos no siempre terminan (lo que sea que eso signifique) ya que no tengo una fecha límite, pero son divertidos. En el trabajo, todo tiene que hacerse según los requisitos de otra persona, en casa solo tengo que complacerme. He ganado dinero con algunos de estos proyectos, pero en su mayoría terminan en la pila (incluso tengo algunos que solo están en disquetes, pero no hay forma de leerlos, si los datos aún están intactos después de todo este tiempo) .

Pero, aquí está el secreto sucio que parece estar perdiendo. Mejorar tu talento no es, repito, no es una actividad extracurricular. Cuando mejora, se beneficia, pero también lo hace su empresa. Incluso si está trabajando en un proyecto completamente diferente (por ejemplo, Windows en el trabajo, Linux en el hogar), es casi seguro que está aprendiendo algo que lo hará un mejor programador y, por lo tanto, un mejor empleado. Si está trabajando para una empresa que no entiende eso, entonces es hora de encontrar una nueva empresa.

Cuando trabajaba en HP, tenían un apoyo increíble para proyectos paralelos. Podrías tomar clases sobre cómo ejecutar una máquina CNC. Podrías tomar clases de soldadura. Podrías ir al departamento de piezas (tenía un lindo nombre, pero lo olvidé) y podrías obtener placas de prueba, chips, resistencias, condensadores, etc. y construir algo, cualquier cosa, no les importaba qué, pero si era la próxima gran idea, la poseían. Pero puedes mantener el conocimiento. Esos días estaban terminando claramente cuando salí de la compañía, desafortunadamente (y esos cambios fueron definitivamente parte de mi decisión de seguir adelante).

Algunas grandes empresas surgieron de proyectos favoritos que alguien hizo mientras estaba en la nómina de HP. El nuevo producto solo valía unos 10 millones, por lo que era demasiado pequeño para HP, pero permitieron que la gente comprara (¿alquilara?) La idea y construyera una compañía a su alrededor (no quiero dar la impresión de que sé exactamente cómo funcionaron estas ofertas, pero sé que sucedieron).

Por lo tanto, si desea dejar el trabajo en la oficina cuando se vaya a su casa, asegúrese de obtener la aceptación para ver Coursera, Lynda, Udacity o varios cientos de otros sitios de educación técnica en línea (haga que la compañía pague la suscripción ) Compite en concursos de programación en línea en HackerRank, CodinGame u otros cientos. Elija un proyecto de código abierto y haga un trabajo para ellos. Obtenga la certificación para algo interesante (hay muchas compañías que ofrecen certificación en casi cualquier cosa y la compañía podría pagar por esto también). Odio mencionar esto, ya que es difícil hacerlo durante el horario de la empresa, pero tome un curso nocturno en su universidad local (algunas compañías incluso pagarán el curso, o pagarán la mitad, pero al menos le darán la flexibilidad para tomar el curso) .

Todo esto y mucho más se puede hacer en la moneda de su empleador actual, y es una buena inversión para ellos. Consiguen un mejor empleado y usted obtiene las habilidades que necesita para mantenerse actualizado. Como efecto secundario, será más valioso para la empresa, por lo que es más probable que se le otorgue el aumento que desea (han invertido en usted, querrán mantenerlo). Esto podría ser contraproducente si les convences de pagar esa clase de cestería, así que ten algo de sentido común. El término a usar es Educación Continua o Desarrollo Profesional.

Una advertencia, te recomiendo que comiences por obtener el buy-in de tu empresa, no solo lo asumas. Este es un caso en el que no es mejor pedir perdón en lugar de obtener permiso, ya que pueden verlo como una traición para trabajar en proyectos externos mientras están en el trabajo.

Un último consejo, algunos contratos de trabajo afirman que son dueños de lo que sea que hagas, incluso si es fuera de horario y en tu propio equipo. Esto generalmente no se puede hacer cumplir, pero no quieres tener que pelear esa batalla. Puede tomar un proyecto que puede hacer que $ 100,000 le cueste dinero en honorarios legales (incluso si finalmente gana, será devastador). Por lo tanto, si planea trabajar en algo en casa, y suponiendo que tiene alguna idea de que podría convertirse en algo real, solicite una adición a su contrato para excluirla específicamente.

Una buena manera de hacerlo es decir que tiene esta idea (presumiblemente no está en línea con su empleo actual), esbozarla en general (no es necesario regalar al bebé completo, solo muéstreles lo lindo que es), y eso le gustaría continuar después de horas, sin interferir en su trabajo, por lo que le gustaría agregarlo como un anexo a su contrato de trabajo. Si parecen reacios, entonces ofrézcales otra opción para que acepten asumir el proyecto internamente con usted como líder. De cualquier manera, puedes trabajar en tu proyecto favorito, y terminas con tu nombre adjunto a un proyecto exitoso, o puedes ser el propietario del proyecto tú mismo. Lo hice yo mismo (no es que gane $ 100,000, pero gané algunos miles y pude trabajar en algo por mi cuenta sin preocuparme por ese contrato). Lo peor que pueden decir es “no”, y eso comienza a buscar un empleador que diga “sí”.

Ah, y si tiene proyectos en curso cuando comienza un nuevo trabajo, asegúrese de agregarlos todos como un anexo a su contrato de trabajo, para que no haya confusión sobre quién es el propietario. He ido tan lejos como para agregar proyectos de código abierto en los que estoy trabajando actualmente, para que no haya confusión si regresan y dicen que no deberías estar trabajando en esto o aquello, puedes señalar pacientemente tu adenda y decir (amablemente) que esto no es una sorpresa y que tu tiempo libre es tuyo.

Codificar más en casa o en otro lugar, aunque es útil, no es el factor más importante que lo mejora como programador.

Creo que el factor más importante para ser un muy buen programador es psicológico. No cuantitativo Te conviertes en un mejor programador cuando te mantienes en un mejor estándar. Por lo tanto, deja de mejorar significativamente cuando no tiene un mejor estándar; Dejas de preocuparte.

Para responder a su pregunta: depende.

Si usted es un programador que deja de preocuparse cuando su horario se vuelve más ocupado con la familia o cuando se siente más seguro con un trabajo de tiempo completo, entonces sí: no será un mejor programador. De lo contrario lo harás.

Otra forma de verlo: No , a menos que se aplique uno de los siguientes:

  • No estás conducido lo suficiente
  • No eres lo suficientemente apasionado
  • Estás motivado por motivos equivocados

En todo caso, te hace un mejor ingeniero. Como tiene menos tiempo libre para “hacer” pero más tiempo para pensar, piensa más en sus soluciones. Como tiene menos tiempo para contribuir al código abierto por la noche, sus soluciones bien pensadas salen con un poco más de elegancia.

Tienes menos tiempo para experimentar, más de ingeniero. Te haces una mierda, rápida y elegantemente con pruebas para que puedas pasar rápidamente al siguiente problema.

Tener una familia cambió significativamente la forma en que contribuyo a proyectos de código abierto en mi tiempo libre.

Me ha liberado de la pantalla, pero no de los problemas … Me ha obligado a salir de la caja y descubrir cómo hacer lo que necesito hacer más rápido, con mayor calidad.

Esto se ha filtrado en mi trabajo diario donde soy inmensamente más productivo que mis compañeros en ciertos problemas, y puedo enseñarles mis trucos.

Tener una familia marcó el comienzo de un nuevo tipo de etapa de crecimiento para mí, una con mucho menos retoques y mucho más GSD.

Absolutamente no. Conozco a muchos desarrolladores que han mejorado a medida que obtienen un trabajo a tiempo completo e incluso cuando tienen familias. Todo se reduce a la pasión y el deseo de mejorar. Su pregunta podría hacerse por alguien en cualquier profesión, ¿verdad? ¿Crees que todas esas personas van a casa e investigan lo que hacen hasta altas horas de la noche? Probablemente no. Pero, ¿los badasses absolutos de sus respectivas industrias pasan tiempo fuera del trabajo para mejorar? Más probable. ¿Y mejoran aún más rápido? Yo diría que sí, ese es probablemente el caso.

Siempre hay margen de mejora independientemente de la situación. Pero encuentro a muchas personas haciéndome preguntas como esta y todo se reduce a que realmente no quieren pasar tiempo mirando el código fuera del trabajo porque simplemente se agotaron. Fue con su trabajo o proyecto actual.

Veamos las dos partes de tu publicación de Quora:

La mayoría de los programadores prefieren ponerles una bala en la cabeza antes que programar por diversión después de 10 horas de mirar el código en el trabajo.

Si su día normal de trabajo es de 10 horas al día, podría haber un par de cosas:

  1. ¿Estás limpiando después de los demás? Tal vez invierta algo de tiempo en ayudar a otros en su oficio. Jugar a la niñera no ayuda, pero ayudar a las personas a avanzar en sus carreras y perfeccionar su oficio siempre me revitalizó.
  2. Pero tal vez, ¿es tu propio hacer lo que trae largos días? Aquí no hay insultos, pero tal vez estés escribiendo algún código con errores. Tal vez haya requisitos débiles que lo lleven a pasar mucho tiempo en la misma base de código obsoleto.
  3. Tal vez su cliente / proyecto / trabajo simplemente apesta. Seamos honestos: estas situaciones existen. No todos los trabajos son Facebook, Google, etc. (o lo que la gente imagina que son esos lugares). Muchas compañías ven la ingeniería de software como un mal necesario y no respetan a los ingenieros o el proceso. Esto tiene un impacto negativo en muchas facetas de la vida del ingeniero. Si esa es la razón por la que trabajas largas horas o por qué no te sientes apreciado al hacer tu oficio, debes irte … AHORA .

Después de ocuparse de la familia y de la vida social, queda poco tiempo para asumir nuevos desafíos voluntariamente.

Nadie dice que no tengas una vida social ni pases tiempo con la familia. Si hace eso, el anhelo de más tiempo traerá un estrés adicional a su vida que traerá una multitud de problemas a su salud: físicos, mentales y emocionales. Confía en mí, he estado allí. Trabajé durante 7 años directamente de la universidad antes de tomarme vacaciones. Cuando me fui de vacaciones por primera vez, me fui por 30 días. Regresé sintiéndome como una persona nueva, rejuvenecida y lista para conquistar el mundo. Ahora creo firmemente en los descansos y vacaciones regulares. Como con cualquier cosa en la vida ¡ EL EQUILIBRIO ES CLAVE !

Pero realmente, el día es solo así

Al final, lo veo así …

Si elige el desarrollo de software únicamente para facilitar la estabilidad financiera, entonces tal vez su mente y su corazón no estén en el lugar correcto. Por supuesto, será más difícil encontrar el deseo de pasar unas horas adicionales para mantenerse actualizado y mejorar. Sin embargo, si le encanta el desarrollo de software y le apasiona, puede encontrar una manera de mejorar continuamente. Solo tiene que hacer tiempo para lo que sea que desee destacar, ya sea fitness, aprender guitarra o, en este caso, mejorar su oficio de desarrollo de software.

Un par de posibles acciones:

  1. Traiga sus largas horas a su gerente / empleador. Esto no debería ser la norma. y los desarrolladores insatisfechos y agotados, por lo general, no producen código o productos excelentes. Si todos trabajan así, es posible que no seas el único que siente lo mismo. Su empleador debe valorarlo como persona y no solo como una mercancía. Si tu empleador no aprecia eso, entonces vete. Lo hice y nunca me he arrepentido. Los ingenieros de software inteligentes pueden ir a cualquier parte y encontrar empleo para que nunca se sienta atrapado.
  2. ¿Ustedes tienen un presupuesto de conocimiento? ¿Ir a una conferencia? ¡Es como unas vacaciones donde puedes aprender! Tal vez pueda aprender algo nuevo y presentarlo durante un almuerzo y aprender en su empresa. Haz que el aprendizaje sea divertido.
  3. ¡Tomarse unas vacaciones! Cuando estaba fuera por el código de vacaciones, volví con energía y listo para aprender / hacer más y conquistar el mundo. Quizás eso es todo lo que necesita para “ganar tiempo” en lugar de “encontrar tiempo”.

Bueno, al abordar muchas de las respuestas anteriores, hay muchos antecedentes diferentes aquí y muchos conceptos contradictorios para los términos “tiempo libre” o “amar lo que hacen”. En algunas culturas está bien trabajar en casa, en otras incluso se recomienda, en otras es inaceptable priorizar su proyecto personal sobre la tarea o el juego de fútbol de su hijo. Solo puedo hablar por mí mismo.

No tengo hijos pero sí, debido a problemas de salud, un matrimonio muy exigente. Y aunque está bien trabajar desde casa, no puedo perder una reunión familiar (que ocurre semanalmente en las culturas latinas) o evitar pasear al perro solo porque estoy “todo el día frente a la computadora”, estar “todo el día” Un término común para “las dos horas antes de que despertara”. Pero para que los proyectos de mascotas prosperen, uno debe estar al menos en la cuarta capa de la Jerarquía de necesidades de Maslow. O bien, pasarás demasiado tiempo tratando de ganar más dinero, o tratando de conocer a tu otra mitad (o tratando de echar un polvo). Y por encima de eso, puedes obtener ninja en la gestión del tiempo. Las personas más jóvenes pasan demasiado tiempo escalando la Jerarquía de Maslow, pero tienen una mente más fresca, una pizarra más limpia para aprender nuevas tecnologías y navegar nuevas tendencias. Cuando envejece, la estabilidad general ayuda mucho si tiene tiempo para pensar, el problema es que rara vez tenemos tiempo. Ahí es donde la gente suele fallar: gestión del tiempo. No lo dominé yo mismo, pero conozco a algunas personas que sí. Cuando era soltero y vivía solo, tenía más dinero del que necesitaba (pero menos de lo que podía gastar), dividía mis días entre el trabajo y la universidad y la cama. Después de la graduación, trabajo y bar (alternando amigos del trabajo y de la universidad) y la cama. Después de ese trabajo y bar y WoW y cama. Después de ese trabajo y Netflix maratones en la cama. ¿Ves el patrón? Siempre estamos buscando distracciones. Aprendí muy (pero no muy) tarde que el mundo está lleno de distracciones. Todavía veo Netflix hoy en día y hago fiestas con amigos de vez en cuando, pero esa prioridad está muy lejos de hacer que mi matrimonio sea satisfactorio, mi perro feliz, mi casa limpia y cómoda. Y cuando tiene todo eso, hay mucho (MUCHO) tiempo para invertir en la mejora personal. Ni siquiera estoy cerca de algunas de las habilidades de gestión del tiempo ninja de mis amigos, pero duermo bien, como bien, trabajo bien, hago al menos 56 horas de entrenamiento anual que requiere mi compañía y otras que encuentro interesantes, y siempre tengo un proyecto de mascotas en curso.

Un amigo mío, hace unos 10 años, me dijo: su trabajo diario debe sentirse como su videojuego favorito. Tu proyecto nocturno debe sentirse como ese nuevo juego que le pediste prestado al vecino mientras él está fuera de la ciudad y lo intentarás tan pronto como termines de hacer tu tarea, limpiar la habitación y sacar la basura. Persigo ese concepto desde entonces.

Ahora para responder la pregunta: No, los programadores no dejan de mejorar. Los humanos, por otro lado, generalmente se sienten demasiado abrumados con las responsabilidades de la vida moderna o demasiado infelices con su vida personal que Maslow no está satisfecho y la creatividad se va al sur. Dale a tu cuerpo, a tu mente y a tu vida social la misma cantidad de atención que le das a tu computadora y a tus dispositivos y siempre te levantarás lo suficientemente renovado como para pasar el día y aún ser capaz de leer o codificar (solo un poco por favor) antes ir a dormir. Algunos de los mejores programadores que conozco tienen canas.

En cuanto a los programadores que dedican horas extra para “divertirse”

Probablemente tenga razón en los principios generales … si clasifica esto en todos los programadores. Entonces, lo más probable es que la mayoría de ellos vea la programación más en la línea de una buena manera de ganarse la vida. Especialmente en estos días después del auge de la programación que se hizo tan popular.

Sin embargo, no todos los programadores son clones unos de otros. Todavía obtienes aquellos que lo ven como una pasión, un pasatiempo comercializado o incluso una obsesión. Lo sé, ya que soy uno de esos. Todavía pongo al menos 2 horas al día para mi propia superación personal. La familia y la sociedad pueden perderme por algún tiempo, pero mis prioridades se fijaron hace mucho tiempo. La programación es una forma de vida para mí, no una carrera, ni siquiera una vocación, podría programar durante varios días con una duración cercana a las 20 horas cada uno y todavía no me aburro.

También tiendo a leer sobre cualquier cosa que despierte mi interés, especialmente los nuevos desarrollos en programación. Aunque no “estudio” constantemente por decirlo, simplemente leo y luego pruebo lo que he visto.

Por lo tanto, su generalización no se puede aplicar a todos. Sé de al menos uno (yo) que no cae dentro de ese alcance. Y mirando algunas de las otras respuestas parece que no estoy completamente solo.

Re: ¿Todavía aprenden?

Ciertamente. Aprender no es estudiar. En realidad, estudiar es una forma muy ineficiente de aprender. La forma más eficiente es realmente “hacer”, trabajar, practicar. A menos que simplemente regurgite el mismo código una y otra vez, incluso su día de trabajo general es una forma de mejorarse.

Cada vez que investigue algún aspecto para un propósito especial en el programa, busque alguna función en la documentación, piense en una “mejor” forma de hacerlo, etc. etc. Aunque estar bajo la presión del tiempo no es el entorno más propicio para mejorar el conocimiento, tampoco es que haya un retorno nulo.

Donde alguien como yo puede diferir es que puedo encontrar un “problema” en el trabajo. Investigo algunas cosas para que funcione a tiempo, luego lo implemento para que se cumpla el plazo. Más tarde, sin embargo, volveré a esa misma cosa en mi tiempo personal e intentaré mejorar lo que “delaté” para cumplir con las limitaciones de tiempo. No para cambiar el programa original, sino para mejorar mis habilidades para que cuando me encuentre con un problema similar ya “sepa” (es decir, recuerde) qué hacer en lugar de simplemente hacer lo mismo que hice anteriormente bajo presión.

tl; dr No, simplemente porque el trabajo a tiempo completo y la familia, IMO, agrega demasiado a su vida.

Vamos un poco más.
Existen algunas técnicas y conocimientos que, incluso en esa situación, lo ayudarán a mejorar: práctica deliberada , repetición espaciada y modos cerebrales . No quiero ser exhaustivo. Es fácil encontrar libros y contenido en la Web para detallar las siguientes técnicas:

  • Práctica deliberada: sepa lo que no sabe y encuentre tiempo para mejorarlo (aprenda y practique).
  • Repetición espaciada: aprende algo, dale un descanso (1 o 2 días tal vez) y vuelve a visitar el contenido. Es una técnica útil para resaltar tus ideas. Lo he usado durante mis días de universidad. Demasiadas materias, poco tiempo para estudiar.
  • Modos cerebrales: se sabe que nuestro cerebro tiene dos modos de trabajo: enfocado y difuso. Tenga en cuenta que este es el conocimiento que mejor se adapta a su pregunta.

¿Es ese momento cuando está atrapado con un problema durante horas, tal vez días y durante una ducha aparece la respuesta? Este es tu modo difuso funcionando. No vale la pena intentar exhaustivamente encontrar la solución, eres parcial.
La única forma de viajar entre los modos cerebrales es dejar los problemas de su zona de confort y dar espacio para razonar al respecto.

Cuando tienes suficiente experiencia en programación, tienes formas de aprovechar mejor tu tiempo. Terminas algo más rápido y cuando enfrentas un problema, sabes dónde buscar la respuesta (generalmente documentación) y la resuelves de la manera correcta, sin efectos secundarios. Vas a tu casa, te quedas con tu esposa e hijos. Te relajaste, tu cerebro tiene espacio para visitar tu memoria profunda. Es ahora cuando te vuelves creativo para generar ideas y resolver problemas.

Al final todo lo que digo es bastante particular. Funciona mejor para algunos, no para otros. Haga una prueba y vea que funciona para usted en el camino.

Casi definitivamente se atrofiará si no trabaja en sus habilidades fuera de su trabajo principal. En la mayoría de los trabajos de desarrollo, quedará aislado en un conjunto de habilidades específicas (ya sea c # dev, o object-c o lo que sea) y muy pronto se atrofiará en el resto de CS.

Después del trabajo, le recomiendo hacer algo diferente a su trabajo principal. Implementar un compilador, o digamos, aprender un nuevo paradigma de programación (tal vez Haskell o Prolog para la programación funcional y lógica, respectivamente), o hacer problemas de programación competitivos o algo sustancialmente diferente de su trabajo diario que resultará desafiante. Si no sigue el ritmo, en el momento en que deje su puesto en esa compañía, encontrará que ahora solo sabe cómo hacer una cosa bien y está lejos de ser equilibrado.

No sé si puedo responder a esta pregunta, ya que no soy un programador.

Un programador ve el código como un fin en sí mismo. Desarrollo software para que la gente lo use. Para mí, la programación es un fin para un medio. Mucho sobre la creación de software no tiene nada que ver con el código.

Estoy construyendo una pieza de software en este momento. Es bastante innovador para la industria en la que se encuentra y estamos haciendo algunas cosas geniales con él. Lo estamos construyendo en WPF usando MVVM. Sé que eso no está a la vanguardia, pero tampoco estaba bien versado y tenía mucho que aprender. Eso es importante para mí, tener algo que aprender.

Lo que sé sobre la vanguardia es que solo es útil si es la herramienta adecuada para el trabajo. Si necesitas un martillo y todo lo que tienes es una espada, te vas a joder con la vanguardia.

Para este proyecto, una aplicación de Windows tenía sentido y, por lo tanto, también lo hizo WPF. Para mí, la aplicación elige la tecnología, no al revés.

Estaba hablando con uno de nuestros socios en el proyecto y desarrollaron todas sus propias herramientas de gráficos.

No lo hice. Utilicé una herramienta de gráficos de terceros.

El tipo estaba mirando una pieza de funcionalidad deseada que el cliente desea para el gráfico y dijo que habían intentado implementar lo mismo y que no podían hacerlo funcionar correctamente. Pude lograrlo en un día. No porque sea un gran programador sino porque fui lo suficientemente sabio como para no programar.

El proyecto no es construir nuevas herramientas de gráficos. El proyecto consiste en trazar datos que nunca antes se habían visto. La herramienta de terceros estaba bien y si no hubiera podido manejar el volumen de datos con los que estamos tratando, tenía una copia de seguridad. Probablemente habría intentado una tercera opción antes de morder la bala y construir mi propio gráfico, si, incluso entonces.

Pero, en general, un programador no lo haría así.

En palabras de Knish de la película Rounders: no lo estoy haciendo por la emoción de la jodida victoria. Yo juego por dinero. Mis hijos comen.

Entonces, si te hace sentir mejor, estaré de acuerdo en que eres mejor que yo en alguna métrica que sea importante para ti, pero no para mí. Esto es lo que me importa:

Yo jodido barco. Todo el tiempo.

Lo hago al darme cuenta de que la creación de software es un deporte de equipo y que las superestrellas individuales suelen ser un verdadero dolor de cabeza y muchas veces no valen el código que se entrega.

Lo hago al darme cuenta de que simple y comprendido es mucho mejor que genial y complejo.

Lo hago tratando de codificar la menor cantidad que puedo conseguir porque no soy un programador.

Ah, sí, y aunque mi carrera es parte de mi vida, no es tan importante como mi familia … Supongo que tengo que adaptar mi mejora a mis 8 horas en el trabajo (salgo temprano para recoger a mis hijos).

Sin embargo, sigue siendo divertido. Te equivocaste en esa parte.

Un programador deja de mejorar cuando deja de aprender. Es tan simple como eso. No hay razón para que una familia o la vida dejen de amar el aprendizaje, pero cada prioridad exige su propio tiempo. ¿Qué apaga ese deseo de aprender? Muchas cosas:

  • Un trabajo terrible con demandas irrazonables. Como describiste arriba
  • Demasiadas prioridades para las que simplemente no tienes tiempo para nada más, lo cual es realmente más una cuestión de prioridades
  • Trabajando con la misma tecnología día tras día para que te sientas cómodo, perezoso y olvides lo que es aprender
  • Cambio de intereses. La gente cambia, tal vez la programación es solo un trabajo, si es así: probablemente solo “mejorará” lo suficiente como para permitir el resto de su vida o intereses

En total: la programación es más parecida a otras artesanías artesanales, que la gente hace porque hay algo en ella que es inherentemente satisfactoria. A veces eso cambia, y si es así: entonces es solo un trabajo, y eso también está bien.

Érase una vez, cuando los dinosaurios caminaban por la tierra, yo era un nerd joven, soltero y sin hijos, sin una relación y sin una gran vida social. Tenía muchísimas horas fuera del trabajo para jugar con la programación y aprender cualquier tecnología nueva que me llamara la atención.

Hoy, soy un padre casado de tres hijos, y ya no soy tan joven. Hoy pasé varias horas ayudando a mis hijos con su tarea. Las relaciones toman tiempo, los niños toman tiempo, y tengo menos energía que cuando era más joven.

Aun así, todavía encuentro tiempo para proyectos de programación paralela. También un proyecto paralelo que no está programando. Simplemente no encuentro tanto tiempo para ellos como me gustaría. A veces paso meses o incluso años sin un progreso significativo en un proyecto, pero nunca me doy por vencido. Cuando el tiempo lo permite, hago un balance y calculo cuáles deben ser los próximos pasos, y sigo adelante. A menudo, el siguiente paso es un poco de autoeducación necesaria para avanzar con el proyecto. Y, por supuesto, a menudo necesito aprender nuevas tecnologías para programar en el trabajo, y eso a menudo requiere estudiar fuera del trabajo.

Para seguir siendo eficaz como programador, a veces tienes que aprender cosas nuevas. En mi observación, los programadores que no están interesados ​​en aprender nuevas tecnologías de programación generalmente finalmente encuentran su camino en los trabajos de administración.

No estoy en desacuerdo con que la vida familiar puede monopolizar las atenciones de los demás. Y a pesar de las retóricas comerciales habituales sobre la excelencia, también he observado que los trabajos de programación tienden a no priorizar la mejora de las habilidades de sus programadores. Cada programador está solo, y los hombres de familia (la mayoría de ellos son hombres) con un trabajo a tiempo completo a menudo no tienen el lujo de que los adolescentes pasen gran parte de su tiempo libre aprendiendo algo que les puede apasionar. No solo eso, sino que las cosas nuevas eventualmente envejecen, y la presión de mantenerse al día con las tendencias a menudo anula el propósito de resolver un problema estimulante. Algunos de nosotros comenzamos a abrazar la mediocridad y equiparamos mejorar con hacer algo más que programar.

Por mucho que aprender una nueva tecnología pueda ser enriquecedor, es posible que deseemos poner en perspectiva esta idea de “mejorar” cuando consideramos cuán desechable puede ser ese tipo de conocimiento. A veces, me pregunto si alguna vez podría ponerme al día lo suficiente en los últimos cinco años. Soy testigo de que mi profesión es secuestrada por apasionados recién llegados con demasiado tiempo en sus manos, y me inclino ante las personas de la mitad de mi edad porque sus habilidades prácticas son mucho más demandadas que mis antiguos títulos o, por ejemplo, mi familiaridad con la implementación DHTML con errores de Netscape Communicator . La triste verdad (para ellos) es que no están mejor que yo hace mucho tiempo. Siguen aprendiendo, pero pueden no estar creciendo.

Cuando cada distracción (¡y hay tantas en el mundo de la programación!) Se convierte en una habilidad valiosa para poseer y parece que no podemos encontrar el tiempo para seguir el ritmo, podríamos dejar pasar mejores oportunidades de crecimiento.

Todo se reduce a su entorno familiar. Si se toma el tiempo de explicarle a su cónyuge qué implica su trabajo, cómo trabaja, por qué lo hace, puede ganarse su confianza de que no solo está perdiendo el tiempo frente a la computadora, mirando una pantalla. Luego, pueden darle un descanso de algunas tareas que podría tener que hacer en la casa, y usted es libre de usar ese tiempo para mejorar.

Estoy de acuerdo en que si tienes hijos, tu vida cambia mucho, tienes que hacer tiempo para su educación y asegurarte de que tengan amor, atención y comida en la mesa, pero aún puedes hacer tiempo para ti.

Todo lo que tenía que hacer era usar una lista, usar un calendario, reservar tiempo para cosas importantes, tiempo en familia y dejar el resto para mis propias cosas. Ahora, en relación con las tareas domésticas, mi esposa y yo tenemos cosas que amamos hacer y cosas que odiamos hacer, así que decidimos que cada uno debe hacer las cosas que amamos, primero, y luego las que menos odiamos. Afortunadamente para nosotros, no tenemos muchas cosas que ambos odiemos, por lo que podemos completarnos el uno al otro.

También debe tener en cuenta que cuanto más avance en su carrera, utilizando un conjunto específico de tecnologías, encontrará cada vez menos material que le hará sentir que ha aprendido mucho. La mayor parte de su conocimiento proviene de la experiencia, y la mayor parte del material que “ingiere” generalmente detalla un poco lo que ya sabe. Si siente que no está mejorando, pruebe con una biblioteca, un idioma o una plataforma diferentes, cambie la forma en que aprende, si solía ver cursos en línea, comience a leer algunos libros, escuche algunos podcasts, pruebe audiolibros, cualquier cosa que haga usted marca

También deberías probar contenido no técnico. Probablemente sepa muchas cosas, y probablemente le sirva para escuchar algunas historias y descubrir nuevas formas de compartir sus conocimientos con las personas, cuando intente explicar conceptos o experiencias pasadas. Ese suele ser uno de los siguientes pasos una vez que haya alcanzado un cierto nivel técnico.

No sé por qué, pero la evolución de las personas técnicas suele ser algo así como la línea de tiempo a continuación:

Interno —conocimiento técnico—-> Junior —conocimiento técnico —-> Medio —conocimiento técnico —-> Senior —- Habilidades suaves —-> ¿Quién sabe?

Ser senior no significa que dejes de crecer. Simplemente creces en una dirección diferente, desarrollas diferentes habilidades.

Escribí un poco sobre este tema, en mi blog, y dejaré algunos artículos relacionados tangencialmente con la pregunta.

https://codesi.nz/war-tactics-st

https://codesi.nz/becoming-a-bet

https://codesi.nz/my-favorite-po

https://codesi.nz/unlearning-and

¡Buena suerte!

La codificación es en parte arte, en parte ciencia. Por lo tanto, siempre se mejora. Aunque el tiempo libre y ser un programador profesional a menudo son cosas contradictorias. Es una especie de división. Muchos codificadores ni siquiera se sientan frente a una computadora después de salir del trabajo. Otros, como yo, escribimos código para proyectos de OSS o solo por diversión a veces. Usaste un término extraño, vida social. ¿Cuál es el significado de esta frase? jajaja

No, no es tan malo por lo general. Aunque seguro que a veces se siente así. Sin embargo, la codificación lo convierte en un desafío mayor que otros trabajos. Los analistas rara vez hacen su trabajo. Por lo tanto, sus especificaciones generalmente no valen el papel en el que están escritas. Los clientes finales siempre desean que se agreguen esta o aquella característica y desean realizar cambios de última hora. Los plazos suelen ser la mitad del tiempo que necesita para escribir el código. Los gerentes de proyecto y los jefes de cabello puntiagudo te infligen todo tipo de estupidez. Las reuniones interminables, pocas de las cuales tienen un valor práctico en absoluto. Luego están los plazos de lanzamiento donde el sueño y el baño se convierten en lujos raros a medida que compites para encontrar esos últimos errores antes del lanzamiento. Por supuesto, alguien encuentra uno grande y no se lo cuenta hasta el día antes del lanzamiento.

Esas son las razones por las que salí de las minas de código. Me encantó la programación, pero las cosas que vinieron con ella me agotaron. En su lugar, me convertí en administrador de red / DBA / seguridad de red. La gente solo nota que existe cuando falla el hardware o necesita un cambio de contraseña si está haciendo su trabajo correctamente como administrador.

He sido ingeniero de software por más de 30 años. Por supuesto, siempre estoy aprendiendo y mejorando. Mi primer programa fue para un Radio Shack TRS 80. Ahora desarrollo software para la industria de energía limpia.

He notado que algunas personas simplemente no me entienden. Mi gerente de segundo nivel me miró de manera extraña cuando dije que estaba aprendiendo mucho en mi posición actual. Actuó como si solo los ingenieros de nivel básico debieran “aprender mucho” en el trabajo. La diferencia es que puedo pasar de cero a experto en una tecnología en muy poco tiempo, y las personas que me rodean piensan que debo haber estado haciendo “X” durante años. Así que a veces hace las cosas extrañas.

Después del trabajo, sigo haciendo bastante programación. Tengo causas en las que creo y soy voluntario para organizaciones sin fines de lucro que se alinean con esas causas. Aprendo aún más con ese trabajo, y ese conocimiento también puede aplicarse a mi trabajo diario. Por lo tanto, puedo trabajar en aplicaciones de Windows y Linux, aplicaciones móviles y de escritorio, o aplicaciones web y empresariales.

La gerencia tampoco parece entenderme con eso. Un gerente me dijo una vez: “Oh, entonces usted es un ‘Generalista’ como yo, algunos conocimientos en todos los ámbitos sin conocimiento profundo”. * Suspiro * Después de conversaciones como esa, voy a ver un par de episodios de esa vieja caricatura de Dilbert en YouTube.