Hello everyone! 👋 I hope everyone's Monday went well!
In my last post, I outlined a little bit on short term goals for the next little while. Here's what I outlined:
- Website Styling 💅
- Optimizing my apps 🏃♂️
- Planning and completing projects 📑✅
At the end of the post I mentioned how in order to accomplish these goals I need to iterate a little more on what I intend to accomplish, as setting these arbitrary goals with no concrete actions to do will only lead to the goals flying away 🛫
I have committed to doing 4 different projects, each of which I feel will accent a specific part of what I want to work of:
- React UI Component Library
- Project Organizer (Likely using similar concepts to this blogpost)
- Instructional Coffee Site
- Portfolio Page
(Granted, these may change in favor of different projects)
Obviously, I'm keeping all these vague here, as I'm going to dedicate a post to each of them as I plan out how I want them to work, what technologies I want to use, how I want to organize them, the timeline and deadlines I give myself, the goals of the project, what I need to learn to accomplish them, and...
As you can see, there's a lot of planning to do for each project. And each one is going to have it's own bevy of postings, but we need a place to start.
Let's create an easy to follow plan that can help us be more concise on our vision for each of these projects.
This isn't going to go into the step by steps of planning the projects technical details, per say, but rather setting up a base plan and vision to go off of throughout the development lifetime of a project, which will create an easier to follow and more focused development experience.
I've decided to structure these in the Who, What, When, Where, Why, and How, much like what we all learned back in elementary school 🏫
Here we go!
One thing that I've always found when making any of my projects, is that I don't have a focused objective. However, I think this leads to taking longer on each project, and having a higher likelihood of not finishing a project to its end.
A goal of a project should remain simple and concise. For instance, my goal for my UI Library is to learn how to style my websites better. There will be sub-goals underneath this, but in the end, what matters to me most is to create something that will put into practice my styling skills and lead to faster development time in the future for myself.
This step may include some market research, looking at apps that are similar to your creation, and perhaps creating some diagrams to really get to the core of what you're developing.
By defining who our target audience for our project is, we can understand more on the true purpose of a project. Are we making something for our own usage? Great! We can tailor our development to that. Are we intending to release this product to a broader audience? We'll likely have to focus on making a better user experience and creating documentation, and maybe even interviewing a potential user on what they'd like to see.
This step isn't to be skipped, as if we're undirected in this step, we may end up taking too much time focusing on things that don't matter, or we may end up realizing that we should've spent more time upfront creating a better experience for our target audience.
It's really easy to get carried away with adding more and more features to a project without actually accomplishing the main task at hand. For instance, say you're making a YouTube clone. The core feature of this app is a video player! Nothing else matters if I can't watch a video.
However, if you spend too much time coding how to recommend new videos to users, you'll never have something that you can ship out to the world.
By understanding what is the minimum amount required for a project, it allows you to stay focused, and guides you to at least completing something to show off, rather than having yet another project sit in development purgatory.
We've all been there. We're excited to start working on a project, so we use Create React App to get the boilerplate going, but then we decide we want to use NEXT, so we delete our previous project, start the NEXT project, realize we actually don't want to use NEXT but rather use Gatsby, so we delete that, start Gatsby, and suddenly we're in a loop of indecision, and we spend so much valuable dev time deciding on how we want to start developing!
I know for myself, if I have a defined list of technologies, APIs, and services that I intend to use for a project, it becomes infinitely easier to stay focused on my code editor and the projects objectives.
Obviously, we may not know everything that we need for a project right at the start, but we should intend to know as much as possible before we springboard ourselves into coding. Asking simple questions such as How am I going to style this? or Where am I going to host this? allow us to make progress on our project much quicker rather than answering those questions when they come up during development.
Setting deadlines for ourselves when working on a project is stressful, trust me, I get it. We tend to doubt our abilities, or on the contrary, sometimes we even overestimate what we can accomplish. This leads to giving up, getting lazy, and not achieving what we set out to do.
However, despite the fact that deadlines do bring stress into the equation, I think this is less of a detriment, but rather, more of a benefit.
By giving ourselves a deadline for a project, it forces us to focus on the previously mentioned main feature of the project, rather than getting sidetracked. If we're realistic when setting our deadlines (which does take practice!) then it will force us to stay focused on our main goal.
While this post may seem simple in nature, I personally believe that taking these steps will lead to better development processes and experiences.
By retaining our focus on what our project is, rather than what it is not, our productivity will rise, and we will be able to focus on what really makes our project important to us in the first place, without getting caught up in making small insignificant features which, realistically, don't even matter until we've actually created something!
So, to reiterate:
- What's the objective/goal of the project (The Why) 🥅
- Who am I making this for? (The Who) 👨👩👧👦
- What's the core feature of the project? (The What) ✨
- What technologies am I going to use? (The How, The Where) ⚙
- What is my deadline? (The When) 📅
I hope this post was helpful! And I'd love to hear your thoughts on what your process is when starting a new project, or if you'd edit anything that I have on mine.
Best of luck, and keep on coding! 👩💻