Recently I’ve been thinking how software development fits into the outer world. As a programmer I must code, debug and fix the details. This requests from me to learn and understand how things work to be able to match the requirements with the implementation.
When I focus on the implementation, I distance from the real world. A software package should interact with the world without us. Our time and energy is limited and the source code needs fine tuning to be useful.
Nothing is useful for the outer world, if it does not integrate with it somehow. Doing something without going out is like masturbation. Nothing is successful if it does not include, interact, integrate and mesmerize other people. And one special, big, and essential group is the non-technical percentage. This subject area is not Software Development – it is Marketing.
Extraction and separation of feature into a Service
✅ Theoretically – every feature in software could be extracted and offered as a service or app. It could be as small as a simple flag. Before implementing anything, I should answer the question – Why should I separate this?
How small?
❌ A simple functionality is not that useful to the majority of business and end users. You need a collection of features for a minimal viable product. The more roles and users software interacts with, the more number of functionalities will be required for minimal usability.
❌ It is impractical to extract a small service – the smallest functionalities. They could be easily and implemented fast by any individual with enough programming skills.
What functionality?
✅ A feature must have some pain point. Software Developer or Service Integrator should have some deeper motivation to choose your product.
❌The simplest features are better coded internally. This is in term of:
- Speed of development
- Usage of resources
- You will own the implementation.
Here are some reasons to choose non-made by you package:
- The Feature is in unknown technical area. Very simple example is a back-end developer to grab front-end product or vise-versa.
- Implementing of feature requires time and effort. If a product or a service saves time, it may cost less to pay to someone else to do it. Many times someone already made it into a product. If you buy a already coded software package, you may speed up the software development.
- A service abstracts usage of resource(s). Some resources cost dollars to the hosting providers or to yourself – if you need to upgrade hardware and software. A third party product sometimes could handle it better, more optimally and give easier scaling. Such limited resources could be
- CPU processing time
- Disk Space
- Network bandwidth (CDN)
