For a long time, my job is communicating with people. To be more precise, I deal with their personal and career development. Now I work for C3D Labs, a geometric kernel developer, as a People Partner. In this paper, we will discuss the Russian job market for math software engineers (specifically the CAD industry), the concerns of current employees, and the requirements for job candidates.
In my opinion, the career concerns of software developers can be divided into the following categories:
- how to become a senior, a team leader, or an expert;
- how to move up to the next career level and what it takes;
- soft skills as a key factor for securing a new role.
I would like to share my thoughts and experience on HR input to all this. Can a people partner help with career development?
Let’s start with the IT industry trends. What is happening in the software development market today?
Take a look at the available statistical data. There are about 30 mln. software developers globally (each 260th person). Experts claim that this figure for Russia is about 1.5 mln. (each 100th).
See how many people are involved in software development. The number of programmers in Russia is higher than the global average, and this field is still very popular. Note that is it not just a fancy trend. There is a solid reason: the demand for software developers is very high. Why?
- he companies are undergoing digital transformation (digitalization), adopting new technologies, and automating their business processes;
- new software development areas are emerging: AI, blockchain, IoT, and many others.
- The number of software developers will continue to grow and the requirements for them will become even more demanding;
- The products will become more complex with all the new technologies and higher-end consumer requirements;
- Complex processes require teamwork and soft skills.
WOW Market Trend
The number of software developers is growing in every area, and the CAD market is among the leaders. The Russian import substitution initiatives require fast implementation of the most complicated engineering solutions which affects every CAD vendor. More and more manufacturing and IT companies are going to hire developers who can create geometric models and/or use build in-house CAD solutions with third-party geometric kernels.
The CAD domain greatly affects the value and competitiveness of any business. CAD solutions:
- are extensively used in various industries (aerospace and defense, automotive, manufacturing, construction, etc.);
- boost design productivity and accuracy;
- increase efficiency as a team can work on the project concurrently.
Requirements for Software Developers
The candidate developers who apply for jobs at C3D Labs usually have one of the following competency levels:
- Middle/Middle+: have experience with software development (3 to 6 years on average) and CAD systems, or ready to learn CAD;
- Juniors: freshly graduated, or job switchers (a current trend in the labor market is changing one’s occupation at a mature age);
- Seniors/Experts/Team leads: have experience with CAD development (more than 6 years).
Each category is unique (we will talk about this later). Still, there are common basic requirements for any geometric kernel geometric job: strong math background, training in algorithms, and knowledge of C++.
Most often, math software engineers graduate from natural science schools with a strong focus on calculus, linear algebra, analytic geometry, differential geometry, and numerical methods.
When it comes to programming, the requirements for the Middle/Middle+ positions are as follows:
- thorough knowledge of the C++ basics (for most positions, C++ 14 and up). Learning a programming language is a continuous process. It is impossible to know everything, so we check the basics (terms, concepts, and tools). During an interview, the candidate studies a code fragment and explains what the code does and why it is written this way;
- advanced STL library user;
- advanced knowledge of Visual Studio, Visual Studio Code, and CMake;
- For web development, typescript is a must as well as npm, webpack, and multithreaded applications;
- CodeReview experience.
With two programming languages (primary and secondary), the programmer can better express the algorithm, making the code cleaner, more consistent, and more applicable.
The ability to tell good code from bad one, to write high-quality, maintainable code, to understand the testing processes (basic functions and values), and to realize that test writing is an integral part of the job--these are the strong points of middle candidates and a good start for their further professional development.
The key requirement for juniors is an unwavering interest in coding. You should love your job. Just love programming to the bones.
It is not enough to just read books. Write code in whatever languages you can. Unfortunately, juniors usually do not get any hands-on experience during their studies. As we interview them, they struggle with the basics of programming language, or math. A university education can be rather theoretical, missing real-life scenarios. My advice to juniors: be as active as possible when you are a student.
There are tons of hackathons and internship opportunities (we offer internships as well). Go there not to win (although you should always aim for the stars!), but to gain experience. Any internship involves a senior or experienced middle supervisor who gives you feedback. Join student activities, and learn about real-life CAD projects. Just theory is not enough for the job. Gain real experience with coding and using the kernel.
How do we see junior programmers? Our goal is to provide for their rapid and efficient professional growth. For this, we at C3D Labs have developed orientation and skill development programs for newly hired employees, a system of mentoring, and task review (decomposition).
We don’t recommend hiring juniors when the team is facing a tight deadline, there are no available mentors, or enough time to take proper care of the juniors. Otherwise, there is a risk to miss the project deadline or lose a promising talent.
We have realized that juniors are very helpful to us when:
- there is someone on the team who aspires for the team leader position, has experience in task delegation and teaching industrial-scale programming, can helps understand the business processes, summarize the required knowledge, and develop soft skills;
- the project includes a lot of simple tasks, so the experienced developers are bored. It happens: we don’t write code from scratch every day. There are error-catching and debugging processes, for example. At this point, experienced coders can supervise the juniors.
Over time, every middle coder begins to wonder: what skills and knowledge to develop to move up to the Senior level? We believe that a senior should meet the following requirements:
- have the Middle/Middle+ skills, and be a trend maker;
- know C++ 20 or higher, templates, multithreading, and keep learning the new versions;
- have project management, new technology adoption, and system architecture development skills.
How do I check if I have the skills of a senior? A senior’s behavior within the team is quite distinctive. What a senior does:
- offers solutions for implementing high-level product features;
- handles task decomposition;
- manages the product quality;
- speaks publicly;
- works as a mentor;
- a leader of the student internship program;
- just a great, trustworthy person you want to talk to.
When your career reaches the Senior level, make sure you have some guidelines for the future. Keep improving your attitude to engineering and writing your code A senior takes great care of the code, making it clean, maintainable, consistent, and logical in terms of architecture, and testable. They set the bar for the entire project. It is also highly important to understand the company's business and the entire industry. Keep extending your knowledge: there is no limit!
I also have some advice for future seniors and CAD development experts:
- read a lot of highly specialized books on how to design architecture properly, and write high-quality code;
- read high-quality code written by others: it opens your mind to new ways of programming;
- learn new programming languages. Languages may have different logic. A new language can inspire you to apply the new approaches to your work.
Many colleagues come to me after 5-7 years with the company and ask for a promotion. My recommendations for them are:
- communicate with the customers. The customers always tell the truth about your product, so you get excellent feedback, and a better understanding of the market needs;
- communicate with others: become a mentor, or supervisor, write papers, join third-party projects, try new roles, and take the lead;
- create your projects. This helps apply your knowledge to real-world problems, learn new approaches, and gain project management experience.
Skills development is a key to career growth. We often hear about “hard skills” and “soft skills”. Let us take a closer look.
Hard skills are specific, learnable capabilities that enable you to perform job-specific tasks (the Middle section of this article gives some detailed examples).
Soft skills are interpersonal skills, teamwork, and leadership abilities. There are tons of soft skills. As to our company, what we expect from the developers is:
- communication: how easily you communicate with others and promote your ideas;
- cooperation: how comfortable you are with teamwork, and how comfortable for the team to work with you;
- leadership: the ability to make independent decisions, and lead the team or project.
Below are my suggestions for soft skills development. If you have at least three skills listed below, you are way above other candidates we interview:
- listen, ask questions, express your thoughts and ideas, negotiate, and resolve conflicts;
- contribute to team projects, learn to trust and support colleagues, compromise, and achieve goals through joint efforts;
- motivate and inspire others, make decisions, and manage projects and resources.
HR Contribution to Career Development
Your team leader or HR can help you make a skills development and career growth plan. We make a skill-building plan together with the employee and assign them to projects resulting in career growth.
Evaluate your skills and think about their development for your career growth. Manage your self-development and career!
People Partner C3D Labs