Simplify writing a resume developer


    Every time when it comes time to look for work, the candidate sits down to update the resume, and in the process looks at a more experienced look at his past experience. And rewrites everything, again and again. And each time he thinks that he will find a dream job, and then he will be already so experienced that he will be called to a new place without any action on his part. And then the story repeats, over and over.

    For those who are not interested in the lyrics, and who want to go straight to the point, then go ahead to github . And for those who are interested in mechanics and the history of the project - the article is actually dedicated.

    With the advent of specialized resources for labor exchanges, such as LinkedIn, HeadHunter, and others, it would seem that the situation should have improved - we fill the whole experience in one place, and the past is no longer good. But it was not there - they filled it in one system, you can’t just unload it into another by clicking on it. There is no single database to which you can link your account. It is understandable - such companies are interested to oust others, and not to integrate with each other, and simple candidates only get worse as a result.

    Companies that still require the candidate to fill in the same information in their internal system, demanding new and new details, deserve special attention. And even worse - if when submitting a resume.

    But wherever you respond to a vacancy, there is always a field to attach a resume in .doc or .pdf . And despite the abundance of 'informational garbage' in this whole chain, one has to adapt and play according to the rules of the majority - otherwise no one will take a candidate for a job, because about him just do not know.

    In theory, the problem could be solved with a 'single center' - if:

    1. all sites for placement and response of vacancies will be combined at the resource / single protocol level;
    2. “how to write a resume” will cease to be a matter of art and research, but there will be a single standard accepted by all;
    3. there will be a unified ontology of the most popular vacancies, by which one can understand the nature of the assessment of skills / experience / qualities of candidates for a given vacancy;
    4. candidates will not lie and exaggerate in their resumes;
    5. there is no competition for candidates for selling skills.

    In the real world, this is hardly possible, since labor exchanges are developing decentralized, and it is probably impossible to solve 4-5 points even with a single center.

    But still, something can be done to simplify the life of the candidate, namely - yourself. And I will try to do it.


    Anyway, a summary:

    1. describes the qualities of the candidate;
    2. proves it by experience.

    Different labor exchanges offer slightly different possibilities for an evidence base, somewhere there are separate fields for publications, somewhere there is a possibility of a detailed description of projects, etc. Those. all target nodes of the information chain take a slightly different projection of real experience and create a certain add-on for their own tools (search by skills, automatic recommendations, etc.). Then, having the most complete description of your experience, you can relatively easily create these projections depending on specific requirements. Including for resume compilation.

    Thus, my idea is to develop a form for keeping a journal of your work experience and automatically project this data onto a specific job and into the required form, as shown in the diagram.

    Only a part of the data gets into the projection, and if in the simplest case it is a simple print under the form, in the most complex it is a data filter, relevant vacancies (highlighting projects with key skills, more print space for current experience, etc.)

    Ideally, such a "journal" should:

    1. only supplemented, old records remain unchanged;
    2. filled when new relevant information appears (completion of work at the current location, new publication, completed project) - this is how you can give the most successful description;
    3. contain information exposing the candidate in a favorable light (but, in addition to this, it makes sense to mark important moments for yourself, even if they are negative - only what is needed will go to press).

    Those. This is the 'projection' of real experience onto the space of skills and evidence. That in general is the basis of any labor exchange system, but for candidates these opportunities are not available.

    My history

    I started like everyone else, opened MS Word, searched for a beautiful template, started writing. I was looking for examples, I tried to copy successfully. At some point, I switched to LaTex, more or less structured the experience. Went through different visual forms, experimented with forms. It lasted for about 10 years, and finally, it was time for a quantity to develop into quality.

    During the last job search, I more or less perfected the form and presentation of the material, but the amount of experience already made me seriously think about the maximum compression of information. It was introduced a lot of scenery, which not only looked good, but also allowed to avoid the voluminous text. More importantly, an understanding has come of the ORM model of the resume itself (achievements-project-skills-employer).

    Later, even the main innovation appeared - it came to realize how to display your skills as compactly as possible and in a comfortable and beautiful way, but this is already the cherry on the cake, and it will be discussed later.

    Now, apparently, I am again approaching the next job search period, and I want to completely get away from manual revisions of the resume and digging into memories of past experience in favor of automation. Therefore, I had to shake up my work once again, transfer them to the format of a magazine and make a minimal working generator, the development experience of which I want to share.

    Resume writing as a story submission

    I have repeatedly met the opinion that the task of a resume is to show the candidate in a favorable light. But in reality, his task is to make HR get in touch with the candidate after reading. An additional consequence is born from here - if he reads to the end, then the probability that he will make contact is higher. Therefore, I considered the task of writing a resume in setting how to submit the material so that the HR resume read to the end .

    I will make a reservation in advance that I will not give advice on how to write a resume, which form is better to choose, etc. - there is a lot of material written by people about this that is much more experienced than me in this matter. Here I will only give the form and sequence to which I eventually came to and argue.

    I tried to simulate how HR will read the resume, where as soon as he finds evidence of the candidate’s unsuitability, he closes it and does not read further. If you present this process in a simplified flowchart, you get the following:

    Therefore, in the proposed form, I ordered the sections in a sequence where the next section does not matter if there is a vacancy mismatch in the previous one.

    Personal data . If you live far from the office, are not ready for relocation, do not have permission to work in this region, or do not speak the language of the target team, then the resume is not readable.

    Objectives . If a candidate is looking for a position that does not correspond to a vacancy, or his interests are different from what he can find in this company, then a resume is not readable.

    Education . Many remove education at the end, arguing that the main thing - experience . I categorically disagree, as a higher technical education teaches first of all to think. A scientific degree - to competently engage in research projects and protect the results. I prefer to put this section almost at the beginning not because of the criticality of having an education, but in order to break the prism of the perception of further material in a positive way.

    Skills . Requirements for skills are quite unambiguous for specific vacancies. If you are looking for an experienced C ++ for developing drivers, and in the top are JS, Ruby on Rails and Java skills, then you can stop reading.

    Projects . The work of developers is primarily tied not to the place of work, but to the project. And the employer acts as a conditional intermediary between the employee and the project, and in one company the candidate could have many projects. I include hobby projects here, because got a lot of experience in them. In other words, the evidence of the stated skills is given here; if there is no proof, it means that it cannot be read further.

    Labor History . If our simulated HR came here, then at least he believes that the candidate has participated in relevant job projects. All technical achievements and achievements have already been described in the previous part, and here HR can assess the frequency of changing jobs and problem areas with which the candidate is familiar. If, for example, he changes his place of work too often, he cannot read further.

    Professional activity . In addition to work experience, candidates who are truly passionate about the profession are not limited to normal work and hobby projects, but also do science, write blogs, make popular publications, and make reports at specialized conferences. Therefore, here I give first of all, scientific publications (in priority - indexed in Scopus), then popular ones (for example, like this article), and last place - performance at conferences. This item is rather a supplement, and is not mandatory and a 'cut-off point'.

    Interests and qualities . The classic point, the need for which I doubt, because I do not think that it carries a constructive load.

    How to highlight skills

    What is the "skills", and what detail is needed when filling out - this is an open question. For example, somewhere you can write C ++, somewhere boost (and not write C ++), but somewhere C ++, STL, boost. And at the same time, keep in mind the same thing.

    It should be understood that recruiters and HR-s rarely have a technical specialty, and even more experience. This means that it may be far from obvious to them that STL and boost include C ++. Therefore, here you need to focus primarily on vacancies, and see what keywords are used there.

    For myself, when filling out a journal, I decided to fill out in more detail (even if with semantic duplication), and then I hope to add a "filter" of relevant skills based on the vacancy.

    Experience in the form of a magazine

    The journal is a candidate profile, and can be represented as the following diagram. I’ll point out only basic attributes of entities, and I’ll use the ActiveRecord notation for better readability to denote links.

    Next, we will take a closer look at the entities described with examples, and use JSON as the implementation language.

    With personal data, everything is quite trivial, as with contacts . Is that language skills are placed here, because in contrast to employment in Russia, this is not a competitive advantage, but a means of communication. And if a recruiter calls you, then let him understand immediately in what language to start the dialogue.

    The education is placed school, graduation status (phd, specialist, master, etc. ), the name of the diploma, the period of study and average rating. I also consider it useful to place a specialization for broad profiles, and the name of the diploma.

    Skills may be recruited automatically from projects, but what I consider important to do is to reflect my attitude towards the skill. For example, if this is C ++, on which I love to write, then I want to emphasize - that I love to write on it, and I am doubly interested in vacancies, where I can do it. Or vice versa - the fact that I do not want to write in C #, even though I had to do it.

    In the project , in addition to the duration, team size and description, I always prefer to give a web-link to the Internet resource that represents it. If possible, I also give a logo for decoration, since for me personally the navigation through the summary is greatly simplified, and the text becomes less uniform. The project is the most important structural unit of your experience, and as an example

      "name" : "Photoshop",
      "icon" : "photoshop_project.png",
      "period" : "01.09.2015-30.08.2016",
      "description" : "Raster graphics editor",
      "team-size" : "9",
      "web" : "",
      "tasks" : [

    Each project consists of tasks that were solved, and in which the candidate has made certain achievements . This is the key evidence of experience - an achievement , ideally expressed in numerical form. There may be one task within the project. Also, skills are tied to the task, which forms the basis of the formation of skills statistics:

      "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%"

    And the achievements make it possible to emphasize that thanks to your solving this task, someone in the world has become better, and it is very good to give a quantitative assessment. And visually such a project is going to the following:

    Labor history , in addition to the trivial fields contains links to projects. I am against the listing of "duties" here - this is already in the projects. I also prefer to use company logos, especially if they are well-known logos. If HR is disappointed with the previous item, and is about to close the resume, but sees a familiar logo - it can save the situation.

    Publications , conferences, and features are trivial to unrelated entities, so I will not give them undue attention. Publications (both scientific and popular science) are stored as bibtex files.


    All implementation with the accompanying description can be found on github .

    I tried to prepare a fictional example of a summary that most accurately reflects the ideas described, and fully utilizes the current capabilities of the compiler.

    To work, you need a docker, but if this is a problem, then the main thing is to put imagemagick, latex and 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

    Resumes are collected in PDF format using Latex-a. For logos, you can use vector (svg) or raster (png) images with alpha. The font is Arial Narrow, which is popular in resumes because of its width.

    Separate attention in this project I paid visualization skills, since it is for them is the main filter of candidates. From what I have met, the following approaches can be distinguished:

    • grouped list with grades (expert, novice);
    • table (grid - graduation / skill);
    • mixing skills into projects;
    • addition of previous points of experience in years in brackets.

    Each approach is good in its own way, if you read carefully and carefully, but if you spend no more than 10 seconds to consider, they are all doomed to failure.

    Moreover, the own assessment of one’s own level (novice / expert) does not have much constructiveness. Five years ago, I considered my C ++ level to be significantly higher than I believe now, although during this time I have grown many times in this direction. The only objective assessment I can give my skill is how long I used it. This formed the basis for the implementation of this section.

    But how to evaluate this time period? I remember that the first C ++ program was written in the 7th grade, and the last time I wrote something today. After all, it’s wrong to take 13 years off from your age and write the result into experience - there were times when I didn’t write anything and the skill didn’t grow.

    But then I can list the projects in which I used C ++, and I can note their duration, which, in fact, has already been done in the journal . And if I worked simultaneously on two projects in which C ++ was used, then the skill does not grow at double speed. And it is already easy to calculate on the basis of the journal and display statistics.

    And looking at such statistics, HR can quickly find out whether you are eligible for a job or not. Moreover, it is interesting for me sometimes to look at my own statistics - whether I am as experienced as I thought, and vice versa.

    What it looks like

    Everything looks like this:

    For the article I specifically cite the version on A5 format, by default the compiler is set to A4.


    If more people adhere to uniform standards in recruiting issues on both sides (HR and candidates), then it will be easier for everyone to live. Therefore, if you also adhere to idealistic views, and you like the project, but you know how to make it better - I am open to interaction and will be happy with any feedback.

    I also did a project based on the position of Software Engineer / Software Developer, so I have no idea how suitable my work is for other positions. But I do not exclude that this is possible.

    Where to go next

    The further development plan is rather trivial, though it includes a non-trivial implementation:

    • Implement smart compression. Giving a minimum of information on old projects, a maximum - on current and relevant. Now it is implemented only for cutting off old publications, but they already take up little space. You must comply with the limits of the volume and not violate the rules of the genre.
    • Implement relevant information filter. In the simplest case, a skill ontology is created with profiles (embedded, C ++, fintech, front-end, etc), and the profile is a parameter for the compiler. Ideally, we give a link to a vacancy (even if this is an page on linkedin), in the simplest case, the compiler searches for keywords or analyzes it using DB / ML and filters relevant skills and projects.

    In the meantime, all the best and good luck with your job search!

    Also popular now: