On almost every desk on this planet lies a pen and a piece of paper for notes. In the programmers or software-architects world notes are especially technical notes about a component or system – drawn e.g. as UML-sketches on a paper or via an UML tool. However a few minutes and discussions later the names of the UML-boxes are typed into an IDE as part of source-code that will be written during the next days, weeks, months…
Unfortunately complex systems and software lead to complex diagrams and anticipating every issue upfront is quite impossible. Sketching the software with real components and executable software parts would be nice and could help to get an idea of the new software-system. Working with templates of different technologies could be a way to sketch real systems spontaneously – with less effort preferably. Even with the possibility to throw a sketch away and to create a new one.
In the java-world an empty maven or gradle project and a unit-test could be treated as a sketchpad to sketch a few ideas about the new application. Such project should be available in a repository like git [1], and is e.g. useful for a sketch scenario as describe in Sketch and drive code [2]. Forking an repository which contains an empty and only basically initiated project is done in a few seconds and the work respectively sketching could begin.
However applications typically rather contain a lot of other frameworks, libraries and configurations than just one unit-test class. I.e. daily work needs more than a plain project. IDEs offer templates for several scenarios but they might not be sufficient without modifications. It makes sense to have a couple of pre-initiated project-templates customized for different scenarios of daily business in place in a repository – e.g. a template to start with spring-boot, apache-camel, JPA etc..
Additionally online-tools like spring initializer [3] resp. spring-cli [4] are great for a spontaneous sketch start with the spring-framework.
Moreover it makes sense to have templates in place to create deployment environments in minutes and not in days or weeks. So, having templates of VMs, docker [5] environments, configurations etc. would also be helpful.
Finally being able to sketch a working Big data landscape in minutes would be awesome. Does exist any construction kit to sketch system landscapes in minutes? Getting the right IT-resource if you use on-premise, often needs days or weeks. These time-gaps do not support a spontaneously driven system sketch, which can be run and tested and is not only drawn on a piece of paper.
Cloud-provider offer a couple of services to create big system landscapes in minutes. Are those cloud-services the only way to create big things on the fly?
References:
[1] git-scm.com
[2] Sketch and drive Code
[3] Spring Initializer
[4] Spring Cli
[5] docker.org
Featured images are taken from pixabay.com.
Pingback: How to split a monolith and legacy code via code-sketches | Sketch driven software engineering
Pingback: How to split a monolith and legacy code via code-sketches – Sketch driven software engineering