Newsletter - September 2017


This month we introduce coding challenges with video games, the history of Lisp, mastering Machine Learning and the rise of Test Impact Analysis. Enjoy!

The Codurance Team

P.S Missed our last newsletter? Catch up here.

[Our Opinion On ... Software Craftsmanship Coaching]

Demand is on the rise for Software Craftsmanship coaching. With more and more companies realising that the application of Agile principles and practices alone is not enough to improve the health of their code bases, the role of ’Software Craftsmanship Coach’ is becoming more prevalent. But what exactly is Software Craftsmanship coaching?

As projects progress over time, time spent on development reduces as the level of technical debt rises. A task that was trivial in the beginning of a project can turn into a multi-headed monster that needs to be fought, as time goes by. End result? Frustration settles in.

Agile processes by themselves do not recommend any technical practices to tackle these problems or, even better, to avoid them.

Slowly but steadily, the principles and practices of Software Craftsmanship are gaining ground within organisations. Developers are increasingly talking more about their technical practices, attending user groups, creating communities of practice inside organisations etc.

In fact, it’s reasonable to suggest that Software Craftsmanship has now infiltrated most organisations, at least to some degree. So it’s no surprise that those organisations are looking for ways to adopt principles and practices of the movement.

Firstly, lets separate principles from practices, as this is of great importance. The principles of the Software Craftsmanshipmovement are described by the manifesto for software craftsmanship:

The manifesto focuses on principles, not practices. These principles could even be summarised as ‘caring and sharing’. That is to say, caring about our profession, the code we create, the value we add and in the sharing of our principles and the practices with others. Technical practices are notoriously absent in the manifesto. For practices, the Software Craftsmanship movement adopted Extreme programming practices, a move which has been key in the revival of XP.

Back to Software Craftsmanship coaching and to what it is and what it is not. There is no such thing as Software Craftsmanshipcoaching, since Software Craftsmanship is about attitude and professionalism - essentially, a mindset. We either we have it or we don’t. And if we don’t, either we strive for it or we don’t.

Which leaves the subject of Software Craftsmanship coaching to its practices. Or more concretely, to Extreme programming practices, since they are the practices of Software Craftsmanship.

There is no Software Craftsmanship coaching, but rather XP coaching, and this is what most organisations require, technical practices that allow them to evolve projects while controlling technical debt or avoid it.

The Author

Pedro Santos is a Principal Software Craftsperson at Codurance. Passionate about the web, distributed systems and mobile technology. Advocate of agile practices and the software craftsmanship movement. Has been key in bringing Software Craftsmanship practices into several organizations.

You can follow Pedro on Twitter at @PedroSantos

Reflection on Software Craftsmanship

Sandro Mancuso and Mashooq Badar from Codurance reflect on Software Craftsmanship.

Rise of Test Impact Analysis

"Test Impact Analysis (TIA) is a modern way of speeding up the test automation phase of a build. It works by analyzing the call-graph of the source code to work out which tests should be run after a change to production code."

Publishing with Apache Kafka at The New York Times

Blog article on how The New York Times manage their extensive content publishing.

Quantum Theory Rebuilt From Simple Physical Principles

Physicists are trying to rewrite the axioms of quantum theory from scratch in an effort to understand what it all means. The problem? They’ve been almost too successful.

Open Salaries: Outcomes, Looking Back Over 20 Months

We've been operating open salaries at Codurance for a while now, which means we're always interested in hearing about other companies experiences. This post from Lunar Logic has some interesting points on the cultural change that this approach brings (there's also a link to the initial rationale behind their move).

Java Design Patterns

Bookmark this.

Coding Games and Programming Challenges to Code Better

Quite simply, awesome. Coding challenges in a variety of different languages, focusing on single-player and multi-player gaming experiences.

History of Lisp

John McCarthy

Machine Learning Mastery

Dr. Jason Brownlee's blog is aimed at getting people up to speed and productive with Machine Learning. Great resource for those that want to dive deeper into ML.

Machine Learning Mastery

Dr. Jason Brownlee's blog is aimed at getting people up to speed and productive with Machine Learning. Great resource for those that want to dive deeper into ML.

Outside-In Classicist TDD with Mars Rover Exercise

Our co-founder, Sandro Mancuso, tackles the Mars Rover Exercise using Outside-In Classicist TDD. IDE heavy video that shows how to tackle refactoring regardless of your TDD style.

99% code coverage - Do we have a good safety net to change this legacy code?

Our Craftsperson Rachel Carmena questions if a high code coverage percentage is a guarantee of quality, with a hands-on guide to Mutation Testing.

Debugger Filtering Arrays Collections in IntelliJ

Trisha Gee introduces the ability to filter arrays and collections in variables or watches as part of IntelliJ IDEA 2017.2