After publishing one of the previous articles Working with Git and different projects – repository I understood that I use “projects” and “products” in a way, that might not be very clear for a stranger. I spoke at a WordPress meetup several years ago and briefly covered this topic, but I feel that I need to write it down to iron my own understanding and be able to link to this post later in discussions. I wrote this whole Projects vs Products clarification from a developer’s point of view because for years I’ve been a developer myself.
What is a Project?
Project is the code written and everything around it. This is something that has the business value, that solves some pain point, or does something meaningful for a user. That’s what the user will actually use and – in case monetization is applied – will pay for.
Consider it to be the repository you create on GitHub, GitLab, or Bitbucket. So it’s something the user will receive, either the code itself or the result of that code execution.
Here is what I think developers will need to deal with while creating a project:
- business logic to solve the exactly identified problem
- TDD vs BDD vs DDD
- software architecture
- programming languages and libraries to use
- build tools
- continuous delivery and/or continuous integration
Examples:
- a WordPress plugin that extends BuddyPress to implement a missing functionality (like my BuddyPress Groups Extras);
- WordPress Coding Standards that help with code validation created for WordPress and ensure code quality and adherence to coding conventions;
- vulnerability scanner logic, which gives an ability to be notified about found security-related issues inside various packages.
As you can see, this might be a self-contained code, useful by itself like a plugin or tool for an existent platform, or something that will only be really useful as part of a SaaS, packaged in a product.
What is a Product?
Product is not just the code, it’s also a ton of other things that the majority of developers don’t know how or don’t like to deal with:
- marketing site or a landing page – a place where users will actually buy or read more about the project;
- promotion – Facebook and/or Google ads, collaborations, bundles, cross-sells, upsells, etc;
- social media – Facebook groups, Twitter updates, Instagram feeds, Pinterest images, etc;
- support channels – manual and/or automated, via email, using FreshDesk or HelpScout, forum, etc;
- financial management – upgrades and downgrades, refunds, payouts, cancellations, fraud, etc.
Each of those items will have a ton of subitems and separate invoices and a lot of new knowledge that the product owner should absorb.
So while at the very beginning you, as a developer, will solely focus on the development part – this won’t be enough to successfully deliver the project to users. Especially if you expect people to pay you in order to use it.
You are required to create an ecosystem around the project, that will form the project. And that “final” step may easily take a lot more time than the development itself. Consider it to be the last 20% that will take 80% of the time.
Projects vs Products
Project is a tool to solve a problem.
Or simply “Product > Project”, because developers think that way.
Product is a package to deliver that project to end-users.
I’m eager to read your thoughts about this topic. Feel free to leave your feedback in the comments area below.
Leave a Reply