On problem solving – which problem to solve?

Problem solving is a key aspect of software engineering. There are always multiple solutions. Each solution has strong- and weak points. When discussing which solution is the best, other details pop up. At that point it’s can be very useful to ask the following questions: Is the problem that you’re trying to solve even a problem? Should […]

Scrum deadlines, do they exist?

Interviewing a potential new colleague is always an interesting event. Sometimes you get unexpected answers to your questions. A couple of weeks ago I was interviewing a promising candidate. The interviewee was describing how a transition to Scrum had improved performance. The following question popped into my head: “What does Scrum mean, according to you?”. This […]

What kind of device to buy

It’s getting harder and harder to determine what kind of device to buy. A couple of years ago you would have a desktop and/or a laptop. Then netbooks were introduced. Ultrabooks. (Usable) tablets. Hybrids. But a lot of those devices only partially replace this original machine. A picture is worth more than a thousand words […]

Defining Symfony 2 controllers in two ways

If you start with Symfony 2 using the quick tour, you might assume there is only one way of creating a controller: by extending Symfony\Bundle\FrameworkBundle\Controller\Controller. If you follow the more in depth book you might notice a tip to a second way of creating a controller: as a service. Lately I’ve been exclusively creating my […]

Developing for touch screens

Since a couple of weeks I have a tablet computer, the Surface Pro 2*. It’s really weird holding a piece of hardware in your hand that is just as fast as your main desktop, but more on that later. There is one thing that I’ve started noticing more and more: a lot of websites could […]

Handling scope changes during a sprint

Every good product owner has a clear vision. He’s bursting with ideas of what to do next. The main tool he has for this is his product backlog: a prioritized list of all those ideas. At the start of each sprint the most important ideas are chosen to be implemented. But what if, halfway down […]

Vacation user story, useful for sprint planning

While researching for a future blog post, I came across this nice quote that I felt like sharing. When you start a sprint, it’s very likely that one or more team members will be on holidays for part of it. How can you still reliably plan a sprint in those circumstances? Consider creating a vacation […]

Creating the hnDependencyInjectionPlugin

On Thursday 28th of August the hnDependencyInjectionPlugin was released on GitHub and packagist. Unfortunately I’ve been too busy to write this blog post about it since. When I got an e-mail yesterday about a new stargazer*, I decided it was time to blog about creating the hnDependencyInjectionPlugin. So, what does this plugin do? It’s a […]

Introducing dependency injection into existing systems

A while ago I was faced with an interesting challenge: I was busy introducing dependency injection into an existing system. Almost every method call inside this system was a static call, so every class was hard coded to their dependencies. But, I might be going a little bit too fast here. What is dependency injection? […]

Keeping software releasable

A true software engineer wants to be able to release at any time with any application. An unexpected problem can require a hotfix, so you want to be ready for it. When maintaining more then ten, twenty or maybe even thirty applications, this becomes a problem. What is a good strategy for keeping software releasable? […]