¿Ser un Desarrollador Senior que usa un idioma lo califica para ser un Desarrollador Senior que usa otro idioma? [cerrado]

27

Si trabajo como Desarrollador en un idioma (p. Ej., Java) y avanzo hasta Desarrollador Senior, ¿eso me calificaría para ser un Desarrollador Senior para un puesto en otro idioma (por ejemplo, Ruby)?

Philip
fuente
2
@Philip: esta pregunta es realmente una pregunta límite en un par de frentes. Está en el límite "demasiado localizado" porque realmente solo tendrá valor para usted y está en el límite "no es constructivo", ya que en realidad no aborda las pautas para hacer preguntas que figuran en nuestras Preguntas frecuentes. Si puede editar esta pregunta y abordar las pautas, tal vez valga la pena guardarla.
Walter
8
@Walter: tengo que estar en desacuerdo con su primer comentario sobre localización. Esta es una pregunta / respuesta generalmente aplicable con respecto a si ser un desarrollador senior en un idioma le da derecho a un puesto de desarrollador senior en otro.
Craige
1
@Walter: eliminó los problemas de localización, creo que ahora es razonable.
Jon Hopkins
1
@Walker - Lo siento, la pregunta se entiende como dice Craige. Lo escribí de esa manera porque supongo que la mayoría de los programadores que se consideran Junior quieren ser Desarrolladores Senior algún día. Por lo tanto, elegir la posición Junior correcta es crucial (o no)
Philip
11
Esta pregunta parece suponer que "Desarrollador Senior" tiene algún tipo de significado generalmente aceptado. Normalmente es una especie de título de trabajo, y un título de trabajo es lo que usted y su empleador puedan acordar.
David Thornley

Respuestas:

33

La mejor manera de responder a esto es observar cuál es la diferencia entre un Desarrollador y un Desarrollador Senior. Suponiendo que no se trata solo de una cuestión de tiempo, generalmente esperaría que tanto los Desarrolladores como los Desarrolladores Senior puedan:

  • Escribir código de manera competente en los idiomas requeridos por el rol
  • Diagnosticar y corregir errores
  • Escribir pruebas unitarias
  • Siga los estándares y las mejores prácticas razonables (control de versiones, documentación)
  • Tener una amplia base técnica competente
  • Actuar de manera profesional

Además, esperaría que un desarrollador sénior:

  • Mentor a otros miembros del personal en mejores prácticas
  • Ser y reconocer el punto de referencia de al menos algunos de los idiomas que utiliza el equipo.
  • Investigue activamente y defienda nuevas áreas de mejores prácticas
  • Asumir la propiedad técnica de temas / áreas de código más complejos y proporcionar soluciones sólidas

Entonces, la pregunta es si cumple con los criterios extendidos para su segundo (o tercer o cuarto) idioma. Sugeriría que mientras sea técnicamente competente en el idioma al que se está mudando, sí, ya que la mayoría de las cosas de Desarrollador Senior tienden a ser transferibles.

Jon Hopkins
fuente
1
Esto realmente depende del entorno, especialmente del jefe. Algunos "Sr" sienten que necesitan mostrar su conocimiento en cada tema, especialmente donde un "jr" puede tener más conocimiento y experiencia sobre un tema. Se puede generar cierta tensión cuando un Sr. con experiencia en C ++ trabaja en un proyecto C #. Un "jr" puede tener una base de conocimiento más grande para este marco en particular. Esto puede causar algunas batallas acaloradas, especialmente cuando el jefe está escuchando.
P.Brian.Mackey
@ P.Brian.Mackey: es bastante justo, hay algunas diferencias bastante importantes entre los diferentes trabajos con el mismo título. Fui con lo que pensé que era una definición bastante genérica (y sensata), pero puede variar desde "tiene más de 30 años" hasta "sabe todo sobre todo".
Jon Hopkins
1
buena suerte con este último en cualquier lenguaje más complicado que BF ... ¡incluso C tiene más esquinas oscuras de lo que cabría esperar!
SamB
"Algunos" Sr "sienten que necesitan mostrar su conocimiento en cada tema". Se les debe decir a estas personas que se relajen. No puedes aprender nada si no reconoces que hay cosas que no sabes. La capacidad de admitir libremente la ignorancia de algo es un signo de fortaleza, no de debilidad.
PeterAllenWebb
1
+1 Por señalar que algunas pero no todas las habilidades son transferibles. Gran manera de decirlo.
Nicole
5

Puede solicitar cualquier puesto en cualquier empresa que desee, independientemente de su estado actual.

Dependerá de usted demostrar en su CV / carta de presentación / entrevista que usted es el hombre para el trabajo.

pan de jengibre
fuente
5

Busco las siguientes cualidades cuando entrevisté a los desarrolladores principales.

  • Ha trabajado en varios idiomas.
  • Experto en al menos uno, competente en al menos otro, preferiblemente en un paradigma diferente
  • Conocer las tecnologías actuales, el estado del arte, etc. en el área elegida.
  • Buena base de CS, es decir (algoritmos, costeo algorítmico, estructuras de datos, etc.)
  • La capacidad de cambiar entre los detalles de un problema específico y el panorama general
  • Expresar cuando las cosas se mueven en la dirección equivocada y por qué; y luego poder continuar en esa dirección equivocada (también conocido como profesionalismo)
  • Habilidad de mentor
  • Capacidad para trabajar dentro y con un equipo.

Hay una miríada de otras cosas que busco, pero estos son los puntos principales.

Si bien he recomendado contratar desarrolladores sénior que no eran expertos en el idioma utilizado en el trabajo, sí eran expertos en idiomas similares.

dietbuddha
fuente
3

Podrías postularte, pero al menos si estuviera haciendo la contratación, podría o no contratarte.

La antigüedad se refiere a (al menos) dos áreas. Experiencia en desarrollo general y experiencia en lenguaje / marco. (Estoy omitiendo deliberadamente el conocimiento del espacio empresarial) en la actualidad. Ser un desarrollador senior en mis libros también incluiría un nivel de experiencia en diseño / arquitectura. Cómo construir un sistema bueno / comprobable, etc.

Llegar a este nivel en Java debería ser útil para otros lenguajes (similares / de procedimiento).

Pero en esta era de productividad inmediata esperada, es poco probable que sepa tanto sobre Ruby como Java. Cómo dividir su sistema en construcciones compatibles con Ruby en lugar de construcciones compatibles con Java. Probablemente conozcas algunos frameworks de Java y no Rails u otras cosas específicas de Ruby.

Si tuviera que pedirte que codifiques la pizarra en Ruby durante la entrevista, ¿podrías hacerlo?

Todo esto entraría en mi decisión de contratarte o no, en cualquier nivel; pero en particular para un rol superior .

Buena suerte

sdg
fuente
Gracias por su respuesta, sí, podría hacer la codificación de pizarra en Ruby (lo mismo para C ++, Java). En realidad, en este momento me considero aún más competente en Ruby que en Java porque desde hace un año trabajo en un proyecto privado basado en Ruby.
Philip
3

No

Esa es una de las grandes diferencias entre nuestra profesión y otras profesiones más 'formales'. Si ha trabajado como abogado haciendo testamentos y patrimonios durante 20 años, entonces tendrá una alta tasa porque tiene 20 años de conocimiento acumulado en ese dominio .

Si ha estado haciendo C ++ / Win32 / MFC durante 15 años, eso realmente no lo califica para un puesto senior como desarrollador de Rails, incluso si todavía está resolviendo los mismos problemas en el mismo dominio ... diga médico facturación, por ejemplo.

Peor aún, la mayoría de las compañías ni siquiera lo considerarán para un puesto que es más o menos similar ... Por ejemplo, si ha hecho C ++ / MFC durante 5-7 años, debería poder ponerse al día con C # / .NET muy rápidamente, al menos para el escritorio. Lamentablemente, la mayoría de las empresas no lo ven así.

tierra roja
fuente
44
No sé que "la mayoría" de las empresas lo ve así. El problema en este momento, en una economía en recesión, es que hay muchas más personas disponibles que ya conocen (a partir de su ejemplo) C #, por lo que pueden restringir su búsqueda solo en función de los números.
Wonko el sano
Creo que la mayoría de las habilidades y experiencias son transferibles. Aprender una nueva sintaxis es fácil. Desafortunadamente, tienes razón: no es lo que piensas, sino lo que piensa la persona que te contrata.
Nadie
3

Depende

Elimine la "programación". Pretende, en cambio, que eres un traductor profesional.

Suponga que el inglés es su lengua materna, y también es competente en francés. Es probable que aprenda español con bastante facilidad.

Sin embargo, no es tan probable que domines rápidamente los muchos dialectos del chino. Si bien su experiencia como lingüista lo ayudará a aprender el / los idioma (s), brindándole una ventaja sobre alguien que nunca ha estudiado un idioma extranjero, aún le llevará mucho más tiempo convertirse en un "experto" (es decir, "senior" ) traductor en ese idioma.

Wonko el cuerdo
fuente
2

Si y no.

Si los lenguajes son similares , digamos C ++, Java o Ruby, seguro que debe ser considerado. Dependiendo de cuán flexibles sean las personas que se sientan en esas oficinas, tiene una oportunidad de pelear.

Sin embargo, si los idiomas son muy diferentes , y con eso quiero decir que eres un tipo de COBOL que ha criticado a Haskell, entonces a pesar de tus más de 10 años de COBOL, es probable que no puedas ni siquiera asegurarte una entrevista.

PAREJA DE COSAS QUE IRÁN EN TU FAVOR EN TALES SITUACIONES:

  1. Si ya sabe varios idiomas y tiene experiencia comprobada sobre lo mismo. Digamos que eres bueno en C ++, pero también conoces a Perl, Tcl y algunos Ruby, estaría dispuesto a considerarte para Java. De hecho, conozco personas que tienen trabajos Java con C ++ en su currículum.
  2. Si su experiencia está en un dominio relacionado, entonces tiene una buena oportunidad de hacerlo. Por ejemplo, si usted es un programador de juegos de C ++, no veo ninguna razón por la que no pueda ser contratado para un trabajo en C # que necesita un poco de multihilo.
Fanático23
fuente
1
De acuerdo, tengo que preguntar: ¿cómo es Ruby como C ++ o Java? C ++ y Java son lenguajes de estilo C, mientras que Ruby se deriva de Perl, Python y Smalltalk.
Craige
Me refería a OOP como el tema principal.
Fanatic23
2

Raramente he visto un título "senior" basado en el idioma. Conozco algunos programadores de sistemas senior , un par de programadores web senior y un programador COBOL senior.

La programación es multifacética y tiene bastantes disciplinas para ofrecer. Esperaría que un desarrollador web senior (en títulos, programador y desarrollador parezca intercambiable) sea competente en varios idiomas principales utilizados en el desarrollo web. ¿Eso convierte a un gurú de Python y PHP en un experto instantáneo en C #? No. Por otro lado, no todos los gurús de C # han dominado el arte de la gestión y el liderazgo de proyectos.

Cumplí el rol de CTO en una empresa, además de ser el programador senior de sistemas. Sin embargo, me alegraría consultar a un experto en esquemas o LISP si encontramos un proyecto que lo necesitara. Parte de ser un buen líder es comprender primero sus propios límites y defectos .

No estoy seguro de querer trabajar en una empresa, o incluso en un departamento que se centre en un solo idioma. Parece que haría lo que siempre dijeron que fumar fumaría: impedir su crecimiento cuando la realidad es mucho peor.

No persigas los títulos, persigue el conocimiento. Pero, para ser justos, su papel en una posición de liderazgo anterior probablemente le daría una ventaja adicional, siempre que demuestre competencia en el idioma en cuestión.

Tim Post
fuente
0

¿Creo que depende de lo que percibas como desarrollador sénior? Si se trata más de un rol de arquitecto, muchos de los principios y patrones de diseño estarán a su disposición por su experiencia como desarrollador, independientemente del idioma. Entonces eso es una ventaja ;-)

Sin embargo, cuando se trata de crear una aplicación o un código de la manera más productiva y fácil de mantener posible (el desarrollo de su bit de sleaves), no creo que pueda ingresar al mismo nivel de experiencia al cambiar de idioma, IDE y / o framework.

Pero como dijo runrun, esto no te impide solicitar nada

Syg
fuente
0

Esto dependerá en gran medida de la empresa a la que se entreviste, ya que generalmente son los procedimientos internos de recursos humanos los que impulsan la incorporación de los nuevos empleados. Las compañías más grandes tienden a ser muy rígidas y si dicen que debes tener n años de experiencia en un idioma determinado para ser considerado un nivel superior, entonces es posible que solo te traigan a un desarrollador de nivel medio.

Dicho esto, sin embargo, esto no debería impedir que solicites el puesto y si te traen a una entrevista, es algo que debes discutir.

rjzii
fuente
0

Yo diría que cuanto más bajo sea el lenguaje o sea amigable con la máquina, más experto será.

La experiencia en Java / C # se paga menos que la experiencia en ASM / C / C ++.

Esos últimos lenguajes manejan la memoria y otras cosas que realmente IMPORTAN al programar.

Pero para otros idiomas "fáciles", necesitaría hacer una comparación rápida sobre las características que los hacen "más fáciles", pero me parece inútil. Las experiencias con lenguajes fáciles se miden mejor con CMS / otro código hecho para trabajar, como el encendedor de código o django o Apache o RoR.

Para mí, los desarrolladores senior son personas que programan Kernels, Systems, Hardware embebido, etc. Los programadores que usan lenguajes que no son amigables con las máquinas no son senior para mí. Simplemente hacen el trabajo, pero eso es todo.

jokoon
fuente
Interesante opinión. Estoy de acuerdo, C ++ es mucho más dolor. Por otro lado, existe mucho dolor de C ++ porque partes del lenguaje (actual) están un poco desactualizadas. Los lenguajes más recientes tienen muchas más funciones de biblioteca, Lambdas, for-each-loops y una sintaxis menos críptica para muchas cosas. Estos problemas pueden distraer a uno de centrarse en las cosas reales de bajo nivel.
Philip
Esta es una opinión interesante. En mi experiencia, una persona mayor se ocupa más de la administración, no necesariamente porque no codifica, sino porque tiene más experiencia en traducir las cosas de bajo nivel a los no técnicos. Ciertamente puedes respetar esa habilidad o no. Su punto de vista plantea una pregunta, en un equipo de 30 desarrolladores web, ¿ninguno de ellos es senior porque no pueden escribir un núcleo? ¿No te importa si trabajaron en Mosaic o terminaron la secundaria?
Steve Jackson
30 desarrolladores web? DESARROLLADORES? Bueno, "senior" significa para mí que la persona ha estado codificando durante mucho tiempo o que tiene más edad. Pero si pienso "senior" en términos de experiencia y conocimiento que importa, no creo que pueda llamarse experiencia de programación si usa un lenguaje recolectado de basura.
jokoon