Agenda Outsourcing and Globalization n Introduction in Software Development n The Outsourcing Phenomenon n Leading Offshore Projects Jacques Crocker n Managing Customers UW CSE Alumni 2003 n Offshore Development Notes jc@cs.washington.edu n Q & A Slides available at http://seven.maqsoftware.com/cse403_outsourcing.ppt Outsourcing Introduction – Jacques Crocker n Graduated with Bachelors in Computer Science less n What is outsourcing? than 2 years ago from UW ¡ Hiring an external company specialized in software development to implement software projects n Took CSE 403 in Spring Quarter 2003 Why outsource? n Worked at a medium sized dotcom (Onvia.com) for 3 n For companies with limited development needs, it’s ¡ months after graduating usually more cost effective to hire an experienced Quit Onvia and joined a small outsourcing company n software team than to try to hire employees or contractors with 10 employees in Seattle, and over 50 in Bombay and manage them Current position: Lead Software Engineer / Architect n How are the contracts structured? n MAQ Software (www.maqsoftware.com) ¡ Projects are defined from the start as fixed cost or billed n per time/materials n Currently working with 3 other UW CSE grads (David Owens, Ben Handy, Susan Shinoda) Outsourcing Alternatives Outsourcing here to stay n Full-time employee dev teams Key efficiencies can be gained in hiring a n specialized team of developers who can n Contract consultants (W2) ramp up quickly and get your project n Off the shelf packaged products completed for a fixed cost Customers get exactly the application they n want, own the code-base delivered, and have the flexibility to manage the direction of their product without the baggage of managing employees 1
Outsourcing Across the Globe Major cost benefits? Does 50-70% cost savings for developers n #1 Reason – Cost n translate into 50-70% cost savings on the Developers in India cost (50-70%) less ¡ entire project? Other Reasons n Not quite ¡ High communication overhead ¡ ¡ Around the clock development schedule Lower project visibility (time zone differences mean there can be 2 ¡ n Offshore outsourcing significantly increases teams working on the same project, night & day) risk of project failure Scalability – enables a small outsourcing firm ¡ Requirements not understood ¡ like us to easily scale up and down according to Lower quality code ¡ the currently available workload Final product potentially unusable ¡ Leading Offshore Projects Offshore Development n Result: applying risk reducing n Since the customers are in the US, there is always the requirement for a skilled local software engineering best practices resource to manage the project end-to-end are even more important when Get to do the fun stuff n managing offshore development Design the product ¡ projects than in normal situations Architect the solution ¡ Plan the implementation ¡ Keep tabs on development progress ¡ ¡ Finalize and deliver product to customer What About Coding? Offshoring Best Practices While sometimes tempting when managing a n n Some techniques to follow to software development project, don’t stop coding! significantly increase the chances that One of the key practices I’ve seen in successful n a project will be successful offshore project management is active coding involvement of the local project lead Clickable Screens ¡ One essential risk reducing practice is to review all n Daily Code Reviews code that has been checked into the project on a ¡ daily basis Daily Build and Smoke Tests ¡ n Writing Unit Tests on Business Components to Unit Testing automate build verification is a great practice to ¡ understand the code and provide valuable feedback 2
Clickable Screens Daily Code Reviews Prototype the final product early on in the n Throughout the life of the project, it’s n project to define what you are building essential to be on top of all code changes, Can use HTML, Image Maps, Flash, Rapid n especially architectural ones that impact the dev tools, depending on the type of project application’s overall API May go through multiple phases (post it n Checked in code should be reviewed for n notes, to photoshop, to html) readability, logic, and functionality Final result however should be something n n Bad coding practices need to be followed up that near exactly resembles the final product on and addressed quickly in terms of look, feel, and workflow Daily Build and Smoke Tests Automated Unit Testing n After the first testable build milestone, every day the n Automated unit tests are invaluable for testing the entire code-base should be integrated, built, and architecture and providing a resource to help others verified understand how to use the applications API Don’t let projects go more than 2 days with a Writing unit tests against other’s code is also a n n broken build! great way to help understand it Have this done offshore also so they have a chance Keeping a growing library of unit tests will keep n n to fix any major problems before they send it builds stable and clean Either way, it’s always required to rebuild the Writing unit tests to demonstrate major application n n application every morning from the source tree and bugs will not only help the developers fix it, but also run it through the build verification unit tests to to ensure that the bug doesn’t creep up again later catch errors early on Managing Customers Customer Best Practices n Interacting with customer / project n Some techniques to follow to manage stakeholders is a big part of managing customer and keep them happy with offshore projects the progress Clickable screens (again!) n High project visibility = better feedback ¡ Offer choices, don’t ask questions ¡ n Main task here is communicating Weekly status meetings ¡ progress so they feel comfortable that Milestones the project will be successful ¡ 3
Clickable Screens for Customer Approval Don’t ask open questions Have clickable screens that fully demonstrate the n When requiring customer feedback, it’s n application functionality to show to the customer almost always better to offer choices They’ll be able to visualize the final product early on n If you ask a question: “How should this n and more likely to give valuable feedback report look?” you’ll very rarely get a decent Increases their confidence that the project will n deliver (much less likely to cancel the project!) answer While the screens will always be changing even n n Usually you can piece together enough after they sign off on them, having the screens information to come up with something that approved before implementation starts will at least give some leverage in case you need to refuse a makes some sense. Show it to them and change that will significantly increase dev effort they’ll definitely tell you what is wrong with it Offshore Development Notes Milestones n Break projects up into well defined n Communicating with your dev team milestones that list the functionality n Managing a test team that will be delivered n Common mistakes / tendencies n At each milestone, demo the app with n Future of the Industry potential application users and project stakeholders to get feedback on the updates to the build Communication with Communication with Offshore Offshore Dev Team Dev Team (continued…) n Nightly conferences at the beginning of n Daily status update emails at the end their day of their day Short conference call via phone to quickly Report on progress completed for the day ¡ ¡ discuss daily Any pending issues to be discussed ¡ Longer chat via Instant Messenger to go ¡ Build information ¡ through critical bugs or architectural n A robust bug tracking application is decisions essential for tracking issue resolutions 4
Managing an Offshore Test team Open Discussion n A very important part of every project n Questions? is an organized and disciplined testing n Thoughts? effort. n Opinions? n Testing is one of the fitting capabilities to be offshored, even for local dev teams. Time zone differences make things very convenient 5
Recommend
More recommend