الدروس المستفادة كمهندس برمجيات للمبتدئين

نشرت: 2022-08-30

إذا سألتني قبل عام عما فعله مهندس برمجيات ، كنت سأقول شيئًا على غرار "حل المشكلات من خلال الكود". إنها إجابة بسيطة تشير إلى كيفية تقييم العمل الذي ننتجه. بالنسبة للمهندسين في الفرق التي تعتمد على المنتج ، يمكن أن تشمل هذه المشكلات كيفية تنفيذ ميزة جديدة يطلبها العملاء ، أو كيفية تحسين أداء الميزات الحالية.

إذا سألتني نفس السؤال اليوم ، فسأقدم إجابة مختلفة قليلاً. مهندسو البرمجيات مكلفون بحل المشكلات الصحيحة من خلال التعليمات البرمجية - وعندما يتم حلها بشكل فعال ، فإنهم يحققون أهداف العمل. إن معرفة المشكلات التي يجب حلها وكيفية حلها هو أهم جزء في كونك مطورًا ، مع كون تفاصيل التنفيذ الفعلية ثانوية.

طريقي إلى هندسة البرمجيات

أصبحت مهتمًا بالبرمجة بعد أن أخذت فصلًا دراسيًا في Upperline Code في الصيف قبل سنتي الجامعية الأولى. حصلت على هذه الفرصة من خلال برنامج الاستعداد الجامعي والمهني الذي كنت جزءًا منه يسمى شبكة الفرص.

كان Upperline Code هو أول مقدمة لي للبرمجة ، وحيث أدركت بسرعة أنني مهتم بتعلم البرمجة. في وقت لاحق من ذلك الصيف ، تلقيت حزمة التسجيل في Notre Dame الخاصة بي وتحولت من كلية الآداب والآداب إلى كلية الهندسة حتى أتمكن من التخصص في علوم الكمبيوتر (CS).

كانت بعض دورات علوم الكمبيوتر المفضلة لدي هي تصميم / تحليل الخوارزميات والحوسبة السحابية وتحديات البرمجة. كانت المشاكل مثيرة للاهتمام وكان الأساتذة رائعين في تقديم أفكار جديدة وشرح المفاهيم.

طوال فترة البكالوريوس ، كنت أعرف أنني أريد العمل كمهندس برمجيات واستخدام المهارات التقنية التي اكتسبتها. لحسن الحظ ، في الصيف قبل سنتي الأخيرة ، أتيحت لي الفرصة للتدرب كمهندس برمجيات في Kantata وبرنامج ثنائي مع مهندسين آخرين للمساعدة في تقديم الميزات.

أعطتني تجربتي في التدريب الداخلي ، إلى جانب المحادثات الحماسية من أساتذتي ، الثقة لعدم قبول أي دور آخر عندما بدأت التقدم للوظائف لأول مرة. بعد قضاء الكثير من الوقت في ساعات العمل ، تخرجت في عام 2021 بدرجة علوم الكمبيوتر وقبلت عرضًا لأكون مهندس برمجيات مشارك هنا في Sprout Social.

Julius Boateng ومجموعة من الزملاء من Sprout Social

الاستقرار في Sprout Social

كان جزء من كونك جديدًا في الوظيفة وجديدًا على الشركة هو تطوير مهارات هندسة البرمجيات العامة ومعرفة المجال الخاص بـ Sprout. لقد وجدت أن المهام التي تتطلب معرفة عامة بالبرمجة لفهمها كانت الأسهل بالنسبة لي لحلها. ومع ذلك ، فإن المهام التي تتطلب معرفة بهندسة Sprout استغرقت وقتًا حتى أتمكن من معالجتها واضطررت إلى الاعتماد على فريقي للحصول على المساعدة. بينما توجد بعض المشكلات التي يمكنك حلها من خلال قراءة الوثائق عبر الإنترنت ، لا يمكنك دائمًا العثور على معلومات ذات صلة بالعمل الذي تقوم به - فالقدرة على طلب التوجيه من الآخرين أمر بالغ الأهمية.

من أول الأشياء التي برزت لي عندما انضممت إلى Sprout هو مدى التعاون في عملية التطوير. كنت أعلم أن الأمر استغرق فرقًا كاملة لتطوير الميزات ، لكنني لم أكن أعرف كيف يبدو ذلك في الممارسة. أدركت بسرعة أن إطلاق ميزة ناجحة يتطلب عمل العديد من الأشخاص في أدوار مختلفة معًا - من مديري المنتجات الذين يحددون متطلبات المشروع ، إلى المصممين الذين يقومون بإنشاء نماذج بالأحجام الطبيعية والمهندسين الذين يقومون بتنفيذ الميزات. لم يكن التعاون شيئًا اختياريًا ، ولكنه ضرورة في تحقيق أهداف فريقنا.

صورة لزملاء Julius Boating وزملاء عمل Sprout خارج تمثال Calder's Flamingo في وسط مدينة شيكاغو

كان تعلم كيفية التنقل عبر قواعد الرموز المختلفة وبناء نموذج عقلي لكيفية تفاعل الخدمات المختلفة مع بعضها البعض بمثابة منحنى تعليمي حاد. نظرًا لأن الأعمال الأساسية لـ Sprout هي البرمجيات ، فإن هندستها تتشكل بشكل كبير من خلال متطلبات أعمالها. عندما كنت أقوم بالتعجيل ، كان علي أن أكون على دراية بمشاكل العمل التي كان المطورون يحاولون حلها ولماذا تم اتخاذ القرارات المعمارية السابقة.

في البداية ، شعرت بالخوف بعض الشيء من أن طلبات السحب تتطلب مراجعات قبل أن يتم دمجها في قاعدة التعليمات البرمجية. ساعد فهم أن الغرض الرئيسي من مراجعات الكود هو مشاركة المعرفة والحفاظ على معايير الكود في تغيير وجهة نظري.

ساعدت مراجعة التعليمات البرمجية في صقل مهاراتي الفنية وتحسين جودة طلبات السحب الخاصة بي. إن وجود زملائي يقدمون لي النصائح حول ما يجب تغييره ، ويقدمون لي أنماطًا جديدة ، ويوجهونني إلى المجالات ذات الصلة في قاعدة الشفرة كان مفيدًا حقًا. لقد أعطتني قراءة طلبات السحب من المهندسين الآخرين رؤية قيّمة للخدمات الأخرى التي لا أعمل عليها بشكل مباشر.

خبراتك السابقة مهمة

هناك فكرة سائدة أنه مع دخولك مراحل جديدة في الحياة ، لم تعد تجاربك السابقة مهمة. بمجرد دخول الكلية ، لم تعد خبراتك في المدرسة الثانوية مهمة. بمجرد دخولك إلى القوى العاملة ، لم تعد خبراتك الجامعية مهمة.

لكن الشيء الذي غالبًا ما يتم تجاهله هو أن تجاربنا ومعرفتنا وعاداتنا لها تأثير مضاعف. عادة ما نكون قادرين فقط على تحقيق أشياء جديدة بفضل العمل الذي قمنا به من قبل. لقد أثرت المعرفة والمهارات التي اكتسبتها سابقًا بشكل كبير في كيفية تعاملي مع التحديات الجديدة كمهندس برمجيات للمبتدئين.

كانت الفصول الدراسية خلال المرحلة الجامعية التي كان لها أكبر تأثير مباشر على عملي اليومي في Sprout هي تحديات البرمجة ومفاهيم قواعد البيانات. علمني الأول كيفية تقسيم المشاكل الكبيرة إلى أجزاء أصغر لحلها بشكل أكثر كفاءة. لقد ساعدني ذلك في أن أصبح أكثر إصرارًا على كيفية هيكلة الكود الخاص بي وتحسين قابلية قراءة الكود الخاص بي.

علمتني مفاهيم قواعد البيانات مفاهيم قواعد البيانات العلائقية الأساسية والموضوعات المغطاة مثل تصميم مخطط قاعدة البيانات و SQL. لقد تعلمت كيفية كتابة الاستفسارات ، وكان ذلك مفيدًا للغاية لأنني كثيرًا ما أحتاج إلى الاستعلام عن قواعد بياناتنا لحل المشكلات أو الإجابة عن الأسئلة.

صورة gif متحركة لمجموعة روبوت TurtleBot.

كانت الفرص التي أتيحت لي خارج حجرة الدراسة بنفس القدر من القيمة. لم تكن Java لغة تم تناولها في معظم الدورات التدريبية الخاصة بي ، ولكن أتيحت لي الفرصة للعمل عليها في مشروع تجاري كان أحد أساتذتي يتولى قيادته. اكتسبت خبرة عملية في كتابة Java ، والعمل مع قواعد بيانات MySQL وإنشاء صور Docker. كان تعلم Java مفيدًا بشكل خاص نظرًا لأن معظم خدمات Sprout مكتوبة فيه.

هناك الكثير من المهارات الأخرى التي اكتسبتها خلال فترة دراستي الجامعية والتي أعتبرها من المسلمات ، مثل التنقل في سطر الأوامر وفهم مفاهيم البرمجة الأساسية. من المفاهيم الخاطئة الشائعة أنه نظرًا لأن معظم الموضوعات التي يتم تناولها في المرحلة الجامعية هي نظرية بطبيعتها ، فإنها لن تعدك لمهن هندسة البرمجيات. ومع ذلك ، أعتقد أن العكس هو الصحيح - فالمهارات التي تتعلمها في المرحلة الجامعية مهمة ، حتى لو لم تكن قابلة للتطبيق بشكل مباشر على عملك اليومي.

علم الحاسوب مجال واسع للغاية

تغطي علوم الكمبيوتر مجموعة متنوعة من التخصصات مثل الذكاء الاصطناعي والتعلم الآلي وعلوم البيانات. تُعد الخبرة التي تكتسبها في المرحلة الجامعية بمثابة معرفة أساسية يمكن أن تخدمك جيدًا في مجموعة متنوعة من الأدوار على مستوى المبتدئين وليس حصريًا على هندسة البرمجيات. يوفر الانتقال من وظيفة جامعية إلى وظيفة بدوام كامل فرصة لاستكشاف نوع الدور والتخصص المناسب لك.

إذا كنت تتطلع إلى بدء مهنة في هندسة البرمجيات ، فإن Sprout هو مكان رائع للبدء.