Hiring in a fully-remote software company
While we are a fully remote company since the beginning, forming a well-functioning remote team isn't easy. I made a ton of mistakes.
If possible, we should avoid making mistakes hiring. Letting someone go is a stressful experience for both that person and me. It's also a tremendous waste of time and money, and demoralizing factor for the whole team.
Do not hire inexperienced people while the team is still very small.
Person still learning needs guidance. It's very likely you can't afford to invest a lot of time to teach, and a junior will feel inadequate and fail to deliver.
Small teams are always busy. Team members wear many hats. There are fires to put out on a daily basis. Can you really invest time to train the new hire with no experience?
Hire someone with experience working remotely.
Not everyone can handle working alone at home for years. Make sure your new hire can do it and thrives in a remote environment.
Hire self-starters.
One of my developers expected me to give him detailed instructions for every task, train him extensively, check his work. I was absolutely miserable and thought I am a terrible manager. Some time later I hired another developer who was effective from day one and all code and high-level tasks were self-evident to him.
If you are miserable in a company you own, you need to change things right away. In this case, the first developer was moved to a role which fits him better than full-time development work. I should have done that years earlier and save both of us a lot of frustration.
Hire people you like.
I made a mistake of hiring a person who was obviously a capable developer, but I didn't like him much. I thought all that matters is that someone does the work - we are all professionals, right?! It turned out that a complicated person is a strain on the whole team. It's possible to help someone grow into a role, but you shouldn't tolerate team members.
Work with people you love working with.