A New Way of Seeing

At its core, Contextual Programming is a new approach to the challenges of constructing complex software systems. It introduces a novel point of view as to what software is and does, and enables developers to structure the internal infrastructure of software applications in a way that closely aligns with logical intent of the software.

Contextual Programming provides a systematic methodology for partitioning a problem space into an assembly of physical and temporal solution spaces using any object-oriented language, development environment or target platform.

Whew! That is a mouthful, and sounds suspiciously like meaningless marketing drivel fused with geek talk. But it is all true and means something very real and useful. In addition, it won’t cost you a dime to apply it to your daily work of software construction. Instead, Contextual Programming is about knowledge, insight and the artful application of computer science to real world problems.

Contextual Programming teaches developers to organize their software around the Controller-model-view (Cmv) paradigm for software development. You may be confused about that statement, thinking that we meant Model-View-Controller (MVC). But no, we got it right: Controller-model-view.

Cmv takes MVC and shifts it around by shaking up the status quo and putting the Controller firmly in charge of the software system. Contextual Programming therefore is a brand new take on MVC’s tried-and-true (but somewhat ambiguous) way of building software.

Contextual Programming also teaches how to systematically craft Controller systems to align with the problem space (translation – what the bizdev guys want to sell). By carving up the larger problem into small “contextual” chunks and organizing applications around them, a number of big wins are possible:

  • Contextual Programming presents a systematic methodology for applying fundamental principles of computer science to the practical craft of rapidly building excellent modern software applications with great discipline.
  • Contextual Programming starts with industry standard MVC best practices and improves on them by showing how to implement Cmv paradigms systematically and reliably.
  • Standardized patterns for common use cases quickly begin to emerge which are both reusable and portable to other languages and platforms.
  • Contextual Programming code mechanisms link directly to a graphical notation for drawing them. This is big. What this means is that if you’ve drawn the diagrams, you’ve created the code. Conversely, it also means that if you create code using the standardized mechanisms, you’ve also documented your software in the process. Software creation and documentation are now unified into the same activity.
  • No dependencies on any tools or frameworks. Instead, Contextual Programming is about knowledge and skills. It uses math, models and reusable patterns to design, build and manage complex software construction projects.
  • The fundamental building blocks for constructing software with Contextual Programming are objects and functions. No fancy (and non-portable) compiler tricks, metadata or types to worry about.
  • You can do a little or a lot. The basic Contextual Programming pattern defines how to structure a single controller object at a time. Therefore it is possible to easily retrofit existing applications and feather in this new way of working without any disruption of the codebase or other team member’s preferred ways to construct software. It also integrates nicely with existing frameworks and libraries.

Hopefully this menu of benefits and features has whetted your appetite for more. To get started, please explore our resources page to see how to begin to gain a new perspective on developing and documenting great software systems.