عندما عملت على مشروع: 'لا ينبغي أن نخاف من البدء من جديد' – مقابلة مع ديفيد ماركيسيتش، مهندس برمجيات مدمجة أول
كيف تعرف متى يكون العودة إلى نقطة الانطلاق هي الخطوة الصحيحة؟ من أجل إنجاز المشروع بفعالية وفي الموعد المحدد، ما هي أفضل طريقة لعدم فقدان المنظور خلال سير المشروع؟
اقرأ مقابلة مع David Markesic، مهندس البرمجيات المدمجة الأول لدينا والمقيم في زغرب في المكتب منذ عام 2021. في محادثة أدارتها ماريا يورينا، أخصائية بناء علامة صاحب العمل لدينا، يكشف ديفيد النقاب عن رحلته في هذا المجال، والدروس المستفادة، ولماذا يكون من المقبول أحيانًا الضغط على زر إعادة الضبط في مشروع ما.
ماريا يورينا: مرحباً ديفيد، من الرائع جداً أن تشاركنا معرفتك وخبرتك. في البداية، منذ متى تعمل كمهندس أنظمة مدمجة وكيف انتهى بك المطاف في هذا المجال من تقنية المعلومات؟
ديفيد ماركيسيتش: مرحبًا، شكرًا لدعوتي، يسعدني أن أكون هنا وأشارك مساري المهني. هذا العام سيكمل ثماني سنوات من العمل كمهندس أنظمة مدمجة. بدأت العمل في البداية كمهندس أجهزة، لكنني كنت دائمًا أتعمق في البرمجيات المدمجة بهدف إحياء الأجهزة. نمت هذه الشغف بشكل طبيعي خلال مسيرتي المهنية وسرعان ما تطور إلى تطوير كامل للبرمجيات المدمجة.
أفهم أنك واجهت في أحد مشاريعك السابقة تحدياً مثيراً للاهتمام يتعلق بالتواصل بين مودم 3G والمتحكم الدقيق (MCU). لمشاركة مثال واقعي، هل يمكنك التوضيح ما كانت الفكرة الأولية والحاجة في هذه الحالة؟
نعم، يسعدني أن أُفصّل في ذلك. كانت الفكرة الأولية هي استخدام مودم 3G كمصدر للإيقاظ لوحدة التحكم الدقيقة (MCU) عبر الإنترنت. وللتوضيح بإيجاز – كان على مودم 3G الحفاظ على الاتصال بالإنترنت نشطًا بينما تكون وحدة التحكم الدقيقة (MCU) غير متصلة، وأن يوقظ وحدة التحكم الدقيقة فقط عند حدوث خطأ في الاتصال أو عند وجود طلب إيقاظ. ويكمن السبب في أننا احتجنا إلى تقليل استهلاك بطارية الجهاز للطاقة أثناء إيقاف تشغيله. كانت وحدة التحكم الدقيقة (MCU) تُستخدم فقط لتهيئة اتصال الإنترنت عبر شبكة الهاتف المحمول والاتصال بالخادم المستخدم لطلبات الإيقاظ. وكانت عملية الاتصال (التهيئة وتبادل البيانات) تتم باستخدام أوامر AT. وللتهيئة الصحيحة لمودم 3G، بما يغطي جميع حالات الاستخدام، كان هناك حاجة إلى تسلسلات تهيئة معقدة إلى حد كبير مع الكثير من القرارات المختلفة بناءً على استجابات مودم 3G. وبالتالي، أُوكلت إليّ مهمة إنشاء محلل (parser) مناسب لأوامر AT يمكنه التعامل مع كل تعقيدات حالة الاستخدام.
ما الذي كان مطلوبًا لتبسيط عملية اتخاذ القرار بناءً على استجابات مودم 3G؟
تم تنفيذ اتصال مودم 3G عبر UART باستخدام أوامر AT. ومن أجل تهيئة مودم 3G بشكل صحيح للحفاظ على اتصال إنترنت موثوق، كان على المحلل (parser) التعامل مع تسلسلات معقدة من أوامر AT التي يجب إرسالها واستقبالها ومعالجتها. وفي هذه الحالة، كانت الاستجابة عبارة عن سلاسل نصية تحتوي على مزيج من النصوص والأرقام. وبالتالي، كان على المحلل الذي طورته أن يؤدي وظيفة مزدوجة – فمن ناحية، كان عليه أن يكون قادراً على تحليل الأرقام الموجودة في السلاسل النصية إلى أرقام أصلية (أعداد صحيحة)، ومن ناحية أخرى أن يكون قادراً على استخراج النصوص من الاستجابات.
ما الذي كان مميزًا في بنية المحلل اللغوي الذي طورته؟
أود القول إن الفرق يتمثل في أن المحلل لم يحاول استخدام مطابقة الأنماط أو التعبيرات النمطية (regex) على السلاسل النصية، بل قام بمسح الاستجابات حرفاً بحرف. أتاح لي هذا النهج تجنب العمليات المستهلكة للوقت على السلاسل النصية حتى تنشأ الحاجة إلى معالجة النصوص. وبهذه الطريقة، بدلاً من تنفيذ استخراج السلاسل النصية، تم تخزين الفهارس فقط.
بعد الترميز، كانت هناك عدة خطوات مختلفة. أولاً، تم التعرف على الاسم يليه نوع الاستجابة، وبعد ذلك تم استخراج البيانات وتحويلها إذا لزم الأمر.
تجدر الإشارة إلى أننا بهذه الطريقة اكتسبنا أيضاً فحصاً شاملاً مدمجاً للأخطاء في الاستجابات المستلمة. فمن حيث الأساس، وبما أن المحلل اللغوي يتنقل عبر قائمة الرموز فإنه يعرف نوع الرموز التي ينبغي توقعها، أو بالأحرى أي الرموز صالحة بناءً على مواصفات أوامر واستجابات AT الخاصة بمودم 3G، مما يتيح التعامل بسهولة أكبر مع الأخطاء. وقد مكّنتنا هذه الخطوات مقترنةً بواجهة برمجة التطبيقات (API) لتكوين أوامر AT من إنشاء تسلسلات الأوامر وتعديلها بسهولة من أجل تطوير سريع ونهج أكثر مرونة تجاه المشكلات التي اكتُشفت على طول الطريق. وهناك أمر واحد أود ذكره وهو أن واجهة برمجة التطبيقات لقراءة البيانات من الاستجابات وواجهة برمجة التطبيقات لتكوين الأوامر شكّلتا لغة برمجة شبه كاملة مناسبة تماماً لمعالجة أوامر AT.

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


الأسئلة الشائعة
يركز مهندس الأنظمة على كيفية تفاعل الأجزاء المختلفة من النظام وكيفية تدفق البيانات بينها. يتضمن الدور فهم البنية والتبعيات والسلوك عبر النظام بأكمله بدلاً من المكونات الفردية.
تساعد هندسة الأنظمة في تحديد كيفية تفسير المدخلات ومعالجتها وتحويلها إلى مخرجات ذات معنى. تضمن أن كل خطوة – من تحليل البيانات إلى الاستجابة النهائية – متسقة ومتوافقة مع متطلبات النظام.
من خلال هيكلة العمليات وتحديد قواعد واضحة، تجعل هندسة الأنظمة الأنظمة المعقدة أسهل في الفهم والصيانة. فهي تُدخل النظام في التفاعلات بين المكونات وتقلّل من خطر عدم الاتساق.
تتطلب هندسة الأنظمة نهجًا شموليًا. فهي تجمع بين الفهم التقني والقدرة على رؤية كيفية ترابط العناصر المختلفة وتأثيرها على بعضها البعض ضمن نظام أوسع.
arrow_circle_right اتصل بنا
هل تفكر في خطوتك التالية في مجال التكنولوجيا؟
نحن منفتحون دائمًا على العمل مع نخبة من الخبراء في مجالاتهم.
أرسل إلينا سيرتك الذاتية، وسنتواصل معك عند توفر فرصة عمل جديدة تتناسب مع مهاراتك وخبراتك.
arrow_circle_right مقالات أخرى