One issue that every freelancer comes across at some time or another is managing advanced features. And by advanced features I mean that a client asks you to build functionality that you’ve never built before.
When this happens to you. Notice that I said when and not if? That’s because every freelancer, no matter how experienced, has been asked to build something they’ve never created before.
Through the years I’ve been asked to build a wide range of features. Some of them I had experience with, and others… not so much.
A good example of this was a number of years ago when I was asked to build out a GPS tracking iPhone app. The client wanted to track their employees in the field and allow them to remotely submit tickets. Sounds like a great idea, right? I thought so too. There were just a couple of issues:
Now I would have be mentally insane if I thought I could build an application like they requested by myself. With zero experience and no domain expertise in mobile apps the project would have died before it even started. Therefore, as soon as I signed the contract I searched Upwork for a mobile specialist to help build the application.
I found a great iOS developer and we agreed on a mutally beneficial contract where I would manage the client he would build out the application. This was a foreign concept to me since all of the other projects I worked on were ones where I built out 100% of the functionality. However, if you decide to take on projects that you have limited expertise in, partnering with other developers is a great way to expand into new markets.
The application development process was different than any I had ever experienced before. I was used to working on every component of a client application. However for this application I limited my work to the web API development. This allowed me to work with the mobile dev on a daily basis and after around six months we completed the project.
As a controlling person I found the process challenging on a number of levels. The main issue I ran into was due to feature scheduling. Since the mobile developer was remote, I had to work with his schedule. There were a number of times when this caused issues because I would have an API component completed and I had to wait until he completed a mobile feature. And vise versa.
However, after switching to a Kanban project management board (we discussed Kanban boards in the project management guide) we were able to schedule our tasks in a more organized manner.
To review Kanban boards, remember that they are a project management system where you have a number of columns designated as:
We organized each of our tasks into each of these columns. And from that point we were both able to see what features needed to be worked on. Being able to see the stage for each component allowed us to move forward in a more organized fashion than when we were working independently.
After a number of sleepless nights and few frustrated back and forth emails we finished the project. And not only was the project a success, the application has processed tens of millions of dollars worth of tickets and is still used to this day by one of the world’s largest energy companies.
So when a client asks you to build a feature that you have zero experience with, my advice is to partner with a specialist in that area. The example I gave in this guide was specific to situations where a freelancer has literally no experience building a feature. There have also been times where I was asked to build a feature I had experience with, but I wasn’t comfortable committing to building a production application. In those cases I hired a mentor to answer questions that I had during the development process, and those projects turned out quite well. And they had the added bonus of teaching me how to build advanced features I had limited experience with.
In summary, when it comes to managing advanced features for clients, don’t let your lack of experience stop you from getting jobs. As a freelancer you have access to a nearly limitless supply of resources to help you build any project.
Before you go out and take on a dozen jobs that you have no clue how to build, let me add a word of caution. I have seen freelancers and even large software development agencies take the approach of believing that they can simply hire outsourcers to do all of their work for them. This approach will fail every time. In order to work with outside contractors you need to work with them daily. Did you notice how one of the prerequisites to the mobile application I worked on in this guide was that I had a clear communication channel with the mobile developer?
If I would have simply sent him a list of requirements and waited for the finished product the project would have failed miserably. Working with contractors is typically just as time consuming as writing the code yourself. So don’t think that outside contractors are a magic bullet that will do all of your work for you.
I've been a software engineer for the past decade and have traveled the world building applications and training individuals on a wide variety of topics.