¿Qué métricas sería útil para determinar el nivel experiencia en un determinado lenguaje de programación

StackOverflow https://stackoverflow.com/questions/539694

  •  22-08-2019
  •  | 
  •  

Pregunta

Soy interesante en las métricas primas (o compuestos) que se utilizan para tener una idea de lo bien que una persona puede programar en un lenguaje particular.

Escenario:. George sabe algunas lenguajes de programación y quiere aprender "foobar", pero él le gustaría saber cuando tiene una cantidad razonable de experiencia en "foobar"

Estoy muy interesante en algo más amplio que sólo el COL (líneas de código) métrica.

Mi esperanza para esta pregunta es entender cómo los ingenieros cuantificar las experiencias de lenguaje de programación de los demás y si esto puede ser medido de forma mecánica.

Gracias de antemano!

¿Fue útil?

Solución

En respuesta a los dos críticos anteriores, supongo que hay es una manera de conseguir una manija en lo bien que una persona puede programar en un lenguaje particular: se puede probar qué tan bien alguien sabe Inglés o matemáticas, o la música, o la medicina o bellas artes, así que lo que hay de especial en un lenguaje de programación?

En respuesta a la OP, supongo que las pruebas deben evaluar:

  • ¿Qué tan bien se puede programar
  • ¿Qué tan bien se puede utilizar el lenguaje de programación

Por lo tanto las métricas pueden ser:

  1. ¿Cuál es la bondad de la programación de la persona (y hay varias dimensiones de la bondad como, mantenible, rápido / barato para escribir libre de errores, corre rápido, cumple con los requisitos del usuario, etc.)?

  2. ¿Consume características apropiadas / idiomáticas del lenguaje de programación en cuestión con el fin de hacer que la buena programación?

Sería difícil hacer la prueba 'mecánica', sin embargo: la mayoría de los exámenes, que yo sepa son calificados por un examinador humano. En el caso de la programación, parte de la prueba podría ser clasificado mecánicamente (es decir, "no se ejecute?"), Pero parte de él ( "es comprensible y idiomática?") Pretende beneficiar, y es mejor juzgado por, otro humano programadores.

Otros consejos

El mejor indicador de su experiencia en un idioma en particular, en mi opinión, es lo productivo que está en él.

La productividad no es sólo lo rápido que puede funcionar, pero, sobre todo, qué pocos errores se crea y lo poco refactorización / retrabajo se requiere más adelante.

Por ejemplo, si se toma dos idiomas que tiene el mismo nivel de experiencia con, y fueron (en universos paralelos) para construir el mismo sistema con los dos, yo diría que el idioma que construir el sistema con mayor rapidez y con menos defectos / defectos de diseño, es el idioma que tiene más experiencia en.

En este momento no es una métrica "duro" para usted, es un enfoque más práctico.

No creo que esto puede ser "medido mecánicamente". He pensé mucho sobre esto sin embargo.

Espera ...

A pesar de la "LOC" de un programa es un tema muy controvertido! (¿Estamos hablando de la salida de cat * {H, C} |.????? Wc -l o algún otro mechnanism, por ejemplo, ¿Qué pasa con líneas en blanco Comments comentarios importante es un buen código documentado)

Hasta que usted ha dado cuenta de lo inútil LOC es una comparación, usted no tiene ninguna esperanza de darse cuenta de lo sin sentido son otras métricas.

Es una cosa más bien cualitativa que rara vez se mide con cualquier gran precisión. Es como preguntar "lo inteligente era Einstein?". La certificación es una (y razonablemente exhaustiva) indicador cuantitativo, sino que incluso se cae drásticamente por debajo de la identificación de "buenos programadores", como muchos reclutadores descubrir.

¿Qué estás tratando de lograr en última instancia? aptitud programación general puede ser más importante que la experiencia lengua en algunas situaciones.

Si usted es un lenguaje centrado, asumiendo un reto como Proyecto Euler uso de ese el lenguaje puede ser una manera de seguir el progreso.

¿Cómo son competentes en la depuración de problemas complejos en ese idioma.

Pregúnteles acerca de los proyectos que han trabajado en el pasado, los problemas difíciles que se encontraron y cómo los solucionaron. Preguntarles acerca de las técnicas que han utilizado la depuración - usted se sorprenderá de lo que se escucha, y que incluso podría aprender algo nuevo; -)

Una gran cantidad de lugares tiene una persona o dos que es una superestrella en su campo - la persona que todo el mundo va a cuando no pueden averiguar lo que está mal con su programa. Supongo que esa es la persona que buscas: -)

Establecimiento dotado de un lenguaje de programación no es suficiente. Lo que se requiere es la instalación con un lenguaje de programación en el contexto de un conjunto de bibliotecas partiular en una plataforma en particular

  • C ++ en winapi en Windows de 32 bits
  • C ++ en KDE en Linux
  • C ++ en Symbian en un teléfono Nokia S60
  • C # en MS .NET en Windows
  • C # en Mono en Linux

Dentro de este contexto, las medidas de competencia utilizando el idioma de destino en la plataforma de destino son los siguientes:

  • La capacidad de expresar común patrones de manera sucinta y robusta.
  • La capacidad de depurar errores comunes pero sutiles como las condiciones de carrera.

Sería posible desarrollar un conjunto de ejercicios de referencia para un programador. Se podría también, una vez muestras significativas estaban disponibles, determinar la curva de campana para la capacidad. La preparación de estas cosas tomaría literalmente años y rápidamente se obsoleto. Este (y opresión en general) es por qué las organizaciones no molestan.

También sería necesario para la gente grado en ambas "fabricante de herramientas" y modos "herramienta de usuario". fabricantes de herramientas son muy diferentes las personas con un nivel mucho más alto de competencia pero a menudo son inadecuadas para mono de trabajo, para el que realmente quiere un usuario de la herramienta.

John

Hay un par de formas de acercarse a su pregunta:

1) Si usted está entrevistando candidatos para una posición particular que requiere un lenguaje particular, entonces la única medida para comparar candidatos es 'cuánto tiempo esta persona ha estado escribiendo en este idioma.' No es perfecto - no es aún muy bueno - pero es la realidad. A menos que quiera dar al candidato un problema, una computadora y un compilador para probarlos en el lugar no hay ninguna otra medida. Y entonces la mayoría de los tipos de programador no les va bien en "alguien está mirando" escenarios.

2) Interpreto su pregunta sea más de 'cuando puedo decir que soy profecient en un idioma? Por ello me refiero a los niveles de aprendizaje de un idioma no nativo: primer nivel es lo que necesita para buscar palabras / frases en un diccionario (libro) con el fin de decir o comprender nada; segundo nivel sería que usted pueda comprender oír el idioma (o lectura de códigos), con sólo la búsqueda de vez en cuando en su diccionario de confianza y ahora muy gastado; tercer nivel que ahora puede hablar (o escribir código), con sólo la búsqueda de vez en cuando; cuarto nivel es donde se sueña en el idioma; y los niveles finales es donde engañar a los hablantes nativos en el pensamiento de que usted es un hablante nativo también (en la programación, otros expertos podría pensar que es posible que haya contribuido al desarrollo de la sintaxis del lenguaje).

Tenga en cuenta que esto no ayuda a determinar qué tan bien de un programador que son - al igual que saber Inglés sin tener que buscar palabras en el diccionario no muestra "cómo Gooder que es en Writin cosas" - que es subjetivo y no tiene nada que ver con un lenguaje particular por lo que las personas que son buenos en la programación son buenos en cualquier idioma que les dan.

La frase "una cantidad razonable de experiencia" depende de la lengua que es considerado y lo que el lenguaje puede ser usado para.

Una métrica es el resultado de una medición. Stevens (ver Wikipedia: nivel de medición) propuso que las mediciones utilizan cuatro tipos de escala diferentes: nominal (la asignación de una etiqueta), ordinal (asignación de una clasificación), intervalo (ordenar las mediciones) y la relación (que tiene una no arbitraria punto de partida cero) . LOC es una medida de la relación. Aunque lejos de ser perfecto, creo que es un número LOC pertinentes, objetivos que indica la cantidad de experiencia que tiene en un idioma y se pueden comparar con valores cuantificables en la industria del software. Sin embargo, esto plantea la pregunta:? ¿De dónde estos valores provienen de la industria

En lo personal, yo diría que "George" se sabe que tiene una cantidad razonable de experiencia cuando él ha diseñado, implementado y probado un proyecto, tal vez de su elección en su tiempo personal en su ordenador de casa si es necesario. Por ejemplo: base de datos, aplicaciones de negocio, página web, herramienta de prueba de interfaz gráfica de usuario, etc.

.

Desde el punto de vista de los responsables de contratación, me gustaría comenzar, pidiendo al programador lo bueno que s / él está en el lenguaje, pero esto no es una métrica. Siempre he pensado que la mejor manera de medir la capacidad de una persona para escribir programas es dar al programador de varios problemas de programación pequeños que están pensadas de antemano y resolverse en un período de tiempo determinado, por ejemplo, 5 minutos cada uno. Nunca he opuesto a este ser hecho a mí en las entrevistas de trabajo. Varias métricas están disponibles: fue capaz de resolver el problema (sí o no - nominal) el programador? ¿Cuánto tiempo se tarda (número de minutos - ratio)? ¿Qué tan efectivo fue su enfoque para resolver el problema (bueno, regular, malo - ordinal)? Se aprende no sólo la capacidad de las personas para escribir código, pero puede observar varias cosas subjetivas, así como su comportamiento a medida que avanzan sobre la solución del problema, las preguntas s / él pregunta, mientras que la solución del problema, la capacidad de trabajar bajo presión, etc., desde una perspectiva de "calidad", sin embargo, recuerde que la gente no le gusta que se está midiendo.

Sin embargo, creo que hay algunas buenas métricas como el McCabe Ciclomática Métricas para la complejidad ciclomática o la cantidad de comentario útil por bloque de código o incluso la cantidad promedio de código escrito entre dos pruebas consecutivas.

No conozco ninguna tal cosa. No creo que hay consenso sobre la forma de cuantificar la experiencia o lo que significa "razonables". Tal vez voy a aprender algo también, pero si lo hago será una gran sorpresa.

Este puede ser pertinente.

Me parece que la prueba de la capacidad de depuración es una medida más precisa de la habilidad de programación que cualquier prueba dirigida a problemas de programación sencillas que he encontrado. Teniendo en cuenta la fuente para una clase de tamaño razonable o función con un mal comportamiento formulados (o no, en algunos casos), puede localizar la testee el problema?

Bueno, tratan de que en las entrevistas de trabajo. No hay métrica, pero se puede evaluar las capacidades de una persona a través de preguntas y interrogando.

WTF / s * LOC, más pequeño es el mejor.

no hay ninguno; experiencia sólo puede juzgarse subjetivamente con respecto a otros, o probado en específicos (que tiene su propio nivel de inexactitud)

lo que la fascinación con métricas de código para más información

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top