Updated: Mar 5, 2020
New projects can be overwhelming, presenting insurmountable obstacles that have the potential to destroy your hopes. However, look closer and visualize the smaller much more manageable components that together make up the project. Each individual component doesn't seem so daunting. When you look at a mountain, its staggering size leaves you awed. But if you see just a pile of rocks in front of you, you can easily chip away a single stone at a time. If you divide your “tough” project into little pieces where each piece represents a single feature set as the main goal, you and your team can work on them individually and, as a team, tackle the entire project effectively.
Let’s take an example of an eCommerce application, where customers can browse a set of products, add them to their shopping cart, register as a customer, purchase their items and have those items shipped to them. On the surface you may think OK this isn't rocket science, I can do this. Then you take a few moments to go through the details.
Users should be able to Search and not just browse the products. That means I need metadata on each product. That means I need a search engine to be able to search through these products.
Who is managing the list of products available?
What happens if we discontinue a product?
Now that I think about it—what about inventory levels? How do I know when to stop selling an item if we are out? Who replenishes our inventory?
Payment? I can’t charge customers until I ship the product. So I need to authorize their credit card and place their funds on hold. At shipping, I actually charge the credit card
Do users need to input their credit card every time? If not then my product needs to be PCI compliant to be in good standing with the credit card companies.
And on and on and on.
Not even 10 minutes into your project and you are already in cold sweats and a panic mode. Take a deep breath. Let your brain slow down. With all those ideas and edge cases racing in your mind, everything becomes a blur.
Now that you have settled down let's break up the project into its major components:
Now let's take one component, let’s say Product management. Now, let's break that up into its components:
We need to be able to Add, Edit and Delete Products in the system.
We need a search engine for these products.
We need to keep track of inventory levels in the system.
Let’s now break down adding products to the system.
We need to keep track of the products Category, Name, Description, Price, and Availability
We need to be able to find and access the product if I need to Edit/Delete it
Are you starting to see how these smaller components are getting even smaller? And how this mountain is just a large pile of rocks that individually are easily managed.