Project Process record: A small successful offshore collaboration with the US

Source: Internet
Author: User

Background: a page that is outsourced from an offshore company in the United States. The final deliverables are: over 20 stored procedures, about 4000 rows of C #CodeQuantity, about 2000 lines of JS Code, several files, 7 jquery plugins, participants and responsibilities:

    • One Ba (U.S. party), responsible for grasping progress, controlling risks, explaining requirements, and answering requirements and questions.
    • Application Developer (American technical contact), responsible for advising/helping solve technical problems in development, responsible for C # and SQL code review, reviewing code quality, security, and performance, responsible for performance testing.
    • Jquery front-end developers (American) are temporarily transferred from another project, responsible for all front-end code, including the use and selection of jquery and plug-ins, communicates with BA to determine the method interface and solves client-related performance problems and bug fixes. After initial stability, the project team will be evacuated.
    • C # And database (me) are responsible for all C #, WCF and database-related development, bug fixing, and stable maintenance.

Difficulties:

    • The 16-hour time difference between offshore collaboration is that China is sleeping at work in the United States, so the US team is working overtime with me, usually from 9 to 9 in the evening ~ Am, I am here at AM ~ 1.
    • Code delivery problems, especially the front-end and back-end connections are very tight. Therefore, if one party has a code delivery problem, the other party will be completely occupied by stuck, making the risk more difficult to control.
    • Due to the use of typical agile iterations, the time requirement is in fact very urgent, and there is no need to discuss the release time. If it cannot be completed, it can only wait for the next iteration.
    • Various new technologies: The New jquery Ables are used to present the grid, and online databases are used later to find that the performance is completely poor. Insufficient performance tests, unexpected problems.
    • Communication: The boss on my side once suggested direct onsite development, but the US side did not agree. This page requires no coordination, so the communication requirements are very high, we later use the daily ~ Meetings every two days (usually lasting up to half ~ One and a half hours, several times or even two hours, including I told the front-end about the items completed in the first day, sorted out the bug completion status, and explained the new bugs, assign the person in charge of the new bug to list delivery plans for tomorrow, etc.). You must use emails every day to update the development progress and list the plans and delivery for tomorrow. If delivery goes wrong (and indeed exists), the overall delivery date will be delayed.
    • Communicate in English throughout the process.
    • Others.

Our collaboration methods:

  • When BA determines the requirement, the technical director of the other Party informs the front-end and me of the technical requirements, expansion and restructuring,
    I have never used WCF before. I need to make a WCF POC during this period and update my auto-complete control to support WCF,
    The front-end needs to understand datatables and other related technologies.
    (It takes about one week)
  • The preliminary requirement document lists the main web methods. At that time, there were only 15 web methods in total. During this process, the names and requirements of web methods should not exceed 8 times.
    The front-end provides the JSON structure and request parameters to be returned by the backend.
  • Task breakdown.
  • The front-end conducts preliminary compilation of Page code and plug-in research. I simultaneously design the database and background code framework, and make a few preliminary Web methods to accurately merge the code.
  • The first code merge is quite painful, because the front-end will change my background code, and he also understands C #, So we often have code conflicts, at this time, the technical contact of the United States proposed the collaboration principle, which is a large article, that is, the two sides are not allowed to modify each other's code. I added that I hope to have a daily progress report, including change log, tomorrow's plan, and needs.
  • After the first merge, I found a lot of problems. For example, the web method I wrote cannot be used by the other party or an error occurs. The second time I started to perform unit testing. Every method uses nunit for unit testing, this greatly improves the quality of daily background code delivery.
  • During the development phase, such a report will be reported every day, and bugs will be reported in a timely manner. Back and forth are no less than five times a day. Fortunately, the US side is always 8 to 8 in the evening ~ Can be reached at (that is, 10 o'clock earlier in China ~ Noon), so there are many doubts about clarify during this period. In short, the plan can be completed every day, and the other party will receive corresponding code updates the next day.
  • After nearly a week and a half of development, the first version is released to the dev server. The initial test starts. Ba generates a simple Excel document record bug list. Excel contains 2 Sheet and 1 listing bug, A list of features that have not been implemented or are intended to be implemented. There will be a conference call every day to determine the person in charge of these bugs, and write down the planned completion date, which will be updated every day. A new version is released on the dev server every day for Ba to test and verify bug fixes. New bugs will still emerge. There are more than 80 bugs in this list, including performance and page layout problems.
  • After the second mature version is released, the other party uses the online database (dune version) for performance testing. Performance test results, such as: loading may have a timeout error, which can be processed before the official release.
  • All regression tests.
  • Publish and launch. From collaborative development to the first release, it takes a total of one month.

Keywords:

    • Task: Job decomposition, initial needs do not need to be perfect, process control, clear and clear task owner
    • Communication: Daily progress report and plan, Fast bug fixing, positive response, frequent meetings, clear communication, and non-emotional communication
    • Test: Unit test, performance test, integration test
    • Delivery: Strictly abide by the non-modified peer code, bug tracking, daily plan delivery objectives, daily building at a later stage, and allow Iteration

Technical difficulties:

    • After going online, another performance problem was found immediately, because we didn't perform server paging using jquery datatables. All the filters and pagination clients, that is, after submitting the query request, return all data from the database (for example, 5000 rows). A large JSON string may cause the script to fail to respond to the Force termination script prompt. Ba can only immediately decide to return only 800 pieces of query data first, and try again in the second iteration.
    • Another performance problem is the left-side hierarchical list, with a large amount of data. After the page is loaded, data of four left-side and three right-side widgets needs to be asynchronously loaded. The first access to the page is slow. Using Cache cannot solve this problem well. You can only make the left side jstree into the server side for asynchronous submission and display.
    • The feedback from end-users is very strong. Many people are not used to it. Many complaints and feedback are coming soon.
    • Many things must be changed. The second iteration begins.

Let's start the second iteration:

    • Paging is required for all stored procedures, which is troublesome because there are as many as 27 stored procedures and C # methods. If each stored procedure must contain seven parameters (startfrom, limit, sortby, totalcount, archived totalcount, etc). Each interface must add seven parameters. Later, a struct, a unified method, and a stored procedure were used to solve the problem and facilitate expansion.
    • The jstree on the Left needs to be modified.
    • More performance tunning.

Let's start the third iteration:

    • As the client is basically stable, the front-end team is withdrawn from the development team. I continue to maintain the client and need to understand all the front-end technologies and jquery plug-ins used. Customer response is getting better.

Summary:

    • I feel deeply inspired and liked the agile development and communication modes in the West.
    • Delivery quality and commitment are crucial. Otherwise, a delay of one day may lead to a delay of two to three days. In serious cases, the progress may be out of control.
    • One small pity: the wcf I made does not reflect the advantages of the WCF data contract, but still returns the JSON string. However, the time is too tight and it has never been solved. It is also to be solved later.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.