การแชร์โครงการซอฟต์แวร์ - การแก้ไขข้อขัดแย้ง [ปิด]


11

ฉันได้รับมอบหมายให้จัดการโครงการซึ่งเป็นแหล่งที่มาของนักพัฒนายูเครนบางคน

บริษัท ได้รับการว่าจ้างให้พวกเขาผ่านElanceในราคาคงที่ ณ จุดนี้เจ้านายของฉันทิ้งฉันไว้ตามลำพังเพื่อจัดการพวกเขาและทำงานให้เสร็จ ฉันสร้างข้อกำหนดรายละเอียดของสิ่งสมบูรณ์ที่จำเป็นต้องทำ

โครงการเกี่ยวข้องกับการจัดการกับสิ่งต่าง ๆ เช่น XMPP, RabbitMQ และฐานข้อมูล ในการพบกันครั้งแรก (มักจะเป็น IM) ฉันอธิบายอย่างละเอียดถึงสิ่งที่พวกเขาต้องทำ ดูเหมือนว่าพวกเขาจะเข้าใจ - และพวกเขามั่นใจมากว่าจะทำได้อย่างง่ายดาย

จนถึงตอนนี้ดีมาก แต่หลังจากผ่านไปหนึ่งสัปดาห์เมื่อเราพบกันอีกครั้งพวกเขาก็เต็มไปด้วยความเข้าใจผิดเกี่ยวกับสิ่งที่ต้องทำ เมื่อฉันถามหนึ่งในนักพัฒนาว่าเขารู้จัก XMPP หรือไม่เขาบอกว่าเขาทำงานกับมันเป็นครั้งแรก ในการพบกันครั้งแรกของฉันฉันได้กล่าวถึงความซับซ้อนของโครงการและเทคโนโลยีที่เกี่ยวข้องเป็นพิเศษ นอกจากนี้ฉันขอให้พวกเขาเขียนข้อกำหนดการใช้งานซ้ำ ๆว่าพวกเขาจะทำอย่างไร แต่พวกเขาตอบว่าไม่และยืนยันว่าพวกเขาต้องการเขียนรหัส ฉันตอบตกลง

โครงการแล้วเสร็จหลังจาก 3 สัปดาห์และส่งมอบสิ่งที่จำเป็น ณ จุดนั้นฉันเริ่มทบทวนรหัส มันก็โอเคสำหรับส่วนใหญ่ แต่มีปัญหาที่สำคัญบางอย่าง:

  • พวกเขาฮาร์ดโค้ดบางสิ่งที่จำเป็นต้องแยกออกเป็นไฟล์กำหนดค่า
  • มีไฟล์กำหนดค่าหลายไฟล์ที่ฉันต้องรวมไว้ในที่เดียว
  • พวกเขาเขียนเอกสารไม่แน่นอน
  • การเปลี่ยนแปลงเล็กน้อยอื่น ๆ

ฉันขอให้พวกเขาทำการเปลี่ยนแปลงเหล่านี้ (ยกเว้นเอกสารประกอบ) - และเรามีข้อโต้แย้ง

พวกเขากล่าวว่าเนื่องจากราคาคงที่ฉันจึงไม่ยุติธรรมในการขอให้พวกเขาทำการเปลี่ยนแปลงใด ๆ เมื่อพวกเขาเสร็จรหัสการทำงาน ว่าพวกเขาได้ทำงานในโครงการมาอย่างไม่สมเหตุสมผลและตอนนี้มันผิดอย่างสิ้นเชิงที่จะขออะไร

ในที่สุดตอนนี้พวกเขาได้ทำการเปลี่ยนแปลงและโครงการสิ้นสุดลงแล้ว แต่มันทิ้งคำถามไว้ในใจของฉัน ...

  • พวกเขาทำสิ่งที่ต้องการ แต่ฉันต้องการให้ทำอย่างถูกต้องและด้วยเหตุนี้การเปลี่ยนแปลง ฉันไม่ยุติธรรมจริงเหรอ?

  • ทำไมฉันถึงเห็นด้วยกับการให้โค้ดแก่พวกเขาโดยไม่มีข้อกำหนดคุณสมบัติการทำงาน?

  • ทำไมฉันไม่แน่ใจว่าพวกเขาเข้าใจทุกอย่างเป็นครั้งแรก

ไม่มีใครพบตัวเองในตำแหน่งเดียวกันหรือไม่ คุณคิดว่ามีวิธีที่ดีกว่าในการจัดการโครงการภายนอกหรือไม่

- อัปเดต -

ขอบคุณสำหรับความคิดเห็นทั้งหมด - หลังจากไตร่ตรองถึงประสบการณ์ทั้งหมดฉันสามารถสรุปได้ ...

  • แม้ว่าฉันจะไม่ได้คลุมเครือในสเปคจากด้านข้างของฉันฉันไม่ได้ทำให้พวกเขาตายตัวตามที่แนะนำ ดังนั้นการซื้อกลับบ้านคือ: จงเจาะจงให้มากที่สุดเสมอ - อ่านรายละเอียดของคุณจากมุมมองของพวกเขาด้วยและดูว่าคุณพลาดอะไรไปหรือเปล่า ทำซ้ำอย่างน้อยสามครั้ง

  • เพียงระบุสิ่งที่รหัสควรทำไม่เพียงพอ คุณต้องระบุรหัสที่ควรจะมีหน้าตา โครงสร้างไดเรกทอรีจะเป็นอย่างไร แม้ชื่อไฟล์ถ้าเป็นไปได้ การทำเช่นนี้จะช่วยคุณประหยัดจากความรำคาญในภายหลัง ระบุแนวทางการเข้ารหัสอย่างเคร่งครัดอนุสัญญาการตั้งชื่อตัวแปรรูปแบบเอกสารภายใน ฯลฯ ดูว่าแนวทางปฏิบัติดังกล่าวสอดคล้องกับแนวทางเหล่านั้นหรือไม่

  • ต้องการฟังก์ชั่นการใช้งานจากด้านข้างของพวกเขา - ยืนยันว่ามันจะถูกเขียนก่อนรหัสใด ๆ สิ่งนี้จะได้รับความสับสนและความเข้าใจผิดมากมาย

  • ตรวจสอบรหัสตามที่มีการพัฒนาเพื่อให้คุณระบุความผิดปกติก่อนหน้านี้และแก้ไขให้ถูกต้อง พูดคุยกับพวกเขาอย่างน้อยวันเว้นวัน

  • สุดท้ายพยายามสร้างสายสัมพันธ์ที่ดีกับพวกเขา ทำให้พวกเขารู้สึกว่าคุณซาบซึ้งในงานของพวกเขา อย่าผลักดันพวกเขาเกินจริงเพื่อให้พอดีกับแนวทางของคุณ - ขอให้พวกเขาทำเช่นนั้นและบอกพวกเขาว่ามันจะทำให้การบำรุงรักษารหัสง่ายขึ้นมากสำหรับคุณเมื่อพวกเขาเสร็จสิ้นโครงการ


1
ฉันไม่เคยเห็นโครงการในต่างประเทศเป็นไปได้ด้วยดี ฉันคิดว่าฉันอยู่ในเรื่องสงครามเมื่อฉันเริ่มอ่านข้อความนี้
smp7d

คำตอบ:


13

ก่อนอื่นนี่ไม่ใช่ปัญหาของการปิด shoring มันเป็นปัญหาการจัดการผู้ขาย

ใช่คุณทำผิดพลาดมาก ...

พวกเขาทำสิ่งที่ต้องการ แต่ฉันต้องการให้ทำอย่างถูกต้องและด้วยเหตุนี้การเปลี่ยนแปลง ฉันไม่ยุติธรรมจริงเหรอ?

ใช่มันยุติธรรมถ้าคุณต้องการที่จะทำวิธีการบางอย่างที่คุณควรจะพูดก่อนที่ราคาจะตกลงเพื่อให้พวกเขาสามารถเสนอราคาตาม

ทำไมฉันถึงเห็นด้วยกับการให้โค้ดแก่พวกเขาโดยไม่มีข้อกำหนดคุณสมบัติการทำงาน เพราะคุณไม่ต้องการจ่ายค่าสเป็ค! เอกสารนั้นใช้เวลานานและมีราคาแพงพวกเขาควรทำฟรีหรือเปล่า?

ทำไมฉันไม่แน่ใจว่าพวกเขาเข้าใจทุกอย่างเป็นครั้งแรก

พวกเขาเข้าใจ แต่ในการประชุมกำปั้นหลังจากเซ็นสัญญา (และราคาคงที่ตกลง) คือเมื่อคุณใช้มัน! ดังนั้นจำเป็นต้องลดค่าใช้จ่าย (ชั่วโมง) ที่พวกเขาสามารถทำได้ .. โดยทั่วไปเพียงแค่จัดการประชุมหนึ่งครั้งต่อสัปดาห์

นี่คือวิธีทำในครั้งต่อไป ... ในสองขั้นตอน ...

ขั้นตอนที่ 1:ให้พวกเขารวบรวมข้อกำหนดดำเนินการวิเคราะห์ระบบและเขียนการออกแบบทางเทคนิคและ \ หรือ Spec ของการทำงาน (หรือเขียนด้วยตัวเอง) ตกลงราคาสำหรับระยะนี้ อย่าลืมอธิบายว่าคุณไม่ได้มีส่วนร่วมในการพัฒนา ให้แน่ใจว่าได้รวมเวลาสำหรับการประชุมในราคา

ขั้นตอนที่ 2:ให้พวกเขาเสนอราคาพัฒนาตามสเป็คตอนนี้ที่พวกเขา (และคุณ) มีและรู้ว่าความพยายามนั้นเกี่ยวข้องจริงๆ อีกครั้งให้แน่ใจว่าได้รวมเวลาสำหรับการประชุมในราคา เนื่องจากต้องรวมงบประมาณที่ไม่จำเป็นสำหรับการเปลี่ยนแปลง


แก้ไข: ฉันต้องการเพิ่มจุดเพิ่มเติม .. ผู้ขายก็เป็นฝ่ายผิดที่นี่ส่วนหนึ่งของงานนั้นช่วยแนะนำคุณเกี่ยวกับการจัดการโครงการและแจ้งให้คุณทราบว่ามีกระบวนการใดมาถึงที่สั้น


2
คุณลืมเฟส 3 และเฟส 4: ??? และกำไร :-)
Ramhound

3
คุณจะขอให้บุคคลภายนอกเขียนสเปคการทำงานของคุณได้อย่างไร ข้อมูลจำเพาะด้านการใช้งานเป็นข้อกำหนดของโครงการที่คุณต้องการให้ทำงาน ไม่เช่นนั้นคุณจะให้เงินกับพวกเขาและบอกพวกเขาว่า "แก้ปัญหา ... ฉันไม่รู้ลองคิดดูว่าซอฟต์แวร์ควรทำอะไรฉันจะไม่ใส่ใจ"
maple_shaft

1
@maple_Shaft จุดดีการรวบรวมความต้องการเป็นส่วนหนึ่งของขั้นตอนที่ 1 ฉันจะอัปเดตคำตอบของฉัน
Morons

1
-1 สำหรับอึฟอลล์ของ dogma ที่ล้าสมัย

3
@JarrodRoberson ฉันไม่ใช่แฟนบอยของวิธีการเฉพาะใด ๆ แต่ละคนมีข้อดี แต่บอกว่าล้มเหลวเพียงเพราะพวกเขาไม่ได้ใช้ Agile ผิด
Morons

17

ฉันต้องการมันอย่างถูกต้อง

จากนั้นอย่า outsource หรือถ้าคุณแน่ใจว่าพวกเขาทำงานในทีมโครงการของคุณและคุณมีส่วนร่วมในการตรวจสอบโค้ดในเวลานั้น

โครงการแล้วเสร็จหลังจาก 3 สัปดาห์และส่งมอบสิ่งที่จำเป็น ณ จุดนั้นฉันเริ่มทบทวนรหัส

อีกครั้งคุณควรได้รับการตรวจสอบรหัสในระหว่างโครงการไม่ใช่หลังจาก

พวกเขากล่าวว่าเนื่องจากราคาคงที่ฉันจึงไม่ยุติธรรมในการขอให้พวกเขาทำการเปลี่ยนแปลงใด ๆ เมื่อพวกเขาเสร็จรหัสการทำงาน

คุณจ่ายราคาคงที่สำหรับรหัสการทำงาน อุ่ย นั่นไม่ใช่ความผิดของพวกเขา แต่เป็นของคุณ ใช้เวลาในการมีส่วนร่วมในการวิ่งที่คุณควบคุมและคุณจะไม่ประสบปัญหานี้ คุณควรชำระเงินตามเวลาและยอมรับเรื่องราวของผู้ใช้ไม่ใช่รหัส

ในการพบกันครั้งแรก (มักจะเป็น IM) ฉันอธิบายอย่างละเอียดถึงสิ่งที่พวกเขาต้องทำ ดูเหมือนว่าพวกเขาจะเข้าใจ - และพวกเขามั่นใจมากว่าจะทำได้อย่างง่ายดาย

เมื่อต้องจัดการกับโครงการที่ต้องใช้แหล่งภายนอกอย่างสมบูรณ์คุณต้องตรวจสอบให้แน่ใจว่าข้อมูลจำเพาะของคุณนั้นแข็งแกร่งมาก หากคุณต้องอธิบายอะไรก็ตามที่ใช้เวลานานกว่าสองสามประโยคแสดงว่าข้อมูลจำเพาะของคุณไม่สมบูรณ์ นี่คือเหตุผลที่พวกเขาเปลี่ยนทิศทางจากสเป็ค

เมื่อฉันถามหนึ่งในนักพัฒนาว่าเขารู้จัก XMPP หรือไม่เขาบอกว่าเขาทำงานกับมันเป็นครั้งแรก

เป็นเรื่องปกติเมื่อการจ้างผู้รับเหมาช่วงไปยังประเทศที่มีต้นทุนต่ำเป็นที่นิยมสำหรับนักพัฒนาเพื่อให้เรซูเม่และดำเนินการต่อทักษะของพวกเขาเพียงเพื่อแผ่นดินงาน บ่อยครั้งที่พวกเขาไม่ต้องกังวลเกี่ยวกับความสามารถของพวกเขาจนกว่าพวกเขาจะลงจอดเพราะพวกเขาหลายคนเพิ่งสร้างอาคารเพื่อต่อยกิ๊กที่จ่ายค่าครองชีพที่สะดวกสบาย

ทำไมฉันถึงเห็นด้วยกับการให้โค้ดแก่พวกเขาโดยไม่มีข้อกำหนดคุณสมบัติการทำงาน?

มีเพียงคุณเท่านั้นที่สามารถตอบคำถามนี้ได้ด้วยตัวเอง แต่ถือเป็นประสบการณ์การเรียนรู้ในครั้งต่อไป


2
ฉันไม่เห็นด้วยกับ "ถ้าคุณต้องการให้มันทำอย่างถูกต้องอย่าออกมา"
Morons

1
@ Morons แน่นอนว่าคุณพูดถูก ๆ ฉันเพิ่งเริ่มต้นกับกรอบความคิดนั้นเพราะ บริษัท ต่าง ๆ ให้ความสนใจกับโอกาสที่จะได้รับงานนอกสถานที่เป็นสิ่งที่ผู้คนส่วนใหญ่ขาดวินัยในการทำอย่างถูกต้อง หากพวกเขาแก้ไขปัญหาภายในของพวกเขาเพื่อที่พวกเขาสามารถทำได้อย่างถูกต้องแล้วพวกเขาก็อาจจะมีความต้องการน้อยกว่าแม้แต่ในต่างประเทศในตอนแรก
maple_shaft

3
มันควรจะพูดว่า"ถ้าคุณต้องการให้มันทำอย่างถูกต้องอย่าคาดหวังคุณภาพจากผู้เสนอราคาต่ำสุด"เพื่อนที่เป็นช่างภาพอิสระบอกว่า"ลูกค้าที่ถูกที่สุดมีความคาดหวังที่ไม่สมจริง"

1
ฉันไม่เห็นด้วยกับข้อความนั้นคุณสามารถมีปัญหาเดียวกันกับทีมงานภายในหรือร้านค้าพัฒนาท้องถิ่น

7

บริษัท จ้างพวกเขาผ่าน Elance ในราคาคงที่ ณ จุดนี้เจ้านายของฉันทิ้งฉันไว้ตามลำพังเพื่อจัดการพวกเขาและทำงานให้เสร็จ ฉันสร้างข้อกำหนดรายละเอียดของสิ่งสมบูรณ์ที่จำเป็นต้องทำ

ดังนั้นคุณสองคนแรกที่ทำสัญญาและจากนั้นพวกเขาให้คุณเขียนสเป็คและพวกเขายอมรับสเป็คนั้นเป็นส่วนหนึ่งของสัญญาของคุณหรือไม่ หากเป็นเช่นนั้นมันไม่ใช่ความผิดของคุณนั่นเป็นความผิดของผู้รับเหมาของคุณ คุณสามารถเขียนสเป็คได้อย่างง่ายดายให้พวกเขาทำงาน 3 เดือนแทน 3 สัปดาห์ - ทั้งหมดในราคาเดียวกัน

มันก็โอเคสำหรับส่วนใหญ่ แต่มีปัญหาที่สำคัญบางอย่าง:

  • พวกเขาฮาร์ดโค้ดบางสิ่งที่จำเป็นต้องแยกออกเป็นไฟล์กำหนดค่า
  • มีไฟล์กำหนดค่าหลายไฟล์ที่ฉันต้องรวมไว้ในที่เดียว
  • พวกเขาเขียนเอกสารไม่แน่นอน
  • การเปลี่ยนแปลงเล็กน้อยอื่น ๆ

สิ่งเหล่านี้เป็นส่วนหนึ่งของข้อมูลจำเพาะของคุณหรือไม่ หากพวกเขาเป็นความผิดของพวกเขา ถ้าไม่มันเป็นของคุณ หากยังไม่ชัดเจนว่าสิ่งเหล่านี้มีอยู่ในข้อมูลจำเพาะหรือไม่นั้นเป็นความผิดของคุณเนื่องจากคุณเขียนเอกสาร ลองเขียน spec ที่ดีกว่าในครั้งต่อไป


3

ฉันทำการนำเสนอเมื่อไม่นานมานี้เกี่ยวกับความแตกต่าง มันถูกเรียกว่า "Global Outsourcing, 10 เคล็ดลับในการเสริมพลังธุรกิจของคุณ" นี่คือบทสรุปของ 10 เคล็ดลับ (นี่มาจากมากถึง 400 โครงการเอาต์ซอร์ซ):

ตัวเลือก

  1. หลีกเลี่ยงการเข้าร่วมประมูลต่ำสุดและสูงสุด เห็นได้ชัดว่าคุณไม่ต้องการรับความเสี่ยงจากผู้ที่เสนอราคาต่ำกว่าและผู้ประมูลสูงสุดมักจะมีค่าน้อยกว่าค่ามัธยฐาน

  2. ตรวจสอบการจัดอันดับ (หรือการอ้างอิง) ฉันมักจะตรวจสอบการอ้างอิงและการให้คะแนน

  3. แรงจูงใจในการจัดลำดับความสำคัญ ในราคาเท่ากันฉันเลือกการเสนอราคาที่มีแรงจูงใจ ตัวอย่างเช่นการให้ผู้ประมูลพูดคุยเกี่ยวกับโครงการของคุณถูกต้องเป็นสัญญาณที่ดีมาก

B. การกำกับดูแล

  1. ปกป้องทรัพย์สินทางปัญญาของคุณ นี่เป็นหนึ่งในความผิดพลาดที่ยิ่งใหญ่ที่สุด มักจะจัดการโดยแพลตฟอร์มที่คุณใช้ (เช่นผู้ใช้งานหรือพนักงานทำงาน)

  2. กรอบปฏิเสธที่กำหนดเอง หรือคุณมีความเสี่ยงที่จะผูกติดอยู่กับมันหรือมากกว่านั้นโดยเฉพาะกับนักพัฒนาที่เขียนมัน)

  3. กำหนดมาตรฐาน เกี่ยวข้องกับเคล็ดลับก่อนหน้า การใช้มาตรฐานจะเพิ่มมูลค่าของซอร์สโค้ดของคุณเนื่องจากสามารถเข้าใจได้โดยนักพัฒนาจำนวนมาก

  4. ตรวจสอบต้นทบทวนบ่อย ปัญหาส่วนใหญ่สามารถ "ปรับ" ถ้าคุณตรวจทานซอร์สโค้ดหลังจากสัปดาห์แรกหรือที่ทำงาน

C. กลยุทธ์

  1. ผู้ให้บริการทดสอบกับโครงการขนาดเล็ก ก่อนที่ฉันจะให้โครงการใหญ่แก่ผู้ให้บริการฉันทดสอบกับโครงการขนาดเล็กหนึ่งหรือสองโครงการ

  2. ยอมรับผู้ชนะการประมูลหลายเพื่อลดความเสี่ยง สำหรับโครงการที่สำคัญฉันเลือกผู้ประมูลสองหรือสามคนจากนั้นฉันก็จะใช้งานได้ดีที่สุด ทำงานได้ดีที่สุดกับโครงการขนาดเล็ก (ต่ำกว่า $ 5,000)

  3. ประกอบชิ้นส่วน กลยุทธ์อื่นคือการจ้างบุคคลภายนอกที่คุณประกอบในภายหลัง ข้อดีอย่างหนึ่งคือคุณสามารถสลับไปมาระหว่างผู้ให้บริการได้อย่างง่ายดายและไม่มีใครสามารถเข้าถึงทุกสิ่งได้ (ลดความเสี่ยงด้านทรัพย์สินทางปัญญา)


1

ฉันเห็นด้วยอย่างยิ่งกับคำตอบของ maple_shaft

คุณยอมรับรหัสและฉันคิดว่าเขียนเช็คแล้วตรวจสอบรหัสคุณเรียงลำดับจากนั้นทำทุกอย่างย้อนหลัง

ทำไมฉันถึงเห็นด้วยกับการให้โค้ดแก่พวกเขาโดยไม่มีข้อกำหนดคุณสมบัติการทำงาน?

เพราะคุณไม่ได้เขียนลงในสัญญา เมื่อคุณต้องการทำงานให้เสร็จคุณยอมรับเหตุผลของพวกเขาแม้ว่ามันจะเป็นเรื่องที่ทำให้คุณเดือดร้อน

ทำไมฉันไม่แน่ใจว่าพวกเขาเข้าใจทุกอย่างเป็นครั้งแรก

คุณควรให้แบบที่คุณรู้สึกว่าใช้ได้ ถ้าอย่างนั้นพวกเขาก็ไม่เข้าใจ ฉันหมายความว่าคุณไม่ได้จ่ายเงินให้ทำอย่างนั้นใครจะไปทำ? รหัสนี้จะรักษาได้อย่างไรโดยไม่มีเอกสารและการออกแบบที่เฉพาะเจาะจง คำตอบมันอาจจะไม่เป็น

พวกเขากล่าวว่าเนื่องจากราคาคงที่ฉันจึงไม่ยุติธรรมในการขอให้พวกเขาทำการเปลี่ยนแปลงใด ๆ เมื่อพวกเขาเสร็จรหัสการทำงาน

คุณโชคดีที่พวกเขาทำการเปลี่ยนแปลงที่คุณต้องการ พวกเขาอาจพูดได้ว่า: โชคดี

ไม่มีใครพบตัวเองในตำแหน่งเดียวกันหรือไม่ คุณคิดว่ามีวิธีที่ดีกว่าในการจัดการโครงการภายนอกหรือไม่

แน่นอนว่าคนอื่นอยู่ในตำแหน่งของคุณไม่เช่นนั้นอุตสาหกรรม "outsource" ทั้งหมดจะไม่เจ็บปวด บริษัท หลายแห่งเริ่มตระหนักว่าต้องจ่าย (หรือรอ) เพื่อทำ 3 และ 4 เท่ามีราคาแพงกว่าและทำทันที .

อย่างน้อยที่สุดคุณสามารถตรวจสอบสถานะของโครงการได้ทุกวัน หากคุณอยู่ข้างหลังมีสิ่งที่คุณสามารถทำได้เพื่อควบคุมความเสียหายอย่างน้อยก็ในทางทฤษฎี


1
companies are starting to realize having to pay ... to do it 3 and 4 times is more expensive then doing it right once.มันเป็นมากกว่านี้ฉันแค่คิดว่าช่วงเวลาฮันนีมูนของอุตสาหกรรมที่มีการพัฒนาซอฟต์แวร์ต่างกันใกล้จะสิ้นสุดและ บริษัท อื่น ๆ เริ่มตระหนักว่าไม่ใช่ลูกวัวทองคำที่พวกเขาคิดว่ามันจะเป็น ( หรือบอกว่ามันจะ โดยที่ปรึกษา ) ผู้บริหารส่วนใหญ่แย่มากและพวกเขาก็ไม่รู้ว่าทำไมพวกเขาจึงมองหา bullet bullet เงินเพื่อแก้ไขปัญหาทั้งหมด Offshoring นั้นยอดเยี่ยมถ้าคุณทำถูกต้อง แต่ส่วนใหญ่ไม่มีวินัยแบบนั้น
maple_shaft
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.