There has been more discussion recently on the concept of a “10x engineer”. 10x engineers are, (from Quora) “the top tier of engineers that are 10x more productive than the average” Productivity I have observed that some people are able to get 10 times more done than me. However, I’d argue that individual productivity is… Read more »
Posts By: benji
Team Efficiency is Irrelevant
The most common reaction I hear when I tell people about mob programming (or even paired programing) is “How can that possibly be efficient?”, sometimes phrased as “How can you justify that to management?” or “How productive are you?” I think that efficiency in terms of “How much stuff can we get done in a… Read more »
Optionally typechecked StateMachines
Many things can be modelled as finite state machines. Particularly things where you’d naturally use “state” in the name e.g. the current state of an order, or delivery status. We often model these as enums. enum OrderStatus { Pending, CheckingOut, Purchased, Shipped, Cancelled, Delivered, Failed, Refunded }enum OrderStatus { Pending, CheckingOut, Purchased, Shipped, Cancelled, Delivered,… Read more »
HTML in Java
Update: this technique no longer works since name reflection was removed in later versions of Java. Here is another approach. Another use of lambda parameter reflection could be to write html inline in Java. It allows us to create builders like this, in Java, where we’d previously have to use a language like Kotlin and… Read more »
Lambda parameter names with reflection
Java 8 introduced a compiler flag -parameters, which makes method parameter names available at runtime with reflection. Up to now, this has not worked with lambda parameter names. However, Java 8u60 now has a fix for this bug back-ported which makes it possible. Some uses that spring to mind (and work as of recent 8u60ea… Read more »
Anonymous Types in Java
Java allows casting to an intersection of types, e.g. (Number & Comparable)5. When combined with default methods on interfaces, it provides a way to combine behaviour from multiple types into a single type, without a named class or interface to combine them. Let’s say we have two interfaces that provide behaviour for Quack and Waddle…. Read more »
Lambda Type References
We’re used to type erasure ruining our day in Java. Want to create a new T() in a generic method? Normally not possible. We can pass a Class<T> around, but that doesn’t work for generic types. We can’t write List<String>.class One exception to this was using super type tokens. We can get the generic type… Read more »
Modern Extreme Programming
There was a recent discussion on the Extreme Programming mailing list kicked off by Ron Jeffries saying he wants his XP back. The implication being that Extreme Programming is no longer practised, and that most “Agile” organisations are actually practising Flaccid Scrum – some agile process but little of the technical practices from Extreme Programming…. Read more »
Minimising the Risk of Data Damage
One of the more interesting questions that came up at Pipeline Conference was: “How can we mitigate the risk of releasing a change that damages our data?” When we have a database holding data that may be updated and deleted, as well as inserted/queried, then there’s a risk of releasing a change that causes the… Read more »
Isolating Test-Data in Production
Alex and I recently gave a talk at Pipeline Conference about our approach of testing in production. With our limited time we focused on things we check in production. Running our acceptance/integration tests, performance tests, and data fuzzing against our production systems. We also prefer doing user acceptance testing and exploratory testing in production. In… Read more »