A pretty nice set of combined boundary conditions is to develop the bare minimum that:
- gets the job done at the target quality (i.e. fulfills requirements), and
- minimizes opportunity cost / cost of delay for other, probably more important work.
You know… something also known as “engineering”.
An added constraint I’ve faced at TECTRA Ltd during the past 4 years is the extra requirement to make existing, streamlined business processes faster, but–get this: without changing the legacy ways in which some have gotten used to working, except if there is a legal requirement (such as the electronic invoicing introduced in 2021 by the Greek government).
This means developing process and software solutions with constraints such as:
- Don’t change the fact that inventory management is done on a spreadsheet that captures state, rather than incoming/outgoing transactions.
- Make the archive of documents scanned into proprietary MAX files with PaperPort 6.2 and 8.0 accessible, despite having phased out Windows (and PaperPort not running properly on Windows 7 and above, anyway).
- Don’t change the template look of our offers.
…and many more, some of which are merely posed by stakeholders who want to have their cake and eat it too.
Fine. There are ways around it, such as:
- Using odfpy and an async file watcher for reloading and parsing an ODS spreadsheet into JSON upon file changes.
- Hacking paperman down to a “max2pdf” executable (someone else did this, too… ) that processes MAX files into PDF files, and converting our entire archive in one fell swoop with GNU Parallel, OR simply running PaperPort 8.0 on Linux using WINE.
- Bootstrap theming of the ready-to-print-as-PDF offer generated by a REST API (implemented with FastAPI) to make the offer indistinguishable from the company’s 20-year-old, legacy ODT template.
Constraints and trade-offs are where it’s at, and finding novel solutions despite constraints is what engineers do, anyway.
As my friend Bruno says:
Doesn’t matter if you are thinking inside or outside the box, playing with boundaries will always help you think differently. You can relax them or make them more stringent. They can be imagined and self-imposed or concrete and enforced. When stuck, cycle through boundaries, move them around, and see what you come up with. There are endless possibilities. Recognise constraints for what they are—your most potent creativity triggers.