Starting a new software project
I have designed many successful systems in my career and started them all by defining the entities and representing the system visually.
The entities should represent well-defined real-life actors in your system.
Collaboration
The first and most crucial step is understanding the domain and requirements of what you are trying to build. Collaborate with others even if you have first-hand knowledge of the domain; validate your assumptions; define an initial version of your entities and go back to your collaborators/stakeholders to validate.
I recommend timeboxing this effort, but do not rush it; finding the sweet spot comes with practice. Try reducing the scope to a specific part of the system; this helps deliver value quickly. If this process takes too long, you risk losing the interest and engagement of your collaborators/stakeholders.
Visualization
We are visual beings, so having a visual representation of the system is beneficial during the entire lifecycle of a project. It is especially convenient during the initial stages as it can facilitate communication with your collaborators/stakeholders that might not have a technical background.
Entity Diagram
An entity diagram is one way of representing the entities and their relationships. The diagram has no implications on the implementation of the system, and as you might have noticed I haven't mentioned implementation at this stage of the lifecycle; the main focus, at this point, is to understand the requirements and business logic.
Although this entity diagram is simple, it says a lot; I can quickly see that a social profile belongs to a project and that a social post belongs to a social profile and their respective attributes. Imagine someone new is onboarding to the project; this diagram would be great to get them started.
Mockups
I firmly believe all systems should have tooling for end-user interaction
If your answer is my system does not have any end-users, then the system should not exist. All systems have users, and it is up to you to figure out who they are and how they will interact with the system.
Regardless if your tooling is a mobile/web application or a CLI tool, having mocks of how the application will operate and getting early feedback from the day-to-day users of the system will provide invaluable input that will impact the system's design.
Event Modeling
I recently came across event modeling, and I could quickly see how it would fit my process. The TLDR; is that event modeling describes how information has changed over time.
It combines the entities and mockups and specifies the details of a specific flow in the system. Event modeling might be the most digestible by non-technical collaborators. Learn more about it here.
Starting a new project can be exciting, and you will be tempted to start coding quickly, but this seldom works, in most cases, you will end up building the wrong solution and missing essential requirements resulting in the project being delayed or canceled.
Published: