When to Build and When to Buy
Upcoming SlideShare
Loading in...5
×
 

When to Build and When to Buy

on

  • 1,872 views

 

Statistics

Views

Total Views
1,872
Views on SlideShare
1,835
Embed Views
37

Actions

Likes
2
Downloads
11
Comments
0

4 Embeds 37

http://www.linkedin.com 14
https://www.linkedin.com 9
http://femgineer.com 9
http://www.slideshare.net 5

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

When to Build and When to Buy When to Build and When to Buy Presentation Transcript

  • When to Build and When to Buy
    October 4, 2009
    PoornimaVijayashanker
    Software Engineer – Mint.com
    Blog: Femgineer.com
    Contact: poornima82@gmail.com
  • Agenda
    • Motivation
    • Understand the business problem and your business needs View slide
    • Business problem becomes an engineering problem View slide
    • 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