I admire the complexity which can emerge from elementary designs. Especially in the problem space.
One example speaks for itself, the 'On/off app':
- an webapp consisting only from one button which can either turn 'things' on or off ('Picture 1' is an aproximate illustration of both visual states of the app)
- 'things' are marketing campaigns, some more complex processes to send particular marketing messages under particular conditions to particular customers (details of such don't matter in this context)
Even when my team was highly qualified in software development, under the fog of communication and implicit expectations that we missed, we discovered the following problems with the implementation:
- Wrong template
- The template which we used in the test environment was not meant for production, the impact was low - only a few business users saw the word 'test', but it taught us a lesson
- Wrong business logic
- This one was tricky, while the button should turn everything on or everything off, we didn't have the information about the production data - some marketing campaigns in production were off for long period of time. In other words the new requirement was "turn off everything what is on, but when I click you again, you turn on only those campaigns which you turned off"
- This brought us to the realisation that we need the requirements explicit, so while writing them own, I discovered curious situations which can occur from such simple design, including pressing it from different sessions/users. As far I remember there were around 10 different scenarios which have been documented
- Initial account sync
- This was another blind spot, bound to the first launch of the app - the items which needed to be migrated to our DB. We found out there were several millions of them, which naturally caused our app to freeze. Althought this was fixed quite quickly, I will always remember to think about this aspect in future
Don't be comforted with the straightforward simplicity of the system in front of you, the complexity can be much deeper than you realize. Like a famous clothing brand says: "Never stop exploring"
Thank you for sharing such a useful article. I had a great time. This article was fantastic to read. Continue to publish more articles onReplyDelete
Data Engineering Services
Data Analytics Solutions
Data Modernization Solutions
AI & ML Service Provider