El problema
Cada vez que llega el momento de buscar trabajo, el candidato se sienta para actualizar el currículum y, simultáneamente, mira con una mirada más experimentada su experiencia pasada. Y reescribe todo, una y otra vez. Y cada vez que piensa que encontrará el trabajo de sus sueños, se volverá tan experimentado que lo llamarán a un nuevo lugar sin ninguna acción de su parte. Y luego la historia se repite, una y otra vez.

Para aquellos que no están interesados en la letra, y que quieren ponerse manos a la obra de inmediato, entonces adelante con github . Y para aquellos que se preocupan por la mecánica y la historia del proyecto, el artículo en realidad está dedicado a él.
Con el advenimiento de recursos especializados de intercambio laboral, como LinkedIn, HeadHunter, etc., parece que la situación debería haber mejorado: llenamos toda la experiencia en un solo lugar, y el pasado ya no está inventado. Pero no estaba allí: lo llenaron en un sistema, no puede descargarlo en otro con un clic del mouse. No existe una base de datos única en la que pueda vincular su cuenta. Es comprensible: tales empresas están interesadas en desplazar a otras y no participar en la integración entre ellas, y los candidatos simples como resultado solo empeoran.
Se debe prestar especial atención a las empresas que en la etapa de entrevista aún requieren que el candidato complete la misma información en su sistema interno, requiriendo detalles nuevos y nuevos. Y aún peor, si está solicitando un currículum.
Pero donde sea que solicite una vacante, siempre hay un campo para adjuntar un currículum en .doc o .pdf . Y a pesar de la abundancia de "basura de información" en toda esta cadena, debe adaptarse y jugar según las reglas de la mayoría; de lo contrario, nadie aceptará a un candidato para trabajar, porque simplemente no saben de él.
En teoría, el problema podría resolverse teniendo un 'centro único', si:
- todas las plataformas para la colocación y respuesta de vacantes se unirán a nivel de recursos / protocolo único;
- "Cómo escribir un currículum" ya no será una cuestión de arte e investigación, y habrá un único estándar aceptado por todos;
- habrá una ontología única de las vacantes más populares, según la cual puede comprender la naturaleza de la evaluación de las habilidades / experiencia / cualidades de los candidatos para esta vacante;
- los candidatos no mentirán ni exagerarán en sus hojas de vida;
- No hay competencia para que los candidatos se vendan.
En el mundo real, esto es apenas posible, ya que los intercambios laborales se están desarrollando de manera descentralizada, y alrededor de 4-5 puntos, es probable que sea imposible de resolver incluso con un solo centro.
Pero aún así, se puede hacer algo para simplificar la vida del candidato, es decir, para sí mismo. Y trataré de hacerlo.
Idea
De una forma u otra, el resumen:
- describe las cualidades del candidato;
- Lo demuestra con experiencia.
Diferentes intercambios laborales brindan oportunidades ligeramente diferentes para la base de evidencia, en algún lugar hay campos separados para publicaciones, en algún lugar la posibilidad de una descripción detallada de los proyectos, etc. Es decir Todos los nodos objetivo de la cadena de información toman una proyección ligeramente diferente de la experiencia real y crean un cierto complemento para sus propias herramientas (búsqueda por habilidades, recomendaciones automáticas, etc.). Luego, teniendo la descripción más completa de su experiencia, puede crear estas proyecciones con relativa facilidad dependiendo de los requisitos específicos. Incluso para compilar un currículum.
Por lo tanto, mi idea es desarrollar un formulario para llevar un diario de mi experiencia laboral y proyectar automáticamente estos datos en una vacante específica y en la forma requerida, como se muestra en el diagrama.

Solo una parte de los datos cae en la proyección, y si en el caso más simple es una impresión simple debajo del formulario, en los casos más complejos es un filtro de datos relevantes para la vacante (destacando proyectos con habilidades clave, más espacio de impresión para la experiencia real, etc.).
Idealmente, tal "revista" debería:
- solo suplementado, los registros antiguos permanecen sin cambios;
- se completa cuando aparece nueva información relevante (finalización del trabajo en el lugar actual, nueva publicación, proyecto completado): así es como será posible dar la descripción más exitosa;
- contienen información que pone al candidato bajo una luz favorable (pero, además de esto, tiene sentido anotar puntos importantes para usted, incluso si son negativos, solo se imprimirá lo que se necesita).
Es decir Es una 'proyección' de la experiencia real en un espacio de habilidades y evidencia. Eso, en general, se encuentra en el corazón de cualquier sistema de intercambio laboral, pero estas oportunidades no están disponibles para los candidatos.
Mi historia
Comencé como todos los demás, abrí MS Word, busqué una hermosa plantilla y comencé a escribir. Busqué ejemplos, intenté copiar con éxito. En algún momento cambié a LaTex, más o menos estructurado la experiencia. Pasé por diferentes formas visuales, experimenté con formas. Duró aproximadamente 10 años, y finalmente, ha llegado el momento de que la cantidad se convierta en calidad.
Durante la última búsqueda de trabajo, perfeccioné más o menos la forma y la presentación del material, pero la cantidad de experiencia ya me hizo pensar seriamente en la compresión máxima de la información. Se introdujeron muchas decoraciones, que no solo se veían bien, sino que también evitaban el voluminoso texto. Más importante aún, ha llegado una comprensión del modelo ORM del currículum en sí mismo (logro-proyecto-habilidades-empleador).
Más tarde, incluso apareció la innovación principal: se dio cuenta de cómo mostrar sus habilidades de la manera más compacta, conveniente y hermosa posible, pero esto ya es una guinda del pastel, y hablaremos de eso más adelante.
Ahora, aparentemente, me estoy acercando nuevamente al siguiente período de búsqueda de trabajo, y quiero alejarme por completo de los currículos de edición manual y buscar recuerdos de experiencias pasadas a favor de la automatización. Por lo tanto, tuve que cambiar mi trabajo una vez más, transferirlo al formato de revista y hacer un generador de trabajo mínimo, que quiero compartir mi experiencia de desarrollo.
Reanudar la escritura como un feed de historia
En repetidas ocasiones me he encontrado con la opinión de que la tarea de un currículum es mostrar al candidato bajo una luz favorable. Pero, de hecho, su tarea es lograr que RR.HH. se ponga en contacto con el candidato después de leer. De aquí nace una consecuencia adicional: si lee hasta el final, entonces la probabilidad de que entre en contacto es mayor. Por lo tanto, consideré la tarea de compilar un currículum vitae en la formulación de cómo enviar material para que el currículum de recursos humanos se lea hasta el final .
Haré una reserva por adelantado para no dar consejos sobre cómo redactar un currículum, qué forma es mejor elegir, etc. Hay mucho material escrito sobre esto sobre las personas, mucho más experimentado que yo en este asunto. Aquí solo daré la forma y secuencia a la que finalmente vine y discutí.
Traté de simular cómo HR leerá el currículum, donde tan pronto como encuentre evidencia de la inadecuación del candidato, lo cierra y no lee más. Si imagina este proceso simplificado en forma de diagrama de flujo, obtendrá lo siguiente:

Por lo tanto, en la forma propuesta, ordené las secciones en una secuencia en la que la siguiente sección no importa si hay un desajuste de vacantes en la anterior.
Datos personales Si vive lejos de la oficina, no está listo para la reubicación, no tiene permiso para trabajar en esta región o no habla el idioma del equipo objetivo, entonces el resumen no se lee más.
Objetivos Si el candidato busca un puesto que no corresponde a la vacante, o sus intereses difieren de lo que puede encontrar en esta empresa, entonces el currículum no se lee más.
Educacion Muchos llevan la educación hasta el final, argumentando que lo más importante es la experiencia . Estoy totalmente en desacuerdo, porque la educación técnica superior te enseña a pensar primero. Un título científico es participar de manera competente en proyectos de investigación y proteger los resultados. Prefiero poner esta sección casi al principio, no por la importancia de tener educación, sino por romper el prisma de percibir más material de una manera positiva.
Las habilidades Los requisitos para las habilidades no son ambiguos para vacantes específicas. Si está buscando C ++ experimentado para desarrollar controladores, y en la parte superior las habilidades de JS, Ruby on Rails y Java, entonces no puede seguir leyendo.
Proyectos El trabajo de los desarrolladores está principalmente vinculado no al lugar de trabajo, sino al proyecto. Y el empleador actúa como intermediario condicional entre el empleado y el proyecto, y en una empresa el candidato podría tener muchos proyectos. Incluyo proyectos de pasatiempo aquí, como Tengo mucha experiencia en ellos. En otras palabras, aquí se proporciona evidencia de las habilidades declaradas, si no hay evidencia, entonces no se lee más.
Historia laboral . Si nuestro HR simulado vino aquí, entonces al menos cree que el candidato participó en vacantes de trabajo relevantes. Todos los méritos y logros técnicos ya se han descrito en la parte anterior, pero aquí RR.HH. puede evaluar la frecuencia de un cambio de trabajo y las áreas problemáticas con las que el candidato está familiarizado. Si, por ejemplo, cambia su lugar de trabajo con demasiada frecuencia, entonces no puede seguir leyendo.
Actividad profesional Además de la experiencia laboral, los candidatos verdaderamente apasionados por la profesión no se limitan al trabajo ordinario y los proyectos de pasatiempos, sino que también hacen ciencia, bloguean, hacen publicaciones populares y hacen presentaciones en conferencias especializadas. Por lo tanto, aquí doy en primer lugar, publicaciones científicas (en prioridad - indexadas en Scopus), luego publicaciones populares (por ejemplo, como este artículo), y en último lugar - presentación en conferencias. Este párrafo es más un suplemento y no es un "punto de corte" obligatorio.
Intereses y cualidades . Un punto clásico, cuya necesidad dudo, porque no creo que tenga una carga constructiva.
Cómo resaltar habilidades
¿Qué son las 'habilidades' y qué detalles se necesitan al completar? Esta es una pregunta abierta. Por ejemplo, en algún lugar puede escribir C ++, impulsar en algún lugar (y aún no escribir C ++), pero en algún lugar C ++, STL, impulsar. Y tenga en cuenta lo mismo.
Debe entenderse que los reclutadores y los recursos humanos rara vez tienen una especialidad técnica, y aún más experiencia. Esto significa que puede no ser obvio para ellos que STL y boost incluyen C ++. Por lo tanto, aquí debe centrarse principalmente en las vacantes y ver qué palabras clave se utilizan allí.
Para mí, al llenar la revista, decidí llenar más (incluso con duplicación semántica), y luego espero agregar un "filtro" de habilidades relevantes basadas en la vacante.
Experiencia de revista
La revista es un perfil del candidato y puede presentarse en la forma del siguiente diagrama. Indicaré solo los atributos básicos para las entidades, y usaré la notación ActiveRecord para aumentar la legibilidad para indicar relaciones.

A continuación, consideramos las entidades descritas con más detalle con ejemplos, y usamos JSON como lenguaje de implementación.
Con los datos personales, todo es bastante trivial, como con los contactos . Aquí solo se colocan las habilidades lingüísticas, porque A diferencia del empleo en Rusia, esto no es una ventaja competitiva, sino un medio de comunicación. Y si el reclutador te llama, deja que entienda de inmediato en qué idioma comenzar el diálogo.
La institución se ubica en la institución, el estado del diploma (doctorado, especialista, maestría, etc.), el nombre del diploma, el período de estudio y la calificación promedio. También me parece útil colocar una especialización para perfiles amplios y el título de un diploma.
Las habilidades deben ser reclutadas automáticamente de los proyectos, pero lo que considero importante hacer es reflejar mi actitud hacia la habilidad. Por ejemplo, si esto es C ++, en el que me encanta escribir, quiero enfatizar que me gusta escribir en él, y estoy doblemente interesado en las vacantes donde puedo hacer esto. O viceversa: lo que no quiero escribir en C #, aunque tuve que hacerlo.
En el proyecto , además de la duración, el tamaño del equipo y la descripción, siempre prefiero dar un enlace web al recurso de Internet que lo representa. Si es posible, también doy un logotipo para la decoración, ya que personalmente para mí la navegación en un currículum se simplifica enormemente y el texto se vuelve menos uniforme. Un proyecto es el bloque de construcción más importante de su experiencia, y como ejemplo
{ "name" : "Photoshop", "icon" : "photoshop_project.png", "period" : "01.09.2015-30.08.2016", "description" : "Raster graphics editor", "team-size" : "9", "web" : "https://www.adobe.com/products/photoshop.html", "tasks" : [ "..." ] }
Cada proyecto consta de tareas que se resolvieron y en las que el candidato logró ciertos logros . Esta es precisamente la evidencia clave de la experiencia: un logro idealmente expresado en forma numérica. La tarea puede ser una dentro del proyecto. Además, las habilidades están vinculadas a la tarea, que forma la base para generar estadísticas de habilidades:
{ "description" : "Development of text-recognition filter from raw image", "period" : "01.09.2015-28.02.2016", "skills" : ["CI", "C++", "ML"], "achievements" : [ "achievied recognition accuracy up to 85%" ] }
Y los logros permiten enfatizar que gracias a su solución a este problema, alguien en el mundo ha mejorado y es muy bueno hacer una evaluación cuantitativa. Y visualmente, un proyecto de este tipo va a lo siguiente:

La historia laboral , además de los campos triviales, contiene enlaces a proyectos. Estoy en contra de enumerar las "responsabilidades" aquí, esto ya está en los proyectos. También prefiero usar logotipos de empresas, especialmente si son logotipos famosos. Si HR está decepcionado con el párrafo anterior y va a cerrar el currículum, pero ve un logotipo familiar, puede salvar la situación.
Las publicaciones , las conferencias y las características son entidades triviales no relacionadas con nada, por lo que no les prestaré demasiada atención. Las publicaciones (tanto científicas como no ficticias) se almacenan como archivos bibtex.
Implementación
La implementación completa con la descripción adjunta se puede encontrar en github .
Traté de preparar un ejemplo ficticio de un currículum vitae , reflejando las ideas descritas con la mayor precisión posible y utilizando plenamente las capacidades actuales del compilador.
Necesita docker para trabajar, pero si esto es un problema, lo principal es poner imagemagick, latex y python.
FROM ubuntu:latest RUN apt-get -qq update && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends build-essential librsvg2-bin lmodern inkscape zip python3 python3-dev python3-pip libcairo2-dev apt-utils pkg-config python3-setuptools texlive-fonts-recommended texlive-latex-extra dvipng texlive-latex-recommended texlive-xetex && pip3 install --upgrade pip
El currículum se recopila en formato PDF utilizando Latex-a. Para logotipos, puede usar imágenes vectoriales (svg) o de mapa de bits (png) con alfa. Fuente: Arial Narrow, que es popular en currículums debido a su ancho.
Las habilidades
Presté especial atención a la visualización de habilidades en este proyecto, ya que es en ellas a donde va el filtro principal de candidatos. De lo que conocí, se pueden distinguir los siguientes enfoques:
- lista agrupada con gradaciones (experto, principiante);
- tabla (cuadrícula - gradación / habilidad);
- mezclar habilidades en proyectos;
- adición de puntos de experiencia previa en años entre paréntesis.
Cada enfoque es bueno a su manera, si lo lees cuidadosa y cuidadosamente, pero si no dedicas más de 10 segundos a él, todos están condenados al fracaso.
Además, su propia evaluación de su nivel (principiante / experto) no conlleva mucha constructividad. Hace cinco años, consideraba que mi nivel de C ++ era significativamente más alto de lo que creo ahora, aunque durante ese tiempo he crecido muchas veces en esta dirección. La única evaluación objetiva que puedo darle a mi habilidad es cuánto tiempo la usé. Esto formó la base para la implementación de esta sección.
Pero, ¿cómo evaluar este período de tiempo? Recuerdo que el primer programa de C ++ fue escrito en el séptimo grado, y la última vez que escribí algo hoy. Después de todo, está mal tomar 13 años de tu edad y escribir el resultado en la experiencia; después de todo, hubo períodos en los que no escribí nada y la habilidad no creció.
Pero luego puedo enumerar los proyectos en los que usé C ++, y puedo notar su duración, que, de hecho, ya se ha hecho en la revista . Y si trabajé simultáneamente en dos proyectos que usaban C ++, entonces la habilidad no crece a doble velocidad. Y esto ya es fácil de calcular según la revista y las estadísticas de visualización.
Y observando estas estadísticas, RR. HH. Puede averiguar rápidamente si usted es apto para una vacante o no. Además, a mí mismo a veces me interesa mirar mis estadísticas: ¿tengo tanta experiencia como pensaba y viceversa?
Como se ve
Todo junto se ve así:


Para el artículo, cito específicamente la versión en formato A5, por defecto el compilador está configurado en A4.
Retroalimentación
Si más personas se adhieren a los estándares comunes en los asuntos de reclutamiento en ambos lados (RRHH y candidatos), será más fácil para todos vivir. Por lo tanto, si también se adhiere a las opiniones idealistas y le gustó el proyecto, pero sabe cómo mejorarlo, estoy abierto a la interacción y me complacerá recibir cualquier comentario.
También hice un proyecto basado en los puestos de Ingeniero de Software / Desarrollador de Software, por lo que no tengo idea de cuánto es adecuado mi trabajo para otros puestos. Pero no excluyo que esto sea posible.
A donde ir ahora
El plan de desarrollo adicional es muy trivial, aunque incluye una implementación no trivial:
- Implementar compresión inteligente. Proporcione un mínimo de información sobre proyectos antiguos, un máximo: relevante y relevante. Ahora esto solo se implementa para cortar publicaciones antiguas, pero ya ocupan poco espacio. Es necesario observar los límites de volumen y no violar las reglas del género.
- Implemente un filtro de información relevante. En el caso más simple, se crea una ontología de habilidades con perfiles (incrustados, C ++, fintech, front-end, etc.), y el perfil es un parámetro para el compilador. Idealmente, le damos un enlace a una vacante (que sea una página en linkedin), el compilador en el caso más simple busca palabras clave en él o lo analiza usando una base de datos / ML y filtra habilidades y proyectos relevantes.
Mientras tanto, ¡buena y buena suerte al encontrar trabajo!