Continuous integration software engineering




















Pull requests are a critical practice to effective CI. A pull request is created when a developer is ready to merge new code into the main codebase. The pull request notifies other developers of the new set of changes that are ready for integration. Pull requests are an opportune time to kick off the CI pipeline and run the set of automated approval steps.

An additional, manual approval step is commonly added at pull request time, during which a non-stakeholder engineer performs a code review of the feature..

This allows for a fresh set of eyes to review the new code and functionality. The non-stakeholder will make edit suggestions and approve or deny the pull request. Pull requests and code review are a powerful tool to foster passive communication and knowledge share among an engineering team. This helps guard against technical debt in the form of knowledge silos, where specific engineers are the only stakeholders for certain features of a code base.

Given that the CI pipeline is going to be a central and frequently used process, it is important to optimize its execution speed. Any small delay in the CI workflow will compound exponentially as the rate of feature releases, team size, and codebase size grows. It is a best practice to measure the CI pipeline speed and optimize as necessary. A faster CI pipeline enables a faster product feedback loop.

Developers can rapidly push changes and experiment with new feature ideas to help improve the user experience. Any bug fixes can be quickly patched and resolved as discovered. This increased execution speed can offer both an advantage over other competitors and an overall higher-quality experience to your customers.

The absence of a VCS should be very unlikely on modern codebases. Once version control is in place, finding a version control hosting platform is the next move. Most modern version control hosting tools have support and features built in for CI. Some popular version control hosting platforms are Bitbucket , Github , and Gitlab.

After version control has been established on the project, integration approval steps should be added. The most valuable integration approval step to have in place is automated tests.

Adding automated tests to a project can have an initial cost overhead. A testing framework has to be installed, then test code and test cases must be written by developers. Some ideas for other, less expensive CI approval mechanisms to add are syntax checkers, code style formatters, or dependency vulnerability scans. CI is not purely an engineering specific business process. The rest of the organization, marketing, sales, and product teams will also benefit from a CI pipeline. Product teams will need to think how to parallelize execution of simultaneous streams of development.

Product and engineering will work closely to determine the qualifying business functionality expectations that will make up the automated test suite. Marketing and sales will be able to reference the CI pipeline to coordinate with customer facing communications efforts and events. CI gives a level of transparency to the rest of the organization on how engineering execution is progressing. This transparency and communication utility integrates gracefully with an agile project development workflow.

If your organization strives to reap the benefits of a DevOps approach or simply has a multiple-developer software team, CI is important. It will help your engineering organization execute quicker and more effectively. CI is a standard fixture of modern high efficiency software development organizations.

The benefits of CI are not limited to the engineering team and applicable to the whole organization. Many third-party tools exist to aid in CI management and installation. These tools have their own in-depth setup guides and documentation to help get started.

Some of the best CI tools are provided by Atlassian. Bitbucket pipelines and Bamboo are great utilities to bring a project up to speed with modern CI features. Jira is one of the world's most popular agile and DevOps project management tools. Jira tightly integrates with other Bitbucket projects and when coupled with a CI pipeline, can give a very transparent view into the execution health of an organization.

Close View this page in your language? All languages Choose your language. What is Continuous Integration? Build your team's agility with faster feedback. Because you only move as fast as your tests. The cookie is used to store the user consent for the cookies in the category "Analytics". The cookie is used to store the user consent for the cookies in the category "Other. The cookies is used to store the user consent for the cookies in the category "Necessary". The cookie is used to store the user consent for the cookies in the category "Performance".

It does not store any personal data. Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features. Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors. Analytical cookies are used to understand how visitors interact with the website.

These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc. Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads. Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.

Clear explanations and actionable guidance SAFe Distilled 5. Neither images nor text can be copied from this site without the express written permission of the copyright holder. Please visit Permissions FAQs and contact us for permissions.

Author Inbar Oren -. We use cookies to analyze website performance and visitor data, deliver personalized content, and enhance your experience on the site. Cookie Policy. By clicking Accept you consent to the use of all cookies. Otherwise click Adjust Cookie Settings. Adjust Cookie Settings Accept.

Manage consent. Close Privacy Overview This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website.

We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. We use metrics that work for our teams, and organization. Metrics that are visible to everyone so that we know confidently that we're working on the most impactful thing for our customers.

Our goals are all connected, and they're visible for everyone. It means we're confident, we're doing the right thing, and that it's aligned with our strategy. Everyone on our team contributes and leads, which helps us thrive in times of ambiguity and change.

We make incremental changes for our teams and for our customers to continuously improve. Ultimately, all of those are about handling change with confidence and delivering value continuously. From all these ideas that I've shared with you, pick what works for your team, and use it to help your teams become confident. Lead them towards being a team that delivers value confidently and continuously.

If you're looking to learn more about the metrics that I mentioned, and other data backed benchmarks for delivery teams, we have our state of software delivery report on our website as well. Shoup: As you start to introduce KPIs and SLOs, how do you make sure that people feel confident in their failure and not get too risk averse? Reinhard: I think that there's a lot that goes into that. I would want to tackle two parts here.

I think where the one is about which metrics you set and also how you introduce them. The other is then setting the right environment for people to be comfortable with failure.

I think they can't be separated. I think the first part is really, go slowly. I've mentioned a couple times like building your way towards metrics that work. I don't think it's helpful to overload a team with several metrics that they have to observe all at once. Introducing those things slowly, incrementing your way towards what you actually want can be really helpful, because it also helps people get comfortable with this.

Because, ultimately, it's a culture change. It's a very different way of looking how teams operate. That just takes time. The other is also, making sure you're not setting the wrong incentives. I've in many cases seen that you basically need at least two metrics in order to balance and get to the impact that you actually want to have.

Let's just say you would measure a team on the customer impact that they're having. At the same time, you want to make sure that they're not neglecting technical investments, because you need those two for scalability and for actually supporting more customers. In those cases, you would probably want to actually have both, because you want to make sure that there's a good balance. Thinking about, what's the outcome that you actually want and the impact that you want the team to have?

What are the best metrics to get there that help drive the right behaviors in people, and not set the wrong incentives. Then the other part is really the comfort with failure. I think that one's a really tough one, because it's often really hard to measure why people may be uncomfortable with.

I think digging into it with the team and having some open conversations about that can be one start. The other factor, I'd say, is definitely looking into how does your leadership team talk about failure? How are issues being addressed? How is criticism being voiced? How are the public discussions that are happening in chats, or in larger meetings, around when things go wrong? What are leadership reactions? There's a lot that can go between the lines.

I think asking people what their impressions are can be a big factor. Then, in combination with the right metrics, you'll have a good foundation, at least. The last point I'd say on the comfort with failure is, do you actually have an environment where you can learn? Because the failure is ok, if people understand that it's an opportunity to learn. In order for that to be true, you have to have an environment where that learning is the focus and not the failure.

If you're getting too focused on the KPIs, it can easily become not about the learning anymore, but with an over-focus on failures, basically. Looking at how can you use the KPIs that you're introducing for the team as a means to help with the learning for the team as well? Shoup: Iterating on the metrics, the countervailing or balancing metrics, or the so important, and making sure you set the right incentives, everything is so good.

What happens when teams don't want ownership? Then there was another person that asked about, this DevOps stuff, but I don't want to be on-call, or team X doesn't want to on-call.

Reinhard: This is so interesting, because DevOps transformation and culture, I think, has often gotten slightly reduced in some conversations. I love the nuance that is going on in the conversation that everyone's having now as part of this track. I do think understanding that sometimes people are concerned about the complexity or about all the things that may change as part of it is really, I think, foundational, and digging into just what's going on.

Obviously, I don't know the teams that this person was talking about, as I can only ask some questions, but things like, what's concerning people. Are the systems set up in a way where if they were to move on-call, they'd probably get paged every night? What's the risk that comes with moving to a different approach like this? Are people concerned about the change or are they concerned about probably having to own more than they might be able to?

What's the context of the team boundaries? Is the area that the team owns quite large? Is there a huge responsibility? Do the teams actually have the right staff for that? In those kinds of hesitations, I think there's a lot to learn about the organizational culture and how it can be improved.

Because, ultimately, I shared a lot of how we do things here in my team, but all of that was a learning as well. We had to increment our way towards it. A lot of that happens through learning from folks and digging into their impressions and addressing those things. Shoup: I would just also say, just from my own personal experience, the companies that we look at, where they're like, "Those guys are amazing at DevOps.

A lot of them started with the places where a lot of traditional organizations still are in terms of like a very classic Ops team is separate from development. Even the industry leaders, very much to your point, Lena, have iterated their way toward learning about how to do this. I love that framing of management is about complexity, and leadership is about ambiguity. Say more, because that's really neat. Reinhard: First of all, I think a lot for me has to do with the time horizons that you're looking at.

Management in a lot of ways to me is about the short term. It's about taking a piece of work, breaking it into smaller chunks, handling those. Making sure that there's pure scope, that there's deliverables to certain timelines, those kinds of things. It's a very execution focus test. I'm not saying that in any diminishing way, it's also really important work. It's very tactically focused. Whereas the leadership aspect has a lot to do with creating space for the uncertainty.

Thinking about the longer term. Setting direction, making sure people understand that direction. Having a vision that they're aligned against. Having different approaches for how you're handling those kinds of situations, or conversations about that longer term, depending on who you're talking to. Modifying leadership approaches, and then connecting people with all of that. In a lot of ways, I think it is opposites or dichotomies, because it means that in leadership there's no easy answers necessarily.

There's a lot of things that don't get resolved immediately. There's a lot that you're just collectively holding as a leadership team. I often tell my staff that it's part of our job just to collectively hold some ambiguity for the organization and still show we're still pushing our way forwards in it, and we're still working through it one week at a time, but there's a lot of things that we just can't answer.

That in itself, that ability to handle ambiguity, the ability to think about the longer term, the implications, the systems that are involved, that's something that I think everyone can develop.

I think it's not exclusive to leadership roles or management roles. I find that a really important part because the more people you have in the organization who possess those traits, who are able to think about that bigger picture, and about the strategic level, the more you'll be able to also move the organization forward.

Shoup: When I was running engineering at Stitch Fix, I participated in an internal training that they'd been doing, before I even joined, about leadership. I love this framing too, which is very analogous to what you're just saying, leadership is making something happen that otherwise wouldn't.

It's not dismissive to say, everybody's a leader. We expect everybody to make something happen that wouldn't otherwise. Reinhard: I love that because it also opens up this space, I think, where management is more reactive. There's this creative, in the literal sense, creating a component of leadership that really helps with all that.

That's a good way to put it. It's not fun to be in a job where you're just order taking, as opposed to like, "Here's a problem to solve. I'll help you. If you could elaborate more on your experiences with building a healthy culture, I think it would be very insightful.

Reinhard: Start with values. Think about what you actually want to drive towards. I love this definition of culture as the behaviors that we reward and punish. Culture is something that happens every day, and we create a set culture through any interaction that we have.

Being cognizant of that is a really good start. Then having values that you can align people on, that everyone shares, and that you can also use, again, to reward behaviors that you think contribute to the culture that you want ultimately, is another. I think a lot of the aspects that I covered in the talk around leadership, and the visibility, accountability, basically, everything that's part of this VALUE acronym, all of those things are ultimately driving culture.

Because they set a standard around transparency, a standard around ownership. They foster a certain leadership approach. All of those things contribute to culture in themselves. I think culture happens with every interaction, basically, keep that in mind.

Then start with what you want to drive towards. Shoup: Can you share any situation where you had to impact culture change across teams and divisions? How did you go about that? How do you deal with things that cross organizational boundaries, like stuff that you need to do? Reinhard: It depends. There was this model of impact, influence, and soup. Looking at which areas you can actually change yourself versus which parts you may be able to influence which are just completely outside of your control.

I think a lot depends on the culture change you're driving towards. If you're looking to introduce DevOps culture in an organization that doesn't have any of it so far, my recommendation probably is, start small, show impact. In a lot of ways that is a really smart approach, because you can demonstrate that you're able to do things and they're impacting things in the positive. If it's about other types of culture change of how teams operate, or things like that, partnerships, relationships are often a really good foundation.

A lot can also be used with metrics where you set metrics for how you expect to partner, what turnaround times look like, or things like that. It's a squishy topic. I think visibility in all cases is a really important part because it means you're showing impact. You're communicating what expectations are, and how teams are doing.

That helps. See more presentations with transcripts. Lena Reinhard. Watch Now! You need to Register an InfoQ account or Login or login to post comments. But there's so much more behind being registered. Like Bookmarks. View Presentation Vertical Horizontal Full. Speed: 1x 1. Download Slides. Summary Lena Reinhard discusses how to create a culture of visibility and accountability, practical tips for leading to effectively set goals, and CI-based leadership frameworks that create faster feedback loops.



0コメント

  • 1000 / 1000