El acertijo del aprendizaje

Cuando comencé a trabajar en tecnología de la información profesionalmente en 1989, las cosas eran bastante fáciles en términos de elegir una dirección a la que dirigirse. Al menos en mi área (sur de la Florida), entró en una de las siguientes áreas:

  • Gestión de redes y sistemas.
  • Administración de base de datos
  • Desarrollo de software
  • Tareas relacionadas con la gestión de proyectos (incluido el trabajo de control de calidad)

ColdFusion fue mi tecnología de elección y también me duró casi diez años..

Tomé la ruta del desarrollo de software y durante mucho tiempo fue fácil elegir un lenguaje de programación en el que pudieras basar tu carrera. En mi caso, comencé con Clipper (un compilador basado en dBase) y, finalmente, me ramifiqué al desarrollo cliente-servidor usando PowerBuilder, esta última fue mi herramienta de uso durante casi cinco años..

E incluso cuando entré en el desarrollo web, las herramientas y tecnologías aún eran fáciles de elegir, principalmente porque la web aún era muy joven y sencilla, con un desarrollo posterior del estilo de actualización de la página del servidor. ColdFusion fue mi tecnología de elección y también me duró casi diez años. Y más recientemente, jQuery y JavaScript han sido mi enfoque desde 2008.

Hay una razón por la que te estoy contando todo esto..


La rueda de hámster

He sido muy afortunado de haber elegido tecnologías que han tenido una gran longevidad, pero recientemente he notado un cambio dramático en la industria. La maduración del desarrollo web ha llevado a una explosión de nuevas herramientas que apuntan a ayudar a administrar el complejo proceso de construcción de los sitios web y aplicaciones sofisticados de hoy. Esto es realmente algo muy bueno ya que durante mucho tiempo el desarrollo web fue como el salvaje oeste. La formalización de patrones, procesos y mejores prácticas es ciertamente algo positivo y, de manera invariable, ayudará a construir sistemas sustancialmente más estables..

Y gran parte de esta explosión se debe a la facilidad de acceso a sofisticados lenguajes y herramientas de programación, muchos de los cuales se ofrecen de forma gratuita a través de la comunidad de código abierto. Esto ha permitido a los desarrolladores repensar la forma en que deben construirse las cosas y les ha permitido construir herramientas increíbles.

Sin embargo, este empoderamiento puede ser un arma de doble filo para la comunidad de desarrolladores, ya que se siente como si estuviéramos en una rueda de hámster sin frenos que nos permitan detenernos y asimilar cosas. Es un ciclo de aprendizaje perpetuo en el que En muchos casos, no estar al tanto de las últimas tendencias de desarrollo puede hacer que te atrases en las prácticas de desarrollo actuales. Sé que lo he sentido más de una vez y al hablar con mis compañeros, parece ser un sentimiento generalizado..


La evolución del aprendizaje

Creo que es justo decir que los desarrolladores de software tienen uno de los trabajos más complejos del mundo.

Escucharás constantemente de los demás que nuestro campo es de aprendizaje constante y eso es muy cierto. Los desarrolladores son estrellas de rock hoy en día y es porque trabajamos en temas de vanguardia que tienen un impacto tangible en grandes comunidades de personas. Y esas comunidades exigen más información a través de experiencias de usuario más sencillas en múltiples factores de forma. Creo que es justo decir que los desarrolladores de software tienen uno de los trabajos más complejos del mundo. Así que aprender constantemente ya no es una opción; Es un requisito.

Es por eso que mencioné mi trayectoria profesional hasta la fecha. Creo que imita a muchos de mis compañeros, donde podríamos confiar cómodamente en saber algo de "cosas" por "x" años antes de que tuviéramos que empezar a entrenarnos nuevamente. Si estás en el mundo del desarrollo web, ese ya no es el caso y, en mi opinión, una carrera que limita el movimiento. No estoy diciendo que tengas que salir y aprender cada biblioteca nueva que sale. Honestamente, creo que muchas de las herramientas y herramientas que se están eliminando:

  • Están destinados a rascarse una picazón muy específica.
  • Replica una herramienta existente y ofrece poco valor adicional.
  • Están destinadas a satisfacer el ego de alguien en un tipo de cosa "mira lo que construí"

Pero hay una razón clara para mantenerse al tanto de las tecnologías emergentes, especialmente cuando ves a tus compañeros conversando sobre ellas. Y para ser claros, no defino a los compañeros de manera limitada como aquellos con los que trabajo. Miro de cerca a las personas en Twitter, Facebook, Google+, blogs y foros para evaluar dónde se encuentra su pensamiento. Si no estás haciendo lo mismo, te estás haciendo a ti mismo ya tu carrera un flaco favor..

A medida que envejece (sí, me estoy refiriendo a la edad), para la mayoría, el "tiempo" se convierte en el factor limitante más importante para mantenerse actualizado. Puedo dar fe de esto a la edad de 45 años con un montón de compromisos familiares, tengo que ser extremadamente reglamentado para poder dedicar el "tiempo" de aprendizaje necesario al tiempo que me aseguro de dedicar "tiempo" a mi familia (que es mi prioridad número uno) . Y estoy seguro de que no estoy solo en este acertijo. Recuerdo cuando tenía 20 años y solía escribir para revistas impresas (¿recuerdan eso, verdad?) Y mis colegas me preguntaban: "¿Cómo tiene tiempo para hacer eso?". Bueno, se ha completado el círculo y me encuentro preguntando lo mismo a mis amigos desarrolladores de 20 años..

Lo que aprendí es que no puedo compararme con un 20 y algo más porque nuestras prioridades en la mayoría de los casos son diferentes. Un jovencito invariablemente tendrá más tiempo para concentrarse en las cosas más nuevas, lo que le permitirá remendar e incluso construir la próxima gran herramienta. Y eso es genial y recuerdo esos días yo mismo.!

Sin embargo, a medida que avance en su carrera, es importante que no se deje llevar por la complacencia y desarrolle un plan que le permita mantenerse actualizado al ser selectivo no solo con las tecnologías que elija, sino también con las metas que planea alcanzar..


Elecciones, Elecciones, Elecciones

A medida que observa las tecnologías que están disponibles actualmente, es fácil sentirse abrumado por dónde empezar, y mucho menos qué elegir. Me identifico contigo y ciertamente no estás solo. Parte del problema es que, como desarrolladores, naturalmente tenemos curiosidad por las nuevas tecnologías. Me gusta llamarlo síndrome de "polilla a llama":

  • ¡Oh, mira, hay una nueva biblioteca para imitar los componentes web! (aleteo, aleteo, aleteo)
  • ¡Este influencer acaba de lanzar este nuevo preprocesador! (aleteo, aleteo, aleteo)
  • ¡Oh, Dios mío, aquí está el 4º SaaS que ofrece servicios backend en tiempo real! (aleteo, aleteo, aleteo)

La lista podría seguir y seguir. Lo que estoy tratando de entender es que, a veces, sufrimos un déficit de atención y tratamos de racionalizarlo pensando que solucionará de inmediato un problema inexistente o futuro para nosotros. En esencia, somos acumuladores de tecnología haciendo un "por si acaso". En realidad, es importante que se siente y determine lo que está tratando de lograr y cómo el conjunto actual de herramientas resuelve sus problemas según el lugar al que desee dirigirse..

Parte del problema es que, como desarrolladores, tenemos curiosidad por las nuevas tecnologías..

Por ejemplo, he escuchado a muchos desarrolladores decir que quieren aprender iOS solo para descubrir que no tienen planes reales para construir una aplicación iOS. Si tienes tiempo para hacerlo por diversión, tienes más poder para ti, pero si no lo tienes, ese es un tiempo que deberías dedicar a aprender cosas que son realmente importantes..

Por ejemplo, si usted es un desarrollador web de aplicaciones para el usuario y eso es lo que planea ser por algún tiempo, creo que asegurarme de que está al día en cosas como AMD, ES6, Sass y Yeoman es mucho más importante que sumergirse en IPTables, ActiveRecord, WebView o Amazon EC2. Antes de que todos pierdan sus mentes debido a lo que acabo de decir, seamos claros, si puedes lograr aprender todas estas cosas (por ejemplo, un desarrollador de pila completa), más poder para ti porque será hacerte más valioso.

Lo que estoy tratando de transmitir es que, en lugar de dejarse abrumar por la idea de aprender "la pila completa", reduzca el alcance a objetivos más fáciles de administrar. Determine dónde se enfoca su carrera, señale algunas tecnologías clave en las que debería estar al día y céntrese en ellas para que pueda mantenerse relevante dentro de su enfoque de carrera.

El grupo de desarrolladores de aplicaciones para usuario, por ejemplo, está lo suficientemente involucrado y mantenerse actualizado lo mantendrá ocupado durante mucho tiempo. Lou Lazaris escribió una publicación en 2011 titulada "Skills for Front-end Developers" y en muchos casos es acertado. Si miras su lista, está específicamente apuntado. Interfaz Tecnologías que son importantes para ese rol. Refuerza mi idea de que es mejor reducir el alcance de lo que estás aprendiendo en partes manejables dentro del rol en el que estás desempeñando. Pero también es importante filtrar listas como éstas aún más. ¿Creo que CoffeeScript es fundamental para mi éxito como desarrollador de aplicaciones para usuario? Absolutamente no, razón por la cual no he dedicado tiempo a ello a propósito.

Nuevamente, no estoy abogando por no aprender tanto como puedas. A pesar de que claramente estoy en el lado frontal de las cosas, actualmente estoy trabajando en aprender Ruby y Rails porque me gustaría aprender una nueva pila del lado del servidor para completar mis habilidades. Para mí, significa sacrificarse aprendiendo cómo usar algo como Yeoman, pero me tomé el tiempo para determinar la propuesta de valor de seguir este camino y creo que vale la pena para mí..


Aprender algo

El aprendizaje viene en diferentes estilos. Aprendo mejor por:

  • Leyendo un libro (uno real con páginas de papel reales)
  • Escribiendo en ejemplos de código y viendo resultados
  • Teniendo un mentor puedo hacer preguntas desde

Otros prefieren simplemente sumergirse en algo y aprender por la escuela de golpes duros. De cualquier manera que aprenda, tener buenos recursos disponibles es una parte crítica de la ecuación.

Cada vez más, me inclino por los cursos en línea porque han madurado hasta un punto en el que en muchos casos son comparables en calidad a sus hermanos en el sitio. También ofrecen la flexibilidad de permitirle hacer las cosas según su propio horario (casi siempre) y centrarse en las tecnologías que son importantes para usted..

En mi caso, recientemente me inscribí en One Month Rails, que me ofreció lo siguiente:

  • Flexibilidad: Participo en mi agenda sin la presión de tener que sacrificar enormes cantidades de mi tiempo personal
  • Asequibilidad: Es $ 49 $ 99 y parece estar bien estructurado por el precio.
  • Tutoría: Puedo contactar al creador del curso directamente y contar con el apoyo de su comunidad

Independientemente de las opciones de aprendizaje disponibles, si no se reserva un tiempo de aprendizaje dedicado, todo es irrelevante.

Veo esto como una oportunidad de arranque que se complementará con sitios como Nettuts + y Tuts + Premium, así como libros y contactos de mi comunidad. Pero en última instancia, la flexibilidad y el ritmo del curso es lo que siento que me permitirá aprender algo nuevo de manera oportuna. El costo es ciertamente un factor que debe sopesar frente al beneficio de aprendizaje anticipado y la habilidad resultante resultante..

El hecho de que haya tantas opciones de aprendizaje en línea disponibles (muchas de ellas gratuitas) hace que sea mucho más fácil mantener actualizadas sus habilidades, especialmente si es metódico acerca de lo que quiere aprender (por ejemplo, no sea un experto). polilla).

Pero necesitas sacar tiempo para aprender. Independientemente de las opciones de aprendizaje disponibles, si no se reserva un tiempo de aprendizaje dedicado, todo es irrelevante. Personalmente he encontrado que pasar una o dos horas, dos o tres veces a la semana inmediatamente después del trabajo parece funcionar bien porque mi mente todavía está en modo de desarrollador. Hace poco conversé con un amigo a quien le parece mejor levantarse muy temprano (6 am) y concentrarse en aprender durante las primeras horas de la mañana antes de comenzar a trabajar. De esa manera, está fresco y concentrado, libre de distracciones o preocupaciones sobre su trabajo..

Mi buen amigo y desarrollador, Joe McCann, ofreció esta gran respuesta:

"El único conocimiento que agregaré es que la primera cosa que aprendí estudiando filosofía en la universidad no fue lo que estaba aprendiendo, sino cómo aprendí las cosas de hecho. Comprender realmente cómo se aprende, se entiende, etc. es clave para aprender una nueva habilidad o mejorar las actuales..

Si alguien aprende leyendo un libro o escribiendo notas o escuchándolo a través de conferencias, todos estos están disponibles para usar en línea. Es una cuestión de entender cómo aprendes y luego ir y buscar el medio adecuado para hacerlo.."

Bien dicho.


Recursos de aprendizaje

No hace falta decir que creo que Nettuts + y las diversas propiedades de Envato ofrecen algunas de las mejores opciones de aprendizaje en línea. Además, aquí hay un par de sitios de aprendizaje que he usado y recomiendo:

  • Codeacademy: Aprenda JS, Ruby, Python y más a través de su sitio interactivo
  • Ember 101: Ryan Florence hizo un gran trabajo creando screencasts que lo guían a través del proceso de aprendizaje de Ember
  • ¿Por qué es la Guía Poignant para Ruby? El estilo requiere un tiempo para acostumbrarse, pero definitivamente es un gran recurso para aprender Ruby
  • Egghead.io: enfocado casi exclusivamente en AngularJS y recomendado por muchos miembros de la comunidad
  • El tutorial de Ruby on Rails: este es el tutorial para ir a cualquier persona que acaba de comenzar con el desarrollo de Rails

Si quieres algo un poco más estructurado y duro, una nueva tendencia son los campamentos de entrenamiento en el sitio donde invertirás una cantidad considerable de tiempo aprendiendo a usar las tecnologías más nuevas. Solo tenga en cuenta que muchos de estos requieren que se mueva a donde se está llevando a cabo el bootcamp y que se dedique a tiempo completo durante varias semanas. Además, estos cursos son caros y se convierten en miles de dólares a cambio de una experiencia de aprendizaje más personal. Personalmente he participado en el bootcamp de Bloc.io pero no necesité moverme. Si bien no pude terminarlo debido a limitaciones de tiempo, lo recomendaría. Éstos son algunos de los bootcamps que han recibido una gran cantidad de prensa positiva:

  • Bloc.io: curso bien estructurado que te llevará a través de las últimas tecnologías y te proporcionará tutorías en línea por correo electrónico, chat o voz. No requiere que te muevas.
  • Hacker School: con sede en Nueva York, es un campo de entrenamiento de tres meses en el sitio donde trabajará a tiempo completo aprendiendo habilidades de programación en Ruby y Python
  • The Starter League: en el sitio en Chicago, IL, y se asoció con 37signals (creadores de Basecamp) para mejorar su experiencia de aprendizaje.

El sitio BootCamper ha estado agregando una lista de los distintos bootcamps que están disponibles y brindando información sobre ellos de manera que se puedan buscar..


Desengancharse

Lo principal es seguir aprendiendo y hacerlo a un ritmo manejable y de manera reflexiva..

Hace tiempo que quiero escribir algo así. Es un poco egoísta ya que me ayudó a anotar los sentimientos que he tenido acerca de estar abrumado con la rueda de aprendizaje del hámster. Con el tiempo, he estado buscando formas de asegurarme de estar al tanto de las cosas sin quemarme y me he dado cuenta de que es imposible estar al tanto de todo, incluso en mi propio nicho. Hay demasiados desarrolladores construyendo demasiadas cosas que se enfrían y no lo suficiente "hora".

Así que resolví centrarme en las cosas que son oportunas y relevantes, pero que pueden no ser las últimas y el juguete más nuevo. Me parece que esta es una forma mucho más manejable de aprender para yo. Y también creo que es importante revisar las cosas probadas y verdaderas que pueden no ser el último modelo de automóvil, pero pueden tener grandes sorpresas para ti bajo el capó. Miro hacia atrás a la gran publicación de Jeff Atwood "¿Por qué Ruby?" donde discute su elección para usar Ruby para construir el Discurso y específicamente toca la madurez de Ruby y su falta de frialdad.

Lo principal es seguir aprendiendo y hacerlo a un ritmo manejable y de manera reflexiva. Realmente piense hacia dónde se dirige en su carrera, describa las cosas clave en las que debe ser bueno dentro de ese ámbito y trabaje para desarrollar un plan para hacer frente a mantenerse actualizado. Hay muchas llamas por ahí y no necesitas batir las alas para cada una de ellas..

Me encantaría saber más de ustedes cómo se mantienen actualizados, así que asegúrese de ofrecer sus sugerencias en los comentarios..