5 things preventing your organization from becoming agile

Organizations are living organisms – people inside are connected by an established culture and they all move the organization together. Trying to influence this established culture is a difficult undertaking. In the last couple of years, I have been working in organizations, each being at different level of becoming agile and adopting Agile mindset:

  • such, implementing successfully Agile mindset & practices;
  • such, being successful in being agile until another culture interferes;
  • such, using waterfall model and believing the world is almost static and changes slowly.

In this post I have collected some patterns I have seen (both from my own experience and from others) that cause troubles to organization trying to become agile. I don’t claim this is an exhaustive list, but rather want to share what I have seen most often happen in such organizations. Here I assume the management has bought the idea of implementing Agile practices and work in that direction, because if there is no support, all initiatives would die early. You are very welcome to share your experience in the comments below; I will be happy to see that. Continue Reading…

Ode to versioning

Unless you keep your programs only for yourself, you would want to give them a version. Versioning is a popular technique where a unique version number is assigned to a program to denote a specific state of the code of that program at a specific time. A version number is used as a reference to what the program, as a deliverable, includes in terms of functionality. This reference is expressed in words that your users would understand. Furthermore, if your users experience a problem, you could try to reproduce it on that same state of the code.

There are many versioning schemes that dictate how to generate new version numbers. When trying to implement continuous integration (and delivery), though, you may face some challenges. In this blog post I will try to explain some of these challenges and what options there are.

Continue Reading…

Load balancers can much more

Load balancing is a popular technique when you need to be able to serve thousands and more concurrent requests in a reliable manner. Load balancers distribute incoming network traffic across a group of backend servers (a.k.a. server pool or server farm) to increase throughput. Although many people associate load balancing primarily with the higher throughput, this technique can be used in other important scenarios as well.

Load balancing

Continue Reading…

Model binding in ASP.NET MVC can be fun

Model binding is a technique that allows you to map data to your controller actions in ASP.NET MVC. In the old days one would manually call Request["param"] to get the value of а parameter, but this could quickly become annoying as you get many parameters (f.x., via form POST). Model binding abstracts away this tedious activity and allows us to focus on designing our controllers. The process itself looks like this:

Model binding mechanism

A nice bonus is that we can map our models from any kind of request, for example a form POST or AJAX. Continue Reading…

The power of feature toggles

Many organizations employ a complex deployment process where every code change has to go through a series of different steps in order to reach the production environment. This is typically due to organizational rules, which require many people to approve the deployment. The result is a big package with many updates to the code that is supposed to be deployed at once. At deployment time the level of stress rises drastically, as there often are unexpected errors – missing configurations, misunderstandings in the team, or special (not well-tested) scenarios. Moreover, if the deployment fails, it needs to be rolled back, which could be a painful process.

Long deployments process

Continue Reading…