Outsourcing can either be a positive, negative or both influences at any organizations. I have experienced both sides of the spectrum and I will share my thoughts and opinions about the matter in this blog. Personally, I believe outsourcing can be part of healthy growing organizations and we see it in the world today with so many of the Fortune 500 companies using outsourcing to develop, manufacturing products.
The advantages of outsourcing are fairly straightforward; it provides cost-reduction benefits, it can assist in faster project completion, outsourcing allows for a higher level of expertise in a team, and the flexibility of forming a dynamic team. Those are all great points and for the most part all those points do work in certain industry sectors, especially in the technology sectors. From my perspective and familiarity, outsourcing is a double-edge sword where it can be an incredible asset in one hand and a hindrance in another. I will discuss the disadvantages in the next paragraph but as a benefit with the right talent pool, meaning hiring a person with years of experience and understanding of the industry; the outsource talent can provide a great boost to the company’s bottom line and product throughput. I have witness first hand at how superb product testing and quality assurance testing can be with the appropriate talent pool from outside the company. Another gain that I have observed first-hand is through product development of outsourced teams. There have been numerous development teams that I have been involved with that have demonstrated an excellent understanding of the product, the targeted customer and the development process and some of those teams were outsourced. I think the main criteria in making sure outsourcing become a positive endeavor for a company is to understand the level of expertise the outsource team/individual is bringing to the organization.
The disadvantages of outsourcing and I can attest to a few of them myself are: coordination breakdowns between teams, loss of control over the project, conflict on interpersonal level between teams, and security issues. I could not state the positives of outsourcing without mentioning a few worthwhile negatives and from my experience the biggest hindrance was always the communication breakdown. Whether it was the language barrier issue or the time difference; communication played a huge role in delayed responses, feedbacks and or product design interpretation. Projects can often times become delayed because of the lack of close collaboration between teams; when a response is required for a given issue the project can be at stand-still because of a pending roadblock that needs to be address before proceeding to the next development process.
Outsourcing can provide a major gain to an organization but often times it comes at a cost. The most ideal situation is to make sure the positives outweighs the negatives when outsourcing is being incorporated in an organization.
As a software engineer with ten plus years of experience I have witness different varieties of software development processes being utilized to release a product to the consumer. The earliest of these processes was the waterfall methodology method which promotes a sequential design process to a product from conception to product release. This method was extremely rigid and inefficient. In today’s modern software development the majority of organizations employ an agile methodology and in particular the Scrum development process which allows for an organic development and for quick development schedule.
In my organization we utilize the Scrum methodology with great results and it has allowed for our software products to have very predictable schedules and development cycles regardless of the complexity and scope of the project. I will be discussing a few of the reasons of how Scrum has benefitted my software development team.
The Scrum process allows team members the platform to which each individual can properly communicate with each other and this channel gives each team member more authority and ownership over the product they are working on. Scrum development requires each team member to work closely together on a daily basis via standup meetings. The quick daily meetings allow the team to display pure transparency over the project and inform every team member of the business priorities, work completed, future work and roadblocks on the project. Another advantage is under the Scrum process the team can produce a better quality product through shared vision and goals. Scrum process allows for continuous feedback over new features and implementation; this constant visibility to the team increases the chance to identify and expose risk and improve the chance for a successful product reception. A third benefit to Scrum development is it allows for more relevant metrics and measures to any projects. In a Scrum environment the team members who act as immediate stakeholders to the project are the persons responsible for giving proper estimates and provide optimal scheduling; timelines and budgets are based on each team member’s capability and performance.
There are many more reasons why Scrum methodology is the preferred choice for agile development and is quickly becoming the standard approach to software development.
Creating accurate project estimates is akin to a Hail Mary pass in the National Football League; there’s a very slim chance it will ever occur. The problem with providing a bold and direct project schedule and estimate at the beginning of any project is the unwavering assumption of optimism and the predetermine knowledge of lessons learned being applied. This is how many organizations operate and understandably so since it stems from our innate way of breaking down processes into several steps till we accomplish our task and reach a goal but most of us only see the best possible circumstance. These can be alleviated by following a few simple strategies and habits below; also, the action items below are not ordered in any manner and should each be treated in its own merit.
Scope to time is an idea that was born out of the Project Management Triangle also called, ‘Triple Constraint’ is the concept of given a fixed number of features and deliverables; the group will assign a time value to each and this data crunching is performed for all features to determine the total amount of estimated project development. This approach is a simple form of project estimation.
Another tactic is to communicate team assumptions to the entire team which promotes team transparency and it exhibits a healthy practice of bringing project requirements in a clearer light. This will also allow the team to avoid costly surprises during or at end of project development.
Another critical aspect of determining project estimation is identifying the risks associated with projects. Being aware of the risk involved and generating a solid plan on how to overcome is not adequate enough to withstand the intricacies project development. An important part of risk management is to be able to create a source or outlet that will mitigate and/or prevent those risks from ever occurring; teams must be proactive and not reactive.
Agile process is typically utilized in software development and the idea behind it is to create a product through incremental and iterative development. As a software engineer, I am fortunate to have experience in this subject matter and I for one know the benefits of agile development process. When combined with project management discipline, both concepts provide numerous benefits to an organization and reduce the chance of a project failure.
Agile PM can produce a better quality product since it comes with built-in safeguards which allow itself to maintain its highest possible value. A few of the techniques it employs is it takes advantage of the automated testing tools to determine defects in a 24-hour cycle. This behavior permits the development team to be proactive during implementation. Another advantage of agile process is it allows for the development team to conduct ‘lessons-learned’ after each sprint cycle. A sprint cycle is a two-three week development where the team focuses on specific task items to be finished within the spring cycle.
Another benefit to agile project management is it can stimulate team morale and increased collaboration and ownership between team members. Agile development allows team members to be self-regulated and this privilege can encourage creativity and innovation. Since agile development operates on a sprint cycle; this pushes each team member to work together on a daily basis to discuss and review progression and roadblocks which sponsors collaboration and ownership of the product.
Agile project management is incredibly powerful to an organization; however, it requires an experience project manager as well as a skilled agile manager to see the benefits. It is also necessary for the team members to stretch their creative energies and the willingness to work as a team.
Agile Project Management