Dropping out of college and becoming an iOS freelancer
It’s been 8 months since I started freelancing full time, so I wanted to write about how was my life before freelancing, what convinced me to become a full time freelancer, how’s my current life as a freelancer and what’s next .
So, as I said on this post, I dropped out of college in the middle of last October and, like almost every dropout says, it was one of the most difficult and best decisions I’ve ever made. It all started because I loved programming and I was part time freelancing, attending a shit ton of hackathons (really, a lot of them) and I saw that I wasn’t going to get the benefit of all the money my parents were investing in college and most importantly, I saw that I could do and learn a lot more by working for these 4 years.
Pros of Freelancing
I fell in love with freelancing because I love that I can work with totally different people and projects, learning a little bit of different stuff and different areas with every single client. In these 10 months I worked with people from different places in US, from a Silicon Valley startup to a single person in Texas, as well as multiple places in Brazil. I worked with people whose age ranges from early 20’s to 50’s, in app ideas that range from taking care of kids and a Food trucks app to an app for a Factory, from senior developers to people who barely know how to install an app. I learned a lot from all that diversity of ideas and technologies and I hope that only grows more in my life as a freelancer.
Cons of Freelancing
1. Finding the clients
Freelancing is great and it perfectly works for me, but there are also some bad things about it. One usual problem I have is to find clients: it usually takes me 1–3 weeks between talking to friends, groups, websites and meetings before a project is closed. That’s a time I won’t get paid and a time I won’t be coding, which is really bad.
Another problem are the clients themselves. The biggest problem I have is when they want to add new functionalities that aren’t on the scope: “Hey, I liked the chat, but you won’t charge me to add video calls and AI, right? Shouldn’t take a long time”.
Before closing the project, I try to analise my client by how much he/she knows about what he/she wants, and if I feel it will be a problem, I charge by the hour instead of doing fixed price. I also make sure I detail the app’s features in the contract and also talk to the client about how I expect to be paid by changes or new functionality.
Current clients and type of freelance work
I’m currently working with 5 projects between 2 clients. Seems strange, right? That’s because one of my clients is a a consulting company called Phurshell. They do solutions for design, backend, mobile and frontend. As their freelancer, I take all their iOS work, which is currently 4 projects.
On a day, I only work with one of their projects because I’m always waiting for their client to approve something, a new backend integration or design for the other projects. Because they have multiple projects, I always have things to do, which is nice. Also because they are the ones in charge of finding clients and closing contracts, I almost always only have to code, which is what I love to do.
I charge them by hour instead of a fixed price because there are multiple projects happening at the same time because I’m always working on different projects.
My second client is a startup, so they have only one project. I charged them a fixed price because they already had the design and backend ready, so it was easy to calculate how long I’d take and charge a fixed price.
I wake up around noon and start reading all emails and messages. Things get really busy since they all woke up earlier than me and started telling me about bugs, payment, NDAs, new phases (will talk about what’s a phase below) and other comments. I start answering them by priority, so someone who’s complaining about a crash or have a meeting with an investor will definitely hear from me before someone who is starting a project with me and is waiting for me to sign the NDA.
Once I answer all of them (again, I only answered them. I didn’t write any code yet), I start coding. Because of all these interruptions, I’m usually not really productive on the day. When is 10pm, shit gets real: I drink my redbull and start coding until 3am, crossing out all my tasks for the day.
I organize all my work in a big whiteboard that is in my office. It is divided by:
• Doing: projects I’m currently coding
• Waiting: projects that I finished but the client didn’t give the OK yet
• Talking: people that I’m talking to that may become my clients
Big squares with really important stuff I gotta do, like if I have a big meeting or an important feature I gotta finish by today or my life will be in danger.
Today: Names of the projects I’m going to work today
How to deal with multiple projects
No client is more important than the other, even if I’m making twice as much money in a project. The main goal is to meet the deadline and getting an “OK” for the phase. I do not erase my project from the whiteboard until the client is happy.
I may take 1 day to finish a phase for a project, but I always give the minimum of a week, promising I may finish it earlier. I’ll probably only start working on that small one on the last 2 days. By doing that I ensure I’ll have time to work on the other projects.
What’s next for me
I don’t plan on taking a full time office job any time soon because I love freelancing. I’m learning so much from it and the freedom is amazing. Thanks to freelancing, I’m gonna travel for 2.5 months as the beginning of me being a Digital Nomad, which I’ll talk about it in a later post.