The nightmare world of Agile we created

If you’re reading this, you’ve probably noticed that many software development teams got stuck in a swamp of “agile” tools, useless processes and bloated frameworks. In their search for higher productivity, they forgot the importance of real human interaction and technical excellence. Corporate managers and employees are conservative and avoid experiments if they can. This…
Read more

Quick and easy guide for migrating to Go 1.11 modules

Dependency management traditionally has been one of the weak spots of Go. Knowing that Google internally is using a monorepo, this didn’t seem much of a surprise. Various techniques like using a vendor directory and tools like dep evolved to solve the issue. Go 1.11 finally comes with (experimental) module support and the good news…
Read more

Hire the best: My amazing experience with McKinsey, Amazon & Co

Since I’m not going to church, I need to write things down in my blog to let go. Probably every freelancer knows this: You’re being contacted by recruiters that want to sell you a permanent position at their amazing company. So, how amazing can it be? Let’s see. First of all some facts. As a freelancer…
Read more

Hosted continuous integration services for PHP

Today, I’ve been evaluating popular hosted CI services to see how well they’re working with PHP and how much they cost. drone.io https://drone.io/ drone.io is free for Open Source projects (one concurrent build). Paid plans for private repositories start at 25 $ / month. Builds are configured on the Web site. PHP support is marked…
Read more

Why less mocking can improve everyone’s testing experience

There’s some confusion in the community concerning the use of mocks for unit testing. Mocking is creating objects that simulate the behaviour of real objects. I personally don’t mock class dependencies by default but use real objects and test doubles via dependency injection. Despite the success of this approach, many developers are still plagued by concerns that the…
Read more

Form Validation vs Model Validation

This is a follow-up on Why I’m using a separate layer for input data validation that explains the key differences between client-side, input value (form) and model validation. In general, model validation operates on trusted data (internal system state) and should ideally be repeatable at any point in time while input validation explicitly operates once on…
Read more

Why I’m using a separate layer for input data validation

While some developers seem to prefer to implement their user data validation rules directly in the model layer (or even worse, the ORM entity layer), this very often leads to problems as described by Stefan Priebsch in his blog post on How to Validate Data. In addition to the many issues he mentioned, you should consider the following…
Read more

Dependent Symfony 2 Bundles and Testability

I just stumbled upon a question concerning Symfony 2 bundles and testability that I want to share with you. When developing with Symfony, beginners tend to use lots of existing bundles, because this seems to be the recommend way of building an application. Later, they wonder, why it’s so hard to write unit and component tests or they write functional…
Read more