When to Build and When to Buy
-
date post
17-Oct-2014 -
Category
Technology
-
view
1.861 -
download
0
description
Transcript of 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]
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