Creating a deployment pipeline using TeamCity and Octopus Deploy

Nowadays it is essential to be able to deploy to production in a reasonably short amount of time and in an automated manner. In this post, I want to summarize my experience with creating deployment pipelines and I will try to provide as many details as possible, despite the broad topic. I will focus on two concrete tools I have used in the past years – TeamCity and Octopus Deploy, which have helped me create automated deployment pipelines.

Continue Reading…

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…

Why it is important to go live a.s.a.p.

At the last sprint retrospective meeting some of my colleagues raised the following concern: “We are going live with a version that is far behind our vision to deliver good service for our customers.” We are now working on a big project and soon the first version will be released. However, as the project is indeed very big, we have decided to go live with a very limited feature set. Is this a problem? Continue Reading…

First steps to Agile

Shifting from traditional waterfall model to agile is a long process that if not mentored adequately could lead to negative consequences for the whole team (and even the organization). I have always been part of a purely production team where we have been applying SCRUM. However, my recent experience includes being part of a more diverse team, where the members have very different background – IT, business processes, marketing & communication, law, etc. We all have the same goal: to change the organization we work in by making it more flexible (to changes in the surrounding world) and independent. Continue Reading…