Getting real about reuse

Software reuse is very alluring – we can leverage common assets across products, improve quality, reduce development and testing time, and accelerate productivity for our teams. Sounds right and most of us in software want to do this.

A worthy goal? Yes, of course! An easy one? hell no!  You must be thinking…yeah, right…the systems, services, and components i interact with resembles…

cables1

Anyone who has spent time building software in an organization will tell you that achieving software reuse is extremely challenging. Large scale, systematic reuse is even harder in an organization. As a developer, I have always struggled with reuse – with deadlines to meet and functionality to deliver it was impossible to keep even code reuse in mind. Being a team lead made this predicament only worse – now I have to meet sponsor needs, deliver the features, and manage the development team to ensure we were on track with the project. Reuse, what reuse? forget about it!

Going through several projects and being part of very productive teams I have come to realize that software reuse is a indeed a viable idea. That isn’t to say it is easy but it is doable if we get some key things right.  There are several ways to botch software reuse -that is the easy part! – but, I believe the following are essential for success:

  • Learn what your business stakeholders are trying to achieve – understand their vision, their priorities, and constraints and work on a reuse strategy aligned with that vision.
  • Work on several pilot projects, build steady momentum, and encourage word of mouth marketing for reuse. Never formally advertise a deparment-wide or firm-wide reuse initiative – this is a sure recipe for failure!
  • Realize that the common impediments to achieving large scale software reuse have nothing to do with technology
  • Put an extremely lightweight process for ensuring projects leverage your firm’s existing software assets
  • Collaborate, partner, and evangelize the benefits of reuse not just to developers – it is an absolute must to sell reuse to your management, business sponsors, and technical support staff as well
  • Understand the multiple levels of granularity with software assets. Software reuse isn’t only about cut-and-paste code reuse!
  • Build a network – this coud be across distributed teams or within your deparment – of fellow evangelists who buy the vision, understand the chanllenges, the benefits, and most importantly will allow you to scale your success over time.

Now, none of this is straight forward. However, without these foundational building blocks it will be extremely difficult to achieve traction with software reuse. Many reuse initiatives fail to go beyond a single project, vaporizing without a trace.  In the coming days, I will expand on each of these concepts.

What about your experience? How easy or difficult has it been for you to achieve reuse?

Like this post? Subscribe to RSS feed or get blog updates via email.

About these ads

3 Responses to Getting real about reuse

  1. Jing says:

    It’s not extremely hard to write reusable code, if it’s designed well (and if there were enough time budgeted for design). What I find more challenging is establishing a process for publishing and discovering reusable code. “Resuable code” here, meaning components built and packaged for reuse, not just copy-and-paste. Proper documentation comes to mind, but with tight schedules and ever-changing requirements, documentation is often the last on the priority list, and sometimes forgotten altogether.

  2. vijaynarayanan says:

    Jing, you are absolutely right about discovering reusable code. I actually think you will get more bang for your buck with black box reuse – where you discover assets that you cannot modify but can reuse. Discovery of existing assets is key and to facilitate it there are hooks we can place in certain points in the development process – more to come on this in an upcoming post.

  3. [...] I have been communicating in this blog. Agility and refactoring are your friends with reuse. Take a very pragmatic approach to the reuse effort and you will increase the odds of success considerably. The strategy that I have successfully used [...]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: