Often times I see people saying “I lost motivation” as the main cause to them not finishing personal projects. I’m certainly guilty of it too. But maybe to summaries such a complex problem into an easy out seems like a jet out of jail free card. Really, What is the cause of the loss of motivation?
- Did you finish learning what you wanted?
- Was the scope badly defined?
- Did you really create an minimal viable product, or smaller full product?
- Did life just get in the way
Life certainly gets in the way, It’s really hard to finish work, cook dinner, clean the house, then go do more of what you get paid to do in your free time.
But there’s a vast difference between a personal project and a work one. I think it’s something we take for granted a lot of the time. This differentiator to me is a team. A lot of developers like to think they work better alone. and maybe they do, but to me, I find we depend on the skills and expertise of others all the time.
With this, I have come to the conclusion, you really need to be the “mad hatter”. Not in the sense of having tea parties and lots of riddles.But rather in the sense of having a really broad skillset to finish a personal project. Take a moment, pause, and think what do you need to finish one?
Probably what jumped to your mind was something along the lines of :
Frontend developer : Make a pretty UI so people can interact with what you do.
Backend developer : Make the API / Monolith that will perform as much logic to keep the frontend dumb.
In reality though, we need a larger skillset than the above. For the frontend we need UX Designer skills For backend you need to have an architecture that you deploy to and someone to plan how that architecture is. Try think again, what are all the hats you need to wear?
The list I came up with are as follows :
- Systems Architect : Design and Create the high level plan for components.
- DB Admin : Manage the database, have all the schema and ERD skills.
- DevOps / SRE: Fun of pipelines, deployments, and container orchestration
- Backend developer: Writing the application backend logic.
- UX designer : The ability to envision and create user friendly design.
- Frontend developer: Converting the UX wire-frames into a usable and responsive UI.
- QA : Catching all the issues and having the base test cases.
- Technical Writer: Have that documentation of how the endpoints and code work so when you come back in 5 months you know what was going on.
- Manager : Setting your own personal expectations and ensuring you actually release things.
- Finance : Those servers aren’t free. Shop around and ensure you are keeping the costs down.
- Marketing : Ensure you sell yourself to everyone and what you do.
Of course, take all of the above with a bulk of salt, since each project is different. If you’re doing a RUST CLI project, well of course then you don’t need to have a UX designer and a UI Engineer.But as a rule of thumb it’s always important to evaluate what hats are important to wear.
So how to improve!
Know the exact scope of what you’re trying to do. The very minimal amount you’d consider “OK”. Keep a clear vision of the base system architecture. Know what your willing to pay, and for how long. Have your ERD ready of the MVP.
Ensure you’re using the appropriate tools for the job, with that in mind, check if any of the tools you used before have new functionality implemented. If you’re not fully content with something before you start do some training! Youtube has a lot, another place I really like is TeamTreehouse or Linux academy / cloud guru.
Linux (ooft a silly typo I initially made) Unix mindset of write small components that do one thing well.- As soon as you can, deploy that way you can fix it early. “A stitch in time saves nine.“
Don’t be a perfectionist and spend a day working on one method. You may not even use that method in the end. So best to keep the ball rolling and motivation high by avoiding perfectionism.
Remember “Rome wasn’t built in a day” is a proverb for a reason, progress takes time, be easy on yourself and set reasonable but achievable deadlines and expectations.
- Commit to things that have meaning and importance, this meaning and importance allows you to finish.
- Really plan and have everything laid out before you start.
- Finishing in some form, is better than never finishing.
Stealth edit, feel free to connect with me on Linkedin.