I've been a freelancer doing programming for companies around the world since 2010, and I absolutely love it. Personally, I love it even more than working on products.
For those who don't know, a freelancer is someone who is self-employed and makes a living by doing short-term contract work for clients. Independent contractor would be a fancier phrase for freelancer, as some might've heard before. Freelancing is a very common occurrence in creative industries such as programming, design, photography, and writing.
There are several benefits to freelance work over traditional employments. Those include: freedom of time, freedom of location, and freedom of creativity.
Freedom of Time
The best thing about being a freelancer is that you can set your own schedule. You don't have a boss telling you that you need to work in certain hours. You have the ability to choose when you want to work with clients.
For me personally, this is extremely helpful because I can work on my freelance programming projects after school, or during the weekends. As long as I get the job done on time and deliver high-quality work, my client doesn't care when I complete the work. In fact, I'm most productive late into the night after 12AM or early in the morning before 8AM, but with a traditional job, the chance of utilizing that boost of productivity and creativity is nearly impossible. However, with a freelance job, it's all under your control. I also don't need to stay in an office for 8 hours straight; that would be unbearable for me. The longest I can work in periods is 2 hours, and then I have to switch to other activities for a while before getting back to work again.
Freedom of Location
Another upside of most freelance work is the freedom to choose where you work. This mostly applies to jobs that involve computers. With a portable laptop, you can essentially do your work anywhere, including coffee shops, co-working spaces, your backyard, your couch, or even on the beach. You might argue that photographers or wedding organizers don't have this freedom and that's true, but going out for a shoot or attending a wedding are't the only duties they have. Photographers also edit and send photos. Wedding organizers also plan weddings by coordinating between people via email and phone calls. Both of these activities can be done virtually anywhere with an internet connection and cell phone reception.
You will often see me at Starbucks after school or in the library during weekends getting my work done. I'm just more productive at places outside of home because of all the possible distractions in my house, such as the bed, the TV, etc.
Freedom of Creativity
Lastly, most freelance jobs require great deal of creativity, and that's what I love about it. I have the freedom to design a project to fit the needs of my clients. I have the freedom to write code in my style as long as it works. Doing this sort of work really increases my personal satisfaction.
Time management and project management are two essential skills every freelancer has to master. As a freelancer, you have to be really good at managing yourself. If you need a boss to constantly look after you to do your work, this might not fit you well. You need to know all the necessary items you have to complete to get the job done. You also need to know when you need to get them done by. Without the time management and project management skills, freelancing can be extraordinarily difficult.
Over the past 3 years of doing freelance programming, I have gotten a lot better at self-organization. From experience, I can anticipate how long certain things will take and when will be the best time to do them. I can also divide a project into separate stages with an accomplishable goal at the end of each, so I have a great deal of motivation to get these smaller tasks completed.
You Can Do It Too!
If you have a specialized skill that has a demand in the market, like photography, design, or programming, I recommend that you get into the freelance world and give it a shot. You won't regret it.