บทเรียนที่ได้รับในฐานะวิศวกรซอฟต์แวร์ระดับเริ่มต้น

เผยแพร่แล้ว: 2022-08-30

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

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

เส้นทางสู่วิศวกรรมซอฟต์แวร์ของฉัน

ฉันเริ่มสนใจการเขียนโปรแกรมหลังจากเรียนที่ Upperline Code ในช่วงซัมเมอร์ก่อนปีแรกของฉันที่วิทยาลัย ฉันได้รับโอกาสนี้ผ่านโปรแกรมเตรียมความพร้อมของวิทยาลัยและอาชีพซึ่งเป็นส่วนหนึ่งของที่เรียกว่า The Opportunity Network

Upperline Code เป็นการแนะนำครั้งแรกของฉันเกี่ยวกับการเขียนโปรแกรม และทำให้ฉันตระหนักได้อย่างรวดเร็วว่าตัวเองสนใจที่จะเรียนรู้การเขียนโค้ด ต่อมาในฤดูร้อนนั้น ฉันได้รับเอกสารการลงทะเบียน Notre Dame และเปลี่ยนจาก College of Arts and Letters เป็น College of Engineering เพื่อที่ฉันจะได้เรียนเอกวิทยาการคอมพิวเตอร์ (CS)

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

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

ประสบการณ์การฝึกงานของฉัน รวมถึงการพูดคุยอย่างห้าวหาญจากอาจารย์ของฉัน ทำให้ฉันมั่นใจที่จะไม่ตกลงรับบทบาทอื่นใดในตอนที่ฉันเริ่มสมัครงานครั้งแรก หลังจากใช้เวลามากมายในชั่วโมงทำงาน ฉันสำเร็จการศึกษาในปี 2564 ด้วยปริญญา CS และยอมรับข้อเสนอเป็น Associate Software Engineer ที่ Sprout Social

Julius Boateng และกลุ่มเพื่อนร่วมงานจาก Sprout Social

เข้าสังคม Sprout Social

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

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

รูปถ่ายของเพื่อนร่วมงาน Julius Boating และ Sprout นอกรูปปั้นนกกระเรียนของ Calder ในตัวเมืองชิคาโก

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

ตอนแรกฉันรู้สึกกังวลเล็กน้อยที่คำขอดึงต้องมีการตรวจสอบก่อนที่จะรวมเข้ากับ codebase การเข้าใจว่าจุดประสงค์หลักของการตรวจสอบโค้ดคือการแบ่งปันความรู้และการรักษามาตรฐานของโค้ดช่วยเปลี่ยนมุมมองของฉัน

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

ประสบการณ์ที่ผ่านมาของคุณมีความสำคัญ

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

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

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

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

gif แบบเคลื่อนไหวของชุดหุ่นยนต์ TurtleBot

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

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

วิทยาการคอมพิวเตอร์เป็นสาขาที่กว้างมาก

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

หากคุณกำลังมองหาการเริ่มต้นอาชีพด้านวิศวกรรมซอฟต์แวร์ Sprout เป็นสถานที่ที่ดีเยี่ยมในการเริ่มต้น