จะทำอย่างไรถ้าฉันไม่มีความคิดที่ดีในการใช้คุณลักษณะนี้ [ปิด]


32

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

ฉันต้องเดินหน้าต่อไป แต่อยากรู้ว่าอะไรดีที่สุด:

  • คิดมากรอมากขึ้นและค้นหาวิธีที่ดีที่สุดต่อไป
  • หยุดเสียเวลาและเริ่มด้วยการออกแบบที่ไม่ดีครอบคลุมทุกอย่างด้วยการทดสอบ

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


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

12
@gnat: คำถามอื่น ๆ เหล่านี้จัดการกับสถานการณ์ที่ผู้ถามทราบถึงวิธีการใช้คุณสมบัติบางอย่างได้อย่างหมดจด แต่อาจต้องการเสียสละการออกแบบที่ดีสำหรับการผึ้ง "รวดเร็วและสกปรก" อย่างไรก็ตามคำถามนี้อธิบายสถานการณ์ที่แตกต่างเป็นเรื่องเกี่ยวกับการแก้ปัญหาโดยทั่วไปเมื่อคุณไม่พบจุดเริ่มต้นที่ดีดังนั้น IMHO จึงไม่ซ้ำกัน
Doc Brown

หมายเหตุ: หากแอปประสบความสำเร็จคุณจะไม่มีวัน "เสร็จสิ้นการเข้ารหัส" และคุณสมบัติจะได้รับการออกแบบใหม่ ดังนั้นฉันจะดำเนินการตามวิธีที่ดีที่สุดที่ฉันสามารถทำได้
ren

คำตอบ:


41

นอกเหนือจากการพูดคุยกับผู้คนเกี่ยวกับเรื่องนี้ (คำถามแสดงให้เห็นว่าคุณไม่มีเพื่อนร่วมงานในโครงการ) ฉันมักจะพบว่าเป็นวิธีการที่ดีที่จะมุ่งเน้นไปที่สิ่งที่ฉันสามารถทำได้

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

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


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

1
ข้อเสียอื่น ๆ ของวิธีการนี้บางครั้งก็นำคุณไปสู่ ​​"ฉันสามารถแก้ปัญหา X สิ่งที่เหลือคือทำ Y" เมื่อในความเป็นจริง Y ไม่เป็นไปได้และทางออกที่แท้จริงคือ Z.
Brian

@ ริชสมิ ธ ไบรอัน: มันเกิดขึ้นแม้ว่าจะไม่ค่อยถามคุณก็ตาม จากนั้นจะช่วยให้คุณเข้าใจได้ดีขึ้นว่าเหตุใดส่วนที่ขาดหายไปนั้นยากมากซึ่งจะช่วยปรับปรุงการประมาณการของคุณ และฉันจะไม่แนะนำให้วางในสัปดาห์ของการทำงานบนพื้นฐานของการแบ่งความรับผิดชอบและการเก็งกำไรโดยพลการ
jdv-Jan de Vaan

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

14

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

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

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


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

@c_maker ใช่แน่นอน มิฉะนั้นจะไม่มีเหตุผลที่จะเขียนทุกอย่างใหม่ตั้งแต่เริ่มต้น ฉันจะเพิ่มลงในคำตอบ ขอบคุณ
BЈовић

10

แล้วถามคนอื่นอีกล่ะ? ตัวอย่างเช่นคุณสามารถอธิบายปัญหาของคุณได้ที่นี่หรือหากเป็นปัญหาการใช้งานมากขึ้นใน stackoverflow.com และขอแนวคิด บางครั้งมันจะช่วยคุณได้ถ้าคุณเริ่มจดปัญหาแม้ว่าคุณจะไม่ได้รับคำตอบที่ดีก็ตาม


หากเป็นส่วนต่อประสาน
Rob Church

หากคุณถาม SO ดังนั้นคำตอบจะถูกลิขสิทธิ์ภายใต้ Creative Commons และขึ้นอยู่กับโครงการรหัสนั้นอาจใช้ไม่ได้
smcg

2
คำแนะนำสามารถมีลิขสิทธิ์หรือไม่ แน่นอนผู้เขียนจะใช้เป็นบทช่วยสอนไม่คัดลอก / วาง?
grizwako

@smcg: หัวข้อถูกกล่าวถึงที่นี่: meta.stackexchange.com/questions/12527/… - แต่ถ้าหากเป็นปัญหาจริงๆฉันคิดว่าใครสามารถหลีกเลี่ยงปัญหานี้ได้ด้วยวิธีที่ GrizzLy แนะนำ
Doc Brown

@DocBrown IANAL ดังนั้นฉันไม่สามารถพูดได้อย่างแน่นอนว่าจะขึ้น แต่บางครั้งก็ดีที่จะทำผิดในด้านของความระมัดระวัง
smcg

2

ความคิดบางอย่าง:

  • ระดมสมอง
    เขียนไอเดียที่โง่ ๆ ที่คุณมี (ลงบนกระดาษหรือไวท์บอร์ด) ตัดสิ่งที่คุณแน่ใจว่าไม่ทำงานออก เขียนต่อไป. รวมวิธีแก้ไขปัญหาที่อาจเกี่ยวข้องกับโลกแห่งความจริง ยกตัวอย่างเช่นการผสมสีหรือการตอกตะปูบนผนังหรือการเปลี่ยนน้ำมันเครื่องของคุณนั้นเป็นการแก้ปัญหาที่คล้ายคลึงกันจริงหรือไม่?
  • ขอความช่วยเหลือจาก
    Google ถามที่นี่ถามเพื่อนที่น่าสนใจของคุณ ฯลฯ
  • แก้ปัญหาที่เกี่ยวข้อง
    คุณไม่สามารถแก้ปัญหา แต่คุณสามารถแก้ปัญหาหนึ่งที่ง่ายมาก? หรืออันซับซ้อนที่เกี่ยวข้องอย่างเท่าเทียมกัน? ทำอย่างนั้น. จากนั้นทำการเปลี่ยนแปลงเล็กน้อย ๆ เพื่อนำโซลูชันของคุณเข้าใกล้โซลูชันที่ต้องการ
  • เพียงเริ่มเขียนจากภายนอก
    โดยไม่คำนึงว่าอินเทอร์เฟซของคุณเป็นบริการบนเว็บ, หน้าเว็บ, รูปแบบเนทิฟ, กล้อง, คีย์บอร์ด, จอภาพหรืออะไรก็ตามที่มีอินเตอร์เฟซ เขียนโค้ด / pseudocode สองสามบรรทัดเพื่อให้ส่วนต่อประสานทำงานได้ ใช้วิธีเวทมนต์ที่ยังไม่มี ทำแบบเดียวกันซ้ำ ๆ สำหรับแต่ละเวทย์มนตร์ที่ไม่มีอยู่ ปรับปรุงในภายหลัง

2

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


1

ฉันมักจะลองดูจากมุมมองของผู้ใช้ มันง่ายมากที่จะนึกถึงแนวคิด "เจ๋ง ๆ " ในฐานะนักพัฒนาที่คุณสามารถใช้เวลานานในการทำงานที่เพิ่มแอพของคุณน้อยมาก

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

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


เยี่ยมเพราะฉันมาจากมอสโก :)
user21974

ที่นั่นคุณไปเป็นสัญญาณ!
Mrk Fldig

1

ความคิดเห็นของฉันคือ: อย่าเขียนโค้ดที่ใช้งานได้! มันควรจะยากมากในการปรับโครงสร้างในอนาคต

มันเป็นวิธีการทั่วไปสำหรับนักพัฒนาซอฟต์แวร์ (และแน่นอนว่า PMs หรือผู้บังคับบัญชา) ฉันได้ยินหลายครั้งที่ "เพิ่งจะทำให้มันใช้งานได้" หรือ "ฉันจะแก้ไขในภายหลัง" (ภายหลังเมื่อไม่เคยเลย!) แต่ฉันคิดว่าคุณภาพไม่ใช่สิ่งที่คุณไม่สามารถได้รับในโครงการ

คำแนะนำของฉันคือหยุดคิดถึงปัญหาของคุณสักพักหนึ่ง .... ทำอย่างอื่นและบางครั้งคำตอบก็ออกมาเอง

Btw การถามเพื่อนร่วมงานเป็นวิธีที่ยอดเยี่ยมในการแก้ปัญหาของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.