¿Cuáles son los criterios para dominar C ++ en la industria de la ingeniería de software?

Hice esta pregunta antes para una persona que trabajaba en Microsoft, y él me dio una respuesta, que no estoy totalmente de acuerdo con ella, pero la compartiré con usted en primer lugar, luego le diré mi opinión personal.

Le pregunté:

Siempre veo a personas escribir en sus CV que son (intermedios) en los lenguajes de programación, ¿por qué no vemos a alguien que se considere (profesional) en el lenguaje de programación?

Su respuesta:
Para describirse como un profesional / experto en un idioma, DEBE uno de estos:

  1. Autor de un libro en este idioma.
  2. Experto en la materia en este idioma .: Experto en la materia – Wikipedia.
  3. Contribuiste en cualquier biblioteca o herramienta relacionada con este idioma.
  4. Descubrió y corrigió algunos errores en cualquier biblioteca o herramienta relacionada con este idioma.

Todavía recuerdo estas palabras exactamente como lo que me dijo.

Mi opinión:

  1. Nunca escriba profesional / experto en su CV, considere esto por la modestia y la humildad [Manténgase en el lado seguro].
  2. Para ser un profesional:
    1. debe pasar por una gran experiencia con este idioma (lo está utilizando en su trabajo o en muchos de sus trabajos paralelos).
    2. Debe tener una muy buena comprensión:
      1. Puedes explicárselo a alguien.
      2. Puede escribirle una documentación, una documentación que cubra muchos de sus detalles internos.
    3. Debe tener un gran equilibrio de proyecto utilizando este lenguaje.
    4. Tienes mucho conocimiento al respecto.
    5. Usted sabe cómo se hace cualquier cosa y puede implementarlo usted mismo.
    6. Usted sabe exactamente el ciclo de vida de su código desde su IDE para que la computadora lo entienda.
    7. Sabes el tiempo y la memoria que se necesitan para hacer las cosas.
    8. Sabes sus inconvenientes.
    9. Conoces el proceso de administración de memoria en él.
    10. Usted es consciente de la historia de esto, esto puede darle una idea de dónde está sucediendo este lenguaje y qué quiere exactamente el equipo de desarrolladores.

Estas palabras son muy genéricas para cualquier lenguaje de programación, no solo C ++.

Espero que esto ayude.

[EDITAR1]

Según por qué no llamarse a sí mismo “experto” o “profesional”, Rob Starlin lo clavó en los comentarios, estoy citando lo que dijo:

El peligro de usar una palabra como “experto” es que te preparas para el fracaso. Si te llamas a ti mismo un experto, muchas personas esperarán que puedas responder cualquier pregunta, sin importar cuán esotérico sea el tema. Muchos entrevistadores tratan el proceso como una especie de concurso de preguntas y respuestas, a pesar del hecho de que ninguna persona, incluso un experto, conocerá absolutamente cada detalle sobre un tema tan grande como la programación en C ++. Entonces, al llamarse a sí mismo un experto, se prepara para parecer que está exagerando si no puede responder de inmediato a todas las preguntas.

Si de hecho eres un experto, entonces debes tener la experiencia y los logros para demostrarlo, y debes ser capaz de dejar que esos hablen por sí mismos en tu currículum.

Entonces, por ejemplo, si es autor de libros o lidera grandes equipos de desarrollo en sistemas importantes, póngalo en su currículum. No es necesario agregar palabras como experto, que no tienen un significado preciso y demostrable.

Muchas gracias a el.

Además de las habilidades necesarias para dominar cualquier idioma (conocimiento de la sintaxis, estructuras de datos, patrones de diseño, etc.), las habilidades particularmente importantes para ser un buen programador de C ++ incluyen:

  • Gestión de memoria (malloc, alloc, delete, etc.), con especial atención a las técnicas de codificación que reducen la probabilidad de pérdidas de memoria y desbordamientos de búfer.
  • Matemáticas y manipulación de punteros
  • Excelentes habilidades de diseño orientado a objetos con conocimiento particular de cómo usar y evitar las trampas de la herencia múltiple
  • Competencia con manipulación de bits de bajo nivel (& | ^ << >>)
  • Competencia con la interfaz con hardware; digital, analógico, E / S en serie, etc. ya que esta es una de las áreas principales donde C ++ aún domina.

Creo que esos elementos cubren los detalles de C ++ en comparación con otros lenguajes como Java o C.

Debe conocer la sintaxis y la semántica del lenguaje bastante bien. Declaraciones, expresiones, clases, orden de evaluación, enlace, punteros y referencias, cosas que causan un comportamiento indefinido, etc.

Debe conocer la programación orientada a objetos: cómo diseñar e implementar clases, cuándo usar la herencia, etc.

Debe tener algún conocimiento de la biblioteca estándar: contenedores, algoritmos, E / S.

Debe saber cómo encontrar rápidamente la respuesta a cosas que aún no sabe.

El uso más destacado de C ++ en la industria del software es en aplicaciones donde la eficiencia es de suma importancia, de lo contrario, podría haberse utilizado algún otro lenguaje de programación. Por lo tanto, además del conocimiento relacionado con el lenguaje C ++, también es de vital importancia comprender cómo aplicar ese conocimiento para escribir código eficiente. Por supuesto, esto es más fácil decirlo que hacerlo y requiere un aprendizaje constante en todo momento.

Como he mencionado en algunas otras respuestas, he encontrado la serie de libros “Efficient C ++” de Scott Meyers extremadamente útil para comprender los matices de la programación eficiente de C ++.

More Interesting

¿Cómo es ser ingeniero de software en Endurance International Group India? (Para la parte que se adquirió de Directi)

¿Cuál es la diferencia entre el diseño del sistema y la arquitectura del sistema en ingeniería y desarrollo de software?

¿No voy a ser un buen ingeniero de software si no puedo trabajar en equipo? En términos de oportunidades de empleo y esas cosas.

¿Cómo puede un ingeniero de software priorizar mejor el bajo estrés y el equilibrio trabajo / familia al seleccionar trabajos?

¿Qué es una buena computadora portátil con Windows para obtener como ingeniero de software?

¿Quiénes son algunas de las personas (y sus historias) que todos los ingenieros de software deberían conocer?

¿Necesito especializarme como ingeniero de software?

¿Qué porcentaje de ingenieros de software en Bangalore llevan una vida feliz y contenta?

¿Cómo evalúa eficientemente un ingeniero de software en un equipo de inteligencia artificial las ideas de trabajos de investigación publicados?

¿Qué temas / materias particulares necesita uno aprender para convertirse en ingeniero de software?

Soy un programador junior y quiero aprender Python. ¿Debo usar el libro 'Learn Python The Hard Way' o seguir los cursos introductorios de Udacity?

Entre un programador de computadoras, un ingeniero de software y un desarrollador web, ¿quién gana mucho dinero?

¿Cuáles son los mejores y peores equipos en Amazon para trabajar como SDE?

¿Amazon es una empresa de tecnología de segundo nivel?

Cómo convertirme en ingeniero de software si arruino mi vida