If you have been in the professional job market for a while, you have probably heard of the SMART acronym when it comes to goals, or the idea that truly smart deadlines are set by someone else. However, as a professional freelancer, these ideas can often prove to be very challenging to follow. While SMART is an excellent idea for a particular goal, many times deadlines consists of multiple goals. When it comes to having someone else set your deadlines, professional freelancers often work alone, and therefore, having someone else set the deadline is an impossibility. So how does a professional freelancer set smart deadlines?
Communicate with The Client
Whether it’s setting the goals, learning about the project, or just coordinating schedules, you should always be in communication with the client. This is so important that it has its own step.
Communicating with the client can help with many things - setting goals and prioritizing them properly, creating / adjusting schedules where everyone is happy, and even things that aren’t covered in this article. Most importantly, communicating with the client is the best way to build / strengthen relationships with those clients. As a professional freelancer, you should set a personal goal of never having the client wonder what’s going on with the project. The absolute best way to do this is to communicate. If you can communicate with the client clearly and freely, all the other steps should come easy.
Have a Specific Overall Goal - Compartmentalize Smaller Goals
Each large goal can be broken down into several smaller goals. For example, let’s say the overall goal is to allow comments and ratings on an e-commerce website. This goal alone is pretty large and can be broken down into smaller goals:
Implement user authentication
Allow users to write a review
Allow users to give a rating (such as a 5 star rating system)
Store review and rating, reference user and item
Get all reviews and ratings from a particular item when that item is viewed
Each of the above goals can be broken down even further, and should be broken down to the point that each goal can be completed easily and quickly. This is where SMART can really help:
Specific- Does the goal relate to a single item, or can it be broken down into smaller goals? (Is it specific?)
Measurable - Can the value be measured? Is this something that is really worth devoting time to in order to complete the goal, or is it “fluff”?
Achievable - Is this an achievable goal? I am sure most developers would love to develop a world in which reality is unicorns and rainbows, but is that really achievable or is it an idea that will take virtually forever to create?
Relevant - Is the goal that you are working on relevant to the overall goal/project? In the above example, we are trying to create a system that allows users to leave reviews on an item. Though some of the sub-goals (such as user authentication) may be used in multiple areas of the overall system, allowing a user to change their password, for example, is not relevant to the overall goal that we are working on.
Time-based - Prioritize your goals by time sensitivity. Fixing an issue where the stars in a star-rating system are not calculated correctly is not as time-sensitive as fixing an issue that allows any user to login as an administrator.
Remember, communication is key and can be very helpful when it comes to breaking the goals down. With effective communication, the client can help you easily set and compartmentalize these goals.
Know the Environment and Language(s)
Knowing the environment and languages can help or hinder your progress in any project and should be considered heavily when creating deadlines. If you are working on a project that has been created in an environment that you are well versed, then the deadlines created can be short and deliberate. However, if this project is in an environment in which you are a novice, you should give yourself more time as you may need to learn a lot about the environment or be caught off guard by aspects of the environment that you had never thought of before.
In addition, each developer has their own style, and this too should also be considered. If you are the primary developer and have built this project from scratch, then it’s safe to assume you know all the ins and outs of the project. On the other hand, if you are being brought on board for a project that has already been developed and just needs some minor changes here and there, you should give yourself time to learn how the project was created and about the nuances of the project.
It’s extremely important to communicate with the client to find out what they consider important. As a developer, you should have a good idea of what the important tasks are, but sometimes a client may consider another task more important, and therefore, prefer priority for this task. If you feel this prioritization is ill-placed, raise your concerns to the client and explain why another task is more important. However, keep in mind that this project belongs to the client, and they, ultimately, have the final say in what takes prioritization.
Overestimate Your Deadlines
When creating deadlines, especially those that are set forth to the client, it’s much better to overestimate your deadline than to underestimate it.
Nobody likes disappointment and missing a deadline is often very disappointing. On the flip side, consistently meeting or beating deadlines often leads to happy clients. Happy clients lead to more jobs, which in turn leads to a happy developer.
Think of your relationship with your client as a marriage, and you should always be looking to make your spouse happy.
It’s because of this idea of disappointment that I always suggest increasing the time you think it will take to complete a goal by one third. For example, if I have considered all the variables for a task and I believe it will take 3 weeks to complete, I will set a deadline for 4 weeks. If I meet this deadline, the client is happy. If I complete it in 3 weeks (my original deadline), then the client is often very happy! However, if I set the deadline for 3 weeks and it does, indeed, take 4 weeks to complete, the client is probably not very happy.
In addition, by giving yourself a little extra time, you are helping to mitigate the unexpected - such as getting sick. Perhaps you ate something that didn’t settle right, or maybe your child became ill and requires more of your attention than usual. No one likes getting sick, but sometimes it can’t be helped, and overestimating your time can give you a little extra wiggle room when it’s most needed.
Don’t Forget Current Scheduling
In the moment, it’s easy to forget about the things that you may have previously scheduled. If a client asks how long it will take to complete a project and you tell them 4 weeks, did you consider everything? It may truly take 4 weeks to complete, but do you have solid 4 week uninterrupted to devote to the project? Does the client work 7 days a week, or are they a standard 5 days? Is a holiday or vacation coming up? These are important things to consider and should not be forgotten when creating deadlines!
Consider Client Timelines
Clients may have strict deadlines to meet as well. For example, a particular client might need to have a complete system built in one month. After learning all about the project and what is being asked of you, you may have determined that it will take at least two months for you to complete the project. This should be relayed to the client immediately. If at anytime, you feel like you cannot complete a project within a timeframe set forth before the start of the project, you should not accept the project. Accepting a project like this can create undo stress for you and the client and often create tense situations that is uncomfortable for everyone involved.
Take It ALL In
Be sure to communicate all of your findings with the client and ensure that both you and the client understand what each of you have in mind. Does your idea of the project match the client’s idea of the project? Is the client happy with your deadline? If not, can you revise your goals in order to make the project?