Categorizing Professionals in Software Programming
Writing code is a vital part of software programming. Over the many years of my programming career, I have worked directly with more than 300 people who write code, either as my co-workers, employees, or prospective employees. That’s enough experience to draw out some lessons, and I’d like to share them with you.
Let’s first discuss the four basic skill levels of software professionals, and then I’ll share how I hire coders compared to how others in the industry hire them.
My primary goal with each hire is to ensure that my teams are strong and my projects are on time and done properly the first time around. If you don’t know how to hire the right professionals to do this, your projects will be crippled from the start.
I should mention that I have quite high standards when it comes to software engineering and technical management.
I've only worked on enterprise-grade, large projects which are B2C with high volume/traffic. That in itself requires a certain level of quality to sleep peacefully at night without panicky after-hours phone calls.
Therefore, my categories are directly related to that kind of software engineering requirements.
1. Coders: They generally have no education in computer science or a related field. They were told that there is good money in software programming, so they got into it.
They are unfamiliar with most software engineering principles, and what they have learned came possibly from someone who wasn’t a true software engineer. Because their skills are so limited, all they can do is keep repeating the few types of code with minimal variations/improvements.
They are the cheapest to hire because they are the newest in their line of work. They are eager and willing to work, but their skills are in the earliest stages of development.
Because they don’t know what they are doing, they are very high maintenance, and someone will need to review their work carefully. Sometimes it is surprising to see well educated software professionals in this category …
2. Programmers: This group generally has some related education, so they can build websites and simple applications—and nothing more complicated.
They will follow all orders from their leaders as well as they can, but they do not usually research or advance themselves, so they need constant help from senior engineers. Most of them also don't know design patterns or principles in software engineering.
3. Developers: Developers are smart people with a solid education, however they may lack expertise and attention to detail. Whether their errors are due to a lack of experience, lack of interest, or laziness, their work must always be carefully checked and the same mistakes tend to show up repeatedly.
They can sometimes become the most dangerous to your projects if they are not well monitored because they are smart enough and have heard certain keywords, so they can “talk the talk,” but they may be unable to “walk the walk.” You may think that they understand what you want them to produce, but you may end up with a surprise in the end.
This means that project results can be quite frustrating. Developers may perform work under the assumption that they are implementing some design pattern or a SOLID principle, but they may instead drive the project into terrible road blocks.
Sadly, in my experience, around half of them have ethical issues such as lying. Unfortunately, I have found that close to 50% of software professionals in the world are this type, but I don’t think those numbers are any different in any other line of work. That’s just a sad commentary on society today that it can be difficult to find people who tell the truth about their projects and skills.
4. Engineers: This group has all the real skills that you’re looking for. Thankfully, all the people I have hired and retained currently are this type. They are smart, intelligent, properly educated for their work, and they know what they are doing.
They generally know 2-5 design patterns pretty well. (I don't remember anyone knowing all of the design patterns actively except a couple of architects).
Those are the people you would love to work with for the rest of your career. However, the unfortunate part is that of the pool of software professionals, less than 15% are engineers. They are hard to find and expensive—and worth every penny!
My Hiring Secrets
Fortunately, due to my experience, I have worked with enough coders, programmers, and developers that I've internally developed certain methods to hire only engineers. This was obviously not easy. It took some time to be able to find the right path, but it was completely worth it.
Here are some of the key methods I use to hire the best engineers:
Focus on LinkedIn profiles more then resumes.
- Check their most-endorsed skills – are they the ones you want?
- How many connections do they have?
- Does their job history show significant experience in the types of projects you have with working history in each organization?
Compare their expected salary vs years of experience.
- Do not hire the person who has 15+ years of experience and is expecting a salary of someone with 5 years of experience. This means that there is something wrong. Cheaper is not better.
Be prepared to pay for the right person.
- Hire 1 expensive skilled person rather than 2 or 3 cheaper, less-skilled people. (He/she will do better work in less time, which means they provide more real value, making their salary more cost effective.
Include a simple code test during interviews.
- If they cannot finish it, ask a hard question to bring them back to table (elimination of interview anxiety).
- How quickly did they finish the test? Their speed will tell you how good they are.
My recruiter friends may not like it said, but it’s worth the time and effort I take to keep searching for qualified people—even if it makes recruiters’ lives a little more challenging.
Once you have a strong group of engineers, then other skilled, quality-conscious engineers will want to join you because it is real fun to work with people who are actual software engineers.
(And yes, it is challenging when your team has better technical skills than you so you aren’t correct all the time!)
If you don't like to be challenged and you don't want to hire professionals with better skills than you, maybe you should only work with developers. If that is your choice, you may get the project done on budget, but the work gets done much slower and technical debt increases. You also probably don't have the best code. Please note, you may think you are on budget, but you may not be due to slow progress.
I am quite happy with the achievements of my current team of software engineers that strive for the best. Since I have improved my hiring, I’ve seen not only the quality of code increase, but our team’s quality of life and ethics have also increased as well.
Our software engineer team has become the role model department with high productivity & work ethics.
Suggestion for managers and above
If you are in a position to manage software engineers, review your requirement categories clearly and think of your past experiences with people of different skill levels on your teams, then make the right decision for yourself and the company you are working for.
Hiring highly-skilled professionals in any line of business will only increase your value and will not build up a job security issue. Just remember that you are the one managing them, so their success will directly be your success also. Strive for the best and you will achieve it.
Thought this post was relevant to you, Share it with your network.
Great article, very applicable to almost any industry/Company hiring people, simply change the titles/skill levels for any position in a Company and you have very good insight into what to expect. Would love to chat about my experiences in hiring people of all skill levels for different positions and understanding the learning progression through out team member's careers!
well written. great article.
Excellent insights.