¿Cómo se mantienen los programadores al tanto de los últimos lenguajes y marcos? ¿Cómo te mantienes al día con todo?

Para dar una respuesta, siento la necesidad de contarte qué son los programadores. Por favor, acompáñame en los próximos dos párrafos. ¡Y recuerda! para verificar si los conceptos centrales que está aprendiendo están integrados en los siguientes dos párrafos.

Cualquier programador profesional tiene un conocimiento fundamental de sistemas operativos, computación distribuida, redes y seguridad informática, estructuras de datos y algoritmos, y un lenguaje de programación central con el que estudió sus estructuras de datos y algoritmos.

En su carrera académica y profesional, también aprenden los aspectos prácticos de las pruebas unitarias, el diseño del sistema, la integración y la implementación, y sobre todo entienden que la programación es una actividad social y requiere interacción con sus pares y / o clientes.

Con ese tipo de conocimiento fundamental, un programador ahora está equipado con la capacidad de aprender cualquier nuevo lenguaje de programación, un nuevo tipo de programación como la programación funcional o un marco completamente nuevo.

Aprenden a seguir la documentación y rápidamente comienzan a hacer la aplicación que necesitan hacer.

No hay ningún problema con el aprendizaje en línea a través de FreeCodeCamp, CodeAcademy y demás. Lo único que debe tener en cuenta es que estos cursos son solo un comienzo y se le aconseja (o debería aconsejarse) al final de estos cursos que cree algo con su nuevo aprendizaje.

Crear algo con su conocimiento, como un proyecto final sería una fase crucial de su aprendizaje donde aprendería a aplicar su conocimiento recién adquirido. También genera una gran confianza en ti y se encarga de esa parte “abrumadora” de tu viaje de aprendizaje.

Espero que todo tenga sentido. Todo lo mejor. Si tiene preguntas de seguimiento, no dude en dejar un comentario y trataré de responderlas.

Actualizar:

Recomiendo un curso de http://www.coursera.org: https://www.coursera.org/special…

Mencioné esto en respuesta al comentario de Nate Kimball. No he visto un curso MOOC como este antes y deseo que otros cursos MOOC en http: //coursera.org o de lo contrario sigan este patrón.

Aunque, el curso está basado en Java, realmente ayudaría a construir grandes ingenieros de software versátiles (sin abrumarlos) para el mundo para lo que necesita.

Actualización 23 de marzo de 2016:

He estado explorando https://www.freecodecamp.com/ y es muy impresionante. Como miembro de freeCodeCamp, uno puede aprender, discutir y postularse. Los miembros desarrollan softwares para organizaciones sin fines de lucro, pro bono. ¡Y sabes cuál es el mejor! Es la comunidad que ha crecido en torno a freeCodeCamp.

Recomiendo freeCodeCamp a los alumnos que quieran aprender programación para lograr un cambio en su carrera y vida. Asegura el poder de OpenSource. Estoy muy emocionado de ser alumno y maestro en https://www.freecodecamp.com/

No puedes seguir con todo, pero debes mantener los ojos abiertos. Es importante enfocarse en un área en un idioma en particular y llegar a ser muy competente con él. Al mismo tiempo, mantén los ojos abiertos para ideas interesantes. Cuando encuentre algo interesante, eche un vistazo más profundo. Esto podría ser cualquier cosa, desde una nueva aplicación para su máquina de desarrollo, un flujo de trabajo mejorado, un nuevo lenguaje de programación o un nuevo marco web.

Haga un escaneo rápido de los documentos. Busca alternativas. Cuando esté satisfecho de que la nueva tecnología le traerá beneficios, pruébelo.

Aprender una nueva herramienta (editor, marco, lenguaje de programación) es una inversión. Toma tiempo. Después de dominar varios idiomas, puede aprender los conceptos básicos de un nuevo idioma bastante rápido. Sin embargo, tomará mucho más tiempo llegar a ser altamente productivo en ese nuevo idioma.

También encontrará que su trabajo y / o intereses lo llevarán a las nuevas tecnologías. En mi carrera de 30 años, he usado ensamblador, pascal, fortran, básico, lenguajes propietarios, C, C ++, C #, Visual Basic, Java, Tcl, Expect, scripts de bat, bash, SQL, Access, Ruby, CSS, SCSS , javascript, coffeescript, python, perl, PHP, XML, XSLT, JSON, Erlang, Elixir y probablemente algunos otros que he olvidado.

Hoy uso casi exclusivamente Elixir, Phoenix para aplicaciones web, javascript y CSS. De vez en cuando tengo que volver a PHP y Ruby para admitir aplicaciones más antiguas, así como C para cosas de nivel inferior.

De vez en cuando, echaré un vistazo a otros idiomas por interés. Así es como encontré Ruby on Rails y las transiciones a él desde PHP y luego más tarde cómo hago la transición de Ruby and Rails a Elixir y Phoenix. Lo mismo ocurre con las herramientas de desarrollo como IDE, editores de texto, SCM, herramientas de seguimiento de problemas y herramientas de gestión de proyectos.

El desarrollo de software es un viaje continuo en el aprendizaje.

¡Buena suerte!

Parece razonable “mantenerse al tanto” del último lenguaje y marco necesarios en el proyecto en el que está trabajando actualmente. Entonces es posible utilizar el lenguaje y el marco más recientes con cada proyecto posterior … ¿Qué sabría? Normalmente trabajo en proyectos que duran muchos años …

Ese sentimiento abrumador que mencionas es el sentimiento de aprendizaje. Si te sientes cómodo con ese sentimiento (= toma conciencia de él y aprende a aceptarlo tal como es, no intentes cambiar cómo te sientes), así es como te mantienes al tanto de los últimos lenguajes y marcos.

A veces tiene sentido trabajar con las mismas herramientas durante el tiempo suficiente como para sentir el “aburrimiento” cómodo de las cosas que comienzan a repetirse las cosas que ya “dominaste”. Pero no es necesario apuntar a esa comodidad.

¿Por qué pienso así?

Hace un año, me sentí como un dinosaurio que todavía estaba aprendiendo algo nuevo, pero no me había metido en esta programación web, cuando me empujaron a codificar bootcamp donde se introdujeron los fundamentos de ” cómo lo haremos “. Sí, fue como sumergirse en agua fría; aspectos de css, html, js, ts, ng, … media docena de diferentes “modelos” y “fábricas” arrojados a mi cara. Pocas horas bootcamp. Luego me quedé solo para comenzar a codificar “lo mismo que antes ” pero con nuevos lenguajes y marcos.

Lo curioso es que … nunca dejó de ser una locura así.

En aquellos días, ya que era muy bueno con C pero debido a las circunstancias, solo había estado codificando en otros lenguajes (sí, incluido C ++) durante años. Alguien preguntó ” ¿Sabes qué es el semáforo? ” Y yo dije ” ¡Sí! “, Que terminó con mi camino de varios años como programador en C para sistemas operativos integrados / en tiempo real. Antes de eso, ni siquiera sabía qué significa ” tiempo real “.

Cada vez que me enfrío en una miríada de cosas desconocidas como esa, la carga de ansiedad que viene con eso, la desesperación y la lucha que viene con eso, siento que ” debería dejar mi trabajo porque soy un fraude y no sé nada “. Luego, lentamente, el hielo comienza a derretirse y hay períodos de asombro, gran productividad, nuevos desafíos con cambios centrales que me dejan caer al suelo, etc. Mirando hacia atrás y pensando en lo que hago ahora, parece ser así.

Tal vez a veces desearía poder saltar de nuevo al nuevo proyecto, donde aterrizaría justo en medio de los idiomas / marcos que ya aprendí antes. Pero el mundo no parece ir por ese camino.

Nosotros no! Te sentirás mucho mejor cuando te des cuenta de que no es necesario.

Piénselo de esta manera: todas las profesiones son especializadas. Si le pregunto a mi dermatólogo sobre la última medicación para el corazón, ella se encogerá de hombros. Si le preguntara a mi mecánico de Honda sobre los desarrollos recientes en los inyectores de combustible Chevy, podría no saberlo. Si le pregunto a la bibliotecaria de niños de la biblioteca pública cómo se siente acerca de los cambios en una base de datos académica para revistas de ingeniería, no tendrá una opinión.

Todas estas personas siguen siendo profesionales competentes que son buenos en sus trabajos.

Elija un idioma o marco que le guste y sea realmente bueno en eso. Busca proyectos que lo usen. Ve a esas conferencias. Sigue a las mejores personas en ese campo en Twitter.

Si en algún momento en el futuro desea pasar a un nuevo lenguaje o marco, tendrá una ventaja inicial. Al igual que aprender español te ayuda con el francés, saber Python significa que Ruby será más fácil. Si realmente comprende Node.js, podrá elegir Angular si se trata de eso.

¡Sé bueno en lo tuyo! Si alguna vez necesita más conocimiento, Google seguirá allí, no se preocupe.

Una voluntad indomable para aprender más. y una voluntad de dejar ir a algunos.

Hay un poco de coherencia en la informática y el desarrollo de software que se transferirá a todo lo que aprenda.

  • Algoritmos
  • Estructuras de datos
  • Mejores prácticas
  • Patrones arquitectónicos
  • Etc.

La mayoría de las cosas nuevas que aprenderá son “un nuevo lenguaje de programación” que casi siempre será lógico y axiomáticamente congruente con el (o un) lenguaje que ya conoce, con algunas excepciones. Otra cosa común que los desarrolladores tendrán que aprender todo el tiempo es nuevas bibliotecas, nuevos marcos o una nueva API. Todas estas son cosas que debería poder aprender sobre la marcha si están bien documentadas.

El costo de todo esto es el mantenimiento y el cambio de contexto, cuantas más similitudes pueda encontrar, mejor porque estará mucho más consolidado en su mente y también mucho más disponible. Me parece que casi nunca tengo que estudiar conceptos básicos de informática porque son muy frecuentes, pero tengo que estudiar ciertos algoritmos de vez en cuando. También puede haber problemas al cambiar el contexto entre lenguajes de programación (especialmente aquellos con diferentes paradigmas), marcos de aplicaciones e incluso “en qué proyecto estoy trabajando ahora”. Porque para cualquier programa lo suficientemente grande ya es mucho para tener en la cabeza.

Puede pensar en lenguajes de programación y marcos como herramientas. Cada herramienta tiene una cierta funcionalidad. Por ejemplo, si quieres clavar un clavo, necesitarás un martillo.

Funcionalidad: martillar un clavo

Herramienta: martillo

Todo lo que necesita saber es la funcionalidad principal de la herramienta y poder identificar cuándo podría necesitarla.

No tengo idea de cómo usar Apache Spark, pero sé que se usa para el procesamiento masivo de datos paralelos. Por lo tanto, si alguna vez necesito hacer un procesamiento masivo de datos paralelos, podría aprender y usar Apache Spark.

Además de eso, los lenguajes de programación tienen características o funcionalidades que los definen: dominio previsto, paradigma, tipeo estático frente a dinámico, etc.

Cada problema requiere cierta funcionalidad. Para elegir un idioma, primero identifique la funcionalidad y luego elija el idioma que más le convenga. Finalmente, elija un marco, si es necesario.

Veamos un proceso de razonamiento para elegir un idioma y un marco para construir rápidamente una aplicación web.

En primer lugar, elegimos el idioma. Quizás deberíamos usar un lenguaje de tipo dinámico, orientado a objetos o funcional e interpretado. Esto le brinda un subconjunto de lenguajes como: Python, PHP, Ruby y JavaScript.

Después de eso, queremos un marco web liviano como: Flask (Python), Lumen (PHP), Cuba (Ruby) o ExpressJS (JavaScript). Tenga en cuenta que hay muchos más marcos, particularmente en JS.

Entonces podríamos querer una biblioteca de componentes front-end como: Bootstrap o Polymer.

Si tiene experiencia con bibliotecas lógicas de front-end como: React o AngularJS, podría ser bueno usar una. De lo contrario, agregará una capa adicional innecesaria de complejidad. Tenga en cuenta que, si necesita que su contenido sea indexado por los motores de búsqueda. Puede ser una mala idea usarlos también.

¿Qué combinación es mejor? Creo que aquí es más una elección personal que la mejor opción. Todos son buenos y tienen comunidades fuertes que mantienen el código.

En mi caso, iría por Flask o Lumen plus Bootstrap. ¿Por qué? Porque soy una persona perezosa. Los he usado antes y funcionaron como un encanto.

Cada lenguaje / marco tiene una cierta opinión, una filosofía que tiene la intención de mejorar el status quo actual, hacer que un flujo de trabajo sea más fácil / más robusto, o parchear una o más cosas que han demostrado ser problemáticas en el pasado. La clave es identificar la intención, y será más fácil clasificar el último idioma / marco visitando la página de inicio, leyendo las características principales y probando una o dos cosas cuando lo necesite.

Como dice un amigo mío, la abstracción es clave. Eso también se aplica a la información sobre los últimos marcos. Cuando visita sus sitios web, sus conceptos clave generalmente se abstraen. Donde puede perderse es sumergirse demasiado en algunas partes que pueden no ser relevantes para lo que está haciendo actualmente.

Al estudiar, tenga presente esta idea de abstracción para mantener siempre una visión general de alto nivel y confíe en sus capacidades para profundizar en algunos aspectos cuando sea necesario. Para construir esta confianza, a veces puede profundizar intencionalmente, pero sigue siendo una buena idea no hacerlo al azar. Se consume tiempo y te pierdes si no ves la imagen más grande en la que estás operando.

  • Únete a una comunidad cerca de ti. Casi todos los lenguajes y marcos de programación hoy en día tienen una comunidad Slack
  • Únase a Reddit y únase a subreddits de tecnologías que desee
  • Ir a reuniones y eventos. Red. Hacer amigos
  • Haga un proyecto paralelo de código abierto o contribuya a la comunidad de código abierto. Colabora con otras personas. Aprender haciendo

para ellos es más fácil comprender un nuevo marco / arquitectura porque tienen un conocimiento SÓLIDO de la base básica.

por ejemplo, hay miles de desarrolladores web por ahí y todavía no saben qué es realmente el protocolo HTTP, ¡cómo funciona!

Puedes leer mucho Pero a menos que se ponga en práctica en al menos uno o dos proyectos prácticos (proyectos paralelos propios o en el lugar de trabajo) lo olvidará. No es abrumador. léelos cuando encuentres tiempo. Úselos según sea necesario. pero mantenga un registro de las cosas que lee y vincula al recurso, etc., de modo que pueda referirlas a pedido.

freecodecamp es realmente bueno. incluso puede usarse para obtener proyectos / trabajos independientes si no está trabajando en algún lugar.

Muchas nuevas tecnologías vienen cada año. no es posible aprenderlos todos y tampoco es necesario.

Esto es lo que hago cuando tengo que aprender un nuevo lenguaje o marco.

Creo un programa “Hola mundo”. Luego, cada vez que aprendo algo nuevo, incluyo un fragmento de código de trabajo en mi programa. Así que mi primer programa Swift (“Hello World”) ahora contiene un ejemplo de cómo construir e instanciar una clase, cómo anular una clase, cómo crear un protocolo, métodos que muestran cómo hacer una programación funcional básica, métodos que dependen en gran medida sobre genéricos, etc. Mi primer programa Swift no incluye ejemplos de clases Swift, porque son las mismas que Objective-C, por lo que no necesito ejemplos. Pero si no supiera estas cosas, también incluiría ejemplos de cómo usar las clases principales.

Esto funciona extremadamente bien para mí. Si hay algo que aprendí sobre Swift que necesito usar, sé que puedo encontrar un ejemplo trabajado en mi programa “Hello World”. Aún mejor, cuando accedo a “Hola mundo”, veré muchas otras formas en que podría lograr lo mismo. Tal vez estoy verificando la sintaxis para crear un protocolo, pero me desplazo más allá de la sección de programación funcional y empiezo a pensar “Esa podría ser una mejor manera de resolverlo”.

Lo mejor de todo es que si decido dejar de trabajar en Swift y hacer otra cosa, puedo regresar en 6 meses, abrir mi programa y ver mis propios ejemplos de funcionamiento de Swift. Puedo volver a la velocidad en horas en lugar de días o semanas tratando de reunir todo este conocimiento nuevamente.

Escribí un artículo aquí sobre un método que uso llamado Discovery: Devel Up – Routine for Dress, Food & Commute. – Charlie Greenman – Medio

La idea es dedicar tiempo al descubrimiento y luego al aprendizaje y al mantenimiento.