This repo is intended to recap the main steps required to convert an idea into a software product.
This process it is not straightforward ever. There are a lot of variables and these variables, often, are not clear at the beginning. Besides that, aims and targets could change during the ‘path’. Often this happens without evaluating the impact of the changes on the entire ecosystem.
To design a product and correctly implement it as software project it is necessary to have a clear and deeply knowledge of different areas, technologies, tools, and foremost, the right mindset.
Before starting to do anything, do not forget to apply these general golden rules!
- DRY (Don't repeat yourself)
- KISS (Keep It Simple Stupid)
Don't Repeat Yourself (DRY) is a software development principle that states that software developers should avoid repeating the same code or data in multiple places. This principle encourages developers to create abstractions and modularize their code, making it easier to maintain and update. By following the DRY principle, developers can reduce the amount of time spent on debugging and refactoring code, as well as improve the overall quality of their software.
The Keep It Simple Stupid (KISS) pattern is a software development principle that encourages developers to keep their code and designs as simple as possible. This helps to reduce complexity, improve readability, and make the code easier to maintain. The KISS principle also promotes the use of fewer lines of code, which can help to reduce development time and cost.
and remember:
- The best and fastest way to do something is don't.
- So before start doing something, ask yourself: it is really needed?
In this stage, the stakeholders should describe the idea behind the product.
The market analysis like competitors’ evaluation, MVP (Minimum Viable Product) and the KPI (Key Product Indicators) identification should be defined upfront and deeply evaluated.
Terms like what and why are not enough. The how is very important as well.
- What we are going to build
- Why we are doing that
- How we are building the solution
Miss one of these key points and the solution will fail miserably.
Defining the MVP target is needed to be fast delivery something to the market. This is important to have a feedback as well as to keep in mind what are the core concept that canno be disattendend.
The KPI definition allow to have a monitor, the compass to estimate where the business is, and to apply the right corrections on the original plan.
- During this stage the technical team is not involved (unless to warm-up the tech community)
There are a lot of different tools out there.
Some of them that I used, and I was comfortable with. A short list below:
- [Atlassian] Jira
- [Atlassian] Trello
- Figma
- [Microsoft] VSTS
- Microsoft Project
Design the architecture is not a simple task.
Different companies have different constraints.
For most of them be on the cloud is a must. It couldn’t be otherwise. But there are contexts where On-Prem is an unassailable requirement.
An enterprise level software solution is
- Clean Architecture patterns
- Microservice Architecture
The source code versioning is the repository where different developers store the result of their work. This tool could and should be used even when the development team is composed by few members even only one.
These repositories allow to store projects both in a public and private fashion. The most important one are:
- Local [StandAlone local Application]
- Device [Mobile and/or Embedded Application]
- On-Prem
- Public Cloud
-
Datastore
-
Enterprise message broker
-
Enterprise Service Bus
-
Mail sender
-
SMS sender
-
Notification services
- Backend services
- Frontend Services
- Mobile and Embedded
- Machine learning
- Data analysis and processing
- C/C++
- .NET C#
- html/css
- kotlin
- GO
- Python
- nodejs
- Java
This is the Genocs entrypoint repo
This folder contains the template to build webApi with different languages.
Supported languages are:
- golang
- .NET
- python
- nodejs
Item | .NET | Github |
---|---|---|
devmentors | devmentors | devmentorssnatch-dev |
Item | .NET | Github |
---|---|---|
devmentors | devmentors | devmentorssnatch-dev |
paulovich | paulovich | mangacaju |
Item | .NET | Github |
---|---|---|
aforgenet | aforgenet | aforgenet |
accord-framework | accord-framework | accord-framework |