สิ่งที่สำคัญที่สุดมีประโยชน์หรือเป็นสิ่งที่รู้แจ้งในช่วง 12 เดือนที่ผ่านมาคืออะไร [ปิด]


14

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

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

ดังนั้นถ้าคุณต้องเลือกอย่างใดอย่างหนึ่งจาก 12 เดือนที่ผ่านมาที่คุณได้เรียนรู้ว่ามันจะเป็นอะไร?

คำตอบ:


18

ฉันได้เรียนรู้ว่ามันต้องมีผู้จัดการที่เน่าเสียเพียงคนเดียวเท่านั้นที่ทำให้โครงการทั้งหมดเสีย แต่ต้องใช้โปรแกรมเมอร์ที่ดีจำนวนมากในการทำความสะอาดหลังจากนั้น


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

เพิ่ม "ฉันเรียนรู้ว่า ... "
Martin Wickman

+1 เพราะฉันเป็นหนึ่งในโปรแกรมเมอร์เหล่านั้นในเดือนนี้ 70+ ชั่วโมงเมื่อสัปดาห์ที่แล้ว == "ตาฉันในถัง"
Dan Ray

ฉันจำได้! มันควรจะพูด! "ผู้จัดการเพียงคนเดียวที่เน่าเสียจะเสียโครงการทั้งหมด แต่ก็ต้องใช้โปรแกรมเมอร์ที่ดีจำนวนมากเพื่อทำความสะอาดในภายหลัง"
Amir Rezaei

12

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

เป็นไปได้ที่จะรวมองค์ประกอบของการเขียนโปรแกรมเชิงหน้าที่ลงในภาษาที่จำเป็นเช่น Java และแม้ว่ามันจะไม่เป็นไปตามปกติ แต่ก็มีประโยชน์อย่างมากในปัญหาบางอย่าง ยกตัวอย่างเช่นการเรียนที่ไม่ระบุชื่อประมาณเท่ากับการปิดตามที่อธิบายไว้ในวิกิพีเดีย การประเมิน Lazy ควรเป็นบรรทัดฐานมากกว่าสิ่งที่ผิดปกติ Immutability แทบจะไม่สามารถใช้มากเกินไป เพิ่งจะผ่านความคิดที่ล้าสมัย (เกือบ) ที่การสร้างวัตถุใหม่แทนที่จะกลายพันธุ์ที่มีอยู่นั้นมีราคาแพงเนื่องจากการบริโภค GC และฮีป - ใน 99.9% ของกรณีไม่เกี่ยวข้องกัน ในความเป็นจริงการประมวลผลแบบขนานสามารถพลิกข้อโต้แย้งด้านประสิทธิภาพได้อีกวิธีหนึ่ง: การสร้างวัตถุที่ไม่เปลี่ยนรูปแบบใหม่อาจมีราคาถูกกว่าการกลายพันธุ์วัตถุที่มีอยู่เนื่องจากคุณกำจัดการล็อก

ข้อมูลเพิ่มเติมเกี่ยวกับการทำ FP ใน Java บริสุทธิ์ที่นี่ , ที่นี่ , ที่นี่และที่นี่


+1 ฉันเห็นด้วย เป็นเรื่องน่าเศร้าที่ Java มีการสนับสนุนการเขียนโปรแกรมที่ใช้งานไม่ได้
Jonas

ฉันมีความสนใจที่ยาวนานใน FP (งานแรกของฉันเกี่ยวข้องกับเสียงกระเพื่อม) และฉันคิดว่ามันน่าตื่นเต้นมากที่ในช่วงไม่กี่ปีที่ผ่านมาในที่สุดมันก็กลายเป็นกระบวนทัศน์ 'ทั่วไป' ที่ค่อนข้างยุติธรรมข้าง OO เป็นต้น
FinnNk

Java 7 ควรมีการปิดที่ดีกว่าอย่างน้อย และการใช้ห้องสมุดที่ฉลาดเช่นแลมบ์ดาสามารถทำสิ่งมหัศจรรย์เพื่อแก้ไขข้อบกพร่องของภาษานั้น ๆ
Joonas Pulakka

ฉันต้องการการสนับสนุนการเรียกซ้ำแบบหางที่ดีขึ้นใน Java / JVM
Jonas

1
@ วิธีความช่วยเหลือ: สองลิงค์แรกในคำตอบของฉันคือบทความเกี่ยวกับ FP กับ Java ฉันไม่รู้เกี่ยวกับหนังสือใด ๆ ในเรื่องนี้ ฉันคิดว่าวิธีที่ดีที่สุดในการ "รับ" คือการเรียนรู้ภาษา FP จริง ๆ แล้วเริ่มใช้วัตถุที่ไม่เปลี่ยนรูปได้ในโค้ด Java ของคุณ
Joonas Pulakka

10

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

กล่าวโดยย่อ: การเมืองมีความสำคัญและบางครั้งการเมืองที่มีผลกระทบต่อคุณคุณไม่สามารถควบคุมได้


ฉันให้ +1 เสมือนกับคุณเพราะมาร์ตินทำให้ฉันยิ้มด้วยคำตอบที่คล้ายกัน;) คุณอ่าน Dead March แล้วหรือยัง? นี่คือหนังสือเกี่ยวกับสิ่งที่คุณกำลังพูดถึง

(ฉันแปลงการโหวตเสมือนเป็นของจริง)

9

ผมได้เรียนรู้ว่าจุดประสงค์ของการทดสอบซอฟต์แวร์คือการหาข้อบกพร่อง มันเป็นไม่ได้ที่จะตรวจสอบว่าระบบที่ถูกต้อง

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

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

ผลทางจิตวิทยานี้ถูกกล่าวถึงมากขึ้นในThe Art of Software Testingหนังสือคลาสสิคที่ฉันขอแนะนำ ผู้เขียนไมเออร์ยังแนะนำว่าใครก็ตามที่กำลังทดสอบโปรแกรมไม่ควรเป็นผู้แต่งหรือแม้แต่ในสายการจัดการเดียวกัน คุณสามารถทำสิ่งนี้หากคุณกำลังเขียนโค้ดด้วยตัวเองดังนั้นจึงต้องใช้วินัย


8

ทำการทดสอบที่ขับเคลื่อนด้วยการพัฒนาตั้งแต่เริ่มต้นส่งมอบลูกค้าเพื่อดูว่ามันจะมีผลต่อคุณภาพของรหัสอย่างไรและจะเรียกใช้จากภายในตัวเรียกใช้ JUnit ใน Eclipse มันส่งผลให้ผลิตภัณฑ์ที่ดีขึ้น


โปรดทราบว่าฉันไม่พบวิธีที่จะผูก "รันการทดสอบหน่วยล่าสุด" กับคีย์ ทำให้มันน่าเบื่อนิดหน่อย

5

มูลค่าที่แท้จริงของการเขียนโปรแกรม egoless

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

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


3

นี่คือคำตอบสำหรับคำถามของฉัน:

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


3

ฉันเรียนรู้ว่าแนวคิดทางคณิตศาสตร์เช่นเซมิริงใช้กับอัลกอริทึมอย่างไร ด้วยวิธีนี้คุณสามารถแสดงให้เห็นว่าอัลกอริทึมบางอย่างเหมือนกันยกเว้นการใช้ semiring ที่แตกต่างกัน นี่ไม่ควรแปลกสำหรับฉันในฐานะโปรแกรมเมอร์ แต่หัวฉันก็ปลิวไป


1
คุณมีตัวอย่างของหนึ่งหรือไม่
ทำเครื่องหมาย C

มีตัวอย่างในหนังสือองค์ประกอบของการเขียนโปรแกรมที่ใช้ฟังก์ชั่นที่คำนวณพลังและสิ่งฟีโบนักชีบางอย่างซึ่งคำนวณค่า Fib ในเวลา O (บันทึก n) ฉันคิดว่าตัวอย่างสามารถพบได้ที่นี่cpp-next.com/archive/2010/03/eop-ch3-previewแต่เว็บไซต์นั้นตอบกลับพร้อมข้อผิดพลาดเซิร์ฟเวอร์ภายใน
Peter Stuifzand

3

นอกจากการเมืองที่Frank Shearar พูดถึงฉันเพิ่งค้นพบQUnitและJSCoverageซึ่งทำให้วันของฉัน และเดือน ไม่เคยคิดว่าจะเป็นไปได้ที่จะทดสอบหน่วย JavaScript ที่มีรหัสครอบคลุม แต่มี ... :-)


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

2

สามอันดับแรกของฉันสำหรับการเขียนโปรแกรมในปีที่แล้วจะเป็นดังต่อไปนี้ (เรียงตามลำดับความสำคัญและกตัญญู):

  • กระบวนทัศน์การเขียนโปรแกรมเชิงฟังก์ชั่นสำหรับเปิดใจให้คนอื่น ๆ มักจะแสดงวิธีคิดและอัลกอริธึมในโค้ด ฉันรู้สึกว่าทักษะการเขียนโปรแกรมโดยรวมของฉันดีขึ้นมากในเวลาอันสั้นขอบคุณแนวคิดการเขียนโปรแกรมที่ใช้งานได้

    (ขอบคุณส่วนตัวของฉันไปที่TomášPetříčekสำหรับการเขียนโปรแกรมหนังสือที่ยอดเยี่ยมในโลกแห่งความเป็นจริงของเขา)

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

    (ถ้าฉันต้องพูดถึงแหล่งข้อมูลการสอนที่ดีฉันจะบอกว่าArt of Unit Test Unit ของ Roy Osherove )

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


2

สิ่งที่เปลี่ยนแปลงไปในอุตสาหกรรมซอฟต์แวร์ที่พัฒนาอย่างรวดเร็วเส้นโค้งการเรียนรู้อยู่ที่นี่เสมอ "หากมีวิธีการเรียนรู้โดยไม่ต้องใช้เวลาในการเรียนรู้"


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

1

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

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


0

ฉันจะบอกว่าใช้การทดสอบหน่วย Microsoft ภายใน Visual Studio 2010

ฉันพบว่ามันง่ายมากที่จะทำการดีบักวิธีทดสอบที่เฉพาะเจาะจง

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


0
  • เรียนรู้ Basic Python (ใช้เพื่อเขียนสคริปต์ด่วนบางครั้ง)

  • ติดตั้ง ArchLinux ใน VM (มี Ubuntu ใน VM ก่อนหน้านี้พีซีของฉันเร็วตอนนี้!)

  • เริ่มต้นด้วย MATLAB (โดยเฉพาะอย่างยิ่งสำหรับการพล็อตกราฟและการตรวจสอบตัวเลขอย่างรวดเร็ว)

  • เปลี่ยนเป็น Mercurial (จาก SVN) (การแยกและการรวม!)



-1

ฉันต้องเริ่มดูแลเว็บแอพพลิเคชั่นของ Python ดังนั้นฉันจึงตัดสินใจว่ามันเป็นช่วงเวลาที่ดีในการเรียนรู้Vimเช่นกัน ตอนนี้ฉันใช้ปลั๊กอิน IdeaVim สำหรับ Intellij สำหรับการพัฒนา Java และ Flex ของฉันและฉันเชื่อว่ามันทำให้การพิมพ์ของฉันเร็วขึ้นและมีประสิทธิภาพมากขึ้น


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