JavaRush /จาวาบล็อก /Random-TH /วันหนึ่งในชีวิตของนักพัฒนา Java ส่วนที่ 1
alex8894
ระดับ
Санкт-Петербург

วันหนึ่งในชีวิตของนักพัฒนา Java ส่วนที่ 1

เผยแพร่ในกลุ่ม
สวัสดีเพื่อนร่วมงานที่รัก! หลังจากการตีพิมพ์ " 20+ ปีต่อมา " ผู้อ่านบางคนถามถึงเรื่องราวต่อเนื่อง ฉันจะพูดอะไรได้อีก? ดูเหมือนว่าฉันได้ครอบคลุมหัวข้อการเปลี่ยน "อีนิกี้มีเครา" ให้เป็นนักพัฒนา Java อย่างครบถ้วนแล้ว จะสามารถสรุปได้ไม่ช้ากว่าหลังจากทำงานมาหนึ่งปี จากนั้นฉันก็ตัดสินใจอธิบายว่าวันทำงานปกติของฉันเป็นอย่างไร ภายใต้ชื่อ “วันหนึ่งในชีวิตของนักพัฒนา Java” เมื่อตอนที่ฉันยังเด็กฉันชอบนอน ตอนที่ฉันยังเป็นเด็ก บังเอิญฉันนอนจนถึงเที่ยงและมาทำงานตอนบ่ายสามหรือสามโมงครึ่งด้วยซ้ำ ทุกครั้งที่ฉันตอบสนองต่อข้อเรียกร้องเป็นระยะๆ ของฝ่ายบริหารให้ “มาเหมือนคนอื่นๆ” นั่นคือภายในเวลา 9.00 น. เช่นเดียวกับทุกครั้ง พวกเขาบอกว่าฉันต้องทำงานบนคอมพิวเตอร์เมื่อไม่ได้รบกวนใครเลย มันกลิ้ง แต่เมื่ออายุมากขึ้น เห็นได้ชัดว่ามีบางอย่างเปลี่ยนแปลงในร่างกาย และตอนนี้ฉันเป็น "สนุกสนาน" มากกว่า "นกฮูกกลางคืน" นั่นเป็นสาเหตุที่ตอนนี้ฉันมาทำงานก่อน (หรืออย่างใดอย่างหนึ่ง) วันนี้ฉันเป็นคนแรก และฉันมีเวลาครึ่งชั่วโมงหรือหนึ่งชั่วโมงแห่งความเงียบงันจนกว่าคนอื่นๆ จะตามทัน ถึงเวลาวางแผนแล้ววันนี้ ฉันพัฒนาภายใต้ Linux Mint ฉันชอบปุ่ม Start เรียบๆ และหรูหรา ไม่เหมือนแผ่นกระเบื้องพวกนี้ ตัวจัดการเดสก์ท็อป Cinnamon ไม่ได้มีเอฟเฟกต์ภาพมากเกินไป แต่ในแง่ของการขัดเกลานั้นด้อยกว่า MacOS เล็กน้อยซึ่งแน่นอนว่าเป็นมาตรฐานในเรื่องนี้ เปรียบเทียบได้ง่าย มี Mac อยู่บนโต๊ะถัดไป โดยมีนักออกแบบ UX ทำงานอยู่เบื้องหลัง ฉันแทบไม่มีข้อตำหนิเกี่ยวกับระบบปฏิบัติการเลย: มันทำงานได้อย่างรวดเร็วและเสถียรมากในช่วงเวลานี้ฉันรีบูทมันเพียงสามครั้ง - เมื่อฉันปิดคอมพิวเตอร์ในช่วงวันหยุดยาว ที่จริงแล้วมันยังโหลดได้เกือบจะในทันที แม้แต่หน้าจอสแปลชก็ไม่มีเวลาปรากฏขึ้น เนื่องจากคอมพิวเตอร์ของนักพัฒนาทุกเครื่องมีไดรฟ์ SSD ก่อนอื่นฉันเปิดไคลเอนต์อีเมล Thunderbird จดหมายมาพร้อมกับข้อมูลเกี่ยวกับการเปลี่ยนแปลงหน้าเว็บที่ฉันสนใจในวิกิ (มีการตั้งค่าและข้อกำหนด) แต่สิ่งสำคัญคือการแจ้งเตือนจากตัวติดตาม สิ่งที่น่าสนใจเกิดขึ้นกับเราคืออะไร? โอ้ พวกเขากลับมาจากการทดสอบคุณสมบัติที่ฉันทำเสร็จเมื่อวานนี้ ดูเหมือนว่าพวกเขาจะพบข้อบกพร่อง ใช่มันเป็นอย่างนั้น ฉันต้องแก้ไขโดยเร็วที่สุด บางทีฉันอาจจะมีเวลาก่อนที่ผู้ทดสอบจะมาถึงและเขาจะดูการแก้ไขทันทีก่อนที่เขาจะ "ก่อสร้างที่ยังไม่เสร็จ" นั่นคือสิ่งแรกสำหรับวันนี้ นี่เป็นเรื่องเกี่ยวกับ "การก่อสร้างที่ยังไม่เสร็จ" ของฉัน ซึ่งฉันเขียนตลอดการวิ่งครั้งสุดท้าย ดูเหมือนว่าคราวนี้เขาจะสามารถต้านทาน วงล้อมนรก ทั้งหมดได้สำเร็จขั้นตอนการทดสอบและวันนี้อาจจะต้องรวมเข้ากับสาขาหลักของโครงการ แต่จะมาทีหลังหลังอาหารกลางวัน แม้ว่าวันนี้เราจะต้องทำงานใน Devops และอัพเดต Stand จากสาขาที่กำลังพัฒนาอยู่ เราก็จำเป็นต้องแสดงฟังก์ชันการทำงานใหม่ “พลังอันยิ่งใหญ่มาพร้อมกับความรับผิดชอบอันยิ่งใหญ่” คำสั่ง sudo จะแสดงคำเตือนก่อนที่จะให้สิทธิ์รูท ในการแปลที่ค่อนข้างหลวมๆ ของฉัน วลีนี้ฟังดูเหมือน “ยิ่งคุณทำได้มากเท่าไร คุณก็ยิ่งต้องทำมากขึ้นเท่านั้น” ดังนั้นจึงไม่น่าแปลกใจเลยที่ฉันซึ่งมี "ตราประทับของผู้ดูแลระบบ" มักจะได้รับงาน "เขตแดน" เช่นนี้ เอาล่ะ มาเริ่มกันเลย เมื่อวานฉันกำลังพัฒนาฟีเจอร์อื่น และตอนนี้ฉันต้องกลับไปที่สาขาที่มีข้อบกพร่อง ผู้ใช้ Windows มักจะชอบเชลล์กราฟิกทุกประเภทและใช้ Turtle (TortoiseGit) แต่สำหรับฉัน มันง่ายกว่าและคุ้นเคยมากกว่าผ่านบรรทัดคำสั่ง โดยทั่วไป บรรทัดคำสั่งใน Linux ถือเป็นผลงานชิ้นเอกเล็กๆ ที่มีการคิดอย่างรอบคอบและทรงพลัง โดยเฉพาะอย่างยิ่งเมื่อใช้ร่วมกับ Midnight Commander เราเปลี่ยนแล้ว ตอนนี้เราต้องสร้างโปรเจ็กต์ใหม่ ฉันพิมพ์คำสั่ง gradle clean ass ฉันไม่รู้ว่าคำสั่งนี้เดิมทีตั้งใจโดยผู้เขียน gradle หรือถูกสร้างขึ้นโดยบังเอิญ แต่มันเพียงแค่ทำความสะอาดและสร้างโปรเจ็กต์ใหม่ (ass ย่อมาจาก assemble และไม่ใช่สิ่งแรกที่นึกถึง) บน javarush มีการกล่าวถึง gradle เพียงสั้นๆ ว่าเป็น “และระบบบิลด์อื่นๆ” ใช่ gradle ไม่มีข้อได้เปรียบเหนือ maven ในการประกอบโครงการด้านการศึกษา บทช่วยสอนและวิธีการใช้งานส่วนใหญ่บนอินเทอร์เน็ตก็ใช้ Maven เช่นกัน การเกิดขึ้นและความนิยมที่เพิ่มขึ้นของการไล่ระดับน่าจะเกิดจากการเพิ่มขึ้นอย่างรวดเร็วในความซับซ้อนของการสร้างโครงการที่ทันสมัย โปรเจ็กต์ที่ฉันเกี่ยวข้องประกอบด้วยองค์ประกอบหลายสิบส่วน โดยที่แบ็กเอนด์เขียนด้วยภาษา Java, ฟรอนต์เอนด์ใน Javascript และการทดสอบใน Python อย่างไรก็ตาม ในปัจจุบัน การประกอบโปรเจ็กต์ Javascript นั้นเป็นกระบวนการที่แยกจากกันและซับซ้อนโดยสิ้นเชิงซึ่งมีชื่อเรียกว่า Web Workflow และแผนผังการพึ่งพานั้นเกือบจะแผ่กิ่งก้านสาขาเหมือนกับใน Java อย่างน้อยคุณก็ไม่จำเป็นต้องประกอบส่วนประกอบของ Python ก็แทบจะไม่จำเป็นเลย... หลังจากการประกอบและเปิดใช้งาน (ซึ่งไม่ใช่เรื่องเล็กน้อย) คุณจะต้องเพิ่มและเริ่มต้นด้วยข้อมูลทดสอบสภาพแวดล้อมทั้งหมดด้วยความสัมพันธ์เชิงสัมพันธ์ และฐานข้อมูล NoSql คิวข้อความ และแคชในหน่วยความจำ จากนั้นทั้งหมดนี้จะต้องประกอบอีกครั้งและทำงานบนเซิร์ฟเวอร์ CI จากนั้นปรับใช้โดยใช้ ansible ในเวลาเดียวกัน การพัฒนาส่วนใหญ่ดำเนินการภายใต้ Windows และเซิร์ฟเวอร์ "การต่อสู้" การสาธิต การทดสอบ และเซิร์ฟเวอร์ก่อนการผลิตอื่น ๆ มักจะอยู่ภายใต้ Linux ฉันนึกไม่ถึงจริงๆ ว่ามันจะเป็นไปได้อย่างไรที่จะนำสิ่งเหล่านี้ไปใช้งานใน maven แต่ค่อนข้างดีในการไล่ระดับ ความจริงก็คือไฟล์ gradle build นั้นเขียนด้วยภาษา Groovy มันเป็นภาษาที่ตลกมาก พวกเขาบอกว่ามันเป็นลูกผสมระหว่าง Java และ Ruby แต่ฉันไม่รู้จัก Ruby แต่ฉันรู้ Javascript นิดหน่อย และโครงสร้างหลายอย่างจากภาษานี้ก็ใช้งานได้เช่นกัน ผู้สร้าง gradle ได้ใช้ API ดังกล่าว ซึ่งในกรณีง่ายๆ ไฟล์บิลด์ดูค่อนข้างชัดเจน (และในความคิดของฉัน มันอ่านได้ง่ายกว่า pom.xml ของ Maven) แต่ถ้าคุณต้องการบางสิ่งที่ซับซ้อนกว่านี้ การประกาศทั้งหมดนี้ถูกยกเลิกตัวแปรฟังก์ชันคลาสปรากฏขึ้น - กล่าวคือคุณสมบัติทั้งหมดของ Groovy ซึ่งสามารถคอมไพล์และดำเนินการบน JVM เดียวกันกับโค้ด Java ได้ ตามที่ฉันได้กล่าวไปแล้ว ตัวแอสเซมบลีนั้นเป็นแบบข้ามแพลตฟอร์ม แต่มันโต้ตอบกับสภาพแวดล้อม ดังนั้นจึงจำเป็นต้องตรวจสอบภายใต้ Windows เช่นกัน ในการดำเนินการนี้ ฉันได้ติดตั้ง Windows ไว้ในเครื่องเสมือนแล้ว KVM กำลังก้าวหน้าอย่างก้าวกระโดด และหากระบบแขกได้รับการกำหนดค่าอย่างถูกต้อง ระบบเสมือนจริงก็แทบจะมองไม่เห็น ใช่ ขณะนี้ Spice รองรับจอภาพสองจอ ความละเอียดหน้าจอจะถูกปรับโดยอัตโนมัติ และไดรเวอร์อุปกรณ์แบบพาราเวอร์ชวลไลซ์ทำให้ประสิทธิภาพการทำงานแทบไม่ลดลงเลย บางครั้งฉันพบว่าตัวเองคิดว่าฉันไม่รู้สึกถึงความแตกต่างระหว่างทั้งสองแพลตฟอร์มมากนัก ถึงกระนั้น Java ก็เป็นเครื่องมือที่น่าทึ่งที่ทำให้สองโลกที่แตกต่างอย่างสิ้นเชิง และในบางครั้ง แม้แต่โลกที่ไม่เป็นมิตรก็เข้ามาใกล้กันมากขึ้น นั่นคือ โลกแห่งซอฟต์แวร์ที่เป็นกรรมสิทธิ์ รอยแตก, คีย์เจนและซีเรียลเป็นตัวอย่างที่ชัดเจนของ Windows และโลกของระบบเปิด Linux ดังนั้นโปรเจ็กต์จึงถูกรวบรวมแล้ว เราเปิดตัวมัน (แน่นอน ผ่านการไล่ระดับด้วย) และดู ใช่ น่าเสียดายสำหรับเคราสีเทาของฉัน ฉันไม่ได้ปฏิบัติตามข้อกำหนดข้อใดข้อหนึ่งของการผลิต นี่คือวิกิที่เขียนด้วยขาวดำ ในงานก่อนหน้าของฉัน ฉันพบกับสถานการณ์นี้เป็นประจำและรู้สึกสับสนอยู่เสมอว่านักพัฒนาอาจพลาดทั้งย่อหน้าจากข้อกำหนดได้อย่างไร ใช่ง่าย! ฉันคิดเกี่ยวกับมัน โดยมุ่งความสนใจไปที่ปัญหาอื่น - และมีข้อผิดพลาดเกิดขึ้น ต้องขอบคุณการทดสอบหลายขั้นตอนที่นี่เท่านั้น เธอจะถูกจับได้หรือไม่ แต่ที่ก่อนหน้านี้ - ไม่ว่าอะไรจะเกิดขึ้น โชคดีที่งานที่นี่อยู่ได้ไม่นาน ฉันกำลังเปิดตัว Idea Ultimate ซึ่งเป็นหนึ่งในผลิตภัณฑ์ที่ต้องชำระเงินไม่กี่ตัวที่ใช้ในการพัฒนา โดยหลักการแล้ว คุณสามารถใช้งาน Community Edition ได้ แต่คุณจะคุ้นเคยกับสิ่งดีๆ อย่างรวดเร็ว เช่น การรวมเข้ากับ Spring คุณต้องมีเทอร์มินัลสองสามตัวสำหรับบันทึกเบราว์เซอร์สำหรับส่วนหน้าและวิกิเทอร์มินัลอื่นที่มีบรรทัดคำสั่งทุกอย่างเคลื่อนไหวกะพริบ... โดยทั่วไปรูปภาพบนหน้าจอของจอภาพทั้งสองจะเริ่มน่ากลัว รูปร่างหน้าตาเหมือนกับที่แสดงในภาพยนตร์ทุนต่ำที่แสดงถึงการทำงานหนักของแฮ็กเกอร์ แต่สิ่งเหล่านี้ยังเป็นเพียงสิ่งเล็กๆ น้อยๆ แต่ฉันจำได้ว่าเมื่อใดที่ฉันต้องยกและกำหนดค่าคลัสเตอร์เฟลโอเวอร์ - หน้าต่างเทอร์มินัลเจ็ดหน้าต่าง อย่างอื่นที่มุมของหน้าจอ ในหน้าต่างทั้งหมด - ตัวเลขและรูปภาพบางส่วนจากกราฟิก ASCII... แต่ ฉันลาจากงานนิดหน่อย และเวลาผ่านไป ... วุ้ย ดูเหมือนว่าฉันได้ทำทุกอย่างที่ต้องการแล้ว และดูเหมือนว่าฉันไม่ได้ทำลายสิ่งที่ฉันทำไปก่อนหน้านี้ ฉันเพิ่มความคิดเห็นให้กับคุณสมบัติและส่งเธรดเพื่อทำการทดสอบ ฉันพยายามเขียนรายละเอียดเพิ่มเติมว่าฉันทำอะไรหรือเปลี่ยนแปลงอะไรเพื่อทำให้งานของผู้ทดสอบง่ายขึ้น ในงานก่อนหน้าของฉัน ฉันพลาดคำอธิบายดังกล่าวมากเมื่อต้องตรวจสอบการปรับปรุงที่ได้รับจากนักพัฒนา ขณะเดียวกันยามเช้าก็กลายเป็นเช้าอย่างราบรื่น ผู้คนก็ค่อยๆ ทยอยกันขึ้นมา อีกไม่นานจะมีการยืนหยัดหรือในความเห็นของเรา การยืนหยัด จริงๆ แล้ว วันทำงานควรเริ่มต้นด้วย และสำหรับ "คนชอบเที่ยวกลางคืน" ส่วนใหญ่ก็เกือบจะเป็นเช่นนั้น การยืนหยัดทำหน้าที่เป็นเขตแดนในการมาทำงานสายที่สุด การมาสายถือเป็นการท้อแท้อย่างยิ่ง สำหรับฉันมันเหมือนกับการหยุดพัก เอาล่ะ ทุกคนยืนขึ้นกันเถอะ ตามปกติแล้ว นักพัฒนาจะบอกสิ่งที่พวกเขาทำเมื่อวานนี้และสิ่งที่พวกเขาวางแผนจะทำในวันนี้ ผู้ทดสอบบอกเราว่าพวกเขาทดสอบอะไรและผลลัพธ์เป็นอย่างไร และผู้บังคับบัญชาก็ชัดเจนว่าพวกเขาวางแผนจะทำอะไรต่อไป ปัญหาอะไรเกิดขึ้นและสิ่งที่ต้องให้ความสนใจเป็นพิเศษ ทีมงานของเรามีการกระจายตัวตามพื้นที่ต่างๆ และส่วนเสริมทั้งหมดนี้สามารถรับชมได้เฉพาะในงานสแตนด์อัพเท่านั้น (แน่นอนว่าในทีวี) และบางทีอาจจะในงานบริษัททั่วไปปีละสองครั้งด้วย ในระหว่างการยืนหยัด ฉันมักจะคิดว่าจริงๆ แล้วมันถูกประดิษฐ์ขึ้นเพื่อให้นักพัฒนาไม่รู้สึกผ่อนคลาย เมื่อทุกวันคุณต้องแสดงความก้าวหน้าในงานของคุณ ไม่ใช่ในรายงานกระดาษที่มีเพียงเจ้านายของคุณเท่านั้นที่จะอ่าน แต่ต่อหน้าเพื่อนร่วมงาน คุณจะพยายามทำมากกว่านี้โดยไม่ได้ตั้งใจ มีบางอย่างที่จะพูดคุยเกี่ยวกับ แน่นอนว่ามี "โครงการก่อสร้างระยะยาว" ซึ่งคุณทำซ้ำเป็นเวลาหลายวันติดต่อกัน "เมื่อวานฉันทำสิ่งนี้และวันนี้ฉันจะทำต่อไป" แต่ถึงแม้ในนั้นงานด่วนเล็ก ๆ ก็มีงานด่วนอยู่ตลอดเวลา ลิ่มเข้า ในระยะสั้นจริง นักพัฒนา คาวบอยมักจะพูดอะไรกับเพื่อนร่วมงานอยู่เสมอ ที่จุดยืน ฉันถูกขอให้อัปเดตจุดยืนอย่างรวดเร็ว ดังนั้นตอนนี้ฉันจะดำเนินการดังกล่าว เมื่อมีการเผยแพร่สาขาหลักของโครงการ ผู้ดูแลระบบจะทำการอัปเดต แต่ตอนนี้เราจำเป็นต้องเผยแพร่คุณลักษณะที่ยังไม่เสร็จสิ้น และในขณะเดียวกันปัญหาบางอย่างก็จะเกิดขึ้นอย่างหลีกเลี่ยงไม่ได้ซึ่งผู้ดูแลระบบไม่สามารถแก้ไขได้ ขาตั้งตั้งอยู่ในศูนย์ข้อมูล เข้าถึงได้ผ่าน ssh เท่านั้น แน่นอนว่าไม่มีเชลล์กราฟิกอยู่ที่นั่น - มีเพียงบรรทัดคำสั่งเท่านั้น ฮาร์ดคอร์เท่านั้น! การอัปเดตนั้นเป็นไปโดยอัตโนมัติและดำเนินไปอย่างราบรื่น แต่หลังจากการอัพเดตองค์ประกอบหนึ่งจะไม่เริ่มทำงาน ฉันดูบันทึกด้วยคำสั่ง less อย่างไรก็ตาม มันมีฟังก์ชั่นที่สะดวกมาก: หากคุณกด Shift-F มันจะแสดงเนื้อหาปัจจุบันของไฟล์อย่างต่อเนื่องซึ่งเหมาะสำหรับบันทึก แล้วนี่มัน... อะไรแปลก ๆ ล่ะ? เครื่องหมายคำถามแบบเต็มหน้าจอ คั่นด้วยเครื่องหมายจุลภาค จอที่สอง สาม สิบ... มีกี่อัน? โอ้ จบแล้ว กลายเป็นเรื่องซ้อนเลยทีเดียว มีคนเขียนแบบสอบถาม SQL ด้วยตัวดำเนินการ IN เพื่อเลือกบันทึกที่ต้องการจากรายการ และสร้างพารามิเตอร์สำหรับแต่ละองค์ประกอบของรายการ ทุกอย่างทำงานได้จนกระทั่งรายการมีองค์ประกอบมากกว่า 32,767 รายการหลังจากนั้นเซิร์ฟเวอร์ SQL ก็หมดความอดทนในที่สุด คุณจะต้องเขียนรายงานข้อผิดพลาดเกี่ยวกับเรื่องนี้ แต่สิ่งนี้ไม่เกี่ยวข้องกับปัญหากับส่วนประกอบที่ไม่ทำงาน มาดูกันต่อ ตอนนี้เป็นที่ชัดเจนแล้วว่าการย้ายโครงสร้างฐานข้อมูลไปเป็นเวอร์ชันใหม่ไม่ผ่าน ดูเหมือนว่าผู้เขียนคุณลักษณะนี้เปลี่ยนแปลงบางอย่างในการโยกย้าย และที่นี่ ตรงจุดยืนก็มีเวอร์ชันก่อนหน้า คุณจะต้องย้อนกลับการเปลี่ยนแปลงโครงสร้างด้วยตนเองผ่านยูทิลิตี้คอนโซลเซิร์ฟเวอร์ SQL ฉันจะเขียนคำสั่งใน DML เพื่อลบฟิลด์ได้อย่างไร ดัชนี? ตาราง? ดูเป็นอันนั้นแหละ.. ฉันรีสตาร์ทส่วนประกอบ การย้ายข้อมูลเป็นไปด้วยดี... ทุกอย่างเรียบร้อยดี ได้เวลาไปกินข้าวเที่ยงแล้ว วันนี้อากาศดีมาก “ลูกบอลสีเหลืองสดใสแขวนอยู่บนท้องฟ้าจนทำให้ชาวเมืองตกใจกลัวจนกลายเป็นดวงอาทิตย์” เกือบเป็นวันฟ้าใสแรกของปี ฉันไม่อยากออกจากถนนด้วยซ้ำ แต่ฉันต้องทำ - เวลาแห่งการรวมกำลังใกล้เข้ามา ยังมีต่อ
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION