Pro-tips after 5 years of freelancing
Hey there, I'm Diego and I am a freelance software developer with some experience to share. Here are some of the key points I'd like to give away:
Disclaimer: These are very general concepts that apply to many levels, from the actual coding to designing your system's architecture, to talking with your client (and also getting customers). Try to absorb as much as possible first assuming all applies to all and opening your mind to everything, let everything in as if we were in a philosophy class, after that start to question everything and put it to the test, feel free to comment.
So, here's the first one without any more introduction:
Nothing has a single explanation, at the expert level, everything is a mix of skills, abilities and knowledge
This means that at a certain level nothing will be explained by a single simple answer, while the truth is mostly simple and straightforward this does not mean that to get there you will not have to understand a lot more. Even when you think you have the right answer leave your body and mind open to new interpretations and concepts. Relativity is real and more in software development.
See the big picture
Every now and then, put everything in perspective, see the big picture, and then see an even bigger picture, losing your ego along this journey will be a challenge, you will notice you are nothing but a ridiculously small particle in the universe, so don't take yourself too serious but do schedule times when you do take yourself extremely seriously or at least the work you produce, at the end simply remind yourself that you are, well, very small. This applies at all levels, even the works of Einstein, Elon Musk, Napoleon, will be wiped out by something called time.
Don't appear too perfect, strike with your best
Even if you are very good at something, let your actions come first, don't win your battles through arguments but rather through your actions. An important thing to keep in mind here is that you should be ready and actually very excited about entering into the battlefield. Go and take pride of your skills and show them even when is hard to do it.
Chose your battles, don't work for anyone, rather be selective and lead with the initiative
There will be times when a client is simply a bad client, even with a pretty high budget, a client might not fit well if they don't feel to you like so (if you are working hard and being transparent). There are specific things that make a client a bad client, but we will not cover that here, generally we all know when a client is bad. A lot of times bad clients are just ignorant people with money and they also do what they do for money there is no much more motivation behind.
Don't let this happen, plan an exit if you are not in the best position, or be bold and exit without hesitation, focus your energy where it will give fruits.
Don't interchange confirmation with compromise, win space early
This one is very simple, don't confirm a deadline just to please the project manager of even your client, if you are unsure, educate the customer, explain what is in front of you and why you can't provide an exact deadline. This is very important as it will help you relief stress from projects.
A very important tip here is to win time early in the game, try to put very and I mean very achievable milestones and deadlines. Can't stress this enough. If a project is big enough, go ahead and put some very generous deadlines as much as possible. Then deliver early and everyone will be super happy.
Enjoy your job
Go have a good time, is very important to have fun while working on a project, be happy to give your best. A common quality among the best professionals is that they enjoy it.
I hope this is useful for someone out there. I might delete later :)