The attitude of a freelancer
Okay let’s face it. Most developers are stubborn. I know I am. I am stubborn at home, when I have a discussion with my children for example, but also when I work. This is not a good quality for developers. Especially freelancers, which are the people that should be able to adapt so that they can contribute to any piece of software in any system. Still, I became a freelancer. Becoming a freelancer freed me a little of my stubbornness.
The one framework solution
As a developer, your job is to find a solution for a problem. If you work for a boss, perhaps you know the following situation:
Manager/boss/project lead X enters your room, comes to your desk and says: “Hey, we have to build this website for our client that does this and that. I will send you an e-mail with the specs, can you make an estimation how long this will take you to build?” You nod, X leaves and there you are, your mind already calculating how much time it will cost to build this in your favourite framework/cms you always use. After reading the specs, you jump to excel, divvy up the parts that you have to build, put your finger in the air and estimate the hours needed to build it. After two weeks, when the client has agreed, you start building. You grab your old projects, copy and paste some stuff, change it a bit and voilà, you’re done.
For most clients this works. The project is delivered, there are some issues and the client requests some minor changes, but after a month or so the work on the project stops. Yes, the project was delivered quickly, and yes, it didn’t cost too much. Period.
But then there is one client that keeps coming back. Add this, add that and as soon as you know it the project has become a beast. You find yourself bending the functionality of your favourite cms/framework to get the job done. The amount of bugs rise and every bug is harder to solve, and the fix will probably break something else. Perhaps you knew when you started that it wasn’t really the most optimal solution for the problem the client had, but you chose it because you were familiar with it.
Adapt and thrive
After a few years of working like this, your mind doesn’t even think about other solutions anymore. And that’s bad if you want to be a freelancer. Almost every organisation uses different frameworks and methods of developing in those frameworks. From WordPress to Symfony, from test driven to I don’t care how, just get the job done quickly. Some use svn, some use git, some only have a shared folder with all the code. And it is your job to create something out of this. Your job to adapt, to create something on top of that piece of cra(p/ft)manship another developer before you made. It is your job get to know this unknown system and improve and expand it, whether you like it or not. It will most likely not be your favourite framework/cms, and even if it is, chances are that other developers made choices you don’t like. If the choices they made are bad, you will have to raise your voice, but if it a matter of personal taste, you will have to let go. If you cannot deal with this, you will not thrive as a freelance developer, but if you can adapt, you will learn a great deal.
Keep learning is the key
This story is a little bit my story. During my education, I explored and created a lot of (bad) stuff. But still, I was exploring, searching. I started working in a small company with some friends, developed some stuff in a system of one the other developers, tried to improve it and build websites and applications with it. Because of the lack of projects, we had to take on some freelance jobs, so I started to do some freelancing. I learned Zend Framework 1, had to work with ExtJS, but still, I learned. This was a great time for improving my skills. Then, I quit the company and looked for a permanent job. My wife and I wanted to buy a house and needed some steady income. The company I started working for used a lot of different systems and frameworks, so there was still a lot to learn. One of those systems was the Silverstripe CMS. I got used to it and soon it became my favourite tool to build stuff. The longer I worked with it, the more my mind began to shove the other frameworks and systems of the table. Whenever a project arose, my answer was: Silverstripe. I think I stopped learning more and more during that period. Whenever a colleague would talk about some new hip system they were trying, my mind was automatically redirecting their story, or part of it, to /dev/null. Besides that, I grew more and more dissatisfied with my work. I had some side projects, working on games, and I wanted to do more with that. So I decided to quit, find a freelance job so there would be time to work on these side projects. In my first week on the freelance job, I knew I had to change. They used Zend Framework 2 and were a big fan of test driven development. I did know Zend Framework 2, but not every detail about it. So I had to dive into all the things they used, started learning again and lived happily ever after.
Your mind is a pitfall
If you do not pay attention, your mind will automatically choose easy and known paths. I think that is how the brain works, perhaps a neurologist can tell the details about it. We are creatures of habit, we default to things we know. We choose based on previous choices. The world of software development constantly changes, there will be new frameworks and tools every year. If you do not explore those, you will use the same things over and over.
If you are stubborn, like me, it is even easier to keep doing the same things. There is a way out of this, ditch the arrogant attitude and be open for new stuff. Unfortunately, it is also easy to slip back into this behaviour. It has everything to do with attitude. If you find yourself redirecting stuff other people say to the garbage can, know that you are on a path to narrow mindedness.