البحث في الموقع
المحتوى عن 'برمجة التطبيقات'.
-
يعد مجال برمجة التطبيقات أحد التخصصات المربحة والمطلوبة بكثرة في سوق العمل التقني، فإذا كنت مهتمًا بأن تصبح مبرمج تطبيقات محترف وترغب بالتعرف على كافة أنواع التطبيقات سواء تطبيقات الجوال أو تطبيقات الويب أو تطبيقات سطح المكتب وتتساءل عن المهارات والتقنيات التي عليك تعلمها للعمل في هذا التخصص وضمان مستقبل وظيفي واعد فتابع قراءة المقال حتى النهاية. من هو مبرمج التطبيقات قبل أن نشرح من هو مبرمج التطبيقات دعنا نوضح بداية ما معنى كلمة تطبيق application أو ما يعرف بالبرنامج التطبيقي application program، إن كلمة تطبيق تعني ببساطة برنامجًا مصممًا لأداء مهمة محددة أو ربما مجموعة متنوعة من المهام من خلال جهاز الحاسوب أو الهاتف الجوال أو الجهاز اللوحي أو غيرها من الأجهزة القابلة للبرمجة فكل مهمة محددة تقوم بها على أحد أجهزتك تلك لها تطبيق محدد يساعدك على أدائها. وبالتالي مبرمج التطبيقات applications programmer أوما يعرف بمطور التطبيقات application developer هو الشخص المسؤول عن كتابة كافة الشيفرات البرمجية الضرورية لعمل التطبيق واختبارها وضمان تنفيذها بشكل صحيح خالٍ من أية أخطاء،كما أنه مسؤول عن تعديل التطبيقات وتطويرها عند الحاجة لتتوافق مع متطلبات المستخدمين واحتياجات العمل المتغيرة وقد يتولى مبرمج التطبيقات كذلك مسؤولية رفع التطبيقات إلى المتاجر المتخصصة والالتزام بكافة الشروط والإرشادات المطلوبة لقبول التطبيقات فيها. أنواع مبرمجي التطبيقات عندما تنوي العمل كمبرمج تطبيقات ستلاحظ وجود تنوع كبير التخصصات وفي أنواع التطبيقات التي يمكنك تعلم تطويرها وأبرز هذه الأنواع هي: مبرمج تطبيقات سطح المكتب مبرمج تطبيقات الويب مبرمج تطبيقات الجوال والأجهزة المحمولة مبرمج تطبيقات الويب التقدمية مبرمج تطبيقات الأجهزة الملبوسة لنتعرف على طبيعة عمل كل تخصص من هذه التخصصات والتقنيات التي تحتاج إلى تعلمها للعمل فيه. مبرمج تطبيقات سطح المكتب هو المبرمج المسؤول عن تطوير البرامج والتطبيقات التي تعمل على أجهزة الحاسوب المكتبية والحواسيب المحمولة والتي تعمل على نظام التشغيل مباشرةً وتستخدم موارده حيث تكون هذه التطبيقات مخصصة للعمل على نظام تشغيل محدد مثل ويندوز أو لينكس أو ماك أو إس، بالرغم من أن تطبيقات الويب وتطبيقات الجوال أخذت تنتشر بكثرة في الآونة الأخيرة إلا أن تطبيقات سطح المكتب لازالت مطلوبة في سوق العمل لاسيما في المؤسسات والشركات التي تحتاج إلى تطبيقات محلية التي لا تشترط الاتصال بالإنترنت لتعمل أو تلك التي تتطلب درجة أمان كبيرة أو سرعة تنفيذ عالية. تطور تطبيقات سطح المكتب باستخدام لغات برمجة متخصصة مثل بايثون Python أو جافا java أو C++، وللاطلاع على مزيد من التفاصيل حول هذا التخصص وتقنياته المختلفة أنصح بمطالعة مقال برمجة تطبيقات سطح المكتب. مبرمج تطبيقات الويب هو المطور المسؤول عن برمجة التطبيقات المصممة للعمل عبر أحد متصفحات الإنترنت مثل جوجل كروم أو فايرفوكس والتي يتم الوصول إليها من خلال عنوان URL محدد خاص بكل تطبيق. تطور هذه التطبيقات عادة على مرحلتين أو مستويين هما الواجهة الأمامية frontend التي يطورها مطور الواجهات الأمامية باستخدام تقنيات الويب الأساسية وهي HTML و CSS وجافا سكريبت والواجهة الخلفية backend التي يطورها مطور الواجهات الخلفية باستخدام لغات برمجة مثل PHP أو بايثون Python أو جافا سكريبت مع بيئة Node.js ويمكن للشخص بالطبع التخصص في تطوير الواجهتين معًا وتعلم كافة التقنيات المطلوبة لكل منهما وفي هذه الحالة يطلق عليه اسم مطور كامل full stack developer. ولمطالعة المزيد من المعلومات حول تطوير تطبيقات الويب وأهم المسؤوليات التي عليك القيام بها والتقنيات التي عليه تعلمها لتصبح مطور ويب محترف أنصحك بمشاهدة هذا الفيديو: كما يمكن أيضًا الرجوع إلى مقال تطوير الواجهة الأمامية لمواقع الويب Frontend Web Development ومقال تطوير الواجهة الخلفية لمواقع الويب Backend Web Development. مبرمج تطبيقات الجوال مبرمج تطبيقات الجوال هو المسؤول عن تصميم وبرمجة تطبيقات مصممة للعمل على الأجهزة المحمولة باختلاف أنواعها سواء الهواتف الذكية أو الأجهزة اللوحية والتي ترفع عادةً على متاجر التطبيقات الرسمية مثل جوجل بلاي Google Play ومتجر تطبيقات آبل App Store كي يتمكن المستخدمون من تثبيتها على أجهزتهم. تعد برمجة تطبيقات الجوال مجال عمل مربح ومطلوب بكثرة في سوق العمل نظرًا للاعتماد المتزايد على الهواتف الذكية والأجهزة المحمولة لأداء مختلف المهام، وكي تصبح مطور تطبيقات جوال عليك قبل كل شيء تحديد المنصات أو الأنظمة التي تريد تطوير تطبيقات لها وأبرز هذه المنصات هي أندرويد Android و أي أو إس iOS. يمكنك بعدها تطوير تطبيقات الجوال الأصيلة native mobile apps المخصصة للعمل على إحدى هذه المنصات أو تطوير تطبيقات جوال عابرة للمنصات cross-platform mobile apps والبدء بتعلم لغات البرمجة وأطر العمل اللازمة النوع الذي اخترته من هذه التطبيقات. على سبيل المثال لتطوير تطبيقات أندرويد أصيلة يمكنك تعلم لغة البرمجة جافا ولتطوير تطبيقات iOS أصيلة يمكنك تعلم لغة سويفت swift أو Objective-C ولتطوير تطبيقات جوال عابرة للمنصات فيمكنك استخدام نفس التقنيات المستخدمة في تطوير تطبيقات الويب. ولمطالعة المزيد من التفاصيل حول هذا الاختصاص وأهميته ومنصاته المختلفة أنصح بمطالعة مقال برمجة تطبيقات الجوال كما أنصح بمشاهدة الفيديو التالي: مبرمج تطبيقات الويب التقدمية Progressive Web Apps مبرمج تطبيقات الويب التقدمية أو ما يعرف اختصارًا PAWs هو المطور المسؤول عن تطوير نوع مخصص من تطبيقات الويب التي تعمل بطريقة مشابهة لتطبيقات الأجهزة المحمولة فهي تثبت على جهاز المستخدم بنفس طريقة تثبيت تطبيقات الجوال لكن الفرق بينها وبين تطبيقات الجوال هو أنها تعمل داخل نافذة المتصفح وتعتمد على واجهات برمجة تطبيقات الويب Web APIs للوصول إلى موارد الجهاز ويمكنها العمل حتى دون وجود اتصال بالانترنت. يجمع هذا النوع من التطبيقات بين مميزات تطبيقات الجوال وتطبيقات الويب وتكون متوافقة مع كافة أنواع الأجهزة وأنظمة التشغيل كما أنها تعمل بنفس الكفاءة سواء على أجهزة سطح المكتب أو الأجهزة المحمولة وتستخدم في برمجتها نفس التقنيات المستخدمة في تطوير تطبيقات الويب أيضًا. وللاطلاع على مزيد من التفاصيل حول هذا النوع من التطبيقات وأهميتها والتقنيات المستخدمة في برمجتها أنصحك بمطالعة مقال ما هي تطبيقات الويب التقدمية PWA. مطور تطبيقات الأجهزة الملبوسة هو المبرمج الذي يتخصص في تطوير تطبيقات مخصصة للعمل على الأجهزة القابلة للارتداء مثل الساعات الذكية وسماعات الرأس الذكية والنظارات الذكية وغيرها وتعتمد هذه التطبيقات في عملها على تقنية إنترنت الأشياء IoT وهي تتميز بتأدية وظائف محدودة مقارنة بتطبيقات الهاتف المحمول كما أنها تتطلب الحصول على مدخلات أقل من المستخدم. يتوقع أن يزداد الطلب على تطوير تطبيقات الأجهزة الملبوسة نظرًا للسهولة والسرعة التي توفرها في أداء المهام مقارنة بالهواتف المحمولة وأجهزة الحاسوب، ولتعلم تطوير هذا النوع من التطبيقات عليك تحديد الجهاز المحدد الذي تريد تطوير تطبيق مخصص له هل هو ساعة ذكية أو نظارة أو جهاز طبي أو غير ذلك كما يتوجب عليك تحديد نظام التشغيل الخاص المستهدف على سبيل المثال تستخدم الساعات الذكية لآبل نظام watchOS في حين تستخدم ساعات Galaxy الذكية نظام Wear OS وبعدها عليه تحديد التقنيات اللازمة لتطوير هذا التطبيق حيث أن لكل نظام تقنيات خاصة به. مزايا مطور التطبيقات إذا كنت ترغب بأن تصبح مبرمج تطبيقات لكنك لا تزال متردد بشأن هذا الأمر دعنا نستعرض لك العديد من الفوائد والإيجابيات التي يوفرها لك الاختصاص: تعد برمجة التطبيقات مهنة ذات طلب مرتفع وسريع النمو في سوق العمل نظرًا لشهرة التطبيقات وازدياد الاعتماد عليها لأداء المهام المختلفة. يضمن مبرمج التطبيقات المحترف الحصول على راتب مرتفع مقارنة ببقية المهن. يمكن لمبرمج التطبيقات الاستفادة من ميزة العمل عن بعد إذا كان يفضل العمل ضمن ساعات عمل مرنة لا يلتزم بمكان محدد. يمكن تطبيق المهارات التي تتعلمها كمبرمج تطبيقات في مجالات متعددة، مثلًا يمكنك من خلال تعلم لغة البرمجة بايثون لتطوير تطبيقات سطح المكتب وتطبيقات الويب وتطبيقات الأجهزة الملبوسة. لغات برمجة التطبيقات ذكرنا في الفقرات السابقة العديد من التقنيات واللغات التي يمكن لمبرمج التطبيقات تعلمها للتخصص في برمجة كل نوع من أنواع التطبيقات، وفي هذه الفقرة نطلعك على قائمة بأبرز اللغات وأطر العمل المستخدمة في تطوير التطبيقات: لغة بايثون Python: من أشهر لغات البرمجة متعددة الأغراض التي تصلح لمختلف التطبيقات حيث يمكنك من خلال تعلمها تطوير تطبيقات متنوعة سواء تطبيقات سطح المكتب أو تطبيقات الويب أو تطبيقات إنترنت الأشياء كما توفر بايثون العديد من أطر العمل مثل العمل جانغو Django وفلاسك Flask التي تسهل عليك عملية التطوير وتسرع إنتاجيتك بشكل كبير. لغة جافا سكريبت JavaScript: التي تستخدم بشكل أساسي لتطوير تطبيقات الويب سواءً في برمجة الواجهات الأمامية للتطبيقات والمواقع أو برمجة الواجهات الخلفية من خلال استخدام بيئة التشغيل Node.js. لغة جافا: تعد جافا إحدى لغات البرمجة القوية ومتعددة الاستخدامات التي تمكن المطورين من إنشاء العديد من التطبيقات القوية والآمنة والمتوافقة مع مختلف المنصات وأنظمة التشغيل سواء تطبيقات الأندرويد Android أو تطبيقات IOS أو تطبيقات سطح المكتب. C#: هي لغة برمجة عامة الأغراض تستخدم بشكل أساسي لإنشاء تطبيقات سطح المكتب لنظام التشغيل ويندوز وصناعة الألعاب بالاستعانة بمحرك تطوير الألعاب يونيتي Unity وتطوير تطبيقات الويب الديناميكية بالاعتماد على منصة دوت نت .NET. لغة C++: لغة برمجة قوية ومتعددة الأغراض تستخدم بشكل أساسي لتطوير أنظمة التشغيل وتطبيقات سطح المكتب. لغة PHP هي لغة برمجة نصية تستخدم بشكل أساسي لتطوير الواجهات الخلفية لتطبيقات الويب. لغة HTML5 و CSS3: وهما تستخدمان بشكل أساسي إلى جانب لغة جافا سكريبت لتطوير الواجهات الأمامية لتطبيقات الويب. كما يحتاج مبرمج التطبيقات إلى فهم أنواع قواعد البيانات ومميزات كل منها وأنظمة إدارة قواعد البيانات المختلفة مثل MySQL و MongoDB لتخزين بيانات التطبيقات والتعامل معها بكفاءة. ويحتاج مبرمج التطبيقات كذلك إلى فهم أنظمة التشغيل المختلفة التي يريد استهدافها في تطبيقاته مثل أنظمة تشغيل سطح أندرويد Android و iOS عند التخصص في برمجة تطبيقات الجوال. كانت هذه قائمة بأبرز التقنيات المستخدمة في تطوير التطبيقات ولست بحاجة إلى معرفة كل هذه اللغات والتقنيات بالطبع لتكون مبرمج تطبيقات ناجح، بل ينبغي أن تركز على تعلم مجموعة التقنيات التي تناسبك حسب أهدافك واهتماماتك وطبيعة التطبيقات التي ترغب بتطويرها. نصائح لتصبح مبرمج تطبيقات محترف أيًا كان نوع التطبيقات التي تقوم بتطويرها إليك أهم النصائح التي عليك اتباعها لتعلم برمجة التطبيقات باحترافية والنجاح في سوق العمل: حدد نوع التطبيقات التي تفضل تطويرها وركز على تعلم لغات البرمجة وأطر العمل اللازمة لتطوير هذا النوع من التطبيقات ولا تشتت نفسك بكثرة التقنيات. طور مهاراتك في التفكير المنطقي وحل المشكلات فهذا يساعدك على برمجة التطبيقات بصورة أسرع وأكثر احترافية وحل أي أخطاء برمجية تحدث خلال عملية التطوير. تعلم منهجيات تطوير التطبيقات مثل تقنية آجايل Agile التي تساعدك على تحليل متطلبات التطبيق والتخطيط له وتنفيذه بشكل أسرع لا سيما في المشاريع البرمجية الضخمة. طور عدة تطبيقات تقوم بمهام متنوعة فهذا يعزز من قدرتك على كتابة الشيفرات وحل المشكلات البرمجية وأنشئ من خلالها معرض أعمالك الخاص. تعلم مهارات التواصل فغالبًا ما يعمل مبرمجو التطبيقات ضمن فرق عمل ويحتاجون للتواصل مع باقي أعضاء الفريق كما أنهم سيحتاجون للتواصل مع العملاء وفهم متطلباتهم بشكل دقيق. إذا كنت تفضل العمل الحر المعتمد على المشاريع يمكنك عرض خدماتك كمبرمج تطبيقات في مواقع العمل الحر مثل مستقل وخمسات وإذا كنت تفضل العمل ضمن فريق متعاون يمكنك أن تتقدم لفرص العمل التي توفرها الشركات المتخصصة. الخلاصة تعرفت في هذا المقال على الخطوات التي ينبغي عليك اتباعها وأهم التقنيات واللغات التي عليك تعلمها كي تصبح مبرمج تطبيقات محترف وناجح في سوق العمل، ووضحنا أهم المسؤوليات التي تقع على عاتقك عند التخصص في هذا المجال. هل أنت متحمس للعمل في مجال برمجة التطبيقات وتجد أن لقب مطور التطبيقات مناسب لك؟ شاركنا في التعليقات ما هي التطبيقات التي ترغب بالتخصص في تطويرها. اقرأ أيضًا دليلك الشامل إلى برمجة التطبيقات تطوير التطبيقات المدخل الشامل لتعلم تطوير الويب وبرمجة المواقع
-
سنتعرف في مقال اليوم على تخصص برمجة تطبيقات سطح المكتب بالتفصيل وهو أحد تخصصات البرمجة المطلوبة في سوق العمل والذي يمكنك من تطوير تطبيقات للحاسوب سريعة وعالية الأداء بعد أن تعرفنا في المقال السابق دليلك الشامل إلى برمجة التطبيقات على التطبيقات وأنواعها المختلفة وطرق برمجتها. وسنستكشف أيضًا كافة أنواع تطبيقات سطح المكتب والفرق بين تطبيقات سطح المكتب وتطبيقات الويب ونستعرض في الختام أهم الخطوات التي ينبغي اتباعها لتعلم برمجة هذا النوع من التطبيقات وأهم لغات البرمجة وأطر العمل المستخدمة في تطويرها. ما هي تطبيقات سطح المكتب؟ تطبيقات سطح المكتب هي تطبيقات مستقلة بذاتها مصممة للعمل على أجهزة الحاسوب المكتبية والحواسيب المحمولة التي تعمل عادة بأنظمة تشغيل ويندوز أو لينكس أو ماك. عندما تشتري جهاز الحاسوب لأول مرة ستجد مجموعة من تطبيقات سطح المكتب المثبتة بالفعل على جهازك مثل تطبيق الآلة الحاسبة ومشغل الوسائط، كما يمكنك أيضًا تنزيل تطبيقات سطح مكتب لاستخدامات مختلفة وتثبيتها على نظام التشغيل من خلال تحميل حزم التثبيت الخاصة بالتطبيق إما من شبكة الانترنت أو من الأقراص المضغوطة أو شراؤها من موردي البرامج وتثبيتها على نظام التشغيل كي تتمكن من استخدامها، وأحيانًا سيكون عليك تثبيت تحديثات هذه التطبيقات عند صدورها بنفسك بشكل يدوي فهي لا تتحدث تلقائيًا أو سيثبتها مدير التطبيقات تلقائيًا. يمكن لتطبيقات سطح المكتب أداء مهام متنوعة مثل تحرير الصور أو معالجة النصوص أو تشغيل الوسائط أو اللعب ومن أشهر الأمثلة على تطبيقات سطح المكتب مستكشف ملفات ويندوز وتطبيقات مايكروسوفت أوفيس وتطبيقات تصفح الإنترنت مثل متصفح كروم ومتصفح فايرفوكس وتطبيقات تحرير الصور مثل أدوبي فوتوشوب وتطبيقات تشغيل الوسائط مثل Windows Media Player ومشغل الفيديو والوسائط VLC …إلخ. أهمية تطبيقات سطح المكتب بعد ظهور الإنترنت وشيوع استخدام الهواتف الذكية واللوحية تراجع استخدام أجهزة الحواسيب المكتبية وزادت شعبية برمجة تطبيقات الويب وتطبيقات الهاتف المحمول مقارنة ببرمجة تطبيقات سطح المكتب، لكن هذا لا ينفي أن الحواسيب المكتبية لازالت تستخدم بكثرة على الصعيد التجاري والشخصي وبالتالي لا يزال الطلب على تطبيقات سطح المكتب في سوق العمل قائمًا لاسيما أن هذه التطبيقات تنفرد بجملة من الفوائد قد لا تتوافر في أنواع التطبيقات الأخرى. وهناك العديد من المجالات التي يفضل المستخدمون فيها تطبيقات سطح المكتب المحلية على أنواع التطبيقات الأخرى ومن أهمها: المجالات التي تتطلب عرض رسومات عالية الدقة مثل تصميم الجرافيك وتحرير الفيديو وتطبيقات الهندسة المعمارية فهي تتطلب موارد عالية لتعمل بكفاءة وسرعة، لذا يفضل تطويرها كتطبيقات سطح المكتب لأنها ستكون أسرع بكثير من تطبيقات الويب مثلًا القائمة على المتصفح. الصناعات التي تتطلب وجود اتصال مباشر بين جهاز الحاسوب والأجهزة الإلكترونية لإجراء مراقبة أو ضبط إعدادات معينة لهذه الأجهزة. المجالات التي تتطلب التحكم الكامل في التطبيقات ففي هذه الحالة من الأفضل اللجوء لتطوير تطبيقات سطح المكتب بشكل محلي بدلًا من تشغيلها على خادم بعيد كي تتمكن من التحكم الكامل بالتطبيق وتقوم بتخصيصه وإدارته بالكامل. الأعمال التي تتطلب قدرًا من السرية والخصوصية وحماية المعلومات الشخصية من محاولات الاختراق، فبقاء التطبيق غير متصل بالإنترنت وتخزين كافة البيانات على جهازك يرفع من درجة أمان التطبيق ويحميه من المخترقين والمتطفلين. تعد تطبيقات سطح المكتب أكثر أمانًا وسرية كما أنها تتواصل مع الحاسوب وعتاده مباشرةً دون وسيط أي أنها تتخاطب بالطبع مع نظام التشغيل الذي يُشغِّل عتاد الحاسوب وهذا يمنع أي تأخير في التواصل على عكس تطبيقات الويب مثلًا التي تعمل ضمن المتصفح وهو في الأساس تطبيق سطح مكتب يتواصل بدوره مع نظام التشغيل ثم مع العتاد. وتجدر الإشارة لحاجة تثبيت تطبيقات سطح المكتب من مواقعها أو مصادرها الرسمية فقط لضمان خلوها من أي فيروسات أو برامج ضارة ولا تحتاج إلى اتصال بالإنترنت لكي تعمل وهذه إحدى ميزات الأمان كما أن لبعض التطبيقات درجة أمان أعلى مثلًا لا تعمل إلا بوجود جهاز USB أو لاسكلي موصول بالحاسوب أو قراءة بصمة الإصبع أو العين وغيرها من الطرق. أنواع تطبيقات سطح المكتب كما شرحنا سابقًا فإن تطبيقات سطح المكتب بالأساس هي تطبيقات مستقلة بذاتها ويمكنها العمل على على أجهزة حاسوب محلية تعلم بأنظمة تشغيل معينة، وفي هذه الفقرة سنوضح الفرق بين نوعين من تطبيقات سطح المكتب. تطبيقات سطح المكتب الأصيلة Native Desktop Application تطبيقات سطح المكتب متعددة المنصات Cross-platform Desktop Application وإليك الفرق بين هذين النوعين ومميزاتهما وطريقة برمجة تطبيقات سطح المكتب لكل منهما. 1. تطبيقات سطح المكتب الأصيلة Native Desktop Application تطبيقات سطح المكتب الأصيلة أو ما يعرف بتطبيقات سطح المكتب التقليدية أو الكلاسيكية هي تطبيقات تستخدم على نظام تشغيل أساسي أو جهاز معين مثل ويندوز أو ماك او إس أو لينكس وتتميز هذه التطبيقات بسرعة أدائها وإمكانية تضمينها لطيف واسع من الوظائف والميزات من خلال الاستفادة من قدرات الجهاز الأساسي الذي تعمل عليه. تحدد أنظمة التشغيل كيفية تشغيل هذا النوع من التطبيقات حيث تحتاج بعض البرامج فقط إلى الأذونات الأساسية التي يسمح بها نظام التشغيل ويحتاج بعضها الآخر للحصول على المزيد من التحكم من خلال الامتيازات الإدارية للنظام، فقد لا تعمل التطبيقات التي تحتاج إلى إجراء تغييرات على الملفات الخاصة بنظام التشغيل أو تتطلب الوصول إلى المجلدات الآمنة بالشكل صحيح إذا لم يتم منحها الصلاحيات المطلوبة ولا تعطى بعض تلك الصلاحيات إلا من مدير النظام وليس من أي مستخدم عادي. يمكن أن تتطلب تطبيقات سطح المكتب الأصيلة كذلك توافر خصائص معينة في الجهاز أو وجود إصدارات معينة لأنظمة التشغيل يحددها المطورون عند برمجة تطبيقات سطح المكتب كي تعمل بشكل صحيح. على سبيل المثال تتطلب أحدث نسخة من تطبيق تحرير الفيديو الاحترافي أدوبي بريمر برو احتواء جهاز الحاسوب على ذاكرة وصول عشوائي RAM بسعة 8 جيجابايت على الأقل ووحدة معالجة رسومات GPU بسعة 2 جيجابايت ومعالج جيل سادس والإصدار ويندوز 10 بمعمارية 64 بت. تعتمد برمجة تطبيقات سطح المكتب المحلية بشكل أساسي على لغات برمجة عالية المستوى مثل جافا وبايثون وروبي و C++ و C# لكن أبرز عيوب تطوير التطبيقات المحلية هو أنك ستحتاج لكتابة شيفرات برمجية منفصلة لتطوير تطبيقات سطح المكتب مخصصة لكل نظام تشغيل. هذا يعني أنك إذا احتجت لبرمجة تطبيق سطح مكتب يعمل على كافة أنظمة التشغيل الرئيسية وهي ويندوز ولينكس وماك ستضطر حينها لإنشاء ثلاث نسخ منفصلة من هذا التطبيق بأدوات وتقنيات مختلفة، ولابد أنك استنتجت بنفسك كم سيكلفك تطوير تطبيق كهذا من وقت وجهد في كتابة النسخ لكل منصة منفصلة تستهدفها فضلًا عن الوقت المستغرق في إجراء عمليات الصيانة والتحديث وإضافة ميزات جديدة لكل تطبيق منها على حدة. 2. تطبيقات سطح المكتب متعددة المنصات Cross-platform Desktop Application تطبيقات سطح المكتب متعددة المنصات أو التطبيقات العابرة للأنظمة هي تطبيقات تُبرمَج مرة واحدة وتعمل على كافة أنظمة التشغيل خلافًا تطبيقات سطح المكتب الأصيلة المبرمجة للعمل على نظام أساسي واحد فقط، ويعمل هذا النوع من التطبيقات بكفاءة على الحواسيب الشخصية والمحمولة والأجهزة اللوحية على حد سواء حيث يُكتب الكود البرمجي لتطبيق سطح المكتب متعدد الأنظمة مرة واحدة فقط ويكون قادرًا على العمل على أنظمة التشغيل المختلفة. وميزة الشيفرة الواحدة التي تعمل على مختلف أنظمة التشغيل تأتي مع قيود تكثر أو تقل بحسب كيفية برمجتها والأدوات المستخدمة في برمجتها وتتصف أحيانًا بأداء أقل من التطبيقات الأصيلة ووصول أقل أو محدود إلى موارد الحاسوب مثل الكاميرا أو ماسح البصمة وقد تكون أقل أمانًا أيضًا لذا لن تجد مثلًا أي لعبة -وهي نوع من أنواع تطبيقات سطح المكتب- تستهلك موارد الحاسوب استهلاكًا كاملًا تُبرمَج بهذه الطريقة ولا التطبيقات ذات الأمان المرتفع مثل تطبيقات البنوك أو التطبيقات الحكومية وهكذا. تستفيد هذه التطبيقات من تقنيات الويب وهي لغة HTML و CSS وجافا سكريبت لتطوير هذا النوع التطبيقات مع أداة تعمل على تحويل الشيفرة لكي تعمل على نظام التشغيل مباشرة أو عبر وسيط مثل متصفح الويب. وتلجأ معظم الشركات اليوم للاستفادة من مميزات هذا النوع من التطبيقات لأنها أقل كلفة في التطوير والصيانة ولا تحتاج أغلبها إلى أداء مرتفع ووصول إلى كامل عتاد الحاسوب ومن أبرز الأمثلة على تطبيقات تم إنشاؤها باستخدام هذه التقنية نذكر تطبيق ووردبريس لسطح المكتب WordPress Desktop app الذي يمكنك من إدارة موقع ووردبريس الخاص بك مثل إضافة المنشورات وتحديث الإضافات والرد على التعليقات من حاسوبك المحلي دون فتح متصفحك، وتطبيق سلاك Slack لسطح المكتب وتطبيق واتساب الشهير لسطح المكتب …إلخ. فإذا كنت على معرفة بتقنيات الويب أو كنت مطور ويب أو تنوي دخول كلا المجالين مجال تطوير الويب ومجال تطوير تطبيقات سطح المكتب فيمكنك الاستفادة من هذا النوع من التطبيقات وبرمجة تطبيقات سطح مكتب لمختلف أنظمة التشغيل إلى جانب تطوير تطبيقات الويب وتطبيقات الجوال أيضًا، فتعلم تطوير هذه التطبيقات سيكون الخيار الأفضل والأسرع بالنسبة لك من تطوير تطبيقات سطح المكتب الأصلية لأنك لن تضطر لكتابة كود برمجي مخصص لكل منصة ويمكنك أن بنفس الكود البرمجي أن تضمن تشغيل تطبيقك على أنظمة ويندوز ولينكس وماك دون أن تتأثر وظائف التطبيق أو جودته. الفرق بين تطبيقات الويب وتطبيقات سطح المكتب كما شرحنا سابقًا فإن تطبيق سطح المكتب هو برنامج يتم تثبيته باستخدام حزمة التثبيت ثم تشغيله على جهاز الحاسوب المحلي الخاص بك ويجب أن تتوافق مواصفات العتاد مثل حجم الذاكرة وسرعة المعالج ونظام التشغيل وإصداره مع المتطلبات الخاصة بالتطبيق كي يُثبت ويعمل بنجاح. بينما تطبيق الويب هو برنامج يتم توفيره على متصفح الويب وهو في الأساس تطبيق سطح مكتب -أو تطبيق جوال- عن طريق الاتصال بالإنترنت وطلب ملفاته من خادم بعيد، ولا يتطلب تشغيل هذا التطبيق توفر أي موارد أو متطلبات في جهازك أو نظام التشغيل الذي تستخدمه فكل ما تحتاجه لتشغيل تطبيق الويب هو مستعرض واتصال بالإنترنت وبكتابة عنوان URL الخاص بالتطبيق ضمن نافذة المتصفح ستتمكن من الولوج له وبدء استخدامه والاستفادة من مميزاته. تعتمد برمجة تطبيقات الويب على تقنيات الويب التي ذكرناها آنفًا في تطوير تطبيقات سطح المكتب متعددة الأنظمة بالإضافة إلى لغات وتقنيات برمجة الويب المختلفة مثل لغة PHP ولغة Ruby وحتى لغة بايثون Python وسنتحدث بمزيد من التفصيل عن تقنيات ولغات برمجة تطبيقات سطح المكتب في الفقرة التالية. تجدر الإشارة لأن لكل من تطبيقات الويب وتطبيقات سطح المكتب ميزاته وعيوبه واختيار نوع التطبيق المناسب يعتمد على احتياجات العمل والجمهور المستهدف والموارد المطلوبة للتطبيق ومستوى الأمان وغيرها من العوامل، لكن يمكننا القول بصفة عامة بأن تطبيقات سطح المكتب هي الأنسب للاستخدام الداخلي في المؤسسات والدوائر الحكومية وفي برمجة الألعاب في حين تعد التطبيقات المستندة إلى الويب في هي الخيار المفضل عندنا تحتاج إلى توسيع نطاق وصول التطبيق وتوفير إمكانية استخدامه من مواقع وأجهزة مختلفة فلا يكاد يخلو أي جهاز أو جوال اليوم من متصفح ويب. تقنيات ولغات برمجة تطبيقات سطح المكتب قد تتساءل ما هي أفضل لغات البرمجة لبرمجة تطبيقات سطح المكتب؟ في هذه الفقرة نوفر لك قائمة بأهم هذه التقنيات ومميزات كل منها. هناك العديد من لغات البرمجة المناسبة لتطوير تطبيقات سطح المكتب المختلفة وهذا بحسب نوع التطبيق ونظام التشغيل المستهدف. لغات برمجة تطبيقات ويندوز فإذا أردت برمجة تطبيقات أصيلة مخصصة للعمل على نظام التشغيل ويندوز فعليك استخدام لغات برمجة مثل C# و C++. لغات برمجة تطبيقات ماك macOS وأما لبرمجة تطبيقات خاصة بنظام التشغيل ماك أو إس فعليك استخدام لغة Objective C. لغات برمجة تطبيقات لينكس وأما لتطوير تطبيقات سطح مكتب موجهة لنظام التشغيل لينكس فيمكنك استخدام لغة C أو لغة C++ أو لغة Bash. كما أنك تحتاج للاستعانة بأدوات خاصة ومكتبات رسم الواجهات وحزم أدوات تطوير البرمجيات SDKs متوفرة لكل نظام تشغيل على حدة. وأما إن أردت برمجة تطبيقات عابرة للمنصات وتعمل على أنظمة التشغيل الثلاثة السابقة وغيرها فهنا توجه إلى تقنيات الويب ولغاتها التي أشرنا إليها في الأعلى. وعمومًا، يمكنك تطوير تطبيقات سطح المكتب بالاعتماد على إحدى لغات البرمجة سواءً أصيلة أو عابرة للمنصات فقط لكن هذا قد يتطلب منك الكثير من الوقت والجهد لذا يفضل الاعتماد على إطار عمل framework مساعد تقلل التعليمات البرمجية وتوفر عليك الوقت وتساعد في زيادة إنتاجيتك. أدوات وأطر عمل لبرمجة تطبيقات سطح المكتب فيما يلي قائمة بأشهر أدوات وأطر عمل تطوير تطبيقات سطح المكتب: إلكترون Electron js هو إطار عمل برمجي يستخدم في برمجة تطبيقات سطح مكتب عابرة للمنصات تبدو وكأنها تطبيقات أصيلة native-feeling لكنها تعتمد بالأصل على تقنيات الويب الأساسية HTML و CSS وجافا سكريبت وتستخدم متصفح الويب مفتوح المصدر كروميوم Chromium لعرض محتوى التطبيق كما أنها تستخدم بيئة التشغيل Node.js للوصول إلى نظام الملفات المحلي ونظام التشغيل وبهذا يمكن للتطبيقات العمل على أي نظام تشغيل بكل سلاسة. ومن أشهر تطبيقات سطح المكتب المطورة باستخدام إطار عمل إلكترون نذكر تطبيق سلاك Slack وتطبيق واتساب WhatsApp ومحرر الأكواد الشهير فيجوال ستوديو كود Visual Studio Code. إذا كنت مهتمًا بتطوير تطبيقات سطح المكتب باستخدام إطار عمل إلكترون فقد وفرت لك أكاديمية حسوب مسارًا متكاملًا ضمن دورة تطوير التطبيقات باستخدام JavaScript ستتعلم من خلاله إنشاء تطبيق Electron JS لسطح المكتب. كاكاو Cocoa هو إطار عمل مخصص لتطوير تطبيقات سطح المكتب التي تعمل على نظام تشغيل macOS ويمكن استخدامه كذلك لإنشاء تطبيقات مخصصة للأجهزة المحمولة، يوفر هذا الإطار العديد من عناصر واجهة المستخدم التي تتيح لك إنشاء واجهات مستخدم احترافية كالحقول النصية وأشرطة التنقل وأزرار الاختيار كما يساعدك على تحسين أداء تطبيقاتك من خلال توفير ميزات إدارة الذاكرة والتحميل الكسول Lazy loading. إطار العمل WPF هي اختصار لعبارة Windows Presentation Foundation وهو إطار عمل يتيح لك إنشاء واجهة مستخدم لتطبيقات ويندوز باستخدام لغة XAML متوافق مع إطار عمل .NET ويحتوي مكتبات وأدوات لبرمجة الألعاب والويب وتطبيقات الهاتف المحمول ويساعدك في تضمين العديد من الميزات في تطبيقاتك مثل التخطيطات المتجاوبة مع كافة أحجام الشاشات وعناصر التحكم والنماذج وغيرها من الأدوات التي تجعل تجربة برمجة التطبيقات احترافية وسريعة. منصة UWP هي اختصار لعبارة Universal Windows Platform وهي منصة متخصصة في برمجة تطبيقات سطح المكتب متوافقة مع نظام التشغيل ويندوز 10 وويندوز 11 وتتميز التطبيقات المطورة بهذه المنصة بكونها متوافقة مع كافة أحجام الشاشات وقادرة على التحكم بالموارد المختلفة للجهاز كالفأرة ولوحة المفاتيح وكاميرا الويب وأجهزة التحكم في الألعاب وشاشات اللمس. إطار العمل WinForms هو إطار عمل مخصص لبناء واجهات المستخدم لتطبيقات سطح المكتب التي تعمل على نظام التشغيل ويندوز بسهولة من خلال تقنية السحب والإفلات التي تساعد مطوري البرامج على برمجة التطبيقات بسرعة وكفاءة، كما يسمح WinForms للمطورين باسترداد البيانات من واجهة برمجة التطبيقات API أو ملفات JSON أو XML أو غيرها من مصادر البيانات وعرضها ضمن التطبيقات. خطوات تعلم برمجة تطبيقات سطح المكتب إن كنت مهتمًا ببرمجة تطبيقات سطح المكتب ومتحمسًا جدًا لتعلمها لكنك لا تعلم من أين تبدأ، حسنًا دعنا نستعرض مجموعة من الخطوات التي تساعدك في تعلم تطوير تطبيقات سطح المكتب من الصفر للاحتراف. 1. حدد هدفك حدد طبيعة ونوع تطبيقات سطح المكتب التي ترغب بتطويرها، واختر منصة التطوير التي تستهدفها في تطبيقاتك فهناك كما ذكرنا العديد من الخيارات المتاحة مثل ويندوز ولينكس وماك وكل منصة لها مميزاتها وتقنياتها وكي لا تضيع بين هذه الخيارات من الأفضل أن تحدد وجهتك من البداية. 2. حدد لغة البرمجة حدد لغة البرمجة الأنسب التي تمكنك من برمجة تطبيقات سطح المكتب المخصصة للمنصة التي اخترتها وضع خطة لتعلمها والتزم بها قدر المستطاع. 3. حدد الأدوات وأطر العمل تعلم استعمال إطار العمل المناسب للغة البرمجة أو المنصة التي اخترتها فهي تسرع عملك وتمكنك من تطوير تطبيق سطح مكتب عالي الجودة على سبيل المثال يمكنك استخدام إطار عمل إلكترون مع لغة جافاسكربت لبرمجة تطبيقات سطح مكتب عابرة للمنصات، واستخدام إطار عمل Cocoa لإنشاء تطبيقات خاصة بنظام التشغيل macOS. 4. طبق ما تعلمته لن تستفيد مما تعلمته من تقنيات إذا لم تطبق ما تعلمته على مشاريع فعلية، وأول خطوة في التطبيق العملي هي تحديد فكرة وهدف التطبيق والمميزات التي تريد تنفيذها في هذا التطبيق ومحاولة تنفيذها. 5. حضر التصميمات الأولية لواجهة التطبيق قبل البدء بالتنفيذ من المهم تصميم نماذج أولية لواجهات التطبيق فهي تساعدك على توسيع أفكارك وتحديد طريقة عمل التطبيق بشكل أفضل، ويمكنك في هذه المرحلة أن ترسم نماذج تطبيقك بشكل بدائي على الورق أو تعتمد أدوات احترافية مثل Adobe XD أو أو Mockplus أو Moqups وأيًا كانت الطريقة المتبعة في التصميم احرص على أن تراعي تجربة المستخدم وسهولة الاستخدام، وإن كنت تعمل مع فريق، فهذه العملية سيستلمها فريق التصميم عادةً. وللمزيد من التفاصيل، اطلع على مقال تصميم النماذج الأولية للواجهات الرسومية ومقال المرحلة الرابعة في عملية التفكير التصميمي: مرحلة بناء النماذج الأولية. 6. ابدأ عملية البرمجة بعدها ابدأ في برمجة تطبيق سطح المكتب مستعينًا بالأدوات التي تعلمتها، وفي هذه المرحلة ليس عليك تحقيق جميع الميزات في وقت واحد بل نفذها واحدة تلو الأخرى. 7. احترف حل المشكلات ستصادف الكثير من الأخطاء والمشكلات خلال كتابة الكود، لا تقلق فهذا أمر طبيعي ومحاولة اكتشاف سبب وقوع الأخطاء والعمل على تصحيحها جزء مهم في تنمية مهاراتك البرمجية. للاستزادة، ارجع إلى مقال حل المشكلات وأهميتها في احتراف البرمجة. 8. اختبر التطبيق بعد الانتهاء من برمجة التطبيق قم بإطلاق التطبيق للاستخدام بشكل تجريبي واختبر أدائه وخلوه من أي أخطاء بمساعدة أدوات الاختبار الآلي وأدوات تحليل التعليمات البرمجية وأدوات تصحيح الأخطاء كما ينبغي عليك اختبار التطبيق على مختلف الأنظمة والأجهزة للتأكد من أنه يعمل كما هو متوقع. 9. انشر التطبيق بعد التأكد من أن تطبيقك يعمل على ما يرام يمكنك البدء في إصدار ونشر تطبيق سطح المكتب الخاص بك على المستخدمين، وبمجرد أن يصبح جاهزًا للعمل يمكنك إنشاء حساب مطور ورفعه على أحد المتاجر المتخصصة مثل متجر مايكروسوفت لتطبيقات ويندوز Windows ومتجر Apple لمستخدمي ماك أو يمكنك تحميله في GitHub أو في موقع الويب الخاص بك لبناء معرض أعمال خاص بك يساعدك في دخول سوق العمل بسرعة أكبر. لا تنتهي العملية عند نشر التطبيق بل يتوجب عليك كمبرمج العمل بصورة مستمرة على متابعة أداء التطبيق والاهتمام بأي ملاحظات أو مشكلات يواجهها مستخدموا التطبيق بعد نشره والحرص على صيانة التطبيق وحل مشكلاته وتحسينه بشكل دوري لتلبية المتطلبات الجديدة وإصلاح أي أخطاء تظهر لاحقًا لضمان المحافظة على جودته وقابليته للاستخدام. 10. استمر في التعلم أنت كمبرمج لن تتوقف على التعلم لأن هذا مجال تطوير تطبيقات سطح المكتب سريع التطور وشديد التقلب، لذا عليك أن تبقى على اطلاع مستمر على أحدث الاتجاهات والتقنيات وأطر العمل في هذا المجال وتحرص على اتباع قواعد البرمجة وأفضل ممارسات كتابة الكود لتضمن التميز والنجاح في سوق شديد التنافسية. وأنصحك بقراءة مقال كيف تتعلم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة لبعض النصائح في هذه الرحلة، رحلة تعلم البرمجة وبرمجة تطبيقات سطح المكتب. الخلاصة تعرفنا في مقال اليوم على أحد مجالات تطوير البرمجيات الهامة في سوق العمل وهو برمجة تطبيقات سطح المكتب وتعرفنا على أهم لغات برمجة هذه التطبيقات وأشهر أطر العمل التي تسهل عملية تطويرها، وختمنا المقال بأهم الخطوات والنصائح التي عليك اتباعها لبدء حياتك المهنية في مجال تطوير تطبيقات سطح مكتب احترافية وذات جودة عالية. إذا كان لديك أي تساؤل أو مشكلة تتعلق بموضوع برمجة تطبيقات سطح المكتب لا تتردد في كتابتها في قسم التعليقات أسفل المقال أو يمكنك إضافة استفسارك في قسم الأسئلة البرمجية لتحصل على إجابة بأسرع وقت ممكن وإذا كنت بدأت بالفعل في تطوير تطبيقات سطح المكتب الخاصة بك ولديك نصائح أو توجيهات مساعدة يسرنا أن تشاركها معنا للمزيد من الفائدة. اقرأ أيضًا برمجة تطبيقات الجوال تطوير التطبيقات
-
يعدُّ التحضير لأسئلة المقابلة في مجال هندسة البرمجيات عملًا بدوام كامل تقريبًا، إذ هناك مصادر لا حصر لها على الإنترنت وغالبًا ما تكون هائلة عندما تبدأ العملية، ومن الطبيعي أن تكون متوترًا وخائفًا عند التقدم لمنصبٍ ما، لأنك تواجه خطر الحكم والرفض وهذا يكفي لإثارة قلق أي شخص. ومع ذلك فإن أفضل طريقة لتهدئة أعصابك هي الاستعداد الكامل حتى تعرف أنك تعطي نفسك أفضل فرصة للحصول على وظيفتك المثالية، ستقلل الممارسة والتحضير من الإحساس بالغموض وتساعد على تحضير نفسك للنجاح. إذا كنت مهندس برمجيات متخرج وتستعدّ لمقابلات العمل الأولى لك، فإليك المجالات المختلفة التي يجب التركيز عليها. أسئلة حول المعلومات الأساسية الخاصة بك يجب أن تكون مستعدًا للإجابة على الأسئلة المتعلقة بمعلوماتك الأساسية، خبرتك، مشاريعك السابقة ومعرفتك. تكون هذه الأسئلة عادةً مفتوحة وتمنحك فرصةً جيدةً لاختيار ما الذي تريد التحدث عنه، بعض الأمثلة على هذه الأسئلة يمكن أن تكون: أخبرني عن مشروع عملت عليه، وما الذي جعلك تستمتع أو لا تستمتع؟ أخبرني ماذا تعلّمت من العمل على هذا المشروع هل يمكنك التحدّث عن بعض الصعوبات التي واجهتها؟ كيف نسّقت المهام بين أعضاء الفريق؟ إذا قمت بإعادة هذا المشروع ثانيةً، هل ستفعل شيء ما بشكلٍ مختلفٍ؟ يمكنك التحدّث عن المشاريع التي عملت عليها خلال فترات التدريب أو خلال توظيفك في خبرة عملية أو خلال العمل في مقرر جامعي اعتمادًا على خبرتك، أيّ تجربة مررت بها لها قيمتها فلا تستخف بالمعرفة التي اكتسبتها من خلالها، عند الحديث عن تلك المشاريع السابقة ستكون الإجابة رائعة عندما تتضمن وصف وأهداف المشروع وأصحاب المصلحة فيه وتأثيره أو إجابة على الأسئلة "ماذا"، "مَن"، "كيف" و"لماذا". سيساعدك هذا في إثبات أنَّ لديك فهمًا جيدًا للعملية بأكملها وليس فقط للجانب التقني للأمور. ومن الجيّد أن تُدرج مقاييس النجاح إذا كانت ذات صلة، مثلًا: "هذا ساعد الناس على القيام بالمهمة x بشكلٍ أسهل"، "قمت بأتمتة هذه العملية مما وفر مقدارًا من الوقت للفريق" وغير ذلك. هذا يُظهر مدى اهتمامك بتأثير عملك. حتى لو كان هناك شيئًا يبدو عديم الأهمية بالنسبة لك، تذكر أن الشخص الذي يقابلك لا يعرف عنك شيئًا، إنّهم يبدؤون بصفحة فارغة بالكامل ولديهم فترة زمنية قصيرة ليفهموا كيف تتفاعل مع الأشخاص، ما الذي يثيرك في عملك وكيف تهدف لتحقيق النجاح. اغتنم الفرصة للتفكير في خبراتك وتحديد مجالات النمو للحديث عنها. يدرك المقابِلون أنّ لا أحد مثالي لكنهم يقدرون عقلية النمو. هل حددت بعض العمليات التي يمكن ضبطها؟ ربما كان تواصلك كان يمكن أن يكون أفضل في حالة معينة؟ أسئلة حول الشركة سيسألك المقابِلون سؤالًا اعتياديًّا عن العوامل التي جذبتك إلى الشركة وإلى المنصب الذي تتقدم إليه، من الضروري القيام ببعض الأبحاث حول الشركة مسبقًا وتحضير إجابات للأسئلة مثل: ما الذي يثير اهتمامك في صناعتهم؟ ما الذي جعلك مهتمًا بالشركة؟ ما الذي تتوقع تحقيقه من خلال العمل هناك؟ كيف تتناسب معرفتك مع ما يقومون به؟ ما الذي جعلك تعتقد أنك ستكون مناسبًا لثقافتهم؟ المعرفة المسبقة حول المنتجات التي يبنونها يمكن أن تأخذك شوطًا طويلًا، يتضمن ذلك فهم فضاء المنتج والاطّلاع قليلًا على مجموعة التقنيات. إذ أستفيد عادةً من الاستعدادات للمقابلة كفرصة لتعلّم شيء جديد وفهم ما إذا كنت مهتمًا بالمساهمة في ذلك. بعدها أكون قادرًا على طرح المزيد من الأسئلة ذات الصلة في المقابلة، بالإضافة إلى ذلك أجد أنّه من الأسهل بكثير أن أكون ناجحًا في مجال يثير اهتمامي. لا تقلق بشأن عدم معرفة جميع التقنيات التي يستخدموها. الانفتاح حول ما لا تعرفه (حتى الآن) يبدو جيدًا لمعظم المقابِلين. إظهار الاهتمام بتعلّم مجالهم حتى قبل توفير الوظيفة يبدو أفضل. بالنسبة للأسئلة الثقافية، يتوقع المقابِل أن يرى كيف تتفاعل مع الأشخاص الآخرين. إذا كانت لديك تجربة تدريب، فقد يسألونك عن كيفية تعاونك مع زملائك. مثلًا الوصول إلى المساعدة عندما تحتاجها، قضاء بعض الوقت في مساعدة الآخرين، التغلب على التحديات وتلقي أو تقديم التغذية الراجعة هي بعض مجالات المواضيع المحتملة. أسئلة المقابلة العامة بالنسبة للجانب التقني للأشياء فإنَّ إدراك مبادئ تطوير البرمجيات مثل البرمجة كائنية التوجه والتطوير الموجه بالاختبار والتركيب المتواصل وأنماط التصميم والتحكم بالنسخة هو أمرٌ أساسيٌّ. قد تكون محتاج أيضًا لتعلّم أساسيّات الشبكات أو قواعد البيانات أو الأنظمة حسب طبيعة المنصب الذي تتقدم له. اقرأ وصف الوظيفة بدقة، وحضّر نفسك لتكون قادرًا على إعطاء التعريفات والتحدّث حول المزايا الأساسية. قد لا تملك خبرة عمليّة، ولكن من الجيد أن تكون قادرًا على شرح لماذا هذه التقنيات مهمة ومناقشة بعض اتجاهات الصناعة. ليس عليك أن تعرف كل المتطلبات الموجودة في وصف العمل. أخبرني مرشدي الأول أنّني يجب أن أتقدّم لمنصب ما بالاعتماد على ما الذي أريد أن أكون عليه، بدلًا من الذي أنا حاليًا عليه. إذا كان لديك القليل من وقت الفراغ، فإن محاولة بناء بعض المشاريع الجانبية الصغيرة لتحسين معرفتك بتقنية جيدة هي فكرة رائعة أيضًا. حل المشاكل يأتي هنا الجزء الذي يقلق معظم الأشخاص بسببه. جلسات "حل المشاكل"، التي تختبر فهمك لبنى المعطيات والخوارزميات والتعقيد. خلال مرحلة التحضير هناك مواد غير محدودة على الإنترنت تساعدك على التحضير. الكتاب التقليدي الذي يعطّل العملية ويوفر المشاكل والحلول هو كتاب Cracking the Coding Interview لـ Gayle Laakmann McDowell. المصادر على الإنترنت مثل LeetCode وHackerRank هي بدائل جيّدة. يجب عليك معرفة ما هي الأعمال الأفضل لك بينما أنت تدرس. شخصيًّا أفضّل حل المشاكل والتحديات الصغيرة، مثل code katas أو advent of code. ومع ذلك يمكن أن يكون مضيعة للوقت. لذا عندما أريد أن أتعلّم أسرع، أجد الحلول على الإنترنت وأطبّقها بنفسي لفهم الخوارزمية. هناك الكثير من مقاطع الفيديو على اليوتيوب تشرح كيفية عمل خوارزمية معينة يمكنك أن تستخدمها. عندما تطبّق حلّ ما، خذ بعض الوقت لتقوم بدفعه (push) إلى حسابك على Github. لن يكون مفيدًا فقط إذا احتجت إليه مرة أخرى لاحقًا، لكن سيساعدك أيضًا في بناء معرض أعمالك. خلال المقابلة نفسها تأكد من أنّك فهمت المشكلة بشكلٍ كامل. اطلب من الشخص الذي يقابلك توضيح الأسئلة للتأكد من أنّك تعرف المطلوب منك. لا تنتقل إلى كتابة الشيفرة بدون أن يكون لديك معلومات كافية. مثلًا، يجب أن تتأكد من أنّك تعرف من أين تقرأ الدخل، ما هو تنسيق الدخل وحجم البيانات. ابدأ مع حل "القوة العنيفة" (brute force) ولا تفكر في الأداء بعد. اتركه بسيطًا. اشرح للمقابِل طريقة تفكيرك واذكر أنّك ستجرب حل القوة العنيفة أولًا. لا تقلل من صعوبة المهمة. فحتى الاختبارات التي تبدو بسيطة مثل اختبار FizzBuzz) يمكن أن تعطي انطباعًا سريعًا عن كيفية تحليل المشكلة وفهمها. يبدأ عادةً الاختبار يبدأ بسيطًا ويتقدم تدريجيًا. اذكر أيّة افتراضات تقوم بها. إذا كنت تستخدم توابع مكتبة للغةٍ ما من اختيارك، اسأل إذا كان يجب عليك تنفيذها. مثلًا الترتيب متوفر في معظم لغات البرمجة. بينما تتابع حل المشكلة، اشرح كيف تنقل بياناتك وأين تخزّنها وكيف تعالجها. يوضح هذا أنّك تفهم جيّدًا البيانات التي تتعامل معها ولا تحاول فقط تجربة الأشياء التي رأيتها حولك. يمكنك تقسيم مشكلتك إلى دوال أصغر بأسماء واضحة ثم المضي قدمًا والبدء بتنفيذ كلّ منها. غالبًا، يتوقع منك المقابِلون تنفيذ الحل البسيط أولًا، ثم سيسألونك عن التعقيد. حاول تحديد الحلقات المضمنة، والعمليات لحساب التعقيد. أبقِ تعقيد المساحة والزمن في عقلك. ما مقدار الذاكرة التي تحتاجها لتخزين الأشياء مقارنةً بدخلك وكم عدد العمليات التي تحتاج أن تقوم بها لتحصل على النتيجة. ذكّر نفسك بدرجة تعقيد الخوارزميات القياسية مثل خوارزمية الترتيب والبحث وغيرها ثم حاول معرفة أين يمكن تحسين الأشياء. ربما يمكنك استخدام بنية معطيات مختلفة؟ المصفوفات المترابطة (HashMaps) والمجموعات والقوائم المرتبطة هي بُنى نموذجية تستخدم لتحسين التعقيد اعتمادًا على المشكلة. من الجيد أن تكون هذه البنى بين يديك لتستخدمها في المشكلة الصحيحة. إذا كنت تعرف المشكلة والحل الأكثر فعاليةً مسبقًا، تابع العمل ولكن خذ بعض الوقت لشرح سبب كونه الحل الأمثل. إذا أبدى المقابِل أي رأي فكر بها جيّدًا. في معظم الأحيان، يكون المقابل يعرف الحل مسبقًا ويريد أن يساعدك لذا فإنّ اقتراحاته تستحق التفكير. ماذا لو لم تحلّ المشكلة؟ هل يعني هذا أنّك فشلت في المقابلة؟ ليس بالضرورة. المقابِل مهتم أكثر بطريقة تفكيرك. من تجربتي يركز المقابِلون على: ماذا تفعل عندما تكون عالقًا؟ هل أنت قادر على توضيح لماذا أنت عالقٌ، هل سيثقون بك عند إعطائك مهمة ويعرفون أنّك ستطلب المساعدة عندما تحتاجها؟ هل أنت قادر على فهم عمل بنى المعطيات أو هل تستخدمهم كمربع أسود؟ مثلًا استخدام المصفوفات المترابطة بدون سبب معيّن لذلك أو بدون توضيح لماذا يحسّن استخدامها من الأداء؟ هل أنت تتواصل جيّدًا بشكلٍ عامٍ؟ هل تتقبّل التغذية الراجعة أو تتحمس لحلك فقط؟ هل أحرزت أيّ تقدّم خلال المقابلة؟ هل يمكنك أن تعمل تحت الضغط أو تتوقف نهائيًا؟ أسئلة حول المقابِلين من الجيّد أن تحضّر بعض الأسئلة للمقابِلين أيضًا. تذكّر أنّه من المهم معرفة ما إذا كانت الشركة مناسبة لك أم لا. كلّما ازدادت المعلومات التي تعرفها، كان من الأسهل عليك اتخاذ القرار. عادةً أحضّر بعض الأسئلة للمقابلة مسبقًا، مثل: كيف تُنظَّم فرق الهندسة؟ كيف توزَّع المهام على الفريق؟ كيف يمكنك اختبار منتجاتك؟ ما الفريق الذي يحتمل أن أعمل معه؟ كيف تدعمون الأشخاص أثناء التدريب؟ كم يستغرق عادةً الشخص الجديد للتدريب؟ ما الذي يمكن أن يكون مثالًا لمهمة أعمل عليها؟ ما هي التقنيات الرئيسية التي تستخدمونها لهذا المشروع؟ ما الفرص المتاحة للعمل على مشاريع مختلفة؟ كيف يمكنك إجراء مراجعات الأداء؟ كيف يبدو التقدم الوظيفي لهذا المنصب تحديدًا؟ فكّر في يوم عملك المثالي - ما الذي تريد أن تعرفه عنه؟ يقيّم الأشخاص المختلفون أشياء مختلفة في العمل. مثلًا، قد تفضّل بيئة متغيرة ديناميكية توفر مزيدًا من الحرية، أو قد تشعر بالإنتاجية في بيئة أكثر تنظيمًا. قد ترغب في العمل بطريقةٍ استقلاليةٍ أو تفضّل أن تكون جزءًا من فريق. إنّها فكرةٌ جيّدة أن تعرف البيئة التي تساعدك على أداء الأفضل وتبحث عن الشركات التي تمنحك هذه الفرصة. إذا شعرت بأن المقابِل قد غطّى معظم أسئلتك فلست مضطرًا لأن تسأل لمجرد النقاش فقط. طريقة التفكير مهمة بالطبع، تعد مهاراتك التقنية مهمة جدًا لمقابلات هندسة البرمجيات، ولكن لا تقلل من أهمية مهاراتك الشخصية. سيعمل معك الأشخاص يوميًا لذا يجب أن يشعروا بأنّك شخص لطيف للعمل معه. هناك جزء كبير من العمل لا يتعلق بكتابتك للشيفرة البرمجية، إنّما بالتعاون مع المبادئ والفرق الأخرى. جمع وفهم المتطلبات، والقدرة على التعبير عن المشكلة بطرق تقنية وطرق غير تقنية، إبلاغ أصحاب المصلحة حول التقدم والمشاكل ليست سوى جزء منها. إذا كنت تعتقد أنّ لديك مصدر قوة في شخصيتك فحاول أن تظهر ذلك خلال العملية. اهدف للتحسين المستمر لا تنسَ أن إجراء المقابلات، مثله مثل أي شيء آخر، هو مهارة تتحسن مع الخبرة. لا تقلق بشأن الفشل، ركّز على ما تعلمته والقيام بأداء أفضل في المرة القادمة. عندما تكتسب بعض الخبرة ستصبح أقل توترًا وبالتالي سيكون من الأسهل أن تنجح. إنّها عملية من التطوير المستمر، يجب أن تتحسن في كل مرة تجري فيها مقابلة، لذا استمر في التحضير وفي تحسين مهارات التواصل لديك ومهاراتك التقنية. البحث الصحيح عن المعلومات هو المفتاح للتحضير الجيّد، ومراجع مثل موقع Quora أو حتى غوغل فقط هي مصادر جيّدة لأسئلة المقابلة الشائعة للشركات. قد تكون كل هذه المعلومات هائلة، لكنك لن تُسأل كل هذه الأسئلة في كل مقابلة. حاولت أن أجمع الأشياء المختلفة التي لاحظتها حتى الآن لأعطيك بعض المجالات لتستكشفها. القليل من التحضير المركّز يقطع شوطًا طويلًا، لكن لا تبالغ فيه. من السهل أن تفكر كثيرًا في مقابلة وتربط نفسك بعقد. حظًا سعيدًا، اذهب إلى هناك وكن رائعًا! هل لديك أيّة خطوات أخرى تستخدمها أثناء التحضير؟ شاركها معنا في التعليقات. ترجمة -وبتصرف- للمقال How to prepare for software engineering interview questions لصاحبته Sofia Tzima
- 1 تعليق
-
- 1
-
- مهندس برمجيات
- مقابلة عمل
- (و 3 أكثر)