OpenSCAD
In the world of computer aided design (CAD), parametric design is one of the design paradigms which gives you more flexibility, allowing you to change dimensions and shape with little modifications. OpenSCAD is a programming language designed for parametric CAD, which is simple yet powerful enough for most use cases. Designing by programming allows the iterative design to be stored as plain files, which in turn enables the use of version control and collaboration, and facilitates reutilization.
OpenSCAD comes with an interactive editor, where you can see your progress as you write the code, and has features which allow you to visualize what your code is doing on the fly. You can write your own functions, and create modules which can be imported to be used in different projects, and there is a community of users creating modules which are free too use.