what do you need? a sofware development team? an engineering team?

28
What Do You Need? A Development Team? Or An Engineering Team? Successful Outsourcing

Upload: michael-dunham

Post on 13-Feb-2017

124 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: What do you need? A Sofware Development Team? An Engineering Team?

What Do You Need? A Development Team? Or An

Engineering Team?

Successful Outsourcing

Page 2: What do you need? A Sofware Development Team? An Engineering Team?

Dev Team or Engineering Team? • What is the Difference?

• An engineering team (in this discussion) includes IT, technical Operati0ns, and Development in an integrated project-focused group

• A software development team is solely devoted to the development and maintenance of software applications

• Traditionally – software dev teams and operational IT have been separate, siloed operations

Page 3: What do you need? A Sofware Development Team? An Engineering Team?

Today’s IT Environments can be Complicated Beasts• Orchestrating IT environments to

provide internal and external business services is an increasingly critical concern• API’s, web services,

service-based components, virtualized infrastructure

• Various open source, proprietary and custom applications configured for production

• Likely to be managed by skilled engineers focused on security, standardization, automation, scalability, availability, and reliability

Page 4: What do you need? A Sofware Development Team? An Engineering Team?

Software Development is Changing• Traditionally, dev teams have been separated from IT

operations by standardized enterprise architecture and processes• IT operations developed and managed standards• Development developed apps to standards and passed them

back to operations• But, the maturity of IT environments has progressed.

• Agile and continuous, incremental development are becoming the standard for scalable and maintainable applications• Software development teams and IT operations are being

integrated into combined teams with DevOps and agile methodologies

Page 5: What do you need? A Sofware Development Team? An Engineering Team?

Software Development is Changing• There are many different

levels of implementation across organizations. No two are alike.• If you are considering an

outsourced project – you need to know what kind of a team you need

Page 6: What do you need? A Sofware Development Team? An Engineering Team?

Our Basic Scenario for this Discussion• An organization is about to start bringing

resources together for a custom software development project• The application as planned is strategic and tied

to the business model• If it wasn’t, they would just buy an off-the-shelf app

• There is a charter and description of the business problems the project is to address• Executive support and a budget is in place

• The decision has been made to outsource this project rather than do it in-house

Page 7: What do you need? A Sofware Development Team? An Engineering Team?

Five Situations that Could Make a Difference in Your Needs

1. New, but fully-backed venture w/basic organization but no IT engineering beyond office automation and help desk

2. Existing IT team w/legacy experience but little experience with modern infrastructure or IT operations. No dedicated dev team or significant custom applications

3. Traditional operations, IT and software dev but siloed. Not integrated other than by operational standards

4. Enterprise organization with fully integrated IT and Dev in a DevOps style implementation. Significant portfolio of custom apps

5. New spinout/off venture of existing company. Expected to be free-standing. Business model based on services provided by new, core, custom application

Page 8: What do you need? A Sofware Development Team? An Engineering Team?

1. The New, Mostly Naked, Venture• New & planned for growth -

pressure to be efficient & do it right• If there is a technical leader and/or

a significant part of the business model is based on services delivered through applications – there a natural tension• Should the team focus on customers

& value proposition? Leaving software dev to an outsourced team?

• Should you control everything in-house? Build an internal team from scratch no matter what it takes and delay the effort until the team is ready?

Small, cross-functional dev & engineering team working remotely

Page 9: What do you need? A Sofware Development Team? An Engineering Team?

1. The New, Mostly Naked, Venture• If the application that will support all or a significant part of the

services you offer and revenue generation – the proper operation & maintenance of the application is a strategic concern• The application must be:

1. Planned with a set of operational standards in mind2. Scalable over the long run without rewrites or basic changes to the

architecture3. Logically modular so it is maintainable and extensible. Individual

components and value can be enhanced without changing the entire application

4. Reliable across upgrades, changing loads, and added features throughout the product lifecycle

5. Economical to operate and maintain based on architecture and ability to leverage automation across development, deployment and improvements

Page 10: What do you need? A Sofware Development Team? An Engineering Team?

1. The New, Mostly Naked, Venture• As a new venture you want to spend effort focusing on

your customer, service value, managing feature-fit• An outsourcing vendor offering a traditional dev team isn’t

going to take on the 5 operational points automatically• The final result may be a perfectly functional app from a

user perspective and not work well at an operational level• You may end up with happy customers and a load of

technical debt• Like any debt, it will come due at some point• The longer you wait to deal with the shortcomings - the

more expensive they will be to retire

Page 11: What do you need? A Sofware Development Team? An Engineering Team?

1. The New, Mostly Naked, Venture• You are going to outsource (that is our scenario) but you

have a choice:• Dig in & hire a competent IT operations & engineering team with

real world experience in larger operations and understands where you are going • It will be expensive, time consuming and at times – frustrating • You will have more expertise sitting around than you need at first but it is

an investment in lieu of redoing work when grow matches predictions • Once you have your hired team in place, they understand your business

model and plan, they can manage your outsourced dev team but both sides will be fairly inefficient in the beginning

• Expect 6-9 months to hire, train, & begin your project and an additional period selecting and integrating your outsourced team to the point where the two teams can be productive together

Page 12: What do you need? A Sofware Development Team? An Engineering Team?

1. The New, Mostly Naked, Venture• You are going to outsource (that is our scenario) but you have a choice:

• Find an outsourcing partner that can provide an integrated engineering & dev team• Scalable skills, experience & resources when you need them• A team that can take the 5 operational concerns and develop both the application and the

operations needed incrementally with the outcomes in mind• A vendor that operates as a partner and understands the critical importance of smooth,

integrated operations to your business• A team that has broad experience across several projects and verticals and can bring a

number of solutions to the table• Finding the right vendor for this choice will take a little longer, but in the end,

you should be able to get the project going faster, with better efficiency, lower cost, and less risk

• At a high level, if cost, time-to-market and lowering distractions is important, a combined outsourced team could be a viable option

Page 13: What do you need? A Sofware Development Team? An Engineering Team?

2. Existing IT Team, No Dev Team – Little or No Experience w/Custom Apps & Architecture• Lack of current, in-house experience with custom app

development and modern infrastructure should be concerning• Companies in this position tend to be SMB/E organizations

• Established client base, regional strength and strong competitive need to grow

• They have an existing market and can’t afford to cause disruption while they transition to new or expanded services

• Can’t afford to distract or overburden their existing staff with the development of a mission-critical, custom application and the operational planning needed

• Staff must be involved, but at the level they need so they can take a role in changes as the app rolls out

Page 14: What do you need? A Sofware Development Team? An Engineering Team?

2. Existing IT Team, No Dev Team – Little or No Experience w/Custom Apps & Architecture• Choices:

• Hire 1 or 2 technical leads/product/project managers to plan architecture, applications and operations – and manage the outsourced dev team• Downside - Need to be much more experienced

than internal team. There will be internal friction. It will take considerable time. It will be costly and frustrating

• Downside - It will take time to get the new hires up to speed and ready to help select the outsourced team and get to work

• Downside - Limiting to 1 or 2 resources will (probably) make the process a little easier, but it will also make it more costly and mission critical

Page 15: What do you need? A Sofware Development Team? An Engineering Team?

2. Existing IT Team, No Dev Team – Little or No Experience w/Custom Apps & Architecture• Choices:• Hire outside consultants to develop the operations &

architecture, requirements and train your internal team• Internal team is unlikely to be large or have the skills necessary –

additional resources will also need to be hired, but it can be delayed to a degree

• Downside – when additional talent is hired eventually they may not agree with the consultant direction and see choices made as technical debt

• Downside – using external consultants to manage all or part of work done by outsourced team creates an “arms length” relationship. Makes it difficult to achieve the level of trust and collaboration needed for success in agile product development

Page 16: What do you need? A Sofware Development Team? An Engineering Team?

2. Existing IT Team, No Dev Team – Little or No Experience w/Custom Apps & Architecture• Choices:

• Find an outsourcing partner that can provide the engineering talent as of the team• The team should be scalable, providing the

right resources and skills when you need them. • The team should have broad experience so

they can bring a range of solutions to the table. They should have worked in a wide range of markets with many different solutions

• Downside – you will still need to hire additional staff but they should be able to work in parallel with your outsourced team during transition and lower the burden significantly

Page 17: What do you need? A Sofware Development Team? An Engineering Team?

3. Siloed Operations, IT & Software Dev Teams• Generally slightly larger organizations than 1. or 2. • Type of situation that is common for ISVs with strong

client list in a specific vertical• Operations have not changed significantly for the 5 or 10

years• IT team is established and has a strong set of operations• Software development team is well-versed in their existing

apps, the technologies they use and their customer base. • If their team didn’t have to step out of their existing box, we

can assume they wouldn’t need to outsource• BUT – THAT IS THE RUB

Page 18: What do you need? A Sofware Development Team? An Engineering Team?

3. Siloed Operations, IT & Software Dev Teams• The scenario assumes they need to extend into new

technologies and possibly change operations significantly• Although their teams are in silos – we can assume they know

about the higher efficiencies they could achieve if they shifted to a DevOps methodology but – they have existing customers and products/services in the field to support

• Like most companies in this situation, their feature backlog for their existing apps is just what they can handle at the moment. Adding another layer of work would mean something would have to give

• An outsourced dev team makes sense but• What they don’t have is a scalable organization that fits where

their services and apps are going and the critical nature of the project

Page 19: What do you need? A Sofware Development Team? An Engineering Team?

3. Siloed Operations, IT & Software Dev Teams• In this case, an outsourced engineering and dev team could make

a lot of sense if:• They have strong, broad engineering experience as part of their team

skills• The team they offer is scalable, flexible and the vendor is willing to act as

a partner to help their existing team to rethink and realign their operations• It is risky to try to have one team attempt to develop the

application and undergo a culture change at the same time• But if both teams have separate work loads and they collaborate on how to

adapt operations it can be successful and non-threatening• The critical point is to have the talent available to plan

architecture & operations before development begins. • A flexible, integrated team can offer that kind of solution

Page 20: What do you need? A Sofware Development Team? An Engineering Team?

4. Mature Enterprise w/DevOps, Integrated Software Development• Again, the situation is scaling up a

bit, but we’re still committed to outsourcing and considering the team we need• The internal team has a DevOps

style implementation, whether it is complete or not and has staff support & commitment • The staff has custom applications in

production and knows what it is doing in operations & development.

• We can assume they are fully engaged and the time allotted to the project is short or they would simply hire and do it-house

Page 21: What do you need? A Sofware Development Team? An Engineering Team?

4. Mature Enterprise w/DevOps, Integrated Software Development• Because there is an existing DevOps implementation,

there is an assumption that new development resources will have experience in both development and systems architecture for continuous dev and maintenance• Adding an outsourced team that doesn’t have the

same type of cross-functional experience & mindset would be a serious problem • They couldn’t hold up their end of the project within the

client organizations structure• If the project is to be outsourced, the incoming team MUST

be able to handle engineering and agile software development roles so they can integrate successfully with the larger team

Page 22: What do you need? A Sofware Development Team? An Engineering Team?

5. Spinout/off Venture with Software-Based Service• It might seem that this situation would be a lot like #1

but spinouts tend to be• Better planned and positioned because they come from

existing organizations with strong market positions and carefully evaluated goals• In most cases, executive staff is from the parent

organization and has a deep understanding of the market they are going into• But, because loss of production level resources in the parent

organization could cause disruption, in most cases only one or two senior IT resources join the spinout team• The team is usually fully aware of current technology and

methodology, even if their parent organization has not be able to transition culturally

Page 23: What do you need? A Sofware Development Team? An Engineering Team?

5. Spinout/off Venture with Software-Based Service• A spinout gives the core team the

opportunity to move in fresh directions with less baggage and overhead• But what team they do have is likely to

be strong on the product development side of custom software and supporting systems orchestration

• The team is well situated to evaluate partners and decide on in-house versus outsourced roles but, since our scenarios are all based on a decision to outsource – the question is still around the kind of team they need

Page 24: What do you need? A Sofware Development Team? An Engineering Team?

5. Spinout/off Venture with Software-Based Service• To a large degree the decision comes down to how

much of the burden the parent organization wants to shoulder• How expensive will the “charge-backs” be?

• Leaders of spinouts usually have strong stock incentives to keep costs in line, move quickly to prove their direction is worthy of the support given and risk• If using existing parent company services would slow

product development and increase costs, they will think twice about taking on problems outside of customer and product focus

Page 25: What do you need? A Sofware Development Team? An Engineering Team?

5. Spinout/off Venture with Software-Based Service• IT resources in the venture are limited. Since this will be a

SaaS type app, they will need an integrated engineering and software dev team to develop to a modern, continuous release methodology to enable incremental improvement and tuning of their applications• They will want a architecturally and operationally sound

application from the beginning• Like scenario #1, if they want to avoid the cost and time

for hires so they can focus on their new customers and business model, an outsourced team with integrated engineering and develoment skills makes a lot of sense

Page 26: What do you need? A Sofware Development Team? An Engineering Team?

Bottom Line• Software development is shifting away from internally-

focused product development, siloed enterprise teams and monolithic applications • Moving to agile organizations, incremental improvement and

release, and customer-focused, lean product development• Not everyone is there now. There are many ways to implement this

change• All of the situations have chosen to take on a custom

software development project for a strategic initiative• The opportunity is to do it better with an eye toward the

future of their organization

Page 27: What do you need? A Sofware Development Team? An Engineering Team?

Bottom Line• All of the situations have chosen to take on a custom

software development project for a strategic initiative• The opportunity is to do it better with an eye toward the

future of their organization.• Including operational concerns with software development is

just a part of the changes they seek, but it is an important, transformative concern

• Yes, an outsourced team with a range of engineering skills and experience along with their development background can be a big advantage for any of these situations, with a vendor who can operate as a partner in the organization

Page 28: What do you need? A Sofware Development Team? An Engineering Team?

We’re Scio• We provide nearshore,

outsourced software development teams to our customers in North America. • We provide flexible, cross-

functional teams with a range of engineering & development skills & experience• If you have a project in mind,

please contact us to discuss how we can help.