Posts

Stop Talking About Continuous Integration

There. I have said it. This is the elephant in the room. For years, we as Dev Ops professionals, and as an industry have been talking about how to up our game using Continuous Integration.  We talk about our Software Development Life Cycle (SDLC) or how we need to improve our QA Processes and deliver faster and with higher quality. We start implementing Continuous Integration and we try to implement Continuous Delivery and or Deployment. And you know what happens? We fail to do it the way others did. There are some examples that we try to wedge ourselves into. We try hard to mimic what others have done. And so we fail over time. Some of us, we get to where we want to be, but others...yeah...let's not talk about it! So what should we be doing? We should be talking about Continuous Confidence. We should be talking about what processes and what things are we doing that will help us get better confidence in our product. What will give others better confidence in our product. When...

Not All CI Solutions Are Created Equal

Are there any of you out there who have attempted Continuous Integration, Delivery, or Deployment, and had it fail? Have you ever just given up because it was over complicating things? People were not happy? Believe it or not, this is very common. I have heard many stories where organizations have failed at implementing CI. So first and foremost I want to say: it's ok! We all recognize the value of what we get from doing CI, but in reality, in practice we need to be more practical and pragmatic in our approach. May I offer some counsel. Implement Countinuous Confidence This may seem strange at first, and probably expected since this blog is all about Continuous Confidence, but really, truly, this is he first step. Focus on your confidence points.  Generally, when I see failure in the CI world, it isn't the methodology, but rather the lack of confidence in the process that is causing the problem. Generally speaking, I see people wanting to implement CI in here organization becau...

Bottleneck Confidence

Have you ever wondered why we have QA? I know, that's a weird question. When we look at what QA does, we are really asking them to do something we haven't done for ourselves: we ask for their vote of confidence. Consider the situation we put them in. We ask QA to review our application and tell us if there are any issues with it. We don't necessarily always tell them what we changed. If we tell them what we changed, hey don't always know how to test it properly, so instead, our founded confidence in them becomes, what I call, Bottleneck Confidence. Bottleneck Confidence Bottleneck Confidence is really just that, confidence that is restricted and not complete. This means that our confidence is throttled and limited to what we truly can achieve. So the question becomes: why do we need QA? Well, if we continue asking them to work in the same vein, then, we don't need QA. If we ask them to fill a different role, and allow us to reach our full potential, then they ...

Confident Professionals

The biggest challenge in today's Continuous Integration culture, is separating areas of concern and letting departments be autonomous and independent. What We find most often is that a Development organization adopts Continuous Integrationa and then starts to push their product and manner of releasing to the IT department. We need to start letting the IT organization be the professionals they are. This allows confidence to build across the teams and solidifies the organization as a whole. So how do we do this? Communication Listen to your teams. We need to recognize that Continuous Integration deals with the codebase. It is a practice to continuously integrate people's work with each other via continuously building and testing code. Development is responsible for the code. DevOps is responsible for building the assets that will be deployed, to the standard that IT expects. IT gets to determine what type of artifact they require to maintain the performance of he system. If t...

Legacy Code: What to do About it

There are a lot of questions around legacy code. If we ask any developer who is new to the organization, they will most likely say: REFACTOR! Our first knee jerk reaction is to not touch the legacy code, so we kind of dismiss the new developer saying that. However, we should look more deeply at what they are saying. The Code is Messy Generally, when dealing with legacy code, it is messy! Let's face it, when we start writing code, we ignore certain design patterns for others because there isn't a need. Once we get large enough, something has to be done about it. We need to stay focussed. If we feel that we are assigning one senior developer to fix legacy code, while 50 others are still using it, we will,never fix the code. Continuous Confidence comes from looking at the code and feeling calm not erratic. The Code is Antiquated When we hear refactor, His might mean as well that the code doesn't follow today's standards. So how do we make it so? We need to refactor...

Quality in Testing not Quantity

One of the hardest parts of Continuous Confidence is understanding what brings confidence to our testing. We strive, at times, to find that proper level of confidence. Too often, we talk about Code Coverage. We want to make sure that we are touching everything, and it lifts our confidence, falsely, to the same level of as our code coverage. If we have 60% code coverage, then we have 60% confidence. The issue, however, is after a while, we start to realize, once we get bugs, that we aren't really that confident in our code and then we dismiss testing almost as a chore instead of a tool. So how do we get more confidence? Well, the answer is simple, the process a little more difficult: write quality tests. Area Coverage The first thing we need to do, is understand what we are testing. We should be considering Area Coverage instead of Code Coverage. Area Coverage looks at the areas of the application that have tests. There aren't a whole lot of tools out there that will help yo...

Unit Tests vs. Integration Tests vs. Selenium Tests

The hardest question to answer, it seems, is what kind of test should we be writing? Within the industry today, we have a preconceived notion that integration tests are the best. When we have conversations with developers about what needs to be tested they like to say: test all of it. When we are hesitant that we may have broken something we turn to an integration or selenium test to verify it. This is a problem. We need to truly understand the cost and the confidence that we gain at each level of test. There are many mantras that say we need more unit tests. But the question is why? Also the question is why do we always think in terms of integrations and seleniums? Confidence Over Time Martin Fowler, presented a great post on the Test Pyramid . In the post, he speaks about he need to having a balanced testing suite, and the trade-offs for each type. So the question still remains: which do we use? To answer this question, let's look at this from the perspective of the devel...