¿Los desarrolladores de software aprenden lenguajes y tecnologías de programación durante el horario de oficina o solo en casa?

La respuesta corta es sí, las compañías inteligentes no solo lo permiten, sino que fomentan tales oportunidades.

Como señalaron Todd Allen y varios otros aquí, un elemento vital de éxito en prácticamente cualquier campo es la curiosidad intelectual. Nuestros programadores más exitosos tienen un deseo ardiente de aprender, y no solo acerca de la programación. Eso no es algo que una persona pueda desconectar solo porque sale de una oficina o entra en una. Tampoco es algo fácil de enseñar; o lo tienes o no lo tienes. Buscamos a quienes lo hacen. Tanto es así que es lo primero que buscamos después de garantizar que un candidato tenga las calificaciones básicas correctas. Estas personas están aprendiendo constantemente, simplemente porque quieren.

Creemos que es fundamental fomentar ese deseo, y sofocante no hacerlo, por lo que brindamos amplias oportunidades de aprendizaje durante las horas de trabajo para perseguir sus curiosidades dentro de un marco muy amplio de aprendizaje profesional, hasta alrededor del 15% al ​​20% de su tiempo. Como es de esperar, el saldo está relacionado con el proyecto y la tarea, después de todo, se les paga para construir algo.

Sí, definitivamente aprendemos en la oficina. Muy a menudo en nuevos proyectos o para agregar nuevas características a las aplicaciones o sistemas existentes, es necesario aprender un nuevo idioma, un nuevo marco, una nueva biblioteca o una nueva API.

Estaba pensando en esta pregunta en mi camino a casa esta noche, específicamente sobre qué idiomas aprendí en mi tiempo en comparación con los que aprendí en el tiempo del empleador. Esta no es una lista completa (por ejemplo, he omitido algunos idiomas oscuros y lenguajes de secuencias de comandos), pero aquí hay un intento de enumerarlos aproximadamente en el orden en que los aprendí: (p) es personal, (e) es el empleador:

  1. BÁSICO (p)
  2. PL / I (p),
  3. FORTRAN (e),
  4. Ada (p),
  5. C (e)
  6. LISP (p),
  7. C ++ (e)
  8. Java (e)
  9. Groovy / Grails (e)
  10. Ruby on Rails (e)
  11. C # (p)

Aproximadamente una división de 50/50 (una más en tiempo de empleador que tiempo personal). Definitivamente puedo decir que he aprendido muchas más tecnologías de soporte (bibliotecas, marcos, API, editores / IDEs, etc.) en el tiempo del empleador que en mi tiempo personal.

Esto depende del trabajo que tenga y del tipo de persona que sea.

Recién salido de la universidad, cuando comencé mi carrera de programación, realmente no tuve tiempo para investigar y estudiar en el trabajo, así que pasé todo mi tiempo en el trabajo escribiendo código y solo investigando problemas relacionados con el trabajo de los que era responsable. para resolver Por lo tanto, tomé la iniciativa durante ese período de mi vida para estudiar todo lo que pude en mi tiempo libre (aprender nuevos idiomas, estudiar teoría, repasar las matemáticas, aprender Linux, etc.). Me gusta aprender sobre tecnología informática, así que no tuve ningún problema con esto, pero tuve que concentrarme en técnicas para calmar mi mente y permitir períodos más largos de concentración. Ahora, prefiero programar en lugar de mirar televisión, y si necesito descansar, en lugar de televisión, lo cual es adictivo, medito.

Mi último trabajo, sin embargo, estuvo muy orientado a la investigación. Obtendría una cantidad decente de trabajo para hacer que me llevó aproximadamente el 70% de mi día de trabajo, luego tendría actividades misceláneas (tiempo de registro, correo electrónico, reuniones, etc.) que tomaron aproximadamente el 10% de mi día, y el resto del 20% de mi día pude dedicarme a investigación y desarrollo personal. Sin embargo, descubrí que, durante este tiempo, todavía prefería investigar y estudiar fuera del trabajo, no todos lo hicieron (y la mayoría de los que no lo hicieron aún tenían mucho éxito en sus carreras).

El trabajo que tengo ahora es, nuevamente, exigente, pero también está en un área con la que no estoy 100% familiarizado, por lo que el trabajo versus la investigación es borroso. También es un campo que está evolucionando rápidamente en este momento (incluso en relación con TI), por lo que debería ser un papel que me obligue a aprender constantemente durante bastante tiempo. Sin embargo, todavía elijo hacer proyectos paralelos, para completar habilidades que no están tan directamente relacionadas con mi trabajo.

Pero no todos se acercan a cosas como yo. El hecho de que elija dedicar mucho de mi tiempo libre a cosas relacionadas con TI no significa que si no lo hace, no tendrá éxito. Puede tener mucho éxito en TI y limitarse a aprender lo que su trabajo requiere, si tiene un trabajo que requiere que sea al menos algo diverso y completo. La consultoría es en realidad un buen camino a seguir, ya que su enfoque será conocer las habilidades que su negocio de consultoría anuncia realmente bien, pero no conocer realmente las soluciones de una empresa en particular íntimamente (lo que sucede cuando su empresa falla, y lo único que sabe es su soluciones informáticas particulares ???).

Sí, tienen tiempo en la oficina, pero también se espera que mantengan sus habilidades actualizadas en su propio tiempo. La diferencia entre lo que un ingeniero aprendería en la oficina o en el hogar depende de cuán valioso sea lo que están aprendiendo para su empleador. Nadie dejaría de hacer su trabajo diario hasta que leyeran y trabajaran en los ejemplos de un libro sobre programación (la mayoría son más de 500 páginas y tardan bastante en leerlas). Tampoco completarían un curso en línea de Coursera en la oficina. Los ingenieros de software, como otros empleados, son contratados para agregar valor a una empresa. Por lo general, realizan tareas de programación como corregir errores, cambiar el tipo de letra de todo el texto en un sitio web, encontrar una forma más rápida de cargar imágenes de los servidores de la empresa en un teléfono inteligente, etc. Nunca hay un momento en que el negocio de una empresa de tecnología, los equipos de producto, diseño o ingeniería no tienen una lista de tareas que deben realizar los equipos de ingeniería. Sin embargo, si beneficia a la compañía que los ingenieros trabajen lentamente en otras tareas y aprendan algo, entonces tendrán algo de tiempo para aprenderlo. Además, si un ingeniero necesita crear una función que use Google Maps, estaría bien que vea un tutorial sobre cómo trabajar con Google Maps porque les ayuda a hacer su trabajo.

Como ejemplo de aprendizaje de un nuevo lenguaje, hace unos años Apple hizo la transición del lenguaje de programación Objective-C al lenguaje de programación Swift. Los ingenieros de iOS de mi compañía explicaron a la gerencia que aprender Swift era valioso para la compañía porque era el nuevo idioma de Apple y necesitaban usarlo para mantener la aplicación moderna y porque es un lenguaje más eficiente. El equipo de iOS ideó su propio micro curso en Swift, donde cada semana durante unos meses una persona del equipo aprendería algo sobre Swift y se lo enseñaría al resto del equipo. De hecho, se animó a cualquier otra persona en la empresa a asistir a las clases siempre que no interfiriera con su trabajo normal.

Esto es un poco tangente, pero soy un ingeniero de Android y me gusta ir a las reuniones de marca, contenido o marketing más interesantes. Solo me gusta aprender cómo funcionan estos equipos. A mi jefe no le importa esto en absoluto. Le gusta la idea de que las personas de nuestro equipo tengan una idea de otras partes de la empresa. Puede ayudarnos a mantener nuestros objetivos alineados con el resto de la empresa.

Como otro ejemplo, hay Android y el lenguaje de programación Kotlin. Las aplicaciones de Android generalmente están escritas en el lenguaje de programación Java. Hay un nuevo lenguaje que está creciendo en popularidad para la programación de Android llamado Kotlin. Donde Swift es un lenguaje creado por Apple, Kotlin es un lenguaje creado no por Google sino por JetBrains. Independientemente de si Kotlin es mejor que Java, no es el idioma oficial de Google para desarrollar aplicaciones de Android. No es necesario que un equipo de Android cambie de Kotlin a Java. Esto hace que sea mucho más difícil cuantificar el valor comercial de que un equipo de ingenieros aprenda Kotlin. Si pueden defender el caso de Kotlin, tendrán algo de tiempo para aprenderlo.

Prácticamente no hay escenario en el que un desarrollador web tenga tiempo para aprender programación de realidad virtual o visión por computadora. Siempre sería más rentable para una empresa contratar a alguien con experiencia en esas áreas.

En última instancia, a una empresa no le importa cómo un ingeniero pasa su tiempo siempre que hagan su trabajo. Si un ingeniero pasa media hora al día aprendiendo un nuevo idioma o jugando al futbolín y todavía son productivos, a nadie le importará. Si pasan tres horas al día aprendiendo un nuevo idioma o jugando al futbolín, entonces deben estar preparados para explicar cómo no están desperdiciando el dinero de la compañía.

Espero haber respondido a su pregunta.

Me pagan para resolver problemas. A veces no tengo los conocimientos necesarios para llegar a la solución, y luego veo tutoriales o leo libros. Mi empresa no tiene tiempo para buscarlo en mi tiempo libre en casa.

Aprender idiomas, marcos y otras tecnologías es parte de mi trabajo.

Aprender y escribir código va de la mano, aprendes y escribes.

A veces se le exige que trabaje desde su hogar y, a veces, se le exige que aprenda en la oficina.

Ahora, el aprendizaje viene en dos modos: aprendizaje instantáneo y aprendizaje planificado.

A menos que esté usando un nuevo idioma o una nueva pila de tecnología, optará por un aprendizaje instantáneo. Estás atrapado en algo, búscalo en Google, pregunta a la comunidad, ¡aléjate de él!

Si está haciendo algo nuevo o está utilizando una pila de tecnología completamente desconocida, debe ir a un aprendizaje planificado.

Las empresas le brindan tiempo y recursos, usted realiza proyectos POC (prueba de concepto) y se inicia usted mismo.

Si se siente lo suficientemente motivado, puede hacerlo en casa.

Lenguajes de programación, sí. Recoges un manual de sintaxis y ya casi estás allí.

¿Programación en sí misma? No. ¿Quién contrataría a un programador que no supiera nada sobre programación?

(Aprender un lenguaje de programación no es aprender programación, que se aprende en inglés [o en el idioma humano de su elección]).

Entonces … la programación en sí misma se aprende antes de obtener el trabajo, pero puede aprender nuevos idiomas en el trabajo. (Y si tiene un solo trabajo el tiempo suficiente, tiene que hacerlo: los nuevos idiomas siempre están surgiendo).

Ellos si. Soy desarrollador de software en India y en mis horas de ocio, paso tiempo para mejorar mis habilidades.

Aprender regularmente es importante en este campo en particular, ya que lo mantiene al tanto de las últimas tecnologías a su alrededor para retener su valor de mercado.

También en una empresa de TI como la mía, tenemos un KRA (Área de responsabilidad clave) fija para el aprendizaje. Tenemos que gastar un mínimo de 60 horas anuales en aprender por sí mismo.

PS Learning vale la pena.

Depende de varias cosas, el tipo de empresa, etc. Idiomas, probablemente no tanto, pero a veces sí. Tuve un proyecto en el que tuve que aprender Google Dart muy rápido, afortunadamente fue relativamente fácil de aprender ya que se basa en los idiomas existentes, sin embargo, las tecnologías que rodean el idioma también tuvieron que ser aprendidas.

En cuanto a las tecnologías, sí, eso es cierto en la mayoría de los lugares, dependiendo de su experiencia, se le paga para resolver problemas, por lo tanto, a veces no solo tiene que aprenderlos, sino que a menudo tiene que explicarle al equipo por qué lo está eligiendo y entonces, etc …

En general, primero aprenderá programación, ya sea en la escuela o por su cuenta, luego obtendrá un trabajo como desarrollador de software, donde MANTENDRÁ EL APRENDIZAJE, tanto en el trabajo como en su tiempo libre.

Desafortunadamente, hay personas, especialmente padres de helicópteros, que piensan que una persona puede conseguir un trabajo como desarrollador de software sin saber nada sobre el tema, y ​​luego se enojan porque no se les está enseñando lo básico.

Aproveche el aprendizaje de lo que pueda sobre la programación de dispositivos, ya sea que escriba programas con un compilador (o intérprete) de computadora, o en una de esas calculadoras programables con un lenguaje incorporado.

Aprende a disfrutarlo. Te va a encantar.

Estoy constantemente aprendiendo.

¿Hackeo cosas en casa? Seguro. A veces porque quiero ver si es viable; más a menudo solo por curiosidad o por sonrisas, o algo para mi uso personal. Si algo suena interesante, entonces seguro, lo buscaré y lo probaré.

Pero también estoy aprendiendo mientras trabajo. Aprendo de las personas con las que trabajo, aprendo investigando y verificando documentación, y aprendo poniendo esas cosas en práctica.

Nunca sabrá todo lo que necesita, si va a trabajar en algo además de los programas de juguetes que escribe en las clases. Para los programas del mundo real, tendrá que aprender constantemente para mantenerse al día. Sin mencionar que desea tener tantas herramientas como sea posible en su kit de herramientas, para que sepa cuál es la mejor para un trabajo determinado.

Si no eres el tipo de persona que constantemente quiere saber algo nuevo, tiene hambre, el desarrollo probablemente no sea el camino a seguir. Si es así, lo harás bien.

La cuestión es que, incluso cuando estás escribiendo un poco de código, a menudo estás aprendiendo.

Esto se debe a que la mayoría de las cosas que tiene que programar son nuevas para usted. Las tareas repetitivas a menudo se escriben como una función para que no tenga que volver a hacerlo, los interruptores son uno u otro, y el código común es solo eso.

Pero cuando necesite una nueva función, una forma diferente de unirse a ese sql, o diseñar una nueva forma de hacer algo, aprenderá algo.

Si. Aprendí varias tecnologías mientras trabajaba: VB.NET, C #, MS SQL, Oracle, PHP, mySQL, Linux, MEAN, etc. Los libros, el código existente, Internet, videos, etc. son juegos justos.

La mayoría de las empresas no son “innovadoras” cuando se trata de tecnología, por lo que aprender las tecnologías de vanguardia a menudo se hace mejor en casa.

Incluso tenemos cuentas corporativas en varias bibliotecas en línea y sitios de capacitación en video (además de los sitios de capacitación internos).

No puede saberlo todo , y a veces la tecnología / lenguaje en cuestión es nuevo para todo el equipo, por lo que no hay nadie que lo informe o asuma las tareas.

En ese caso, sería ineficiente mirar por la ventana y esperar a que terminen las horas de oficina antes de comenzar a leer 🙂

¡Si por qué no!

No se trata solo de leer libros o pasar por tutoriales en línea. También se trata del entorno que una empresa proporciona a sus desarrolladores.

Lo que nosotros, como proveedores mundiales de tecnología, fomentamos es el aprendizaje entre pares, la capacitación interna en forma de programa Zest y las interacciones de expertos. Hemos desarrollado este hábito para nuestros más de 500 desarrolladores expertos en .net, java, php, xamarin y otras tecnologías.

Sí, también hay soporte de tutoriales para ellos, pero para aprender una nueva tecnología, el desarrollador requerirá una mente experta.

Sí, ciertamente, pero depende de lo que estés aprendiendo.

Como cualquier profesional, los desarrolladores de software necesitan mantenerse actualizados en su campo, incluso si no está relacionado con las tecnologías con las que trabajan. Por ejemplo, uso una pila basada en PHP en mi trabajo actual, y hago principalmente trabajos de back-end, pero sería perjudicial para mí si solo aprendiera sobre estas tecnologías y no experimentara con otras competidoras / nuevas, como marcos front-end, sistemas de bases de datos no relacionales, nuevas formas de implementar aplicaciones web, etc. En mi opinión, no es justo para la empresa usar mis horas de trabajo para aprender estas cosas (dentro de lo razonable).

Sin embargo, cualquier cosa que esté directamente relacionada con lo que hago en mi trabajo actual y que mejore mi flujo de trabajo actual, probablemente debería aprenderse en el trabajo. No solo es justo porque está en el mejor interés de la compañía, sino que creo que en realidad es una de las cosas fundamentales que cualquier lugar de trabajo debería proporcionar: la oportunidad de mejorar en lo que haces.

Típicamente es una combinación de ambos; Un montón de nosotros aquí nos reuniremos los fines de semana o noches y hackeará. También aprendemos muchísimo en el trabajo. Tengo varios libros aquí a los que vuelvo, y pasamos mucho tiempo leyendo el código fuente en github, blogs y artículos, discusiones sobre stackoverflow, etc.

Entonces, sí, aprendemos muchas cosas nuevas continuamente en el trabajo. Con las cosas cambiando tan rápido (nuevas tecnologías, nuevas versiones de las existentes, obsoletas API antiguas, introduciendo nuevos servicios en la nube), realmente no hay otra opción que hacerlo.

La mayor parte de la lectura y la lectura que puedo hacer es no aprender tanto como para refrescar mi memoria en algo que sé pero que no he tenido que jugar durante algún tiempo.

Mi biblioteca personal de libros en varios idiomas es bastante grande y la mayor parte del aprendizaje que hago es en casa. Tengo un mejor sistema informático para trabajar en casa que en la oficina y tengo la libertad de trabajar en mi tiempo libre en mi casa. Prefiero escribir código y resolver problemas en el trabajo.

En muchos casos, creo que la tecnología está más avanzada de lo que la mayoría de los lugares de trabajo necesitan o quieren estar. Me pregunto cuántos siguen ejecutando Excel 2003.

En definitiva, la empresa quiere soluciones entregadas a tiempo. Una cosa es aprender algunas cosas, otra es pensar que el trabajo es un gran salón de clases que también es una empresa.

Yo diría que aprender con moderación en el trabajo es más que aceptable y, como han comentado otros, si quieren que se implemente algo nuevo, obviamente alguien tiene que aprender al respecto.

Cuando nuestra compañía cambió a usar SQL Server, tuve que aprender T-SQL en muy poco tiempo. En pocas palabras, la mayor parte de mi lectura se realizó en casa y se aplicó en el trabajo.

Siempre estoy aprendiendo a un nivel que generalmente está más allá de lo que se requiere para hacer mi “trabajo”. Si bien es posible que no me sirva en mi puesto actual, me ha ayudado a asegurar puestos en otras compañías donde se requerían estas habilidades.

Creo que fue Ghandi quien dijo “vive hoy como si fuera el último y aprende como si fueras a vivir para siempre”.

Aprovecho la oportunidad de aprender en todas partes. Hay tiempos lentos en la oficina. ¡Momento perfecto para aprender algo! He hecho algunas vistas js, leído en el paquete web, codificado en polímero, y todo lo que puedo. Depende de usted hacer un buen uso del tiempo. Si puede aprender en el trabajo, hágalo ya que puede ayudarlo en un proyecto futuro más adelante. Muchos idiomas se parecen entre sí en forma y / o función.

Puedo hablar según mi experiencia y la respuesta es sí. Aprendí todo durante las horas de oficina trabajando en proyectos y la mayoría estará de acuerdo conmigo.

Se refiere mucho usando la búsqueda de Google y sitios como el desbordamiento de la pila de proyectos de código y muchos sitios técnicos como MSDN