when to build and when to buy

12
When to Build and When to Buy October 4, 2009 Poornima Vijayashanker Software Engineer – Mint.com Blog: Femgineer.com Contact: [email protected]

Post on 17-Oct-2014

1.862 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: When to Build and When to Buy

When to Build and When to Buy

October 4, 2009

Poornima VijayashankerSoftware Engineer – Mint.comBlog: Femgineer.comContact: [email protected]

Page 2: When to Build and When to Buy

Agenda

• Motivation• Understand the business problem and your business

needs• Business problem becomes an engineering problem• Cost of Building • When to Build• Cost of Buying • When to Buy• Tips for Building Quickly • Q&A

Page 3: When to Build and When to Buy

Motivation

• Resource constrained in an organization – don’t want to waste money or time, especially during a recession!

• Need insight into your data or automate a repetitive process• 1. Build software solution yourself• 2. Buy software solution: shrink wrapped, web

service, contractor, consultants• Expose the tradeoffs associated with each of these

choices.• Bridge both the business and engineering issues

Page 4: When to Build and When to Buy

Questions to answer to understand the business problem and your needs

• What are you requirements? • What is that you are trying to get done?

• e.g. measure user issues, marketing emails, data aggregation• What are you costs?

• Cost per user, scale, security, and reliability• Time to market

• Easy to get sucked into a sales pitch. • Anticipate need because contracts are based on usage

Page 5: When to Build and When to Buy

Understand how the business problem translates to an engineering problem

• e.g. tool to track metrics or keep track of user issues, mail server is a business need that satisfies customers needs.

• Engineering problems: • Maintenance: users will experience new problems that must be

tracked, • Scale: it will become slow as the number of users grow• Security: it will need to be hosted on a secure server if it contains

user specific or sensitive data• A mail server or any hardware solution has similar issues:

• Cost of configuration• Reliability & backups• Graceful failover

• Given how business problems turn into engineering problems it might seem like a feat to build and maintain than buy.

Page 6: When to Build and When to Buy
Page 7: When to Build and When to Buy

Cost of Building

• List of features you want to build and have a functional spec• Hand off spec to developers to scope and break down• Breakdown of developers time:

• New technology (e.g Flex, iPhone app, etc.) requires ramp up• Designing – features, database schema, and where it should be

housed if it is a full app• Developing & Testing• Deploying and ongoing maintenance or optimizations if it sucks a

lot of system resources!• Similar to regular release cycle!

Page 8: When to Build and When to Buy

When to Build

• Build the tool once you spot the need and include it into a product release cycle

• Benefits of building:• In house developers have a vested interest.• Understand the problem and requirements and how it fits in with

the rest of the business.• Investing time to learn a new technology or framework can then

be leverage in future projects. • Drawback: takes time away from developing product features.

Page 9: When to Build and When to Buy

Cost of Buying• Hiring a contractor

• Understand the business needs, and be aware of the technology• Integrate code into your current system, may require additional

APIs, understand data architecture• Need to be managed. • Working on multiple projects, less responsiveness, and focused

on speed. • Code quality, maintainability, and addressing security issues.• Developers have to maintain the tool after the contractor is done.

• Buying packaged software or software as a service• Limits options to what is built. Pay for enhancements. You will

have to keep an ongoing relationship.• You will still need to assign a developer or product manager to

communicating the needs of the project. • Web service reliability. • Want to assess quality of the data you are receiving

Page 10: When to Build and When to Buy

When to Buy

• Hire a contractor: when limited by number of developers or by their skill set

• Software Consultants• Benefits of establishing an ongoing relationship:

• Consultants have spent a lot of time learning a particular field such as web security, databases, or data warehousing

• They keep up with the latest trends in industry• Do research on the side, and publish papers• Large customer base, they will have had a lot of experiences that

make them good problem solvers• In house developers who have only been looking at a single code

base for a few years.

Page 11: When to Build and When to Buy

When to Buy

• Benefits of establishing an ongoing relationship continued:• Bring in a consultant to educate your team. • The consultants solve problems and provide resources. • Your developers implement the solution. • Builds up your team's knowledge base• In house developers become responsible for of building, but

know how to maintain it!

Page 12: When to Build and When to Buy

Tips for Building Quickly

• Java is slow!• For pulling data or getting metrics Python is a good solution

• Create a reusable template for UI development• YUI has a lot of good UI components• FreeMarker is faster for HTML development• Try open source or free product like

• e.g. Google Analytics