Dependencies Flow Down Abstractions

Dependencies are the bane of software development. They make code rigid, difficult to understand, and hard to test. If we want to do better we need to deal better with dependencies. Of course quite some efforts have been made in this direction. The SOLID principles are trying to give good advice: Use the Dependency Inversion […]

weiterlesen

When to Turn to Microservices for Help

Microservice architectures seem to be the latest craze. When in doubt, bet your software architecture on microservices. They sure will deliver everything but the kitchen sink. Or maybe think twice? Because microservices like all technologies and paradigms come with a price. And this price is not cheap – especially if you haven’t dealt with distributed […]

weiterlesen

Do You Want to Stay Productive?

What’s the question to which clean code development is the answer? I think it is: Do you want to stay productive? I mean, indefinitely. I mean, being productive in a sustainable way. That means, clean code development is not the answer to questions regarding runtime efficiency like scalability or performance or security or usability. Look […]

weiterlesen

Structure Code for Rewriting

From a certain point on it becomes very tedious, frustrating, and expensive to change code in order to implement some new requirement. For a while clean coding and refactoring help – but in the end it’s undeniable: the existing code is more of a burden, a liability, than an asset. This is not satisfying, but […]

weiterlesen

Steering Software Development with Priorities Instead of Deadlines

There is an unquestioned practice in software development which to me seems to be quite harmful. It’s the practice of letting developers work towards a deadline. In this article I’m not much concerned with how the question „When will it be done?“ is answered. I’m just assuming that there is a deadline attached to a […]

weiterlesen

Forecast vs Estimation – A clarification

Is there a difference between estimating and forecasting? I think there is. After my previous article on forecasting there was a discussion about whether I used these terms properly. I was referred to Wikipedia for „forecasting“ with the comment „Every forecast is an estimate“: Forecasting is the process of making predictions of the future based […]

weiterlesen

Messaging – The Missing Ingredient

Robert C. Martin wrote an interesting article on the orthogonality of Object-Orientation (OO) and Functional Programming (FP). There is no rivalry between the two, or at least should not be. Both approaches have their merits. FP and OO work nicely together. Both attributes are desirable as part of modern systems. I can only agree. And […]

weiterlesen

Take a bearing, don’t estimate – Update

I believe forecasting software development using the Monte Carlo method is even easier than I thought. In my previous article I used averages of past cycle times to come up with an idea of how much effort future tasks would take. This was my basic data set: a log of cycle times of 14 tasks […]

weiterlesen

Take a bearing, don’t estimate

Estimation in software development is putting the burden on the wrong shoulders. Ultimately the software developers are carrying it – even though they have the least control over living up to their promises. Also they are the ones with least experience in tracking budgets. Estimation, i.e. prediction is the duty of leaders. They are responsible […]

weiterlesen