¿Cuál es la diferencia en los años de experiencia de un desarrollador con un idioma? [cerrado]

9

Como se indica en el título, ¿cuál es la diferencia en años de experiencia en un idioma dado en términos de desarrolladores? Por ejemplo, si un desarrollador ha tenido cinco años trabajando con el idioma A y el otro desarrollador ha tenido dos años trabajando con el idioma B seguido de tres años trabajando con el idioma A, ¿habría una diferencia perceptible entre ellos?

rjzii
fuente

Respuestas:

26

"depende"

Experimente <> conocimiento o comprensión.

El programador 1 podría ser muy bueno, incluso un gurú, o podría ser alguien que esté jugando con el idioma durante los últimos 5 años.

El Programador 2 podría ser alguien que entienda los conceptos independientemente del lenguaje que esté usando. O alguien que encontró el lenguaje B demasiado difícil y espera que A sea más fácil.

Vale la pena leer "El mito de los años de experiencia" de Coding Horror

gbn
fuente
66
Como dicen, su desarrollador puede tener cinco años de experiencia con el lenguaje A, o puede tener un año de experiencia, repetido cinco veces.
Carson63000
1
+1 para la verdad: he trabajado con nuevos empleados con más de 8 años de experiencia que resultaron ser promedio en el mejor de los casos. Por el contrario, acabamos de contratar a un chico 1 año fuera de la universidad y superó todas las expectativas.
Damovisa
4

Depende.

Tengo un amigo que tiende a apegarse a un idioma, así que si lo consideras "programador A", tiene 1 año de experiencia con ese idioma, cinco veces.

Diferentes idiomas te permiten hacer cosas diferentes. Un ensayo que particularmente me gusta se llama " Batir los promedios " de Paul Graham. En él está tratando de convencer a la gente para que aprenda lisp, pero también hace algunos puntos muy útiles:

Los programadores se apegan mucho a sus idiomas favoritos, y no quiero herir los sentimientos de nadie, así que para explicar este punto voy a usar un lenguaje hipotético llamado Blub. Blub cae justo en el medio del continuo de abstracción. No es el lenguaje más poderoso, pero es más poderoso que Cobol o lenguaje de máquina.

Y, de hecho, nuestro hipotético programador de Blub no usaría ninguno de ellos. Por supuesto que no programaría en lenguaje máquina. Para eso están los compiladores. Y en cuanto a Cobol, él no sabe cómo alguien puede hacer algo con eso. Ni siquiera tiene x (función Blub de su elección).

Mientras nuestro hipotético programador de Blub esté mirando hacia abajo en el continuo de potencia, él sabe que está mirando hacia abajo. Los idiomas menos potentes que Blub son obviamente menos potentes, porque les falta alguna característica a la que él está acostumbrado. Pero cuando nuestro hipotético programador de Blub mira en la otra dirección, hacia el continuo de potencia, no se da cuenta de que está mirando hacia arriba. Lo que ve son simplemente idiomas raros. Probablemente los considere como equivalentes en poder a Blub, pero con todas estas otras cosas peludas también. Blub es lo suficientemente bueno para él, porque piensa en Blub.

Sin embargo, cuando cambiamos al punto de vista de un programador que usa cualquiera de los lenguajes que están más arriba en el continuo de potencia, descubrimos que a su vez desprecia a Blub. ¿Cómo puedes hacer algo en Blub? Ni siquiera tiene y.

En general, mi consejo es aprender más de un idioma y aprender cuáles son las fortalezas y debilidades de los idiomas.

Tangurena
fuente
Estoy de acuerdo en que es importante saber varios idiomas. Los idiomas son herramientas en nuestra caja de herramientas y saber cuáles son sus fortalezas y debilidades es importante para hacer un trabajo. Puede clavar un clavo con un destornillador o un martillo o alicate, pero uno funciona mucho mejor que los demás. Por supuesto, un martillo es pésimo para quitar un tornillo o apretar o aflojar una tuerca en un perno.
The Tin Man
2

Por supuesto, el desarrollador que tenga más años de experiencia en un idioma tendrá una mejor comprensión de las bibliotecas centrales y las idiosincrasias de ese idioma. Si los idiomas adoptan el mismo paradigma (imperativo versus funcional), entonces no deberían tener más problemas para aprender ese idioma que no sea aprenderlo.

Mi mayor dificultad para aprender un nuevo lenguaje provino de tratar de cambiar de C # a Erlang, porque representaba no solo una nueva sintaxis sino también una nueva forma de pensar acerca de la programación.

Watson
fuente
55
Asumiendo que el desarrollador es competente.
gbn
2
@gbn: Les puedo asegurar absolutamente que en mi caso no pueden hacer esa suposición :)
Watson
2

Esto es lo que esperaría / espero:

  1. Fluidez: deberían poder escribir más código en la parte superior de su cabeza y menos tiempo buscando la sintaxis.
  2. Conozca la diferencia entre las versiones anteriores y actuales y cómo migrar el código de una a otra.
  3. Comprenda mejor la compilación, distribución, prueba y creación de actualizaciones y parches.
  4. Cree / incluya complementos para el IDE y obtenga eficiencia de ellos.
JeffO
fuente
2

Los idiomas no son el problema. Puedes aprender un idioma completo en un par de días. Lo que lleva más tiempo absorber son las convenciones, las API y varios marcos de terceros. Cuando las personas piden cinco años de X, no les importa el idioma, quieren a alguien que tenga mucha experiencia resolviendo problemas en ese idioma y con ese idioma para que no tengan que pagar ninguna de las curvas de aprendizaje.

Jeremy
fuente
Puedes aprender un idioma completo rápidamente, pero si hay algún concepto que no conoces, eso llevará tiempo. No todos los idiomas tienen los mismos conceptos.
David Thornley el
2

Experiencia y práctica deliberada.

Si no practica deliberadamente, no obtendrá experiencia. (Debe examinar sus errores y corregirlos, practicar lo que es débil y contar con un experto que le diga qué está haciendo mal también ayuda).

Si no intentas mejorar, ¡puedes ser un novato para siempre!

Después de diez mil horas de práctica deliberada, obtendrás experiencia. (Este hallazgo de la educación / capacitación está en toda la red).

Si su programador A no ha estado practicando deliberadamente, nunca mejorará.

Si su programador B no ha estado practicando deliberadamente, nunca mejorará.

Otro hallazgo de la misma investigación: que si tengo 15000 horas y tú tienes 10000, y sigo practicando y tú también, nunca serás mejor que yo.

Saber dos idiomas probablemente hará que B sea un mejor programador (sujeto a las reglas de práctica).

Tim Williscroft
fuente
1

¿Y los estás usando para el lenguaje A, supongo? (Claramente, habría una diferencia en el lenguaje B.)

Depende en parte de las diferencias entre A y B (particularmente si acortamos la experiencia del segundo desarrollador con A). Si son bastante similares, esencialmente no habrá diferencia en la experiencia. Si A tiene conceptos considerablemente diferentes, tres años aún son suficientes para aprenderlos. Dada una biblioteca muy grande y herramientas complicadas, puede haber una diferencia entre tres y cinco años.

Por supuesto, lo que más importa aquí es el individuo. Un buen desarrollador puede aprender una nueva plataforma a fondo en tres años, por lo que esto no debería ser un problema.

David Thornley
fuente
1

Estoy de acuerdo en que el lenguaje es lenguaje y los conceptos son conceptos.

Mi problema es que hay una gran cantidad de programadores en estos días que sin un IDE sofisticado no podrían programar en absoluto. Realmente no son programadores, sino que son más como diseñadores.

Sé por experiencia personal que hay muchas personas que han sido seducidas por el entorno de desarrollo de Microsoft. No es incorrecto que suelten un cuadro de texto en la pantalla, luego configuren las propiedades con el asistente y arrastren los datos de una imagen de la base de datos, pero ¿son realmente codificadores en algún idioma si todo lo que hacen es configurar pruebas básicas de igualdad?

Esas personas nunca podrán tomar los Conceptos que han aprendido y aplicarlos a otro idioma.

Cuando entrevisto a personas, estoy más interesado en cómo hicieron su desarrollo y qué marcos utilizaron. Me gusta hacer preguntas como "¿Cómo se escribe un controlador de eventos?", "¿Cómo se colocan exactamente los datos en la base de datos?", O incluso "¿Cómo hago que este botón en particular se vuelva púrpura cuando hago clic en él?" esto eliminará rápidamente a los diseñadores y dejará a los programadores. He descubierto que 3 o 4 años en realidad programar con un año en mi idioma de elección es suficiente para lo que necesito.

Solo otra opinión,

Tal

Tal Cameron McMahon
fuente
1

"Años de experiencia en lenguaje / plataforma X" es en gran medida una patología de reclutamiento ...

Está abierto a interpretación y no es tan útil como parece a primera vista. Como se ha dicho, el mito de los años de experiencia es una buena lectura.

Además, de manera crucial, la medición de "años de experiencia" en sí misma puede ser muy imprecisa. Aquí hay un ejemplo de mi actuación actual: mi tarea principal es desarrollar y mantener una aplicación web Java. Sin embargo, esto se ejecuta en un back-end que es MFC / C ++ / SQL Server. En consecuencia, también estoy lidiando con el código C ++ casi a diario. PERO: esta experiencia en C ++ es relativamente superficial y está orientada al mantenimiento, y realmente ya no escribo grandes componentes o programas enteros desde cero en MFC / C ++ (aunque solía hacerlo en roles anteriores).

¿Puedo seguir contando estos últimos 5 años como "5 años de experiencia en C ++"? Tal vez. Tal vez no. Dependiendo de cómo quiera venderlo para asegurar un rol en particular, puedo reproducirlo fácilmente sin mentir, o puedo admitir que en realidad no fueron 5 "años de experiencia en C ++" sólidos. :) Estoy seguro de que muchos casos están igualmente abiertos a este tipo de problema de "inexactitud de medición". La profundidad de la experiencia puede nublar enormemente la calidad de la experiencia. Por lo tanto, una "X cantidad de tiempo con C ++" no significa mucho en sí mismo.

Mesas Bobby
fuente
-1

Sí, el Programador 1 no tiene conocimiento de la sintaxis del lenguaje B.

Los conceptos de programación son conceptos de programación. El lenguaje es meramente sintaxis.

Michael Riley - también conocido como Gunny
fuente
55
oh, qué mal ...
Javier
Javier tiene razón, el lenguaje es mucho más que sintaxis ... hay convenciones, bibliotecas de terceros, API, que aprendes con experiencia.
Daniel S