Posts Tagged ‘enterprise’

Why Would Anyone use Git in their Enterprise?

January 26th, 2012 by thinds

The secret’s out – AccuRev is releasing a seamless security and compliance related solution for the Git community called Kando on January 31st. To get a first look at Kando, register here for the webinar on 1/31/2012, at 1:00 PM EST.

You might be asking yourself, “Why in the world would a company focused on providing software development tools to enterprise organizations with mission-critical software development environments produce a solution for an open source version control tool?” I’ll tell you!

Git is increasing in popularity among developers working in small groups or collaborating on open source projects. It’s fast, flexible, and full of developer-friendly features. Git is a great tool for these smaller and more social types of development projects, and based on discussions about Git with customers, prospects, and analysts, it’s clear that there are more cases of enterprise organizations trying to use Git.

But poke around a few blogs, or read a few articles that discuss the use of Git in an enterprise environment, and I’m sorry, but you will uncover a few issues. As one article in BCW discussed, “Git is a version control system with an attitude of collaboration and sharing. There is practically no way you can enforce a specific pattern of access and sharing. If the people who’re using Git don’t want to follow your rules, the tool is not going to help you much.” Let’s be realistic – Linus didn’t originally design Git for use in an enterprise environment!

So, in which cases do enterprise organizations actually use Git?

1. Android Development

If you want to make changes to Android, you’re going to need Git. It’s unavoidable. This means any company creating mobile devices running on Android and working with Android source files has a real business need to use Git.

2. Linux Development

Same as with Android, if your company has a need to make changes to the the Linux kernel, you are going to need Git. Even if you don’t use Git when making those changes, you’ll eventually have to get them into Git.

3. Working with 3rd Party Vendors or Outsourced Teams Using Git

Similar to the Android and Linux situation, if you’re working with 3rd party vendors or outsourced teams who require that you merge your changes into their Git repository, you may be forced to use scripts or bridges to get your changes from your SCM into Git or vice versa, and that’s not a small task.

4. All of Your Developers Love Git

Let’s face it – Git has a cult-like following in the development community. Developers love Git because it’s fast, distributed, flexible, fairly easy to learn, and has a ton of developer-friendly features. It’s developed by developers for developers. Even if you understand the issues Git has with scaling in enterprise environments, it’s difficult to avoid Git when lots of your developers are pushing you to switch.

 

Real World Agile and the Need to Support Hybrid Processes

June 2nd, 2010 by Bob DeMaria

When we think of hybrids, we generally think about cars and going green.  There are also a handful of other hybrids that come to mind, hybrid bicycles, hybrid golf clubs, and even hybrid dogs (this was a new one to me…).  In general, hybrids are the union of two similar functions that have a different focus combined to do one thing really well, meant to give you flexibility and adaptability without sacrificing quality.  Let’s take a hybrid golf club for example; it’s a combination between a fairway wood and a long iron. It gives you the ability to hit a golf ball long distances with pinpoint accuracy, and often from a tough lie.  The best of both worlds.

So how does this apply to adopting Agile across the enterprise?

Real World Agile as a Hybrid Process

Well, let’s say that we’ve already gone through and had a successful Pilot Team, and now we’ve started to scale Agile across the enterprise.  As this process begins to take shape any large organization will likely have a mixture of teams; some that already adopted Agile, some that may be in the process of migrating to Agile, and others still running a more traditional (waterfall) approach to software development. You may also find organizations that will always have a need to use the traditional approach. Many of the Agile purists out there may not agree, but there will likely always be projects or products that people feel are not a good fit for this methodology. Having these two processes coexist seamlessly in your development organization would fit the definition of a “Hybrid.”

With that in mind, the ability to support a Hybrid Process, or a term we’ve used lately – Real World Agile, is extremely important to being successful at your Agile implementation. We see this impacting three areas of your Agile adoption:

  • Support ongoing waterfall development alongside Agile development
  • Support transitioning to Agile as adoption spreads across your enterprise
  • Support changes to your Agile methodology as you inspect and adapt

So let’s talk about each one of these in a bit more detail.

Supporting two different development methodologies requires the ability to enforce a structured, traditional, waterfall approach while also being able to adapt to a more dynamic Agile approach.  In order to deliver a single product, this requires parallel support for the methodologies of both teams. Facilitating the integration of stories from the Agile team and integrating that with the code from the traditional team are necessary for this delivery. You must also be able support the tools that support both of those methodologies; for example a newly implemented Agile project management tool and an in-house issue tracking system, coexisting in this heterogeneous environment.

To aid in the transition to Agile, we also need flexibility to migrate a traditional development team and their traditional process to an Agile development methodology cleanly, quickly and easily. Taking them off a very restrictive branch and label-based tool, which might put constraints on how they are implementing your process is going to impact and impede that adoption from an Agile methodology perspective.

Lastly, we’ll need an ability to support a variety of processes with multiple development staging areas to accommodate work-in-process, code reviews, testing, and accepted work of the Agile team. Each one of these staging areas will need continuous integration functionality, one of the practices adopted very early in the migration to Agile. And as we know from one of the key Agile principles, inspect & adapt, we need to be able to change this process as we decide what works and what doesn’t work during our retrospectives.

Support for all three of these process variations will not only determine how easy or how difficult your migration to Agile goes, it may very well determine the success of your Agile adoption across the enterprise. And as the use of Agile methodologies continue to expand throughout the industry, the need to support a hybrid process inside organizations will become more prevalent. Without the proper principles, practices, and tools, the methodologies of Agile and waterfall will not coexist as seamlessly as the functionality of my #4 Hybrid club. Fore!

Benefits of Agile Development for Your Enterprise

April 13th, 2010 by AccuRev

Due to the promise of large gains in quality, productivity, and market responsiveness, Agile software development has been making its way into the enterprise in recent years, but there have been plenty of bumps along the way.  Any change to the enterprise has hurdles to overcome, and successfully adopting Agile development requires change within the organization than we have seen in the development process over the past several decades.  For instance, as you transitioned from C++ to Java or .Net, did you find it necessary to make substantial changes to your org chart?  Most changes in the software development process have been either the result of technology changes, such as moving from C++ to Java or pure html to AJAX, or changes in architectural patterns such as the introduction of object-oriented programming and moving from client/server to SOA.

Enterprise Agile Development May Be the Answer

Sustainable and repeatable success with Agile requires the same sort of framework put in place with your traditional development projects across the enterprise.  The end-to-end traceability, progress and status roll-up, portfolio management, and inter-project coordination that you have with your traditional development projects will be just as critical on your Agile projects.  After all, Agile is not the goal, it is only the path to higher quality, greater and more rapidly delivered ROI, and increased customer satisfaction.
Not only will you need a framework that encompasses all of your Agile projects, you will also need a framework which can encompass all of your projects, regardless of methodology. Doing this is likely to require re-tooling, training, and integrating multiple tools across projects.

Agile in the Enterprise Requires Top to Bottom Involvement

Adopting Agile without understanding the principles and without creating a proper ecosystem for its survival, Agile may be destined to fail. I’ve visited far too many companies whose first attempt at adopting Agile failed because the extent of their investment was a single visit from an Agile coach. In these circumstances, few people are usually on board initially, and many skeptics exist because of an insufficient effort invested in preparing for success.
Adopting Agile development requires breaking down mental barriers and building up new skill sets. There is nothing particularly hard about actually implementing any of the specific Agile practices, but many of them are counterintuitive and do take a bit of practice to get used to. Don’t underestimate the amount of effort required; it is at least on the same order of magnitude as taking a team very used to writing in C++ and moving to Java. There’s nothing particularly difficult about such a transition, but there are many subtleties which must be learned and it takes some time to build up the same base of experience.
Committing to the effort required and funding the necessary training, coaching, and retooling requires involvement from the top of the engineering organization all the way to the folks in the trenches.

Your Enterprise is Optimized for Traditional Development

Actually doing Agile development is relatively straightforward, much as going 60 miles an hour is easy to do driving on an uncongested highway. As the original challenge of fast travel was a lack of cars, highways, and driver education, the main challenge with going Agile is creating the proper environment for Agile to take root and expand.

Over the years, your enterprise has done everything it can to provide the proper environment for traditional development to thrive. But what is considered fertile ground for one crop can be a difficult environment for another crop. Consider how all of the following have been tweaked over the years to optimize for traditional development. I’m sure you can think of more.

• Where people are physically located

• The reporting structure (silos)

• Your software development tools

• Homegrown tooling and scripting

• Metrics and reports

• The budgeting process

• Skill sets, training, work habits

• Process documentation

• Fixed bid contracts

Each of these are like the rumble strips on the highway, reinforcing the form and function of traditional development. The form and function of Agile development is very different. Instead of helping, the infrastructure that is currently in place to reinforce and optimize traditional development very often discourages effective Agile adoption.  Consider the simple example of budgeting.  If budgeting is currently based on the cost of features promised for the fiscal year and governance that rewards the delivery of those exact features and punishes variances, that will not only reduce the chances of a successful Agile adoption, it will also significantly reduce the potential benefits of Agile.

Agile in the Enterprise Requires a Hybrid Approach

A full top-to-bottom transformation to Agile development will likely result in significant changes to the organizational reporting structure, physically moving people from one location to another or even rearranging their workspaces (whether it is down the hall or across continents), and changing the interaction between people at all levels, from customers and product management all the way to developers and the folks in operations. For most enterprises, a change of this magnitude can’t (or won’t) happen overnight. For most people, a hybrid environment will be part of their experience for many years. And of course, there may be some projects that you have no intention of moving to Agile.

Partnering With AccuRev to Bring Agile into Your Enterprise

The process of each of our customers is different, ranging from small collocated shops to large distributed organizations with locations across the globe, from Agile eXtreme programming to CMMI level 5 waterfall. We understand a wide range of methodologies and how they interface.

At AccuRev, our core expertise is process improvement. Adopting Agile in the Enterprise is all about process improvement. That’s why we’re excited about our new offering, AgileCycle, which has everything you need to go from where you are to where you want to be. With AgileCycle, you don’t need to worry about doing a big-bang transformation. We’ve got the expertise, coaches, trainers, consultants, and of course the tools that will allow you to transition to Agile at your own pace while smoothly integrating Agile, iterative, and Waterfall methodologies and your existing tools across your enterprise.