Dropping out of college and becoming an iOS freelancer

How my life was before freelancing, what convinced me to become a full-time freelancer, how my current life is as a freelancer and what is next.

Lucas Farah
lucasfarah
6 min readSep 14, 2017

--

Leaving College

So, as I said on this post, I dropped out of college in the middle of last October. Like almost every drop out says, it was one of the most difficult and best decisions I’ve ever made. It all started because I loved programming. I was part time freelancing, attending a shit ton of hackathons. I realized I wasn’t going to benefit from all the money my parents were investing in a college degree. 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. I enjoy working with totally different people and projects, learning a lot from unique areas with every single client. In these 10 months, I worked with companies from several sizes and places ranging from Silicon Valley, Texas, and even Brazil.

People whose age ranges from early 20’s to 50’s, in app ideas that range from taking care of kids, Food trucks; to an app for a construction factory. I collaborated with senior developers possessing years of experience and expertise, to ones who barely know how to install an app.

I learned a lot from all that diversity of ideas and technologies. I hope that I continue meeting clients with areas of expertise I am not familiar with, from which I can learn and improve as a developer, and as a person.

Cons of Freelancing

1. Finding the clients

Freelancing is great and it works for me but there are also some downsides. One usual challenge I have is to find clients. On average, it takes me 1–3 weeks between connecting with friends and approaching groups and websites. Following my correspondence with these groups, there are many meetings before a project phase is agreed on — That’s time I won’t get paid and time I won’t be productive coding. While this is a necessary step in the process to secure a project, my favorite part is definitely getting into the grit and satisfying hours that lead to a finished product for the client.

2. Clients

Another common hurdle is the clients themselves. The most frustrating part of dealing with clients is when they want to add new functionalities that aren’t in the scope of the original project. I usually hear something like “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 analyze my client by how much he/she knows what he/she wants. If I feel they will need more hand holding throughout the process, I charge by the hour instead of doing a fixed price to avoid selling myself short on a time-intensive job. I’m also careful when closing the contract: first, I make sure I detail the app’s features in the contract. Then, I talk to them about how I expect to be paid by changes or new functionality so that they are not surprised by pricing for unexpected eventualities that could extend the time to completion.

Current clients and type of freelance work

Currently, I am working with 5 projects between 2 clients. Seems strange, right? That’s because one of my clients is a consulting company called Phurshell. They do solutions for design, backend, mobile, and frontend. As a freelancer, I take all their iOS work, which is currently 4 projects.

On a normal day, I usually work with one of Phurshell’s projects because I’m constantly waiting for the client to approve small changes or provide us with a new backend integration or design. Because Phurshell has multiple projects, I’m never out of tasks, which is nice. Additionally, since they are the ones in charge of finding clients and closing contracts for me, this let’s me spend all my time on coding (without all the hassle) which is what I love to do.

Typically, I charge them by the hour instead of a fixed price because there are multiple projects happening and many of these are long term so I wouldn’t get paid until the completion date. This gives me consistent income on projects that have long term end dates.

My second client is a startup and they only have 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 it would take and charge a fixed price.

Schedule

I wake up around noon and start catching up on all my emails and messages. Things get busy since most of my clients wake up earlier than me and start talking to me about bugs, invoices, signing non-disclosure agreements, new phases of the project, etc.

First, I respond to all the clients I can give quick responses to so I can cross them off my workload for the day and focus my attention on the work that will take more time. From there I start prioritizing clients by immediate need. Some clients have meetings with investors (or even their own clients) that need my input before they sit down with them. In fact, I’ve even fixed bugs hours before these meetings, saving them (and myself in some cases 😂).

Once I answer all of them, I start coding. While all this time with the clients is necessary, I’m always excited when this part of the day is over as I can finally spend time on coding without any interruptions. By 10 pm, shit gets real: I drink my Redbull and start coding, crossing out as many tasks as I can until I pass out.

Organization

I organize all my work in a big whiteboard that is in my office. It is divided by:

Left

• 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

Center

Big squares with really important stuff I gotta do, like if I have a big meeting or an important feature I have to finish by the end of the day or my life will be in danger.

Right

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 one day to finish a phase for a project, but I always give at least a week, promising I may finish it earlier. This way I manage the clients expectations of how long it will take while simultaneously giving myself some leeway in case of emergencies. This also compensates for any setbacks that could happen so I’m not overextending myself or not completing my assignments for them on time.

What’s next for me

I don’t plan on taking a full-time office job anytime soon (as you already know, I love freelancing). I’m learning so much from it and the freedom is amazing.

Thanks to freelancing, I’m going to travel for two and a half months. It is going to be a trial version to see if I like being a digital nomad, which I will discuss more about it in a later post.

Big thanks to Lisa Dziuba, Khoa Pham and Bryan Billigmeier for helping me out!

--

--

Lucas Farah
lucasfarah

20. iOS/Swift developer. College dropout, freelancer, open source developer