Dreams are goals without a due date
We have all heard some variation of this quote at some point in our lives. I believe that there is real merit in these words. I also believe that there is more that could be said to elaborate and expand to the tech field.
Why set goals and due dates?
Something shifts in your mindset when you assign the first set of goals and due dates for a project. Until this point, your project may have been just a silly little side gig that you did in your spare time. Once you take that step to setting a due date, the project becomes official. This doesn’t mean that the entire project has to be planned and assigned dates, just that you set expectations.
All we need is to take things one step at a time by setting realistic goals and due dates.
Breaking things down
Some questions to ask before you start planning things out:
- What is the end goal?
- What pieces need to be in place?
- What is the smallest thing I can work on now?
- What is a reasonable timeline for this?
It is okay not to know how everything will fit or look at the end. The project morphs and shifts as we develop it. Its just how it goes. But, at the bare minimum, you have a rough idea of what needs to be done. The specifics will come as you do research and plan.
This step starts out with taking the smallest step possible, to build up confidence and momentum. Some of the first steps I do in my projects are:
- Set up project directory
- Set up Gitlab repo
- Configure build processes(Grunt/Gulp/etc) if needed.
- Configure app/server/routes, I build a lot of node apps.
- Start a Trello board for quick brainstorming.
That is an exhaustive list to start out with, even before we get to anything of real merit. Fortunately, I created a boilerplate that handles most of it. This allows me to use that momentum and start to plan the next few parts.
Some of the next few parts(using a project I am working on for example):
- Add reset password integration
- Add OAuth support for Google/Facebook
- Add image upload support
- Setup nodemailer
So, start small and keep it simple. You do not have to write a huge custom solution in one day, you can build parts and pieces of it as you go. The goal is not to get overwhelmed while staying productive.
Making measurable goals is the most important takeaway from this. I make sure every goal can be tracked visually so I do not get discouraged or burnt out.
There are two things I use:
Once I have a good release point planned out in trello, I set up a Gitlab milestone and start tracking there. GitLab Milestones let me set a milestone(goal) with a due date. Here, I can create Issues, in our case features/trello cards, assign them to people and visually track and collaborate on the milestone.
But none of this matters until you set a due date. Adding a time constraint focuses your vision and project. You set your sights on a goal, an obtainable goal, and made a commitment. That’s a big deal because due dates are one of the key factors in measuring progress and you are taking yourself seriously.
Select due dates that make sense
I try to stick to enough work to last a week, comfortably. If people are on vacation or busy with other things I may push back the date another week. It’s very reasonable to stick to a weekly/bi-weekly milestone pace. Keeping such a quick turnaround will keep work fresh and keep that momentum going.
So all in all, starting small and setting reasonable goals and due dates, are the keys to success when developing. The end goal is not important right now. What is important, is that you are taking your project and yourself seriously enough to commit to it. The more you do it the easier it gets.