المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الفرق بين مطور Developer الـ Front End والـ Back End والـ Full Stack



Rise Company
09-12-2017, 05:05
المطور Developer و الفرق بين الـ Front-End والـ Back-End والـ Full Stack

Front end development vs Back end development

Front end Development
خاص بتطوير كل ما يتعلق بالواجهة الامامية للتطبيقات، أي كل ما يشاهده المستخدم من واجهات واشكال وايقونات وخطوط وصور ونصوص واستمارات وخيارات تعرض للمستخدم ، وغيرها.ويمكن أن نطلق علي المطور Front End Developer عندما يتقن تقنيات HTML/CSS/JQuery وهي التطبيقات الخاصة بالويب، أما في تطبيقات سطح المكتب فيسمي Front end designer أو مصمم مصمم واجهات استخدام.

Back end Development
فيعني تطوير كل ما يتعلق بتطوير البنية التحتية للتطبيق، وأيضا تصميم قواعد البيانات الخاصة بالتعامل مع هذا التطبيق . وبالطبع فإن برمجة المواقع تتطلب بناء البنية التحتية أو أساس الموقع أولا، ثم تأتي برمجة الواجهة كخطوة ثانية.أما حينما يتقن المطور تقنيات JQuery والـ Ajax والـ MySql والـ PHP وهي التقنيات الخاصة بمزود الخدمة Server أي أنها تابعة للــ Back end فيمكن أن يقال عليه مطور تطبيقات حلول برمجة الويب أو Back end developer.

https://www.rise.company/forum/images/imported/2017/12/6.jpg


في عالم تصميم وتطوير المواقع الإلكترونية، يتم تقسيم عمل مطور المواقع الى 3 أقسام رئيسية، وهي ال Back-End وال Front End وال Full Stack، وكثيرا ما نتسائل ماذا يعني أن أتقدم لوظفية تندرج تحت إحدى هذه المسميات، وما هو الأفضل أن أتعلم وأندرج تحت وأحدة من المجالات أم أن أكون ملما بال Front End وال Back End لأصبح Full Stack .. أيهما أفضل !

أولا: Front End:

يقصد بال Front End هو الجزء من الموقع الذي يتفاعل معه المستخدمين، أي شيء من مكونات الموقع التي يمكنك مشاهدتها، ويمكنك إحداث أي حدث عليها، مثل ال Buttons وال Dropdowns menu والخطوط والألوان ومعارض الصور وحركات ال Animation وغيرها ..الخ من الأمور التي يراها المستخدم ويتفاعل معها.. وبهذا يكون دور ال Front End هو تكويد التصميم الذي يأخذه من المصمم ( Designer) ويحوله الى شكل يمكن التفاعل معه من قبل المستخدمين، كما أن هذا المطور(الذي يعمل في هذا المجال) كلما ازداد مهارة زادت لديه القدرة على تحديد نقاط الضعف في التصميم والتي يمكن أن تسبب إزعاجا للمستخدمين، أو يمكنه وضع أفكار لاختصار بعض الخطوات الطويلة، لذلك يكون التنسيق بينه وبين ال System Analyst بشكل جيد للخروج بأفضل شكل ممكن..


ما هي المهارات اللازمة لأكون مطور يعمل تحت مظلة ال Front End ؟

والجواب يندرج تحت ثلاث مظلات رئيسية والزامية لمطور ال Front End وهي : الجافا سكربت وال CSS وال HTML، ولا يمكن تواجد مطور Front End لا يمكنه التلاعب بهذه العناصر ليشكل الموقع بشكله المتفاعل.. فيجب عليك أيضا بعد إتقان هذه أن تتقن بعض بيئات العمل الموجودة مثل Bootstrap وال AngularJS وال Backbone وال Foundation ..الخ من بيئات العمل هذه ..(بكل تأكيد ليس جميعها ..لكن عليك أن تعرف واحدة على الأقل من نوعين مختلفين من كل بيئة العمل..) كما أننا نتحدث عن Front End فيعني أنك يجب أن تعرف في ال HTML5 وال CSS3 وال jQuery وال jQuery UI وال SASS or LESS وبعض الخبرة في بعض المكاتب المهمة والمتعلقة مثلا في معارض الصور والقليل من الخبرة من الأجاكس ليست سيئة ...

هل يجب علي أن أتعلم هذا كله قبل أن أبدأ العمل؟

بكل تأكيد لا، هذه يجب أن تعرفها وتتعلمها في أثناء عملك، لكن المكونات الرئيسية على أقل تقدير هي من يجب أن تتواجد، مع مهارة في طريقة التعامل معها بكل تأكيد.... لكن عليك أن تستمر في البحث عن كل ما هو جديد في هذه التقنية، وعليك أن تكتب شيفرتك البرمجية بشكل سلسل يمكن ال Back End من العمل على ما كتبت بشكل سهل ..وهذا يقودنا الى سؤال ..ما هو ال BACK END...

ثانيا: Back End:

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

المهارات اللازمة لأن أعمل كمطور Back End ؟

أهم المهارات المطلوبة هي قدرتك على الربط بين قواعد البيانات، والتطبيقات والتعامل معها ضمن ال Server..وهذا يعني أنه يلزمني تعلم لغة تهتم وتتعامل مع السيرفر وتقوم بهذه المهام ومن هذه اللغات أو المتطلبات الي يجب أن أتعلمها أو أن أعلمها هي لغة سيرفر مثل ( PHP OR ASP.net OR Python ..الخ) و مجموعة من الأدوات مثل (Mysql OR Oracle OR SQL Server) وبكل تأكيد هذه تأتي بعد تعلمك أو معرفتك ل SQL(Structure Query Language) مثل جمل الإستعلام والتحديث والحذف والإضافة ..الخ و بيئة عمل مثل (Yii Framework أو Zend ..الخ) و أن تتعلم ال version control مثل ال Git أو ال SVN .. و من الأمور المهمة لدى هذا النوع من المطورين عملية التوثيق للشيفرة البرمجية...ونظام التشغيل الذي يستخدمه عادة مطوروا هذا النوع هو Linux.

هذا هو ال Back End وبكل تأكيد هناك حد أدنى من المتطلبات لتبدأ عالمك لكن تأكد أنه يجب أن تملك الحد الأدنى من المهارة الذي يؤهلك للبحث والبدء بالعمل، والجميل في هذا النوع أنك في تحد دائم مع المشاكل ووظفيتك هنا أكثر حساسية لتعاملها المباشرة مع البيانات والخوف من الإختراق أو اتلاف البيانات أو عدم تنفيذ الوظائف بشكل جميل.

والآن ماذا عن العمل ك Front End وك Back End أو من يمتلك القدرة على العمل بهاتين الوظيفنين ؟! هل هناك وظيفة لهذا النوع ؟ وماذا يسمى صاحبه ؟!
الجواب هو بكل تأكيد هناك وظيفة لأمثال هؤلاء أو مسمى وظيفي ليكون المعنى أدق وهو ال Full Stack .


ثالثا: ال Full Stack:

في أثناء المرحلة الدراسية، كنا نتعلم أن الحاسوب دائما لا يفهم الا الصواب والخطأ لا يفهم الا لغة ال 0 وال 1 (يا أبيض يا أسود)، لكن هذا المفهوم لم يكن يلبي احتياجات المجال، وكنا نريد الوصول الى حالة وسطية، ولو كانت تحبك بشكل مغاير عن الحبكة الأصلية..وكان ذلك من خلال الذكاء الإصطناعي، وهذا المثال ينطبق على ال Full Stack، فهو لم يقبل بأن يكون Front-End لوحده ولم يقبل أن يكون Back-End لوحده، وهذه على فكرة حالة طبيعة مع المدة تأتي، فستجد نفسك ولو كنت في مجال ال Front End محتاجا للعمل على بعض الشيفرات البرمجية الخاصة بال Back End والعكس صحيح، وهذا هو ال Full Stack وبمعنى آخر وأدق هو إتقان العمل بشقيه وعلى وجهيه Back End (من جهة السيرفر) ووجهه ال Front End (التعامل من جهة ال Client) وهذا النوع من المهارة يلزم بأن تكون فعلا محارب في عالم الويب، وتحتاج الى جهد أكبر بكل تأكيد لتستطيع مواكبة كل جديد من كلا الجانبين وتطوير مهاراتك وإكتساب أكبر قدرة من الخبرة والقدرة على حل المشكلات … وطبعا أهم المهارات المطلوبة هي المهارات الأساسية الخاصة بكل من
ال Back End وال Front End .

نقاط مهمة:

1) بفضل الله تعالى جميع الأقسام مطلوبة في سوق العمل، وبكثرة لكن دائما يشترط الإبداع، الممارسة، القدرة على البحث وحل المشاكل.
2) مجال ال Full Stack جميل، لكن يلزمه عمل بجد، لأنه يجب أن يكون حصيلة عمل جاد لكل من ال BackEnd وال FrontEnd ..ولذلك تجد أنك تتعلم في بادئ الأمر المكونات الأساسية للجميع، ومع العمل ستكتسب خبرة في مجال ما، ومن خلالها ستستطيع تطوير مهاراتك المقابلة أو الأخرى من خلال خبرتك التي إكتسبتها من عملك في المجال الآخر.
3) لا أفضلية لمجال على مجال في هذه الأعمال من وجهة نظري، ولا أتحدث عن الرواتب بالضبط، لأني أراها متراوحة بنائا على الشركة وعدد سنوات الخبرة ..الخ، لكن يتميز بكل تأكيد ال Full Stack صاحب المهارة بكلا الشقين – ركز مهارة – وليس مجرد معرفة في كلا الشقين.

يجب التفريق بين ما يلي:


Web Design تصميم الويب، ومنه Web Designer مصمم ويب
UI Design تصميم واجهات الإستخدام، ومنه مصمم واجهات الاستخدام
Front End Development وتعني "تطوير واجهات الويب"
BackEnd Development وتعني تطوير حلول البرمجة الخاصة بالويب.