Freelance vs employment as a software engineer
Let’s talk about striking out on your own and being a freelancer as a software engineer versus being an employee.
Before I get into it, I should preface by saying that I personally started out as a freelancer and running my own business. The first projects I did outside of school were freelance projects for smaller companies and agencies in town, and eventually I scaled that to a business and started another business with a friend. That’s where I got started, and after that I eventually started working for a company as a senior consultant, and the rest is history.
Let’s talk about striking out on your own and being a freelancer as a software engineer versus being an employee.
So, first of all, let’s go into working in a company as a software engineer. There are a few great things that you will learn through being an employee.
Benefits of being an employee
Working in a team
This is of course a big one. If you want to build something great, you will need people. Yes, you can do a lot of things on your own. But you can never reach the same size and impact on your own as you would with a team of really great people.
And with that, you gotta learn how to collaborate, how to help each other out when you are struggling, how to use each others strengths to solve problems and give constructive and healthy feedback.
All of that is crucial to be able to work as a functional and performant team.
Work structure and tasks
The next big thing you will be able to learn is structuring your work and splitting it up into smaller tasks.
This was something I really didn’t like at the start when I ran my own business, and I really only started enjoying when I started working as a consultant and became part of a team. Being able to break down a goal or a requirement from a client into chunks of work, and then breaking those chunks down into tasks that are easily understandable and achievable. This not only makes it easy for you, and your team, to know what to do and how to do it. But it also makes it really easy for your client and your boss to see progress and understand what you are doing.
Code structure and version control
The next thing is probably the biggest one, code structure and version control. This was really something I did NOT follow religiously when I was on my own, most importantly version control. I was always very pedantic, and still am, about code and file structure, all though it has become better and simpler over the years.
But version controlling you code and building features or changes through branching in git, can truly help your workflow. Most importantly, it’s a lot easier to track changes and revert bugs or errors when the small things you do get commit:ed and structured in branches. And this is unavoidable if you are working in a team where you all work on the same code base. And chances are that you will work in a team even as you strike out on your own, but as a single consultant or freelancer.
Adapting to existing structure and preferences
The next thing you will have to learn is to adapt to the existing structure and preferences that have been established. It can be everything from how they choose to structure their code, to the technology choices they’ve made and the libraries they use.
When you come in as a consultant as part of a team, and you take ownership of a codebase, or build a new project into their existing stack and eco system, you will have to consider what already exists. Of course this depends on the project requirements and what you are told by your client. You might be given free reign on whatever technology you feel is right for the project. But an important part in building projects for clients, especially when they have an internal IT department of developers, is to try to make it as easy as possible for their internal team to be able to maintain and own the project you build for them.
That’s where delivery is usually different from when you are a freelancer or individual consultant. Usually, when you are on your own, you just deliver a project with good documentation of how to run and maintain it. And of course the better you adapt it to their existing setup and task, the better the result, and the more value you provide.
But as a team, coming in as consultants at a larger company, you are expected to deliver that level of value.
Connecting business value with IT solutions
The final point on what you can learn as an employee, is connecting the business value with the solutions you build.
When you are part of a team, and you have some form of lead, whether that be a scrum master, product owner, project manager or the like, you will be briefed of the features you are expected to build. Those features are connected to a value that the business wants to provide to it’s users and or customers. It might not be obvious at the outset, but by simply asking and trying to understand what and why you are building you are building, you get that insight.
So you learn that everything that you do as a team, is not for fun, for your own career’s benefit, but actually for the business that you work for.
Summary (Employee)
So in summary, the benefits of going on to working as an employee are:
- Learning to work in a team through collaboration and learning to both take and give healthy and constructive feedback.
- How to structure your work by breaking it down into smaller tasks and tracking it over time
- How to structure your code and use version control to better manage changes and features
- Adapting to existing structure and tech stack
- Connecting the business value to your working tasks
Benefits of freelance and or your own business
You can work on the things you want
The biggest benefit is a bit of a double edged sword, because it’s not definitive thing, and that’s working on the things you want. Usually, at the beginning, you will have to work on less fun projects to build a portfolio and reputation for yourself, in order to get to do the fun projects. But that doesn’t necessarily have to be true. My first freelance project was a lot of fun at the time, and I did a ton of really fun projects for the majority of my time as a freelancer.
But as you get more and more clients, you will definitely get to pick the ones that are most fun, or that challenge you more or simply earn you more. Which brings me to the next benefit.
You can earn a lot more
As a freelancer you can definitely earn a lot more than as an employee. The rate you set is really based on the quality of your work and the clients you manage to land. And as you work on your own, your salary won’t depend on any politics of salary levels nor are you limited by the amount of work can do. When you do your own thing, you adapt your level of work to what you want and are capable of doing.
Personally, I would work in big batches, working on multiple projects, and then tone it down to a single or no projects at all for a short period, and then scale back up. I always earned a lot from working on multiple projects, and could live off of that while not working on anything.
Also, as a business, you can choose how much you take out as a salary. And this is where you can be really smart with your money and how you choose to manage it in your company. There are a lot of things that you can learn that can benefit you long term in terms of dividends, investments and pension.
You can much more easily connect with people world wide.
This is a big one for me. As I’ve worked as an employee now for close to 6 years, so half of my “career”, I have never been able to work internationally as much as when I ran my own business.
Being able to collaborate with agencies and companies that have clients all over the world, and through word of mouth sign with new clients from a new country, was the most exiting and inspiring part of running my own business.
You have more control over your time
And the last one is of course that you have a lot more control over your own time. You get to plan your own days of when to work, and when to do other things. This is what allowed me to read so many books, travel and meet new people and also put in extra hours whenever I felt like it.
This of course requires more discipline and structure to your work to be able to deliver on time while not causing an unmanageable amounts of stress. But as long as you can create a structure to your work, then this is a huge benefit.
Summary (Freelancer)
So, in summary, the benefits of being a freelancer are
- You get more say in the work you do and the projects you take on
- You can earn a lot more and manage the money you earn as you want
- You can get international experience much easier through clients and collaborations with other agencies and businesses
- And finally, you have a lot more control over your own time
Summary
So to sort of summarise it all, the benefit of working for a company as an employee is that you can focus a lot more on processes and on the code. You get to learn more about working in teams and create small but very specific solutions for your company or client as a consultant.
And as a freelancer or individual consultant, you benefit through the freedom of choosing your projects and controlling your own time, having more possibilities to work internationally and earning more for your time.
So what should you choose? As you can probably make out for yourself, it really comes down to what your goals are and or what is most important to you.
Could your current life situation take the risk of freelance or running your own business, where you want that extra money and freedom to control your own time? Maybe it’s always been your dream to run your own business?
Or are you looking to become a really great software engineer? Maybe you lack experience working in a team? You might feel like you have a gap in your skillset of delivering full size software products and maintaining them?
For me, I chose to run my own business at the start of my 20s because I had close to no living expenses, and had dreamt about running my own thing for a long time. And at the time, I was fed up with people telling what to do and how to do it. Turns out, you actually have to sometimes listen to people as well, but I got to learn that as well even though I built my own business.