บทเรียนที่ได้รับในฐานะวิศวกรซอฟต์แวร์ระดับเริ่มต้น
เผยแพร่แล้ว: 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

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

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

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

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