Open Source, The Enterprise and The Community

Open Source, The Enterprise and the communityRackspace has just announced their open source cloud platform, OpenStack in collaboration with NASA.

While the open source world has been a viable area for quite some time, there seems to be a lot of talk these days of open-sourcing many things. Google has opened up Android, the Department of Homeland Security has just announced an open source intrusion detection engine, and more organizations are embracing open source platforms while also complaining about open source software overload.

Welcome to the open source world…whether you want to be a part of it or not….open source is here to stay.

Open Source

Take a second to jump over and read the definition of Open Source as defined by the Open Source Initiative.     Lots of interesting stuff there: Access to source code. Redistribution rights. Technology-neutrality.  Integrity of original code.  Good stuff….if you can understand how to take advantage of it within the enterprise.

Open source has its roots in the ‘free software’ movement but the open source world of today is a far cry from that of the free software movement in the past.  No longer is the main argument for free software….its moved into a more pragmatic argument of making software development a more open environment.

The open source world is an amazing one…and its an environment that many CIO’s and IT departments have tried to stay away from. I think its time to change that.

Open Source & The Enterprise

In the past, many people have argued against Open Source in the enterprise.  Most of the arguments against the open source movement have been based around security concerns, support concerns and/or intellectual property issues.

While some of these concerns are valid, I think many organizations, CIO’s and IT departments have a pre-defined prejudice against the open source world. They see this world as nothing but a bunch of hackers giving things away for free.

Far from the truth….but even if it were the truth…what’s wrong with it?  If I were working within an organization that had resource constraints (budget, people, etc), I’d have to look for ways to be more effective with the resources I do have.

Take a second to step back and rethink the open source world. Think about the people. Think about the willingness to give. Think about the community that exists out there.  Think about the hundreds of people that are willing to give their time to develop a piece of functionality that could be beneficial to you.

Look at WordPress (also WordPress.com) as an example.  Its one of the largest blogging / content platforms in the world with over 25 million people using the software to power their blogs. Its also an open source project with hundreds of volunteers contributing to the code base to extend features and functionality. The WordPress platform is used by individuals (it powers this blog) and Fortune 500 companies to run their blogs and content platforms….its even used by the Boy Scouts of America‘s  to run the website for Boys’ Life magazine.

If you were looking for a content management platform and couldn’t spend tens or hundreds of thousands of dollars buying and implementing one, WordPress could be an ideal choice. So could other platforms like Drupal or Joomla among many others.

With these open source platforms, you’ve got thousands of people willing to give their time and effort to build more functionality (in the form of plugins and themes), most of which wouldn’t cost you a dime.  If you did want to add some specialized functionality to your platform, there are thousands (or more) WordPress developers out there who can do some amazing things for very little money (think thousands of dollars versus hundreds of thousands for closed-source platforms).

But…what if you’ve already got money sunk into another system?  What if you already have a fully built IT architecture based on Microsoft platforms….open source isn’t an option for you….or is it?

Open source is always an option….you’ve just got to change how you think about the open source approach.

Open Source, The Enterprise and The Community

Let’s say you are a .NET shop.  Your entire IT architecture is built with Microsoft systems.  You run windows as your web server, SQL Server for your database platforms, Sharepoint for collaboration and content management and you have zero interest in replacing any of these platforms.

When I talk about open source….you probably shrug your shoulders and say “not for us…we’re a .NET shop”.  Well…you’d be wrong. Look at Umbraco for example….its a .NET open source CMS platform.  Brilliant!

Open source isn’t implementing the LAMP (Linux, Apache, MySQL, PHP) stack…its an approach to your business.

You can still be a .NET shop and embrace the open source community.

So…now you argue that open source isn’t secure.   Bollocks I say! (I’ve been waiting 4 years to use that on my blog).

Open source can be as secure as you want it to be.   You define the entry- and exit-paths for open source software and data flow.  Perhaps you setup an API that allows non-sensitive data to flow in or out.  Perhaps you setup certain non-critical functions to allow open source software to be implemented.

There are lots of ways to argue against the “open source security” argument.  The biggest argument is that security is as security does….you make your systems secure today with closed-source software…the same can be done with open source software too.

Open source platforms & software can bring a lot of value to an organization…you’ve just go to be willing to open your mind to open source. An open source approach & mindset can help in many ways.  It can save you money…but it can also allow you to reach out to the community (either your internal community or an external community) for help.

The open source community could be a lifeline for non-profits and community groups.  Imagine what an organization like the Red Cross, the Boy Scouts of America or The United Way could do if they embraced the open source movement and then embraced their community for help?

What about a for-profit company?  Can you still ’embrace your community”?  Maybe…maybe not.  You’ll have to figure out if you have a community first…but that shouldn’t stop you from embracing the open source community as a whole.

There are a lot of smart folks out there just itching to solve a new challenge…reach out and find them…you’d be surprised just how much you can do when you open not only your IT platforms but also your mind.

The open source approach is much more than a philosophical approach to software / hardware /IT….its an approach that allows you to embrace your community to help you move forward.  You’ve already started embracing the community on the marketing side of the house to help ‘spread the word’….why not use that new-found good will and ask for help on the technical side of the house?

Join me next week for more on how non-profits can embrace their community (more specifically how one non-profit has not embraced theirs).

Agile Project Management and Product Strategy – A Case Study

Due to the length of this post, I’ve created a PDF version for those that would like to download it and/or print it out. Click here for the PDF version of Agile Project Management & Product Strategy.

Over lunch recently, a good friend and very experienced project manager shared his thoughts on managing software development projects when he said:

“Software developers are so hard to manage. They never do what I tell them, never report status and are always behind schedule and over budget. Most times, they never finish the project!”

I asked him to think about what he just said and to think about whether he is ‘managing’ the project or ‘leading’ the project (a project manager should be a good leader first and foremost). I then jumped into my philosophy on managing projects using a more agile mindset and finished with the following comment:

Perhaps software developers aren’t any harder to manage than any other function…perhaps it’s the system that has been put in place to manage the developers and their activities that causes the problems.

I believe most software developers are bright and hardworking people…but they tend to be put into situations that drain all of the initiative and drive they may have. Traditional software development methods (e.g., Waterfall, etc) can and have been used quite successfully in software development projects but the large up-front requirements gathering, milestones and end-of-project testing usually result in software that is late and buggy. Of course there are successful projects that have used these traditional methods. The majority of successful projects are those that are given the appropriate level of resources, people and time and give the product development team the ability to get their job done without much hassle. Some smaller organizations have a difficult time with these traditional methods because they aren’t able to fully resource the project and aren’t able to be as flexible and responsive with these methods.

I recently encountered one of these smaller organizations who needed some help crafting a product development plan. As you will see, we were able to change the development plan from one that delivered a revenue generating product in 12 months to one that delivered a product with ~85% of the same features in 6 months at less than half the cost. Oh…and we were able to capture $3.5 million in revenue after 6 months.

Case Study – Software Development

I was approached by a small technology company to see if I would be interested in helping them re-design their product development strategy to release a product within 6 to 9 months in order to beat their competition to market and gain an edge over their competition. The product had to be something that clients found useful, valuable and worth paying money for and needed to be able to compete with the ‘big boys’ that were moving into this space. It appeared to be a pretty daunting task: take a product that was planned for release in 9 to 12 months and have it ready for market in 6 months.

The company is a small startup focused on a niche market in the technology field product uses a third-party content management server package to serve up large amounts of data from the enterprise network. They had some very good developers and had hired a consulting company to develop a product development strategy to provide for a product release to their client base in 9 to 12 months. This same consulting company had been planning on actually doing the development work as well.

After reviewing the plan, the senior leadership team and board of directors felt that 12 months was much too long to wait to enter the market. They had heard rumors that some very big names in the industry were starting to make moves that would allow them to enter this niche market within 12 to 18 months and felt that they needed to be first to market in order to gain a competitive advantage in the marketplace.

I agreed to help with the project and joined the company in a consulting role to help them create a new plan that would see a product released within the next 6 months.

The Original Product Development Plan

On my first day with the company, I walked into the office and found myself staring at a very large Gantt chart hanging on a wall. The chart had the words “Product Development Roadmap” written across the top and looked just like every other Gantt chart ever created (e.g., milestones, resources, dates, timelines, critical path outlines, etc etc). My first thought was that least they understood what they were trying to do and had a plan. My second thought was ‘what are they delivering and when are they delivering it?’

I sat down with the team and over the next few days and discussed the product development strategy. I realized that the original development plan created with zero lead time (each task could only start when the previous task finishes). My gut feeling told me that his was done to lengthen the project and create more billable hours for the previous consulting company.

Since the plan was created using zero lead times, it required that a considerable piece of the network architecture design had to be completed before database design could be completed. In addition, a significant portion of the database design had to finish before any work on the CMS Integration could be started. The User Interface design could begin during Database design and was scheduled to begin after network design in conjunction with CMS integration.

As you can see from the high-level overview of the plan shown in Table 1, it would have taken 9 months before a product was available to demo and/or beta release to a client and 12 months for a final release.

Table 1: Original Development Plan

TaskTimeline
Network Architecture100 Days
Database Design100 days
Content Management System Integration160 days
User Interface120 days
Demo to Clients9 months from start of project
Documentation30 days
Testing30 days
Total11 to 12 months from start of project

After reviewing the plan and talking with the leadership of the company, I started looking at methods to “bring the plan in” so we could provide a demo and beta release much sooner than 9 to 12 months out.

The original resource schedule for the development provided for 1 network architect, 1 database architect, 1 content management expert, 1 user interface ‘guru’, a documentation specialist and 2 QA specialists.

The New Product Development Plan

To create the new development plan, I visited a few key clients to gather requirements for features that they felt must be in the software in order for it to be valuable to them. After these visits, I sat down with the development team and created a “Top Feature List” to help us focus the development efforts on only those features that were the most valuable to our clients.

Interestingly enough, the items that ended up being the most important items for the clients were the last things to be implemented in the original development plan. It’s amazing what a little bit of client communication will do!

Using agile software development methods, common sense and the “Top Feature List” gathered from my discussions with clients, the team and I created a development plan. The new plan would allow for the most important (i.e., valuable) features that our key clients were looking for to be ready for release as a Beta release within 3 months.

Due to the small team size and the inability to bring in additional developers, some of the tasks still needed to be performed in serial but most of the tasks were performed in parallel with each other. Table 2 shows the new product development plan.

Table 2: New Development Plan

Start Iteration 1
TaskTimeline
Database Design – DBA Resource30 days
Network Architecture – Network Resource45 days
User Interface – GUI Resource45 days
CMS Integration – DBA Resource15 days
Total Time45 days
Demo to Clients1.5 months from start of project
Start Iteration 2
TaskTimeline
User Interface – GUI Resource45 days
Documentation – Document Resource15 days
CMS Integration – DBA Resource45 days
System Testing- QA Resource30 days
Total Time45 days
Beta Released to clients3 months from start of project
Start Iteration 3
TaskTimeline
Network Architecture – Network Resource45 days
User Interface – GUI Resource30 days
CMS Integration – CMS Resource15 days
System Testing – QA Resource15 days
Total45 days
Beta2 Released to clients4.5 months from start of project
Start Iteration 4
TaskTimeline
Network Architecture – Network Resource30 days
User Interface – GUI Resource15 days
CMS Integration – DBA Resource30 days
Documentation – Document Resource15 days
System Testing – QA Resource45 days
Total45 days
Final Release to clients6 months from start of project

The budget for the new plan turned out to be less than half of the original budget, although we weren’t trying to dramatically cut costs, the shortening of the development cycle by half brought us considerable cost savings.

The outcome of the plan thrilled senior executives, investors and clients. Based on the first Beta release, we were able to book about $1.5 million in revenue that may never have been booked if we had used the original plan. The initial Beta release was nothing like the final release from the original plan, but it did provide the key features that the client(s) wanted to see.

The release after the final iteration contained about 85% of the features from the original plan. Think about that…85% of the product features in half the time at less than half the cost! That’s the power of agile thinking!

After the final iteration, the product was released to quite a bit of fanfare. In addition to the revenue we had already gained with the Beta release, we were able capture another $2 million in revenue from new clients and create a great footing for the company in the marketplace. At the time that version 1.0 was released, the competition was still mired in product planning and development and their release dates seemed to be at least another 12 months out.

Conclusion

After releasing version 1.0 and capturing $3.5 million in revenue, the company was able to attract quite a bit of interest from investors and potential buyers. They ended up being gobbled up by a much larger competitor for quite a bit of money (many times multiple earnings). I’d like to say it was all my doing…but it wasn’t…I just helped them to see a new way of looking at the development process.

Using agile methods allowed us to deliver real value to our clients and to our company by create a product in half the time. We were able to deliver $3.5 million in revenue because we focused on the needs of our clients and delivered those features that they thought were the most valuable.

That is what Agile Project Management is all about. Delivering value to clients.


Note to readers:
When I use the word ‘agile’, I don’t want to imply that I am explicitly talking about iterative or agile software development methods such as eXtreme Programming (XP), Scrum, Feature Driven Development (FDD) or other types of ‘Agile’ methods. Agile methods like XP and Scrum are the framework for my project management methods for managing software development projects but I am not a strict proponent of any one method or process over another. By using the word agile, I am trying to capture the frame of mind that someone should have to be able to accurately focus and respond to clients’ needs in today’s competitive world.

 

Reblog this post [with Zemanta]

Agile & Iterative Development

I just finished the book “Agile & Iterative Development: A Manager’s Guide” by Craig Larman.

This book provides a very good overview for managers of the Iterative & Agile Development methods. I liked this book…it isn’t too in-depth…perfect for someone who needs to know the basics about Scrum, XP, UP and other Iterative/Agile methods.

Two things about the book that keep it out of my ‘recommended book list’ are:

  1. I thought it could have used a bit more editing/revision prior to release as their are some minor errors, but on the whole this is a very good book.
  2. Removal or Revision of Chapter 4. This chapter is an attempt to bring all of the agile/iterative methods together into a ‘story’ but it just doesn’t work that well for me. What might have helped is to move this chapter toward the end of the book after all the methods have been discussed.

Overall…this is a good book and one worth reading if you are interested in learning more about Iterative & Agile development topics. The book really made me think about the ‘tried and true’ PMI methods for managing projects and how those methodologies aren’t really a good fit in the world of software development.

After reading the book (and a few other Agile books) I’ve begun to think about ways to move Agile methods from software/product development to other areas such as IT Management, Service Management and other areas of business.

[tags] Agile, Agile Management, Agile Project Management,Iterative Development, Agile Development, Software Development [/tags]

If you'd like to receive updates when new posts are published, signup for my mailing list. I won't sell or share your email.