Git Switch Branch: Everything You Need to Know

990
CloudBees
CloudBees is the Enterprise Software Delivery Leader. We provide the leading DevOps solutions for large and compliance-first organizations. We enable developers to focus on delivering great software, while providing management with powerful risk mitigation, compliance and governance capabilities. You develop great software, we’ll take care of the rest!

The following is a guest blog post written by Carlos Schults.

Repositories in Git work in a fundamentally different way from most other tools. One of the most glaring examples of said differences is branching. In most other VCS tools, branching is this elaborate ceremony. They make a huge deal out of it, and developers just give up, preferring workflows that don’t rely on many branches.

In Git, the opposite is often true: branching is so cheap that most people do it a lot. People often get confused when trying to manage their branches. This post attempts to clear up some of that confusion by offering a guide on how to successfully git switch branch in an easy and safe way. Before we get there, though, we start with some basics, explaining what branches actually are in Git, how they work and how you create them.

Before wrapping up, we share a bonus tip, covering how to check out remote branches. Let’s get started!

How Do Git Branches Work?

How do branches work in Git? The first thing you need to know is that a repository in Git is made up of objects and references. The main types of objects in a Git repository are commits. References point to other references or to objects. The main types of references are—you’ve guessed it—branches.

Objects in Git are immutable. You can’t change a commit in any way or move its position in history. There are commands that appear to change things, but they actually create new commits. References, on the other hand, change a lot. For instance, when you create a new commit, the current branch reference is updated to point to it.

When you create a new branch, all that happens is that a new reference is created pointing to a commit. That’s why it’s so cheap and fast to create branches in Git. Speaking of which…

How Do I Create a New Branch?

We already have a whole post explaining how you can create a branch in Git, covering the four main ways to do that.

Here, we’ll just cover the easiest way to create a branch in Git, which is simply using the branch command from the current branch. Let’s see an example:

mkdir git-switch-demo # creating a folder
cd git-switch-demo
git init # initializing a repository
touch file1.txt # creating the first file
git add . # adding the file to the stage
git commit -m "Create first file" # commiting the file
touch file2.txt
git add .
git commit -m "Create second file"
touch file3.txt
git add .
git commit -m "Create third file"

In the example above, we’ve created a new repository and added three commits to it, creating a new file per commit. Here’s a visual representation of the current state of our repository:

To create a new branch from the current point, we just have to run git branch <branch-name>. I’ll call the branch “example” since I’m not feeling particularly creative:

git branch example

We’ve created a branch but haven’t switched to it yet. This is how our repo looks like now:

What if we added a new commit while still in the master branch? Would that impact the example branch? The answer is no. Execute the following commands:

echo "Another file" > file4.txt
git add .
git commit -m "Create fourth file"

In the next section, we’ll show how you can git switch branch, and then you’ll be able to see for yourself how that new branch doesn’t contain the fourth commit. For now, take a look at the visual representation of the current state of our repo:

How Do You Switch Branches?

For most of Git’s history, the checkout command was used for that. While you can still use it, version 2.23 of Git added the switch command (as well as the restore command) in an attempt to have more specific commands for some of the many tasks the checkout command is used for.

How Do I Use Git Checkout?

The older, more well-know way of switching branches in Git is by using the checkout command. Following our example, if we wanted to change to the “example” branch, we’d just have to run:

git checkout example

After executing the command, you should see a message saying that you’ve successfully switched to the example branch:

Now you’re in the new branch, that means you can add how many commits you want, knowing that the master branch won’t be impacted. The checkout command, followed by a branch name, updates the working tree and the index, and it updates the HEAD reference, pointing it to the branch you’ve just checked out. What if you had uncommitted changes at the moment of switching? Those would be kept to allow you to commit them to the new branch.

Git allows you to use the checkout command in different ways. For instance, an incredibly common scenario is to create a branch and immediately switch to it. In fact, I’d argue that creating a branch and not changing to it on the spot is the exception rather than the rule. So, Git offers us a shortcut. Instead of creating a branch and then checking it out, you can do it in one single step using the checkout command with the -b parameter.

So, doing this:

git checkout -b new

is equivalent to this:

git branch new
git checkout new

Checkout doesn’t work only with branches, though. You can also checkout commits directly. Why would you want to do so?

Well, taking a look at how the project was some amount of time ago is often useful, particularly for testing purposes. But there’s more. Checking out a commit puts your repository in a state called “detached HEAD” which allows you to create experimental changes, adding commits that you can then choose to keep or throw away.

What Is Git Switch?

For the most part of Git’s lifetime, the checkout command was the only one you’d use for switching branches. The problem is that this command also does other things, which can lead to confusion, especially among new users.

The 2.23.0 version of Git solves this by adding two new commands: switch and restore. The restore command isn’t relevant for us today. The switch command, on the other hand, is a new way to switch to branches.

The manual page for the command lists all of its many options. On its most basic form, you use it the same way as git checkout, only swapping the command’s name:

git switch example

If you want to go back to the previous branch, you can use a shortcut instead of its full name:

git switch -

What if you want to create a new branch and immediately switch to it? With checkout, we could use this shortcut:

git checkout -b <branch-name>

The new command also offers a shortcut, but in this case, we use the letter “C”:

git checkout -c <branch-name>

Is using the new command worth it? Well, I’ll probably keep using git checkout, as long as they don’t change it, mainly because of muscle memory. But when teaching Git to beginners? Then I’ll definitely use the switch command. It has a name that’s more closely related to the task it does and, therefore, it’s more memorable.

How Do I Switch to a Remote Branch?

Before wrapping up, we share a final tip: how to switch to remote branches?

For this example, we’re going to use an open-source project called Noda Time, which is an alternative date and time API for .NET. Start by cloning the repository:

git clone https://github.com/nodatime/nodatime.git

If everything worked fine, you should have a “nodatime” folder now. Enter the folder and run the following command:

git branch -a

The branch command lists the branches in your repository. The “-a” option means you want to see all branches, not only local ones. The result should look like this:

As you can see, we have only one local branch, which is the master branch. You can see, in red, all of the remote branches. So, let’s say you want to check out the branch called “slow-test.” How would you go about that?

Well, technically speaking, Git doesn’t allow you to work on other people’s branches. And that’s what remote branches are. What you actually do is to create a local “copy” of someone else’s branch to work on. So, let’s see how to do it.

When you create a branch, you can pass a commit or branch name as a parameter. So, in order to create a local branch from the remote “slow-test” branch, I’d just have to do:

git branch slow-test origin/slow-test

In the example, I’m using “slow-test” as the name for my local branch, but I could’ve really used any other valid name.

Alternatively, I could’ve used the checkout command with the -b option or the switch command with the -c option. So, the two following lines are equivalent to the line above:

git checkout -b slow-test origin/slow-test
git switch -c slow-test origin/slow-test

Finally, there’s an even easier way. I could’ve just used git checkout slow-test, and the result would have been the same. That works because when you try to check out a branch and Git doesn’t find a branch with that name, it tries to match it with a remote branch from one of your remotes. If it can successfully match it, things just work.

Git Branches: Use in Moderation

In this post, we’ve shown you how to switch branches in Git. But we went further than that: we’ve explained what branches are and how they work. Hopefully, by now, you’re more comfortable creating and using branches in Git.

Before we go, a final caveat: just because you can do something, it doesn’t mean you should. Sometimes people get so carried away with the ease of branching in Git they end up using workflows that rely on a number of long-lived branches, which makes their development process way too complex and error-prone and delays integration.

Thanks for reading, and until next time.

Carlos Schults is a .NET software developer with experience in both desktop and web development, and he’s now trying his hand at mobile. He has a passion for writing clean and concise code, and he’s interested in practices that help you improve app health, such as code review, automated testing, and continuous build.

CloudBees
CloudBees is the Enterprise Software Delivery Leader. We provide the leading DevOps solutions for large and compliance-first organizations. We enable developers to focus on delivering great software, while providing management with powerful risk mitigation, compliance and governance capabilities. You develop great software, we’ll take care of the rest!
Tools mentioned in article
Open jobs at CloudBees
Senior Development Support Engineer (...
USA
<p><strong data-stringify-type="bold">Our Customers Develop Software at the Speed of Ideas</strong></p> <p><span style="font-weight: 400;">CloudBees, the enterprise software delivery company, provides the industry’s leading DevOps technology platform. CloudBees enables developers to focus on what they do best: Build stuff that matters while providing peace of mind to management with powerful risk mitigation, compliance, and governance tools. Used by many of the Fortune 100, CloudBees is helping thousands of companies harness the power of continuous everything and gets them on the fastest path from a great idea, to great software, to amazing customer experiences, to being a business that changes lives.</span></p> <p><span style="font-weight: 400;">Backed by Matrix Partners, Lightspeed Venture Partners, Verizon Ventures, Delta-v Capital, Golub Capital, and Unusual Ventures, CloudBees was founded in 2010 by former JBoss CTO Sacha Labourey and an elite team of continuous integration, continuous delivery, and DevOps professionals.</span></p> <h2><span style="font-weight: 400;">Team description</span></h2> <p><span style="font-weight: 400;">CloudBees customers rely on our Support team to help them be successful in the use of our products. Our team is uniquely positioned to help sustain the company’s growth by providing a customer support experience that surpasses expectations. These positive customer experiences help drive annual renewals and business expansion. A successful Development Support Engineer (DSE) will use their skills and experience to accurately diagnose customer issues and get them resolved in a timely way, to the customer’s satisfaction. In addition, motivated individuals who want to contribute in other ways will have opportunities to work on our collection of internal tools that automate the diagnosis of issues, making the entire team more efficient by reducing manual work.</span></p> <p><span style="font-weight: 400;">A typical day in our Support team starts with a scrum meeting where we review open and unassigned cases and help each other with issues we’re stuck on. Working on active cases, we answer basic questions and also troubleshoot problems that range from the mundane to the fiendishly complicated (it helps if you enjoy a good challenge). We collaborate with each other throughout the day, via Slack or video calls. During down time, we build technical knowledge through training and tools development.</span></p> <p><span style="font-weight: 400;">CloudBees has been a remote-work-first company since it was founded, and the majority of the DSE team works remotely. The existing team has a mix of backgrounds including system administrators, developers, support engineers, and devops engineers. We strive to provide everyone on the team with interesting challenges, opportunities for personal and professional growth, and a positive work/life balance.</span></p> <h2><span style="font-weight: 400;">What You'll Do&nbsp;</span></h2> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Answer customer questions about product usage and best practices</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Diagnose complex technical issues and provide solutions or workarounds</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Communicate with customers through a ticketing system, with phone support sometimes required for complex or urgent issues</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Collaborate frequently with members of the Support and Engineering teams</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Contribute to documentation</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Contribute to internal software tools to automate diagnosis of customer issues</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Work a weekend on-call rotation every 4-8 weeks (daytime hours only)</span></li> </ul> <h2><span style="font-weight: 400;">What The Role Requires&nbsp;</span></h2> <p><span style="font-weight: 400;">A successful candidate will have:</span></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Basic Linux system administration knowledge</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Good communication skills (English language fluency required)</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">The ability to work independently</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">The ability to build knowledge of new technologies easily</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">A sense of empathy with our customers</span></li> </ul> <p><span style="font-weight: 400;">As previously mentioned, members of our team have a variety of past work experience, and each bring a different mix of skills to our team. The following are some examples of these skills, but by no means do we expect candidates to have all of them. If any of these fit with your experience, we would love to hear from you!</span></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">System administration knowledge, especially Linux, storage, and/or networking</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Good working knowledge of popular DevOps tools and services such as: Jenkins, Docker, Artifactory/Nexus, Kubernetes, git &amp; GitHub</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Knowledge of common enterprise environments &amp; technologies such as LDAP &amp; databases</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Knowledge of common web application architectures, SSL, REST API concepts, etc.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Understanding of Continuous Integration and Continuous Deployment concepts and practices</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience with cloud computing environments</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Programming experience, anything from shell scripting to Java development</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Open source community contributions, especially Jenkins</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Previous experience in customer-facing roles</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Computer Science / IT degree or equivalent work experience</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Certifications: Cloud computing providers, Kubernetes, etc.</span></li> </ul> <h2><span style="font-weight: 400;">What You'll Get&nbsp;</span></h2> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Gain experience working with and troubleshooting a variety of tools used widely in the tech industry</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Enhance your career by completing industry-recognized technical certifications</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Manage projects and initiatives within the team, contributing to team goals</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Potential future opportunities to grow into management, engineering, or other field roles</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Play a key role in maintaining and growing company revenue over time</span></li> </ul> <p><span style="font-weight: 400;">We have a culture of movers and shakers and are leading the way for everyone else with a vision to transform the industry. We are authentic in who we are. We believe in our abilities and strengths to change the world for the better. Being inclusive and working together is at the heart of everything we do. We are naturally curious. We ask the right questions, challenge what can be done differently and come up with intelligent solutions to the problems we find. If that’s you, get ready to bee impactful and join the hive.</span></p> <p>At CloudBees, we truly believe that the more diverse we are, the better we serve our customers. A global community like Jenkins demands a global focus from CloudBees. Organizations with greater diversity—gender, racial, ethnic, and global—are stronger partners to their customers. Whether by creating more innovative products, or better understanding our worldwide customers, or establishing a stronger cross-section of cultural leadership skills, diversity strengthens all aspects of the CloudBees organization.</p> <p>In the technology industry, diversity creates a competitive advantage. CloudBees customers demand technologies from us that solve their software development, and therefore their business problems, so that they can better serve their own customers. CloudBees attributes much of its success to its worldwide work force and commitment to global diversity, which opens our proprietary software to innovative ideas from anywhere. Along the way, we have witnessed firsthand how employees, partners, and customers with diverse perspectives and experiences contribute to creative problem solving and better solutions for our customers and their businesses.</p>
Associate Development Support Enginee...
USA
<p><span style="font-size: 12pt;"><strong>About CloudBees</strong></span></p> <p><span style="font-weight: 400; font-size: 12pt;">CloudBees provides the leading software delivery platform for enterprises, enabling them to continuously innovate, compete, and win in a world powered by the digital experience. Designed for the world's largest organizations with the most complex requirements, CloudBees enables software development organizations to deliver scalable, compliant, governed, and secure software from the code a developer writes to the people who use it. The platform connects with other best-of-breed tools, improves the developer experience, and enables organizations to bring digital innovation to life continuously, adapt quickly, and unlock business outcomes that create market leaders and disruptors.</span></p> <p><span style="font-size: 12pt;"><span style="font-weight: 400;">CloudBees was founded in 2010 and is backed by Goldman Sachs, Morgan Stanley, Bridgepoint Credit, HSBC, Golub Capital, Delta-v Capital, Matrix Partners, and Lightspeed Venture Partners. Visit </span><a href="http://www.cloudbees.com/"><span style="font-weight: 400;">www.cloudbees.com</span></a><span style="font-weight: 400;"> and follow us on </span><a href="https://twitter.com/CloudBees?s=20"><span style="font-weight: 400;">Twitter</span></a><span style="font-weight: 400;">, </span><a href="http://www.linkedin.com/company/cloudbees"><span style="font-weight: 400;">LinkedIn</span></a><span style="font-weight: 400;">, and </span><a href="https://www.facebook.com/CloudBees"><span style="font-weight: 400;">Facebook</span></a><span style="font-weight: 400;">.</span></span></p> <h2><span style="font-weight: 400; font-size: 12pt;">Team Description</span></h2> <p><span style="font-weight: 400; font-size: 12pt;">CloudBees customers rely on our Support team to help them be successful in the use of our products. Our team is uniquely positioned to help sustain the company’s growth by providing a customer support experience that surpasses expectations. These positive customer experiences help drive annual renewals and business expansion. A successful Development Support Engineer (DSE) will use their skills and experience to accurately diagnose customer issues and get them resolved in a timely way, to the customer’s satisfaction. In addition, motivated individuals who want to contribute in other ways will have opportunities to work on our collection of internal tools that automate the diagnosis of issues, making the entire team more efficient by reducing manual work.</span></p> <p><span style="font-weight: 400; font-size: 12pt;">A typical day in our Support team starts with a scrum meeting where we review open and unassigned cases and help each other with issues we’re stuck on. Working on active cases, we answer basic questions and also troubleshoot problems that range from the mundane to the fiendishly complicated (it helps if you enjoy a good challenge). We collaborate with each other throughout the day, via Slack or video calls. During down time, we build technical knowledge through training and tools development.</span></p> <p><span style="font-weight: 400; font-size: 12pt;">CloudBees has been a remote-work-first company since it was founded, and the majority of the DSE team works remotely. The existing team has a mix of backgrounds including system administrators, developers, support engineers, and devops engineers. We strive to provide everyone on the team with interesting challenges, opportunities for personal and professional growth, and a positive work/life balance.</span></p> <h2><span style="font-weight: 400; font-size: 12pt;">What You'll Do&nbsp;</span></h2> <ul> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Answer customer questions about product usage and best practices</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Diagnose complex technical issues and provide solutions or workarounds</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Communicate with customers through a ticketing system, with phone support sometimes required for complex or urgent issues</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Collaborate frequently with members of the Support and Engineering teams</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Contribute to documentation</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Contribute to internal software tools to automate diagnosis of customer issues</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Work a weekend on-call rotation every 4-8 weeks (daytime hours only)</span></li> </ul> <h2><span style="font-weight: 400; font-size: 12pt;">What The Role Requires&nbsp;</span></h2> <p><span style="font-weight: 400; font-size: 12pt;">A successful candidate will have:</span></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Basic Linux system administration knowledge</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Good communication skills (English language fluency required)</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">The ability to work independently</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">The ability to build knowledge of new technologies easily</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">A sense of empathy with our customers</span></li> </ul> <p><span style="font-weight: 400; font-size: 12pt;">As previously mentioned, members of our team have a variety of past work experience, and each bring a different mix of skills to our team. The following are some examples of these skills, but by no means do we expect candidates to have all of them. If any of these fit with your experience, we would love to hear from you!</span></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">System administration knowledge, especially Linux, storage, and/or networking</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Good working knowledge of popular DevOps tools and services such as: Jenkins, Docker, Artifactory/Nexus, Kubernetes, git &amp; GitHub</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Knowledge of common enterprise environments &amp; technologies such as LDAP &amp; databases</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Knowledge of common web application architectures, SSL, REST API concepts, etc.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Understanding of Continuous Integration and Continuous Deployment concepts and practices</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Experience with cloud computing environments</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Programming experience, anything from shell scripting to Java development</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Open source community contributions, especially Jenkins</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Previous experience in customer-facing roles</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Computer Science / IT degree or equivalent work experience</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Certifications: Cloud computing providers, Kubernetes, etc.</span></li> </ul> <h2><span style="font-weight: 400; font-size: 12pt;">What You'll Get&nbsp;</span></h2> <ul> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Gain experience working with and troubleshooting a variety of tools used widely in the tech industry</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Enhance your career by completing industry-recognized technical certifications</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Manage projects and initiatives within the team, contributing to team goals</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Potential future opportunities to grow into management, engineering, or other field roles</span></li> <li style="font-weight: 400;"><span style="font-weight: 400; font-size: 12pt;">Play a key role in maintaining and growing company revenue over time</span></li> </ul> <p><span style="font-weight: 400; font-size: 12pt;">At CloudBees, we truly believe that the more diverse we are, the better we serve our customers.&nbsp; A global community like Jenkins demands a global focus from CloudBees. Organizations with greater diversity—gender, racial, ethnic, and global—are stronger partners to their customers.&nbsp; Whether by creating more innovative products, or better understanding our worldwide customers, or establishing a stronger cross-section of cultural leadership skills, diversity strengthens all aspects of the CloudBees organization.</span></p> <p><span style="font-weight: 400; font-size: 12pt;">In the technology industry, diversity creates a competitive advantage.&nbsp; CloudBees customers demand technologies from us that solve their software development, and therefore their business problems, so that they can better serve their own customers.&nbsp; CloudBees attributes much of its success to its worldwide work force and commitment to global diversity, which opens our proprietary software to innovative ideas from anywhere. Along the way, we have witnessed firsthand how employees, partners, and customers with diverse perspectives and experiences contribute to creative problem solving and better solutions for our customers and their businesses.</span></p>
Principal Development Support Enginee...
- EMEA
<p><strong>About CloudBees</strong></p> <p><span style="font-weight: 400;">CloudBees provides the leading software delivery platform for enterprises, enabling them to continuously innovate, compete, and win in a world powered by the digital experience. Designed for the world's largest organizations with the most complex requirements, CloudBees enables software development organizations to deliver scalable, compliant, governed, and secure software from the code a developer writes to the people who use it. The platform connects with other best-of-breed tools, improves the developer experience, and enables organizations to bring digital innovation to life continuously, adapt quickly, and unlock business outcomes that create market leaders and disruptors.</span></p> <p><span style="font-weight: 400;">CloudBees was founded in 2010 and is backed by Goldman Sachs, Morgan Stanley, Bridgepoint Credit, HSBC, Golub Capital, Delta-v Capital, Matrix Partners, and Lightspeed Venture Partners. Visit </span><a href="http://www.cloudbees.com/"><span style="font-weight: 400;">www.cloudbees.com</span></a><span style="font-weight: 400;"> and follow us on </span><a href="https://twitter.com/CloudBees?s=20"><span style="font-weight: 400;">Twitter</span></a><span style="font-weight: 400;">, </span><a href="http://www.linkedin.com/company/cloudbees"><span style="font-weight: 400;">LinkedIn</span></a><span style="font-weight: 400;">, and </span><a href="https://www.facebook.com/CloudBees"><span style="font-weight: 400;">Facebook</span></a><span style="font-weight: 400;">.</span></p> <h2><span style="font-weight: 400;">Team description</span></h2> <p><span style="font-weight: 400;">CloudBees customers rely on our Support team to help them be successful in the use of our products. Our team is uniquely positioned to help sustain the company’s growth by providing a customer support experience that surpasses expectations. These positive customer experiences help drive annual renewals and business expansion. A successful Development Support Engineer (DSE) will use their skills and experience to accurately diagnose customer issues and get them resolved in a timely way, to the customer’s satisfaction. In addition, motivated individuals who want to contribute in other ways will have opportunities to work on our collection of internal tools that automate the diagnosis of issues, making the entire team more efficient by reducing manual work.</span></p> <p><span style="font-weight: 400;">A typical day in our Support team starts with a scrum meeting where we review open and unassigned cases and help each other with issues we’re stuck on. Working on active cases, we answer basic questions and also troubleshoot problems that range from the mundane to the fiendishly complicated (it helps if you enjoy a good challenge). We collaborate with each other throughout the day, via Slack or video calls. During down time, we build technical knowledge through training and tools development.</span></p> <p><span style="font-weight: 400;">CloudBees has been a remote-work-first company since it was founded, and the majority of the DSE team works remotely. The existing team has a mix of backgrounds including system administrators, developers, support engineers, and devops engineers. We strive to provide everyone on the team with interesting challenges, opportunities for personal and professional growth, and a positive work/life balance.</span></p> <h2><span style="font-weight: 400;">What You'll Do&nbsp;</span></h2> <ul> <li data-stringify-indent="0" data-stringify-border="0">Answer customer questions about product usage and best practices</li> <li data-stringify-indent="0" data-stringify-border="0">Diagnose complex technical issues and provide solutions or workarounds</li> <li data-stringify-indent="0" data-stringify-border="0">Communicate with customers through a ticketing system, with phone support sometimes required for complex or urgent issues</li> <li data-stringify-indent="0" data-stringify-border="0">Collaborate frequently with members of the Support and Engineering teams</li> <li data-stringify-indent="0" data-stringify-border="0">Contribute to documentation</li> <li data-stringify-indent="0" data-stringify-border="0">Contribute to internal software tools to automate diagnosis of customer issues</li> <li data-stringify-indent="0" data-stringify-border="0">Work a weekend on-call rotation every 4-8 weeks (daytime hours only)</li> <li data-stringify-indent="0" data-stringify-border="0">Works on large impact and unique issues</li> <li data-stringify-indent="0" data-stringify-border="0">Exercises independent judgment in methods, techniques and evaluation criteria for obtaining results</li> <li data-stringify-indent="0" data-stringify-border="0">Independently develops new diagnostic techniques for novel issues to be used by wider team and/or customer use.</li> <li data-stringify-indent="0" data-stringify-border="0">Designs and implements sophisticated tools or product features.</li> <li data-stringify-indent="0" data-stringify-border="0">Acts independently to determine methods and procedures on new or special assignments</li> <li data-stringify-indent="0" data-stringify-border="0">May supervise the activities of others</li> <li data-stringify-indent="0" data-stringify-border="0">Accountable for an outcome or performance for a team of people.</li> <li data-stringify-indent="0" data-stringify-border="0">Able to handle the most critical long running escalations with ease and drive them to completion</li> <li data-stringify-indent="0" data-stringify-border="0">Resolves business need through strategic planning</li> <li data-stringify-indent="0" data-stringify-border="0">Acts independently to determine methods and procedures on new or special assignments.</li> <li data-stringify-indent="0" data-stringify-border="0">Proactively identifies company-wide systemic issues.</li> <li data-stringify-indent="0" data-stringify-border="0">Regularly interacts with and relied upon by senior leadership team across the company, including Customer Success, Sales, Engineering and Product.</li> </ul> <h2><span style="font-weight: 400;">What The Role Requires&nbsp;</span></h2> <p><span style="font-weight: 400;">A successful candidate will have:</span></p> <ul> <li data-stringify-indent="0" data-stringify-border="0">Basic Linux system administration knowledge</li> <li data-stringify-indent="0" data-stringify-border="0">Highly professional communication skills with customers, many times including C-level. (English)</li> <li data-stringify-indent="0" data-stringify-border="0">Able to deal with negative experiences with C-suite or senior director customer participants.</li> <li data-stringify-indent="0" data-stringify-border="0">The ability to work independently</li> <li data-stringify-indent="0" data-stringify-border="0">The ability to build knowledge of new technologies easily</li> <li data-stringify-indent="0" data-stringify-border="0">A sense of empathy with our customers</li> <li data-stringify-indent="0" data-stringify-border="0">Minimum of 12 years of related experience</li> <li data-stringify-indent="0" data-stringify-border="0">Certified Kubernetes Administrator</li> </ul> <p><span style="font-weight: 400;">As previously mentioned, members of our team have a variety of past work experience, and each bring a different mix of skills to our team. The following are some examples of these skills, but by no means do we expect candidates to have all of them. If any of these fit with your experience, we would love to hear from you!</span></p> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">System administration knowledge, especially Linux, storage, and/or networking</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Good working knowledge of popular DevOps tools and services such as: Jenkins, Docker, Artifactory/Nexus, Kubernetes, git &amp; GitHub</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Knowledge of common enterprise environments &amp; technologies such as LDAP &amp; databases</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Knowledge of common web application architectures, SSL, REST API concepts, etc.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Understanding of Continuous Integration and Continuous Deployment concepts and practices</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience with cloud computing environments</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Programming experience, anything from shell scripting to Java development</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Open source community contributions, especially Jenkins</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Previous experience in customer-facing roles</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Computer Science / IT degree or equivalent work experience</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Certifications: Cloud computing providers, Kubernetes, etc.</span></li> </ul> <h2><span style="font-weight: 400;">What You'll Get&nbsp;</span></h2> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Gain experience working with and troubleshooting a variety of tools used widely in the tech industry</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Enhance your career by completing industry-recognized technical certifications</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Manage projects and initiatives within the team, contributing to team goals</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Potential future opportunities to grow into management, engineering, or other field roles</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Play a key role in maintaining and growing company revenue over time</span></li> </ul> <p><span style="font-weight: 400;">At CloudBees, we truly believe that the more diverse we are, the better we serve our customers.&nbsp; A global community like Jenkins demands a global focus from CloudBees. Organizations with greater diversity—gender, racial, ethnic, and global—are stronger partners to their customers.&nbsp; Whether by creating more innovative products, or better understanding our worldwide customers, or establishing a stronger cross-section of cultural leadership skills, diversity strengthens all aspects of the CloudBees organization.</span></p> <p><span style="font-weight: 400;">In the technology industry, diversity creates a competitive advantage.&nbsp; CloudBees customers demand technologies from us that solve their software development, and therefore their business problems, so that they can better serve their own customers.&nbsp; CloudBees attributes much of its success to its worldwide work force and commitment to global diversity, which opens our proprietary software to innovative ideas from anywhere. Along the way, we have witnessed firsthand how employees, partners, and customers with diverse perspectives and experiences contribute to creative problem solving and better solutions for our customers and their businesses.</span></p>
Sr Software Engineer (Backend / Java)
Spain
<h2><span style="font-weight: 400;">About CloudBees</span></h2> <p><span style="font-weight: 400;">CloudBees provides the leading software delivery platform for enterprises, enabling them to continuously innovate, compete, and win in a world powered by the digital experience. Designed for the world's largest organizations with the most complex requirements, CloudBees enables software development organizations to deliver scalable, compliant, governed, and secure software from the code a developer writes to the people who use it. The platform connects with other best-of-breed tools, improves the developer experience, and enables organizations to bring digital innovation to life continuously, adapt quickly, and unlock business outcomes that create market leaders and disruptors.</span></p> <p><span style="font-weight: 400;">CloudBees was founded in 2010 and is backed by Goldman Sachs, Morgan Stanley, Bridgepoint Credit, HSBC, Golub Capital, Delta-v Capital, Matrix Partners, and Lightspeed Venture Partners. Visit</span><a href="http://www.cloudbees.com/"><span style="font-weight: 400;"> </span><span style="font-weight: 400;">www.cloudbees.com</span></a><span style="font-weight: 400;"> and follow us on</span><a href="https://twitter.com/CloudBees?s=20"><span style="font-weight: 400;"> </span><span style="font-weight: 400;">Twitter</span></a><span style="font-weight: 400;">,</span><a href="http://www.linkedin.com/company/cloudbees"><span style="font-weight: 400;"> </span><span style="font-weight: 400;">LinkedIn</span></a><span style="font-weight: 400;">, and</span><a href="https://www.facebook.com/CloudBees"><span style="font-weight: 400;"> </span><span style="font-weight: 400;">Facebook</span></a></p> <h2><span style="font-weight: 400;">About the Role</span></h2> <p><span style="font-weight: 400;">Cloudbees, the leader in CI/CD (Continuous Integration and Delivery) and the company behind Jenkins, is seeking a Senior Software Engineer with a background in Java Microservices and experience in performance engineering, databases and Kubernetes, to join our industry leading </span><a href="https://www.cloudbees.com/products/cloudbees-flow/?utm_source=google&amp;gclid=EAIaIQobChMItov-2YiE5gIVOvfjBx2CaAlOEAAYASAAEgIiePD_BwE"><span style="font-weight: 400;">Cloudbees Software Delivery Automation</span></a><span style="font-weight: 400;"> team.</span></p> <h2><span style="font-weight: 400;">What You'll Do</span></h2> <p><span style="font-weight: 400;">You will collaborate with Product managers, UX designers, Backend engineers to design as well as implement UI software using React, write unit tests to automate the verification of their code, and provide mentorship to other team members via architecture, design and code reviews.</span></p> <p><span style="font-weight: 400;">The Cloudbees CD team places high value on software quality and you'll with Quality Engineers within the team to ensure that the software is tested end to end. The ideal candidate would be someone who is interested in learning varied technologies and be a quick learner.&nbsp;&nbsp;&nbsp;&nbsp;</span></p> <h2><span style="font-weight: 400;">Role Requirements</span></h2> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Deep knowledge of Core Java</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Proven experience with Spring and Hibernate frameworks</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience developing backend components, services or APIs in Java or a similar language</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Strong skills writing high-performance, multi-threaded, efficient and maintainable code</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience crafting and implementing highly scalable and performant microservices based applications</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Familiarity with HTTP, REST, HTML, JSON, and similar web-based development technologies, and with building complex multi-tier parallel distributed systems that communicate with them (such as the backend of complex websites)</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Knowledge of SQL and experience working with mainstream databases (one of MySQL, PostgreSQL, Oracle, MS SQL Server)</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience with building, maintaining and scaling large scale distributed systems.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">You can identify trade-offs to various implementations and can make decisions about which solution would be best for a given situation.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Understanding of SaaS, PaaS, IaaS industry with hands-on experience with public cloud offerings (e.g., AWS, GCP, Azure).</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Bachelor's or Master's degree in computer science is highly preferred</span></li> </ul> <h2 style="padding-left: 40px;"><span style="font-weight: 400;">Desirable</span></h2> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience using public (or private) cloud provider platforms like GCP, AWS or Azure, Kubernetes and Docker containers.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Knowledge of continuous integration/continuous delivery (CI/CD) is a plus.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Experience with analyzing thread safety and race conditions, parallelism, synchronization, and locking, including between threads, between machines in a cluster, and in the database, including optimistic and pessimistic locking.&nbsp;</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">SQL, object-relational mapping (e.g. using Hibernate), and basic DBA skills in Oracle and writing transactional code</span></li> </ul> <h2><span style="font-weight: 400;">Role Requirements</span></h2> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Be part of a 2 week sprint executing on the backlog&nbsp; in lockstep with other developers, writing code as part of an Agile team</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Work as an independent contributor collaborating with a team of developers and test engineers</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Collaborate with product management, support and engineering teams in order to establish priorities&nbsp;</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Mentoring Junior Developers &amp; code reviewing for a remote team setting best practices and policies, writing specs, wiki pages, Knowledge Base articles and other internal documentation</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Work closely with the Support team, and communicate with customer sysadmins, DBAs and developers for troubleshooting</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Provide technology recommendations and strategy to support CloudBees product requirements</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Collaborate with product management, support and engineering teams in order to establish priorities, understand requirements, formulate test plans and execute them accordingly.</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Ability to work with customers directly on urgent issues</span></li> </ul> <h2><span style="font-weight: 400;">What You'll Get</span></h2> <ul> <li style="font-weight: 400;"><span style="font-weight: 400;">Highly competitive benefits and vacation package</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Ability to work for one of the fastest growing companies with some of the most talented people in the industry</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Team outings</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Fun, Hardworking, and Casual Environment</span></li> <li style="font-weight: 400;"><span style="font-weight: 400;">Endless Growth Opportunities</span></li> </ul> <p><span style="font-weight: 400;">At CloudBees, we truly believe that the more diverse we are, the better we serve our customers.&nbsp; A global community like Jenkins demands a global focus from CloudBees. Organizations with greater diversity—gender, racial, ethnic, and global—are stronger partners to their customers.&nbsp; Whether by creating more innovative products, or better understanding our worldwide customers, or establishing a stronger cross-section of cultural leadership skills, diversity strengthens all aspects of the CloudBees organization.</span></p> <p><span style="font-weight: 400;">In the technology industry, diversity creates a competitive advantage.&nbsp; CloudBees customers demand technologies from us that solve their software development, and therefore their business problems, so that they can better serve their own customers.&nbsp; CloudBees attributes much of its success to its worldwide work force and commitment to global diversity, which opens our proprietary software to innovative ideas from anywhere. Along the way, we have witnessed firsthand how employees, partners, and customers with diverse perspectives and experiences contribute to creative problem solving and better solutions for our customers and their businesses.</span></p>
Verified by
Technical Evangelist
Dir Growth Marketing
You may also like