Saturday, 11 April 2015

Win a Copy of Patterns, Principles, and Practices of Domain-Driven Design

To celebrate the launch of our book, Scott Millet and I will be donating a few free copies. Just email your name or twitter handle to by Friday 17th April.

If you are selected as a winner, a hard copy of the book will be posted to an address of your choice. The book comes completely unconditionally - I would love to hear your feedback though.

We will inform winners on Saturday 18th April.

A Bit About the Book

Domain-Driven Design is a development philosophy that focuses on aligning the technical teams with the business and product teams. Ultimately, by having a deeper understanding of the problem domain, developers are more effective at solving business problems and delivering value sustainably over the long-term.

DDD is the creation of Eric Evans. His much-lauded, Domain-driven Design: Tackling Complexity in the Heart of Software introduced the topic almost 15 years ago. But a lot has changed since Evans' book was released - both the collaborative and technical aspects of DDD.

The original DDD book has also suffered criticism for being long-winded and a challenging read. Personally, I loved the book, and it fundamentally changed my approach to software development. I do concede that it could have done a better job of making the topic more accessible, though. Evans also concedes that he regrets not emphasising bounded contexts more.

And that brings us back to Patterns, Principles, and Practices of Domain-Driven Design. Our approach to writing this book has been to make the topic more accessible whilst still covering all of the advanced concepts of DDD.

In addition we took on board Evans' regrets and put a lot of focus on the strategic aspects of DDD - like bounded contexts - towards the front of the book.

We've also added lots of modern updates, including examples of asynchronous messaging, event sourcing, and microservices. Equally we've emphasised alignment concepts like the Business Model Canvas, Event Storming, and Impact Mapping.

Wednesday, 25 March 2015

Proposing the Emotional Intelligence Retrospective

Every decision we make is guided by our emotions - often even dominated by them. The more we are aware of our emotions, though, the more we can control them and make more logical decisions. This is the challenging skill of emotional intelligence.

As software developers, we do not dedicate enough of our focus to being more emotionally intelligent. For personal, team, and organisational benefits we absolutely should, in my opinion.

My suggestion for increasing emotional awareness is to conduct emotional intelligence retrospectives. In this post, I will outline one potential format for such a retrospective. But I encourage you to apply your own ideas as well.

Monday, 16 March 2015

Empathetic Software Development Guided by the Business Model Canvas

Empathy is what makes software development teams effective. Applying their technical expertise, passion and collaborative skills to understand the needs of the business and maximise value creation. Developers are problem solvers - not just programmers.

A development team’s effectiveness is inhibited by a lack of business awareness. Most developers are too technology focused, and most management teams drip-feed their developers partially-solutionized problems based on their poor technical knowledge and gut feelings.

We need both sides to come together and realise the value in aligning everyone with a shared organisational vision. We can do this using the Business Model Canvas to create empathy between business and technical colleagues; in the process creating efficient organisations that innovate from the ground-up.

Whether you are a leader by job title or by nature, I encourage you to bring the benefits of the Business Model Canvas to your company.

Tuesday, 17 February 2015

My Favourite Startup Tools for Devs

As I've moved from failed startup idea to failed startup idea, and convinced my girlfriend that "this is the one, just give me some space to finish it and we'll finally spend lots of time together", I have actually picked up a few tools that are immensely useful.

Here are a few tools I seriously recommend that you consider if you ever decide to put your relationship on the line and get one of your own ideas up and running.

Feel free to leave a suggestion or two of your own in the comments.

Tuesday, 13 January 2015

Finding Common User Journeys with Apache Spark

Understanding the behaviour of your users as they navigate and interact with your websites and applications is one of the key sources of insight for improving your products and your business model. One particular metric that can be especially useful is understanding common journeys - helping you to understand user intent.

Google analytics provides the “Behavior flow” report, shown below, which provides detailed information about common user journeys. But if you don’t want to use google analytics - perhaps you want to create more advanced or customised behaviour flow tools (or you want to keep all your data private in your own datastores) then you can easily recreate this functionality using Apache Spark regardless of how big your dataset is.

Google Analytics' behavior flow tab
This blog post should be accessible to any developer, though the examples are in Scala. By the end you will see how to create your own behaviour flow functionality, and you’ll also see why Apache Spark is becoming massively-popular - because it is powerful, easy to use, and fast.

Monday, 29 December 2014

Do You Know Your Employer's Business Model?

If you are a passionate software developer who is motivated by more than just writing code, then you should consider learning about your employer’s business model and business models in general, so that you can play a significant role in making technical and business decisions.

I am just realising how lacking an understanding of business models has prevented me from making better day-to-day decisions and held back my workplace innovations.

But as I’m learning from the Business Model Generation book, I’m seeing so many ways I can increase my contribution on the products and projects I find myself involved in. This feels like a breakthrough in my career that will empower me to become a more effective problem solver, developer, and leader.

In this post I will explain why, after I first share the definition of a business model.

Wednesday, 5 November 2014

Enabling Continuous Delivery: Through Process or Patterns?

Continuous delivery enables businesses to out-iterate their competitors and deliver software significantly more efficiently. Deploying to live early and often is the fundamental practice that leads to these benefits.

More and more, companies nowadays are moving to continuous delivery because they see the massive successes other companies are achieving. Enabling continuous delivery, however, is not a linear path to riches. Due to the challenges involved, there are a number of approaches available.

Keep the suits happy - deliver software frequently