14
.
11
.
2023
18
.
10
.
2019
HR
Visuality

How to find good developers and keep them happy - Part 1

Michał Krochecki
Chief Operations Officer

As a full-stack boutique software house, we often deal with experienced clients that found themselves in many different situations regarding hiring or managing developers in their projects. For some, it has always been effortless and lucky, but for others, it has been a neverending nightmare and a long list of failures before they found us. The same situation applies to the less experienced clients (usually startups). As we all know companies in the early stages usually don't dispose of large budgets, therefore they look for cost optimization anywhere possible. They often hire junior developers or random people, choose a cheap offshore company located thousands of miles away. All that may result in low quality of the code they produce, which can negatively affect customer satisfaction but also disrupt the whole internal process (which may result in employee exodus). In the end, the only solution possible may be the complete overhaul of the application.

In this article, we would like to support you in making good, long-term decisions regarding the development of your products and avoid bad choices. We will give you advice on what to remember when dealing with hiring and managing the team. All of the information is based on 12 years of our experience with 125+ applications and many developers we hired to create them.

Q: Should I recruit the developers on my own?

A: It is obviously a choice you need to make before you start preparing for the project.

If you are an experienced technical person or such people are already in your team, you most likely will have clear requirements and clear expectations regarding the developers' skills.

Regardless if you are an experienced product owner or a new startup founder, you need to ask yourself a couple of important questions:

  • Do you know how to verify developers' skills?
  • Do you know how to check if that person will match your company culture or more important --- do you have one?
  • Do you know where to look for good developers?
  • Do you know how to attract their attention?
  • Do you know how to keep them motivated and happy?
  • Do you offer enough learning capabilities?

People often think that in the recruitment it is all about gathering good resumes and verifying if the actual skills are matching the ones on the paper. But not a lot of people know how to really check those skills. Professional recruiters may know it, but such people value their services high and they often have so many projects in their queue that you may be asked to wait for a couple of weeks or even months for your turn. The good recruiters will also deny the services because of non-compete clauses in their contracts. You can always refer to an agency that runs recruitments, but again you will have to pay various fees and still you won't have any guarantee that the pre-selected candidates will be a good match regarding the company culture because you will meet them around in a half-way of the process. Also, the agencies (in the majority) go for the number of contracts, not the level of services given.

Another solution is to hire a software house. Software houses like Visuality may have very experienced engineering managers and recruiters working inhouse. When a new job position opens, we do not wait for the candidates to apply but we actively search for them in our networks and on social media. We know what they expect so we can prepare an attractive offer. And it is not about the salary at all. Of course, it is very important, but good developers look for the opportunity to grow and learn new things. A good software house cares about its employees and allows them to participate in conferences, asks them to work on pet projects and OKRs, offers them professional counseling and many more. Basically, through years of experience, we may have all the processes in place to make sure that people will be happily working in the company for a few years --- making sure that the know-how will be shared between the team members.

The recruitment process itself is very important and software houses design their own steps that will verify candidates' knowledge, skills, the way candidates solve problems and what character they demonstrate. To learn more about how we do it, read our CEO's article here: https://medium.com/visualitypl/guide-to-recruitment-at-visuality-fa073b57ae8d

Visuality recommends:

If you've never recruited technical staff, you don't have a good recruitment and onboarding process, start with hiring an agent or the agency. It will cost, but you will be sure that the candidates you will choose from are of good quality. Ask your recruiters to involve you more in the process. If it's possible you will be able to prepare your own process based on the process you will observe. If you can't wait and you need to start the project in 1--2 months, better choose a software house like Visuality. You won't have to run any recruitments and you will get experienced developers that most likely worked with each other countless times before. If you still want to do it yourself, remember to actively headhunt for talents. Look for them on Linkedin and try to spark their interest with personal messages. Don't use templates! Developers receive hundreds of automated messages and they will most likely disregard yours if it looks like a bot wrote it.

Q: What makes a good developer?

A: A good developer is usually a technical university graduate that works according to engineering principles. Such a person should have good theoretical knowledge, practical coding skills, strong logical thinking, and problem-solving capabilities. All that can be verified through a thorough recruitment process I already mentioned. There is also one more element of the puzzle which importance is often depreciated. It's the developers' attitude and spirit. It may sound strange in a world where everybody values coding skills, but we highly recommend to look for employees that will be sociable, communicative and have a positive attitude. They should also be willing to take ownership and responsibilities. You can hire the best programmer in the world but he might be a total loner, so working with a team will be exhausting for him and the other and sooner or later he or the rest of the team will quit because of the toxic atmosphere.

Q: Should I manage the team on my own?

A: All depends on your experience and the size of your team. If you are a small startup owner with engineering education and just need the help of 1 or 2 developers to run your project, you are probably good to go, but only if you focus fully on the development. So if you plan to run sales and marketing, run to the business meetings and conferences, you might find the whole development management tricky and time-consuming. Another important factor is the complexity of your product. If it is a simple wizard and you do most of the work offline anyway, you might be able to pull the project management off on your own, but when it comes to large and complex systems with many daily activities, integrations, plannings on a daily basis, you might find managing the workflow very demanding.

Visuality recommends

Hire a project manager or a good product owner with strong project management skills. (S)he will take some of the responsibilities off your shoulders, while you will be able to focus on the operations, recruitment, and sales. If you are looking for a fully comprehensive service, hire a software house. Software houses hire skilled and experienced project managers that worked on various projects and know the team well. They are fluent in the technical language and know how to communicate with the developers. Last but not least, they know how to extinguish fires and do damage control. They will also think about possible risks (using risk matrix) and take care of the solution asking you for help only when necessary. They will also be able to speak freely about the progress which will allow you to plan marketing/sales activities around it.

Q: How to care about my team?

As already mentioned, nowadays the salary in IT is often a secondary concern for the developers. Good engineers know their work is valued and that they can count on a solid salary and multiple benefits. That is why many developers care a lot about personal growth. Expanding the knowledge, participating in conferences, doing side projects it is all very important for good developers who want to stay up to date with the latest trends. If you can't provide that to them, you may have a problem. At software houses, developers have many colleagues with whom they can consult, learn new things from them. They have a broad audience for lightning talks (tech-talks) that are organized every week, they are sent to industry conferences and meetups like WRUG (Warsaw Ruby Users Group). Every developer sets his own OKRs that allow him/her to run side projects. Basically, they feel that besides doing projects they have opportunity to grow --- whereas very often in product houses the situation is totally opposite

It is also very important to empower your team members. They need to feel that their participation in the project is appreciated and that they have some control over what's happening.

Visuality recommends

Do not forget about having fun. People that sit behind the keyboard 40 days a week need to wind down a bit from time to time. Go bowling, visit an escape room or just go out for drinks altogether. If you have a garden like us, barbecue is always a good idea to integrate the team members.

Conclusion

Nowadays it's not easy to hire a good developer and it takes a lot of effort and a good offer to win over a promising talent or hire an experienced old hand. Having a lot of experience and multiple attempts will get you there. The most important thing you need to remember is being natural towards the developers, not making false promises and contact them either with the help of a good recruiter (or agency) or through personalized messages. The recruitment process should be fully-comprehensive and allow you to learn about the developer's theoretical knowledge, practical skills, experience, problem-solving skills, and character/attitude. Remember to care about your developers and allow them to grow on industry conferences or meetups. Give them space to work on their personal branding! Remember also --- life is not only about work, so make sure that you all have fun from time to time.

7 important things to remember about when recruiting managing developers

Michał Krochecki
Chief Operations Officer

Check my Twitter

Check my Linkedin

Did you like it? 

Sign up To VIsuality newsletter

READ ALSO

How to become a Ruby Certified Programmer Title image

How to become a Ruby Certified Programmer

14
.
11
.
2023
Michał Łęcicki
Ruby
Visuality
Vector Search in Ruby - Paweł Strzałkowski

Vector Search in Ruby

17
.
03
.
2024
Paweł Strzałkowski
ChatGPT
Embeddings
Postgresql
Ruby
Ruby on Rails
LLM Embeddings in Ruby - Paweł Strzałkowski

LLM Embeddings in Ruby

17
.
03
.
2024
Paweł Strzałkowski
Ruby
LLM
Embeddings
ChatGPT
Ollama
Handling Errors in Concurrent Ruby, Michał Łęcicki

Handling Errors in Concurrent Ruby

14
.
11
.
2023
Michał Łęcicki
Ruby
Ruby on Rails
Tutorial
Recap of Friendly.rb 2024 conference

Insights and Inspiration from Friendly.rb: A Ruby Conference Recap

02
.
10
.
2024
Kaja Witek
Conferences
Ruby on Rails

Covering indexes - Postgres Stories

14
.
11
.
2023
Jarosław Kowalewski
Ruby on Rails
Postgresql
Backend
Ula Sołogub - SQL Injection in Ruby on Rails

The Deadly Sins in RoR security - SQL Injection

14
.
11
.
2023
Urszula Sołogub
Backend
Ruby on Rails
Software
Michal - Highlights from Ruby Unconf 2024

Highlights from Ruby Unconf 2024

14
.
11
.
2023
Michał Łęcicki
Conferences
Visuality
Cezary Kłos - Optimizing Cloud Infrastructure by $40 000 Annually

Optimizing Cloud Infrastructure by $40 000 Annually

14
.
11
.
2023
Cezary Kłos
Backend
Ruby on Rails

Smooth Concurrent Updates with Hotwire Stimulus

14
.
11
.
2023
Michał Łęcicki
Hotwire
Ruby on Rails
Software
Tutorial

Freelancers vs Software house

02
.
10
.
2024
Michał Krochecki
Visuality
Business

Table partitioning in Rails, part 2 - Postgres Stories

14
.
11
.
2023
Jarosław Kowalewski
Backend
Postgresql
Ruby on Rails

N+1 in Ruby on Rails

14
.
11
.
2023
Katarzyna Melon-Markowska
Ruby on Rails
Ruby
Backend

Turbo Streams and current user

29
.
11
.
2023
Mateusz Bilski
Hotwire
Ruby on Rails
Backend
Frontend

Showing progress of background jobs with Turbo

14
.
11
.
2023
Michał Łęcicki
Ruby on Rails
Ruby
Hotwire
Frontend
Backend

Table partitioning in Rails, part 1 - Postgres Stories

14
.
11
.
2023
Jarosław Kowalewski
Postgresql
Backend
Ruby on Rails

Table partitioning types - Postgres Stories

14
.
11
.
2023
Jarosław Kowalewski
Postgresql
Backend

Indexing partitioned table - Postgres Stories

14
.
11
.
2023
Jarosław Kowalewski
Backend
Postgresql
SQL Views in Ruby on Rails

SQL views in Ruby on Rails

14
.
11
.
2023
Jan Grela
Backend
Ruby
Ruby on Rails
Postgresql
Design your bathroom in React

Design your bathroom in React

14
.
11
.
2023
Bartosz Bazański
Frontend
React
Lazy Attributes in Ruby - Krzysztof Wawer

Lazy attributes in Ruby

14
.
11
.
2023
Krzysztof Wawer
Ruby
Software

Exporting CSV files using COPY - Postgres Stories

14
.
11
.
2023
Jarosław Kowalewski
Postgresql
Ruby
Ruby on Rails
Michał Łęcicki - From Celluloid to Concurrent Ruby

From Celluloid to Concurrent Ruby: Practical Examples Of Multithreading Calls

14
.
11
.
2023
Michał Łęcicki
Backend
Ruby
Ruby on Rails
Software