Alguien dijo que un desarrollador de software profesional puede cambiar de backend a frontend, de móvil a desarrollo web en 1 o 2 días, ¿es cierto?

Hay un elemento de verdad en ello.

Primero, voy a prefijar esto diciendo: cuando veo ‘profesional’, lo leo como ‘experimentado’, ya que creo que eso es lo que pretendía el interrogador, ‘profesional’ solo significa que te pagan, por lo que no tiene sentido. este contexto.

Digo que hay un elemento de verdad en ello, porque un desarrollador experimentado generalmente ya tendría el conocimiento, si no lo tuviera, entonces no lo consideraría experimentado.

Si solo ha trabajado en un solo lenguaje / marco, por ejemplo, Swift, entonces puede ser un desarrollador experimentado de Swift , pero no lo es Un desarrollador experimentado.

Lo primero que hay que entender es los idiomas, la mayoría de los idiomas son, en esencia, los mismos. Todos tienen bucles, todos tienen condiciones, todos son básicamente los mismos en principio .

Los programadores experimentados realmente no piensan en idiomas, pero hay más conceptos que se pueden expresar en cualquier idioma en el que estemos trabajando. Estoy pensando en algo en este momento, el proyecto está en Java, pero no pienso en Java, es mucho más abstracto que eso, no pienso en código en absoluto, pero pienso en estructura, conceptos en términos abstractos.

Recientemente tuve que ‘cambiar’ de Swift a Java, he usado Java antes, pero no en unos 10 años, el cambio tardó aproximadamente una hora. Esto suena rápido, pero cuando considera que es solo una cuestión de sintaxis, y no mucho más, no es un gran problema, la estructura y los conceptos son los mismos, puedo crear la interfaz de usuario usando HTML / CSS, o usando un NSView (Cacao), realmente no importa.

Entonces, para responder a su pregunta, si he interpretado correctamente, sí, puede ser cierto, pero solo si consideramos que su pregunta significa ‘experimentado’ y no ‘profesional’. Para tener experiencia, debes haber encontrado las diferentes situaciones antes …

Es una respuesta redactada bastante comadreja, lo siento!

La programación es programación, y no importa un poco dónde lo esté haciendo (siempre que tenga los fundamentos).

No hay nada que “cambiar”, simplemente está cambiando el idioma y los marcos, y hoy todos los idiomas (populares) son casi un 90% iguales, y todos los marcos utilizan ideas de los años 60 y 70, y solo fingen que son algo nuevo (cuando se trata simplemente de los viejos embalados, a veces con un ligero giro, a menudo no).

TL; DR: Sí, debería ser posible familiarizarse con la documentación de algún marco en un par de días; por lo general, podrá omitir capítulos completos (por ejemplo, no necesita explicarse qué es MVC), por lo que no es como si tuvieras que leerlo todo.

Cuando las personas dicen que la programación de aprendizaje lleva 10 años, en realidad significan programación , no desarrollo web o desarrollo móvil o desarrollo de backend o lo que sea.

Cada campo tiene sus matices que no siempre se pueden generalizar. Por ejemplo, un buen desarrollador front-end con experiencia en diseño probablemente tendrá una mejor comprensión de la implementación de un marco que alguien que acaba de hacer un cambio sin experiencia previa en diseño. Aprender Photoshop no es lo mismo que ser artista, y aprender arte no es un asunto de 1 o 2 días. Desde mi punto de vista, desarrollar un gran producto requiere una combinación de habilidades que culminan en un resultado fantástico. Cuanto mejores sean las habilidades, mejores serán las posibilidades de hacerlo tan rápido. Cuanto mayor sea el área de especialización, o una mayor cantidad de cosas en las que la persona haya profundizado con éxito, mejores serán sus posibilidades de adoptar cosas nuevas más rápido. Creo que esto es válido para todo, incluida la ingeniería de software, y en este contexto, sería de gran ayuda si la rápida adopción está arraigada en la mentalidad de dicho profesional.

Creo que hay algo de verdad en la declaración, pero el uso de las palabras es terrible.

profesional

prəˈfeSH (ə) n (ə) l /

adjetivo

(de una persona) dedicada a una actividad específica como la ocupación principal remunerada de uno en lugar de como un pasatiempo.

Un desarrollador de software cuyo pago por ser un desarrollador de software no es intrínsecamente diferente de un programador aficionado no profesional.

1 o 2 días

También completamente subjetivo. Si tienen experiencia previa en el campo, probablemente podrían hacer un cambio contextual en cuestión de segundos. Si no tienen experiencia previa, es probable que necesiten pasar tiempo mirando recursos y aumentando, lo que podría tomar una cantidad de tiempo variable en función de la exposición conceptual previa. En cualquier caso, esto no dice nada sobre qué tan bien van a funcionar en una capacidad diferente. Mi experiencia con el DOM no se traduce directamente en mi capacidad para manejar adecuadamente cualquier trato con un sistema de archivos o base de datos.

Dicho esto, muchos desarrolladores han estado expuestos a unos pocos idiomas y pueden repasar uno nuevo en relativamente poco tiempo y desarrollar programas muy rudimentarios. Me propongo resolver los “problemas de juguetes” comunes, como el conocido fizzbuzz en nuevos idiomas, solo para reificar nuevos conceptos y patrones cada vez que me acerco a un nuevo idioma (y como un divertido descanso de leer sobre documentos). Y aunque estoy bastante seguro de que podría desarrollar una aplicación simple de “contador” en Swift en menos de 6 horas desde el primer toque que se ejecuta en un teléfono, no trataría de venderme un desarrollador de iOS en ese momento.

Depende de la experiencia que uno tenga sobre el tema y, por supuesto, de la complejidad del problema en cuestión. Si un desarrollador front-end (me refiero a backend) no tiene experiencia en el desarrollo de back-end ( me refiero a frontend) , Y si las demandas de desarrollo de back-end ( me refiero a frontend) son, supongamos, promedio, no creo que 1 o 2 días son suficientes para poder ser productivos. Lo mismo se aplica a la analogía del desarrollo móvil y web.

Si, por otro lado, las demandas son muy bajas, 1 o 2 días de aprendizaje intensivo podrían ser suficientes para comenzar.

Y, por supuesto, uno podría ser uno de los mejores ingenieros de software y tener la capacidad mental de aprender cualquier cosa.

¿Podrían comenzar a escribir código? Sí.

¿Podrían comenzar a escribir una aplicación de calidad de producción desde cero? Improbable.

Cambiar de un idioma a otro debería ser relativamente fácil para un desarrollador profesional experimentado; pero no tiene el contexto para comprender el impacto de las elecciones de diseño que podría hacer, o las preguntas que debería hacer.

Por ejemplo, si cambia de ser un desarrollador de back-end Django / Python a un desarrollador front-end angular, probablemente pasará al menos un día necesitando aprender cómo la cadena de herramientas es completamente diferente; y otro día tratando de comprender los méritos relativos de gulp / grunt / webpack / browserify, etc.

Si cambia de desarrollo web a desarrollo móvil, deberá pasar al menos un día entendiendo cómo la red móvil es diferente de Internet para comprender por qué una opción de diseño es mejor para la duración de la batería y la minimización del uso de la red.

Eso es más o menos cierto, especialmente porque muchos desarrolladores de software habrán incursionado un poco en todas estas cosas.

Pero las habilidades y el conocimiento involucrados no serán exactamente los mismos, por lo que una persona que trabaja consistentemente en una cosa siempre será mucho mejor en eso, en igualdad de condiciones, que alguien que acaba de cambiar a una nueva área.

También hay una diferencia entre alguien que comenzó a trabajar como desarrollador de software el año pasado y alguien que lo ha estado haciendo durante diez años. Un desarrollador profesional relativamente nuevo podría tener dificultades cuando se enfrenta a algo a lo que no está acostumbrado.

Mientras que la programación es programación y un buen programador podría aprender rápidamente, el front end, por ejemplo, tiene mucho conocimiento de nicho.
Por lo tanto, alguien podría comenzar a cambiar rápidamente de uno a otro, pero cambiarlo completamente llevaría más de un par de días, sin duda.