News : Archive
Staff Augmentation Redefined
Objectwise is a staff augmentation and project delivery services company providing experienced IT staffing to those who needed it yesterday:
- Our candidates are selected by experienced IT staff
- Each potential candidate undergoes a rigorous assessment process that is tailored to specific roles
- We maintain a virtual bench of pre-vetted and proven resources
- Once placed with our clients, candidates undergo regular performance reviews
- Our candidates have access to around the clock support including experienced IT mentors
- Objectwise is managed by experienced IT professionals
- Our rates are very competitive
Welcome to the Objectwise newsletter. We want to keep in touch with you and keep you informed about our company. We promise to keep these updates short but informative - every newsletter includes useful information in the form of white papers and insightful columns highlighting IT industry best practices.
Objectwise is growing and our clients are telling us they like our approach to staff augmentation. We believe there is a lot of room for us to grow in this space by providing premium services backed by IT experience and at no additional cost. As actively practicing IT professionals, we do we understand what it takes to deliver complex IT projects. It goes beyond certifications - understanding the importance of communication, transparency and technology experience is crucial. We go far beyond resume sourcing and placement. We use our IT experience to assess and prepare our resources to work for our clients. By the time an Objectwise resource reaches you they have undergone a detailed technical assessment tailored specifically to their role. We continue our engagement by regularly monitoring their performance and offering ongoing mentorship.
Our mission statement reflects our commitment to you, the client, and our experience in IT: helping clients simplify success. We believe that by offering our clients resources that are proven to have the required experience and other essential non-technical skills at very competitive rates we can help achieve their IT goals in the most efficient manner possible. Our company is managed by experienced and seasoned IT veterans with years of experience architecting, designing, programming, managing projects of all sizes and hiring the right resources to help them achieve their objectives.
We hope you continue to use our services and will turn to us for staff augmentation and project delivery services. We are here to help you get the right resources on your team and to provide teams ready to deliver your project.
This article describes two technology roles every enterprise program should have. Let’s start by level setting what a program is. From the IT perspective a program is a collection of projects participating in a common business undertaking. Depending on the scope of the program it may span changes across few or many applications.
Every program is governed by the PMO (Program Management Office). The role of the PMO among other things is to ensure aligned and synchronized execution across the multiple projects. An effective PMO ensures the business stakeholders are properly engaged, timelines across the participating projects are aligned, regular communication flows in all directions between the projects, and the different technology teams are working from the same overarching requirements, designs and test plans.
This brings us to the title of this article - what are the “must have” program roles? Typically the structure and roles within the PMO are aligned along the different streams such as project management, requirements, testing and implementations. The roles commonly used by programs today are: business and technology sponsors, business and technology program managers, business requirements lead, test lead and the implementation manager. These roles provide the required oversight and synchronization between particpating projects. They are well understood and generally in use - they are the “must have” roles. I believe we need to add two more roles to the mix: program lead designer and program technical lead. From my experience a successful execution of a large enterprise program leveraging changes from multiple applications depends on having these two roles defined at the program level and, of course, properly staffed.
Detailed description of these roles will follow shortly, but before then I would like to share few stories and learnings from “the field” as it relates to this discussion. I am about to finish managing a large and complex enterprise program at a large Canadian Bank. By most measures it was a quite successful delivery – the program required three releases to implement and included builds and changes to 25 applications (counting multiple releases and changes to the same applications). We delivered it against aggressive and predefined timelines (what else is new). During each of the releases the program faced the task of coordinating execution of the end to end integration testing between the participating applications. This task depended on timely integration of new and modified application interfaces developed during a release.
We can measure and assess success of a project or program through many metrics, but the amount of effort and time it takes to integrate applications together is a good measure of the robustness of the end to end design and a strong indicator of things to come and specifically if end to end testing will be a smooth or a bumpy ride. I have learned to even more appreciate the value of a capable end to end designer operating at the program level. I saw firsthand the payback from the countless design discussions and review sessions facilitated by this individual – at times we had up to nine applications integrating together for the first time and this exercise took hours and not days or weeks. I have seen projects where integration between two applications took days as interfaces had to be redesigned before the end to end flow would properly work or meet the requirements.
From the technical standpoint it is the quality of the design that sets the course for the life of an application. Designs that are robust, extendable and scalable lengthen the lives of applications provided these continue to meet the business needs. On the other hand, poor designs elongate the life of a project, have negative impact on its timelines and the budget, and translate into production issues and high maintenance costs. During a project design gaps translate into many variances which means missed dates and higher costs. Application design issues are especially exaggerated when executing a program because they typically involve more than two interacting applications and cause the domino effect: poor design of application A causes rework of application A and B which in turn requires redesign of application C, and so on.
The role of the program lead designer requires an experienced IT professional who has very strong technical, architecture and design backgrounds coupled with hands-on experience building software against the employed platforms. But foremost, they must be an exceptional communicator who can translate complex design issues into simple terms – they do spend a lot of time interacting with the business sponsors and stakeholders explaining the designs and the solution. They must be organized and work well under pressure. They also must have strong negotiating skills because they need to navigate between inputs from the different technology groups and align them along the same path. Quite often these technology groups lack insight into other applications and are missing understanding of the end to end flows. Often they influenced by their application’s design constraints. Therefore, a program design lead must have a strong combination of technical and soft skills – hard to come by, but they are out there.
What are the deliverables a program design lead produces? They typically engage when the architecture stream is in progress and provide input from the design and development perspectives into the final architecture. They pick up where the architects leave off and work with all the application development groups on the end to end design. They organize and lead high level design sessions after selecting the key end to end use cases. A use case and its realization may span multiple applications and may require many meetings before the final design for the use case is finalized and agreed upon. Their output is the high level design document that becomes the blueprint for individual application designs and particularly how they integrate and what data is exchanged. A program design lead gets fully engaged prior to the individual application design phases and continues to be heavily engaged until these designs are completed.
This is where the role of the program tech lead comes in. Ideally the same individual can fill the two roles, but often they are staffed with separate resources because of the different skill sets required between them. Let’s assume they are staffed separately. The tech lead works along side with the program design lead and gets familiar with the key integration use cases. They become very active during the application design phase when the different application development teams are completing their designs. They continue to be engaged during application integration, end to end testing and all the way to the application deployments. Their mission is to ensure the integration points between the applications are extremely well defined with little room for error. They also become the stewards of the end to end design. When applications start integrating the program tech lead becomes the referee and provides the direction to the application teams with regards to where changes are required. The technology program manager must make sure that all application development teams and their management understand this important point – the program tech leads decides which applications are updated and where to fix issues related to integration. By having all teams agreeing to this approach a program can avoid a lot of noise and spin – by the way, “cutting the noise and the spin” is a topic of another white paper coming in the near future.
The program tech lead continues to be engaged during the end to end testing phase and assists in resolving variances where applicable – the tech lead is assigned program level variances that require further analysis to determine which application or component needs to implement the fix. In other words the tech lead triages the more complex variances; they do not fix them directly although is some cases they work very closely with the development teams to provide direction and support. The program tech lead stays with the program until the key deployments are completed. They offer valuable knowledge and experience during implementations when troubleshooting production issues.
So what kind of individual does it take to be a program tech lead? They must be a strong communicator who is very technical with plenty of hands-on experience developing code for specific technologies and platforms. They need to be able to multitask and manage multiple problems at one time. Being dependable and working under pressure is a normal course of life for the program tech leads. They work closely with the business stakeholders and with different management teams. Overall, they are a senior IT specialist with lots of experience troubleshooting, managing and resolving issues.
In conclusion, one of the proven ways to simplify success of an IT program is to employ and properly staff these two roles described in this article. The program design lead and the tech lead report to the technology program manager and form the core team who provides support and direction to all the projects during the design, development and testing phases. I strongly encourage your PMO to consider establishing these roles, if not already.
- January 2012 Newsletter
- Whitepaper: The Must Have Program Technology Roles - Simplify Success Series