2009-04-13 8 views
13

Me imagino que la mayoría de ustedes sabe a lo que me refiero. Empiezas un nuevo trabajo y en la primera semana aproximadamente de escanear el código, te das cuenta de que estás en otra tienda de C que arroja alguna que otra corriente o una desafortunada clase definida por el usuario aquí y allá. Rápidamente se da cuenta de que no solo no aprenderá nada nuevo, sino que solo es cuestión de tiempo antes de que le pidan que no use ciertas cosas porque nadie más las comprende y no podrá mantener su trabajo.Cómo determinar el nivel real de desarrollo en una tienda, p. C++ vs. C?

¿Con qué frecuencia ve alguna técnica nueva, por ejemplo, StackOverflow, solo para darse cuenta de que si alguna vez la utilizó en el trabajo, se encontraría con desconcierto o fastidio en el mejor de los casos?

En su experiencia, ¿estos lugares son la norma o la excepción?

¿Cómo intenta (o intentará) determinar el nivel de sofisticación y el compromiso de un grupo con C++ en el entorno de la entrevista? Por ejemplo, intenté hacer preguntas sobre el uso que la compañía hace de cosas como STL, Boost, libs de terceros, etc., pero eso parece acercarse cada vez más a la realidad de la situación que encontrará una vez. ¿Pensamientos?

+1

Hay una pregunta real en algún lado, pero no estoy muy seguro de qué se trata. – Shog9

+0

Se trata de experiencia laboral, y realmente debería ser wiki comunitario. Simplemente, ¿con qué frecuencia encuentras tiendas que están mucho más atrasadas de lo que anuncian, y cómo las evitas? –

+0

No estoy seguro de por qué esto se cerró. +1 para reabrir – jalf

Respuesta

9

Realmente es todo en todos los ámbitos. En un extremo del espectro, trabajé en un lugar donde el código se reescribió recientemente en C. Recientemente, hace 10 años. Todos eran muy escépticos con respecto a esta nueva tecnología.

Un poco más abajo en el espectro, encontrará programadores C que tienen compiladores con funciones C++ habilitadas. Van a incursionar en la palabra clave "clase". Pero aparte de eso, están prácticamente escribiendo en C.

A continuación, creo que encontrarás a aquellos que solo heredaron herencia y polimorfismo. Estos son el tipo de chicos y chicas que se desmayarían por un programa de MFC o wxWidgets, pensando que era el mejor.

Irás un poco más lejos y encontrarás a las personas que acaban de leer Meyer. Se trata de descubrir cómo usar STL de manera eficiente. Tienen una noción básica de plantillas que se corresponde principalmente con la forma en que STL las usa.

Luego tienes los geeks de metaprogramación de plantillas de C++ modernas. Muchos de nosotros en estos días usamos su trabajo en forma de impulso y toda su bondad. Pocos realmente se vuelven aburridos con la metaprogramación de plantillas. Eso es probablemente una buena cosa.

He visto un código perfectamente bueno escrito en cada nivel.

Lo bueno que siempre me ha gustado de C++ es que en cada nivel de complejidad añadida, el costo se puede conceptualizar en términos de "cómo se puede implementar esta nueva abstracción en C". Así que puedo conceptualizar que la herencia y el polimorfismo están agregando el costo de una búsqueda de puntero a función. Como lo he visto y lo he escrito en C, sé para qué me sirve. También tengo una idea de cómo funcionan las plantillas en parte debido a cómo funciona el preprocesador en C. Esto se aplica a la mayoría de las características en el mundo C++ y C.

Dado que es fácil asignar conceptos a cómo se implementan en C, puedo visualizar fácilmente cómo la arquitectura subyacente ejecuta mi código.

+1

Este es un buen resumen pero no responde la pregunta planteada: ¿Cómo intenta (o intentará) determinar el nivel de sofisticación y el compromiso de un grupo con C++ en el entorno de la entrevista? –

+0

Tal vez esté escribiendo, parece que la pregunta ha cambiado algo del título original de "¿Cuántas tiendas C++" reales ha trabajado? " con preguntas centradas en nuestra experiencia en el campo. Es cierto que no respondo la segunda parte sobre cómo determinar el nivel de desarrollo. –

+0

escribir-> derecha :) –

1

He trabajado durante largos períodos de tiempo en tres tiendas C++. En todos los casos, eran verdaderas tiendas de C++, usando C++ como estaba destinado a ser usado, y permaneciendo bastante actualizado, dado los tiempos que trabajé en ellas.

2

Los lugares en los que he trabajado no necesariamente estaban usando C soley. No estaban generando nuevos programas, uno tras otro ... por lo general estaban construyendo algo grande y manteniéndolo. En mi experiencia, es cada vez más difícil seguir implementando nuevas y emocionantes características de un lenguaje en un software más antiguo que sigue creciendo y el trabajo principal es mantenerlo/actualizarlo.

Creo que preguntar en la entrevista sobre esas nuevas y geniales características ayudaría mucho ... al menos debería ser capaz de descartar las más obvias. Otra cosa sería preguntar si podría hablar con algunas de las personas que realmente escriben el código. La mayoría de las entrevistas son con tipos de gerente ... y no siempre son las personas involucradas en el uso de las últimas características de un idioma.

3

Si lee entre líneas, probablemente encontrará mucha información enterrada en sus preguntas, tanto en términos de lo que le quieren como de su nivel de sofisticación.

Es posible que también desee responder sus preguntas, no solo con respuestas, sino con preguntas más difíciles que requieren aclaración sobre las ambigüedades en sus preguntas.

Simplemente no se deje como un idiota arrogante cuando lo haga. ;-)

-2

Curiosamente, considero que el nivel de avance es prácticamente el opuesto a sus preferencias. Por lo tanto, esta respuesta podría no ser directamente útil, pero espero que sea, al menos, algo informativa.


En primer lugar, cualquier ambiente que fomente la "astucia" es sospechoso. Si veo una gran cantidad de Boost, una gran cantidad de metaprogramación de plantillas, y especialmente cualquier uso de las características "funcionales" de C++, es una gran señal de advertencia roja. Significa que los desarrolladores tienen una idea de lo que es la programación correcta, pero están limitados por la falta de imaginación o política a usar un lenguaje basura decrépito como C++. C es aburrido y tedioso de trabajar, pero C++ "avanzado" hace todo lo posible para interferir con el desarrollo.

En segundo lugar, compruebe si una determinada tecnología o concepto se trata como una palabra de moda. Si el posible empleador usa XML, hay una verificación fácil que puede hacer: ¿usan un analizador/serializador real (ya sea SAX o DOM está bien), o lo analizan con expresiones regulares y lo serializan con secuencias de caracteres sin formato? Si este último, muestra que no entienden por qué XML es útil, y lo están usando para tener otro acrónimo de tres letras en la descripción del proyecto.

En tercer lugar, descubra el lenguaje que los desarrolladores desean que estaban usando y por qué. Todo buen desarrollador tiene un lenguaje oscuro favorito, no importa si es Python, Ruby, Smalltalk, Haskell o Factor, y una razón para preferirlo. Si todos están contentos de trabajar en C++, es otra señal de advertencia de que no tienen mucha curiosidad acerca de la programación en general.

+4

Entonces, ¿usar un idioma es un signo de falta de curiosidad, pero usar ese lenguaje en toda su extensión también es malo? ;) Por supuesto, C++ puede convertirse en un desastre excesivamente complicado si no tiene cuidado, pero también puede eliminar una enorme cantidad de complejidad mediante la aplicación de las cosas que menciona. – jalf

+0

Los intentos de los programadores de trabajar en torno a un idioma limitante, en lugar de simplemente envolverlo y reemplazarlo lentamente, es una señal de que las nuevas ideas no son apreciadas. Nunca he visto salir algo de la metaprogramación de la plantilla o los hacks de macro que no podrían hacerse mejor en un lenguaje de nivel superior. –

+0

@John. La regla, como siempre, es la herramienta correcta para el trabajo. Para un proyecto a largo plazo, pasar a la última tecnología de "zumbido" también es incorrecto. ¡Incluso dices eso en tu respuesta! Una tienda que trabaja principalmente en C++ no es, por definición, "mala". –

0

Pídales una copia de su documento de estándares de codificación C++. Eso debería darte una idea del nivel en el que están trabajando. Si no tienen uno, podría ser una mala señal.

Cuestiones relacionadas