In my time with CA Technologies, I have been fortunate enough to work on Professional Services engagements with 4 of the top 10 Fortune 500 Companies, and 15 out of the top 100 (not counting any that I worked with prior to arriving at CA Technologies, also not including projects with government entities). During the time I have spent on these projects, I have observed a variety of levels of success, and will try to outline below the top 5 principles to follow in order to help maximize the value of implementing a partial and/or complete CA Modern Software Factory (I found #3 to be shocking!). Ok, I'm only kidding about #3, but we see so much clickbait these days that it was hard to resist the urge to borrow the phrase. You will notice that most of the below is generic (not CA Tool specific), as the successful outcome of implementations is based on principles that are applicable to any number of implementations.
The Obligatory Caveat
A complete book could be written on this topic, but nobody including me would probably want to read it. So, I will try to only introduce a few ideas, and it will be up to the reader to take the ideas and expand them outward enough to be useful.
1. Clear Business Vision
In order to drive meaningful change with positive outcomes in an IT organization, a clear business vision must be decided upon and executed. This vision must be a living breathing entity that evolves over time to accommodate the ever changing business environment we all live in. This vision should also be sufficiently inspirational and informational to help the entire team stay informed, engaged, and motivated. It may seem somewhat ironic that the #1 challenge I see in IT organizations is related to the business and not technology, but if you think about it, if you don't know what your Software Factory is supposed to build, how do you know if you have been successful? A lack of a clear business vision can directly impact Test Case Modeling, Test Automation, Continuous Delivery, etc., as the team will not fully understand what needs to be validated, and the Software Factory tools cannot be fully leveraged.
NOTE - all the above applies at the feature/function level as well (not just the enterprise). Everyone needs to understand the business goals associated with any feature/function of a product offering before they can implement it successfully.
2. Personal Ownership
Personal ownership of roles and tasks are crucial to the success of any implementation - large or small. In my experience, it isn't apathy that causes lack of ownership, but individuals are most often already spread thin over multiple tasks, and left unable to focus sufficiently on aspects they need to own in order to make the project successful. The individuals involved with any implementation need to have a clear mandate (and freedom) to execute on the tasks required, and the willingness to learn new concepts/tools/skills in order to maximize success. It is also crucial for these individuals to understand the role they play in meeting the business goals outlined in principle #1. Change is hard, so it is up to all the core individuals involved to help drive change throughout a large organization.
3. Tear Down this Wall (Mr. Gorbachev)
My apologies for borrowing a phrase uttered by a politician - it seems rare that politicians say anything useful, but please allow me to repurpose this one for a minute to fit our needs....
No less important than personal ownership, is the ability for an organization to work together. Large enterprises are typically highly fragmented with individuals occupying a small space along the Software Factory work stream. If there is too much overhead to move the product from one station to the next, the whole process will grind to a halt. This isn't to say that some steps should be skipped, but the whole process should be evaluated holistically to make sure it is optimized to increase productivity without sacrificing security or quality. As a special note, enterprises with large portions of work completely outsourced are especially vulnerable to this issue. If you frequently have projects hit a road block because someone needs a PO Number, CR, or Billing Code, you will know exactly what I mean, and you will need to work hard to soften these boundaries in order to move things along more efficiently.
4. Slowing Down in Order to Speedup
One of the most difficult parts of refitting a Software Factory, is slowing down the operation some so that the process can be modernized. It is important in these occasions to clearly articulate how the savings associated with the new Software Factory will offset the cost. If you would allow me to stretch a little - If a factory is retooled to make hybrid vehicles, there is a slowdown in production to modify the factory, and the final product takes longer and is more expense to build, so it should never been done, right? The obvious answer is no...If the user drives the vehicle for sufficient distance, they will easily recover the additional cost many times over so the consumer is willing to cover the additional costs (plus potentially more). Also, from a business perspective, moving the company into a product strategy which is more inline with the future will help maximize future growth. That is what ROI is all about - make sure you calculate out the cost of not making any improvements.
5. Learn and Adapt
It isn't always easy to take an honest look at projects after they complete, and turn the lessons learned into actionable change. This should stop at just a technology review, but the business impact as well. If you can clearly associate changes in your organization with positive/negative impact on the Software Factory, you can make effective and decisive decisions on how to improve the process moving forward.
I can think of many more, but I'm stopping there. I will try to return and and more thoughts to flesh these out later. All thoughts/comments are always welcome.