Monoliths, microservices and boiling frogs

Posted on Posted in continuous delivery, continuous deployment, micro, microservices, monolith

Microservices is a hot topic. There is a plethora of opinions, conference talks and blog posts about microservices. I started doing microservices myself three-and-a-half years ago, when I was designing a system for an insurance company. Since then I have done many talks on the topic, published articles and presented training courses. Usually, I ask my attendees if they have […]

Features en kwaliteit

Posted on Posted in Uncategorized

Stel. Je wordt wakker met een goed idee. Je pakt je laptop en begint te programmeren in de taal die je het beste ligt. Visual Basic for Applications. PHP. Javascript. Niet heel veel later is je applicatie klaar. Je toont de applicatie aan een vriend wiens probleem ermee is opgelost. Je eerste tevreden klant is binnen. Vervolgens geef je her […]

Verplicht leuk doen

Posted on Posted in Uncategorized

Verplicht leuk doen Enkele maanden geleden had een goede vriend een kennismakingsgesprek bij een gerenommeerde webwinkel. Het grotendeels blauw ingerichte kantoorpand viel op. Vrijwel alles was gelabeld. De koelkast, de snoepautomaat, de koffieautomaat. Als een aanleunflat van een Alzheimer-patient. Maar er was meer. Alle labels werden ook nog eens begeleid door kwieke one-liners. Allemaal onder het motto: kijk eens hoe […]

Agile beyond refinements

Posted on Posted in Agile, Scrum, sprint, User stories

Even though the year is still young and still cold, I have already presented two training courses. One on microservices for a transportation company. And one on agile for teachers at a high school who want to adopt agile techniques to their classes. Although the topics were quite different, attendees at both courses had a similar background in doing agile: […]

Yes, microservices implies a distributed system

Posted on Posted in Agile, continuous delivery, continuous deployment, microservices, minimal valuable project, MVP, REST, RESTful

In September 2016 I will do the closing keynote for SwanseaCon in Swansea, Wales. Although my talk will evaluate agile after twenty years, InfoQ interviewed me preceeding the conference on one of my other favorite topis, microservices. Here’s the answers to InfoQ’s questions. InfoQ: What are the biggest problems that organizations have with monolithic software products? Monolithical systems, written in […]

Why the project metaphor doesn’t fit software development

Posted on 1 CommentPosted in Agile, minimal valuable project, Software architecture, Waterfall

In 2009 I hired a building contractor to build a house. Together with an architect and the contractor I worked out the features. We wanted a basement, we carefully picked the materials, the location of the windows, the placement of the rooms, the bathroom, the attic and everything the contractor needed to come up with a price and a delivery […]

What is agile architecture anyway? The red pill and the blue pill

Posted on Posted in Agile, Domain driven design, microservices, Software architecture

Having coached many teams, projects and organizations on both software architecture and agile, one of the questions I’ve been asked a lot over the past fifteen years is: what is agile architecture?  Unfortunately, there is no easy answer to this question. There is no simple truth out there. What agile architecture really is considered to be is different from organization […]

Microservices Q&A

Posted on Posted in Agile, Domain driven design, microservices, Service oriented architecture, Software architecture

In September I will run a masterclass on microservices at Luxoft in Moscow, Russia, see www.luxoft-training.ru/master-class/sander. In preparation of this masterclass, here’s a short Q & A on microservices. Is it worth applying microservices? Q: In your article Microservices. The Good, the Bad, and the Ugly you described different aspects of development. Readers may think that using a microservices architecture […]

A programmer’s mind explained (to project managers)

Posted on 2 CommentsPosted in Agile, flow, iteration, programming

Earlier last week I was trying to refactor around two thousands lines of code, optimistically being convinced that the component could offer the exact same functionality in less than two hundred lines. My refactoring was an intuitive step-by-step process that involved creativity and a lot of concentration. Happily working on my code I slowly got into the zone, a happy […]

Microservices. The good, the bad and the ugly

Posted on 4 CommentsPosted in Application Migration, Client /server, Domain driven design, Enterprise architecture, Frameworks, Hibernate / nHibernate, Java, microservices, Service oriented architecture, Software architecture, Unit testing, Value objects

Back in 1988, when I was first employed by a company for writing software, the world was fairly simple. The development environment we had was character-based, the database was integrated and traversed with cursors, and we built a whole new administrative system covering everything but the kitchen sink. It took us five years to complete the project, basically because the […]

So … Does agile improve productivity?

Posted on Posted in Agile, Estimation, Scrum, Software estimation

Over the past fifteen to twenty years I’ve been invited numerous times to help organization move from traditional to iterative and agile software development. Without exception whenever I have a first board room meeting at any organization, I start the conversation with the same questions: why do you want to move to agile? What is it you are trying to […]

Limit Tags to Labels

Posted on Posted in Agile, speedbird9

Recently we’ve introduced Tags for work items on www.speedbird9.com . You can add tags either from the menu when you create an item in Work Items | New, or from the Edit Work Item feature. Tags are replacing Labels because we’ve received many requests for allowing multiple Labels or Tags with work items, whereas it was only possible to add […]

Failing fast

Posted on 2 CommentsPosted in Agile, Anti-patterns, Estimation, Smart use cases, Software estimation, sprint, Waterfall

There is an intriguing question that pops up frequently in organizations developing software in projects: when is a project successful? For sure, one of the most (mis)used resources on the subject is the Standish Group. In their frequently renewed CHAOS Report they define a project successful if it delivers on time, on budget, and with all planned features. For a […]

Burn-down or burn-out

Posted on 1 CommentPosted in Agile, iteration, Kanban, Scrum, Software estimation, sprint, User stories

One of the key and often very much underestimated assets of working in agile teams, whether working on products or projects, is the idea of sustainable pace. In my view, sustainable pace targets at making sure that, even under time pressure, which is not rare in software development, the team remains it’s cool. For those of you who have been […]

Agile anti-patterns at CodeMotion Madrid

Posted on Posted in Agile, Anti-patterns, Estimation, Kanban, Lean, Requirements, Smart, Smart use cases, Software estimation, Testing, User stories, Waterfall

Many organizations turn towards agile to escape failing traditional software development. Due to this increase in popularity, many newcomers enter the field. Without the necessary real-life experience but proudly waving certificates from two days of training. During a challenging talk I did at the CodeMotion conference in Madrid, in October 2013, I tried to show what happens to projects that […]

Offshore Agile Software Development: Does It Work?

Posted on 4 CommentsPosted in Agile, Kanban, Offshore, Scrum, Waterfall

Due to the ever-rising demand for seasoned software developers in the nineties, offshore software development became a compelling alternative to in-house development for many organizations. Despite the cultural, language and time differences and the geographical distance involved, more and more projects were executed with offshore development and testing, benefiting from lower rates of cost and the high availability of people, […]

The changing interpretation of agile

Posted on 2 CommentsPosted in Agile, Scrum

For as long as I can remember I have been evangelizing, promoting, practicing, coaching, and training agile. For me as a developer the goals for applying agile approaches and techniques are pretty clear. I want to make better software. Higher quality, better suited for use, and possibly also faster. And from my own empirical evidence I can certainly state agile […]

Validating sending mail messages in smart use case unit tests

Posted on Posted in .Net, Adf.Net, C#, Frameworks, Smart use cases, Unit testing

When building applications with the Adf framework, smart use cases are implemented in task classes. Quite regularly mail messages are sent from tasks. To do so we use the MailManager class. Using this class mail messages are usually build up as in the following code example. To send mail messages, the MailManager plugs in an implementation of the IMailProvider interface. […]

Adding specific validation messages to value objects

Posted on Posted in Adf.Net, Validation, Value objects

One of the requests we often get in projects that use the Adf.Net framework is to be able to get specific validation messages, especially when during persisting panels to domain objects, properties that have value objects as their type fail to persist, usually during call such as below. protected void lbOpslaan_Click(object sender, EventArgs e) { BindManager.Persist(Persoonsgegevens, panelPersoonsgegevens); MyTask.OpslaanPersoonsgegevens(); } I […]

Reaching post-conditions in tasks

Posted on Posted in .Net, Adf.Net, C#, Design patterns, Frameworks, Smart use cases

Implementing use cases in Adf.Net is covered by the task pattern. Each smart use case in the model is implemented as a descendant of the Task class in Adf.Net. The task pattern consists of three major parts: Starting the task, either using a parameterized Init() method, or the default Start() method. After a task calls another task, and this second […]

Agile business intelligence

Posted on 1 CommentPosted in Agile, Business intelligence, iteration, Scrum, Smart, Smart estimation, Smart use case points (SUCP), Smart use cases, Software estimation, sprint, User stories

Het besparen van kosten is een veelgenoemde aanleiding voor Business Intelligence (BI) projecten. Zo wilde een bekende overheidsinstantie weten hoe effectief de bestrijding van uitkeringsfraude was. Het onderzoeken van mogelijke fraude kost de instantie geld, maar het vinden van fraudeurs levert echter direct geld op. En dus ging zoekt de instantie naar de optimale verhouding tussen het aantallen onderzoeken en […]

What could the Dutch football learn from agile?

Posted on 4 CommentsPosted in Agile, Anti-patterns, Project management, Waterfall

After a series of very disappointing games the Dutch national football team was eliminated during the preliminary rounds of the European Championships. Comments weren’t mild. The most heard comments largely focused on the lack of team spirit and mental fitness. Not uncommon to Dutch national football teams. Earlier this week an interesting broadcast of the Dutch sports program Studio Sport […]

Agile anti-patterns. Yes you agile projects can and will fail too

Posted on Posted in Agile, Kanban, Lean, Requirements, Scrum, Smart, Smart use cases, Software architecture, Software estimation, User stories

Over the years I have noticed a lot of agile anti-patterns during projects. Wrongly used agile approaches, dogmatic use of agile approaches, agile-in-name-only. Recently I have presented a talk at a number of agile and software development conferences that demonstrates patterns of agile misuse. These conferences include Agile Open Holland (Dieren), Camp Digital (Manchester), GIDS (Bangalore), ACCU (Oxford) and Jazoon […]

How to kill your estimates

Posted on 2 CommentsPosted in Agile, Client /server, Estimation, Smart estimation, Smart use case points (SUCP), Smart use cases, Software estimation

It must have been about twenty five years ago. I was working for a large international consultancy firm. One of the reliable ones. The ones that you would think that had everything worked out. But I guess this was merely the product of my imagination. At one time two colleagues and I were working on an estimate for a bid […]

Evolving agile

Posted on 2 CommentsPosted in Agile, Anti-patterns, Kanban, Lean, Scrum, Smart, Waterfall

Without any doubt agile is the biggest evolution in software development approaches since the introduction of waterfall back in the early seventies. And yes. Agile is an evolution rather than a revolution. The best practices and techniques in agile didn’t just pop-up. Rather they emerged from years of hard-working, real-life experience in succeeding and failing in projects. So working in […]

A short notice about object relational mapping framework generated queries…

Posted on Posted in .Net, Anti-patterns, C#, Domain driven design, Entity Framework, Frameworks, Hibernate / nHibernate

I guess object relational mapping is an accepted paradigm for exchanging data between an object oriented domain layer and underlying databases. For most applications object relational mapping is more than sufficient. And if not, perhaps command query responsibility segregation might contribute well to your solution. Being a more than frequent user, this very short blog post is not meant to […]

Het institutionaliseren van agile

Posted on 3 CommentsPosted in Agile, Anti-patterns, Documentation, Project management

Er is een anti-patroon op het gebied van agile dat me nauw aan het hart gaat. En dat is de institutionalisering van agile. In de afgelopen vijftien jaar heb ik met veel plezier en inzet organisaties en projecten gecoacht op weg om agile worden. In die vijftien jaar heb ik ongelooflijk veel geleerd, over software ontwikkeling, over programmeren, over processen, […]

Added GetOrDefault() extension methods for state providers

Posted on Posted in Uncategorized

In the framework ADF.NET state can be temporarily stored by calling the StateManager. The StateManager is an static façade that holds three different instances of the IStateProvider interface. These instances are: Personal. State that is stored somewhere for personal use of the current user of the application. Usually in web applications an implementation is plugged in to use the Session […]

Flower-Power Agile Fluffiness

Posted on 29 CommentsPosted in Agile, Anti-patterns, Kanban, Lean, Scrum, Smart use cases, Use cases, User stories, Waterfall

To all the dear people in the agile community and to the faint-hearted: this will not be an easy blog post. There was a time when being a software developer was a decent craft, requiring decent craftsmanship and yes also a lot of creativity, some communication, some collaboration. Still it was a decent craft. The waterfall-ish methodologies we used weren’t […]

Scrumdamentalists and crusaders

Posted on 15 CommentsPosted in Agile, Anti-patterns, Scrum, Smart use cases, User stories, Waterfall

After having promoted agile and iterative approaches to software development projects for over a decade, I finally find that, like Bob Dylan says, the times they are a-changing. And for the better. Many small and large organizations and enterprises are now turning towards agile approaches, often to compensate for years and years of failing projects. You might suggest that all’s […]