The single most important thing in your freelance or software development business (Part 1)
About
I'm starting doing freelancing work since 2017. The first time I did it, I worked for about 2 years (including an internship in the same place), at that time there are no expectations, there's no plan to build my own business, I just learn things and make money by doing so. However, since 2019 I really interested in the concept of running a business. I worked really hard to make my freelance business a real business for the past 1 year and I want to share one of the most important things I wish I knew before.
After rejecting an overseas work opportunity which was a ticket to work in the most competitive place in Asia, Hong Kong, somehow, I got accepted as a mentor in this place called Codementor. Since then I already done hundreds of sessions with almost a hundred of clients. Here are the 4 most important things you must aware when doing freelancing or starting your first software firm.
The Secret
Freelance Software Development is differ from mentoring
I started my freelance business by doing mentoring. It was dope, the first time I accepted as an expert mentor here I want to do it again and again and again. Not only because the pay is good, I really love teaching, understanding other people's problems, and help them fix them. I really like the process. I remember I still wake up at 2 AM mentoring people and it feels good.
After a few months of mentoring people, I started accepting projects from my clients and start hiring associates that can help me do the job. It was great, I finished several successful projects with this model from Retail Price Drop App, AR Delivery app, and a few other simple apps. I started to believe that I can get more clients. Truth is I wasn't ready.
Although it is obvious, I wasn't aware about the different between freelance work and mentoring which later leads me to some failed projects.
- In mentoring, we paid by the time we spent with a client. If they're happy, they pay, and the end of the story. The client gets the value immediately. However, in a software project, the client gets the value if the project is finished and the software output is excellent. There's a hidden cost in maintaining client happiness. The client sees the value not only in the delivery of the project but in the support and communication. Remember, the software always fails, if not now, maybe later.The support and communication part can be tricky if you are the one who manages the task and also doing it. You are both the account manager, project manager, and developer.
- In mentoring, we help people troubleshoot, find solutions and they will be the ones who do it. However, in freelance or project work we are the ones who find the solution and implement it. This will be troublesome if you do it alone or you don't have a team that is as highly trained as you are. Remember switching between projects requires lots of context switching, it is a thing that you want to avoid when you are alone.
- Communication in mentoring is discrete, communication in a project is continuous. In mentoring, you can stop discussing when the session ends, but in the software projects, there are hidden expectations of continuous support, people expect good customer service (CS) and if you're alone, you'll be doing the CS stuff yourself.
- In mentoring, you don't need to subscribe to the client's way of thinking. There's no scrum in mentoring, you just need to listen to the problem and give advice. However, in a software project, the client might be wanting you, not only your project. They might want you to join the Scrum meeting, meeting this, and meeting that. That's a lot of work to do.
It seems that I antagonizing the software project a lot, the reason why I do this because I realized that I wasn't very good at switching between projects if I need to do the implementation detail. The reason is I'm a high-level person, I excel at switching context at a higher level, but switching context between higher level and lower level stuff is just too much. I'm rambling here, but the idea is to know yourself and picks sides, pick options that are better for you. If you love making things working and not only one thing but multiple things, cool, it's good for you. But, if you started todo both higher (idea) and lower level (implementation) thinking, please be prepare.
I have a failed project because of this reason. I should stick with the strategy and hire people to implement, not doing both.
(to be continued)