when to build and when to buy

Post on 17-Oct-2014

1.862 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

When to Build and When to Buy

October 4, 2009

Poornima VijayashankerSoftware Engineer – Mint.comBlog: Femgineer.comContact: poornima82@gmail.com

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

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

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

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.

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!

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.

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

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.

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!

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

top related