Services I Offer


Consulting and Coaching

The baseline for my work is consulting and coaching. I will be on site (or remote via the usual mechanisms) with your team and help analyse, architect, design or implement languages and systems. If you are new to the topic, check out my page on what DSLs are, whether they might be an option for you and how to adopt DSLs in your organization.

Domain + Business + Process + Language

I will run a process with you to figure out whether your domain is suitable for a DSL, what tangible benefits the DSL might have for your business, how processes can be simplified, and how such a DSL might look like. Check out my new book on domain analysis to learn more about this aspect of my work.

Technology Training

I help you team acquire skills through trainings and workshops, mostly regarding concrete tools. Language workbenches are not mainstream, training is often very helpful to get you started.

Development Reviews

I will perform regular reviews of your language and the domain abstractions you chose to help keep the development on track and provide guidance about how to continue.

Software Development

At any given time I usually have one "main project" that I am involved in more deeply than week/month-long consulting.

Prototype Development
and Evaluation

In a few days or weeks I implement a prototypical language that demonstrates how to address the core challenges of your domain. This will be the basis for deciding whether to develop one for real.

Language and Tool Development

I join your development team for a significant period and guide language development.

How I work

 

I would hire you even if you had no idea about DSLs at all.

A happy customer told me this recently. At first I was disappointed because, of course, DSLs and stuff is my main experience. However, he was probably referring to the cornerstones of how I work:

Solid Software & Systems Background

Over the years I have worked in many different domains, from business systems over web/cloud to embedded software. For many types of systems I understand the guiding principles and architectural fundamentals, and I can be a competent partner in the development effort, even for discussions beyond the pure DSL work.

Holistic Approach

While focus on abstractions, languages and tools, I fully realize that business success includes coordination of the tools with the business processes as well as human, social and "soft" considerations: there's no point in trying to introduce a DSL "against" the majority of those who might have to use it. I keep these concerns in view and try to balance them with the technical things.

Quick Grasp and Clear Communication

I understand quickly. I can extrapolate and detect "holes" in my understanding. I am "active listener" in the sense that I articulate the current state of my understanding as well as the limits. In addition to the craft of software engineering and the technologies involved, communication in spoken and written form has been a major part of my professional career, as demonstrated by my books, papers, talks and podcasts.

Honesty and Openness

I have a well-tuned nonsense-detector. I speak up when I (think that) things don't work as they should and call out problems, expressing myself respectfully but clearly. The quotation above was a consequence of on such a "speak up".