ما معنى Full Stack Developer

المعنى الحرفي لكلمة Stack هو كومة من الأشياء والمقصود هنا انك ستحمل مسؤولية كل شيء في المشروع وسوف نشرح الآن كل شيء في المشروع والمتطلبات ومعلومات عن الوظيفة.

معلومات مهمة قبل التعريف بالوظيفة

قبل الدخول في تعريف وظيفة ال Full-Stack Developer دعونا نرى أهم الوظائف الموجودة في أي مشروع والتي تزيد أو تنقص حسب المشروع وحسب الشركة
  • UI/UX Designer
  • Front-End Developer
  • Back-End Developer
  • Testers
  • Business Analyst
  • Dev Ops
  • Sales And Marketing
  • Project Manager

والآن نقوم بتقسيم المشروع نفسه لمجموعة من الطبقات
  • Presentation Layer
  • Business Logic Layer
  • Database Layer

والآن نتحدث عن كل طبقة بكل ما يخصها.

Presentation Layer

هو الجزء الخاص بال Front-End Developer والذي يتعامل فيه مع ال User Interface والجزء الذي يراه زائر الموقع ويحتاج للتقنيات التالية حتى يستطيع عمل هذا الجزء بعد الحصول على ال Sketches ورحلة المستخدم من ال UI/UX Designer. وهذه بعض المعلومات البسيطة عن كل تقنية ولغة تخص ال Front-End Developer

HTML

حتى تستطيع عمل بنية الصفحة الأساسية Markup

CSS

لتتمكن من التعامل مع الألوان والخطوط وال Visuals بصفة عامة

JavaScript

حتى تستطيع عمل الجزء ال Interactive وال Calculation وكتابة ال Logic

Design Framework

اطار عمل من الموجودين على الساحة وأشهرهم Bootstrap لتوفير الوقت والمجهود في بناء تصميم متكامل

Pugjs

أو أي Template Engine آخر لتوفير الوقت كتابة أكواد ال Html وتستفيد بقوة ال JavaScript في كتابة ال Templates

SASS

أو أي PreProcessor آخر لتوفير الوقت في كتابة أكواد Css والإستفادة بقوة لغات البرمجة وللحصول على كود منظم أكثر.

JavaScript Framework

اطار عمل من الموجودين على الساحة وأشهرهم ( Angular, React, Vue ) مع المكتبات والإضافات المتاحة لكل اطار عمل مثل Redux, NuxtJs

jQuery

مكتبة تساعدك وتوفر عليك الكثير من الأمور وفي حالة اخترت اطار عمل معين من النقطة السابقة يمكن الإستغناء عنها.

Gulpjs

أو أي Task Runner آخر يقوم بتوفير الوقت ويقوم بعمل المهام التي تقوم بعملها يوميا في عملك ويجعل تركيزك فقط على كتابة الكود.

JSON

ال JavaScript Object Notation لتتعلم كيفية التعامل مع البيانات وال APIs الموجودة في المشروع.

AJAX

لتستطيع التعامل مع ال Requests وال Calls وكل ما يخص ال APIs

Jest

أو أي Testing Framework آخر لتقوم يعمل ال Unit Testing

Business Logic Layer

هو الجزء الخاص بال Back-End Developer والذي يتعامل فيه مع البيانات وال Validation وبناء ال Services والبنية الخاص بالنظام وكل ما يخص ال Logic وفي هذا المسار هناك الكثير من لغات البرمجة حسب المسار الذي تختاره وهناك بعض المسارات كالتالي.
  • لغة PHP مع ( YII, Laravel, Symphony )
  • لغة Python مع ( Django, Flask, Web )
  • لغة Java مع ( Spring )
  • لغة Ruby مع ( ROR )
  • لغة C# مع ( .NET )
  • بيئة Nodejs مع ( Express )

Database Layer

هو الجزء الخاص بالتعامل مع قواعد البيانات من انشاء وتعديل وعمل Tweaks وتحسين أداء ال Queries وهناك الكثير من قواعد البيانات التي يمكنك العمل عليها مثل:
  • MySQL
  • SQLServer
  • Oracle
  • MongoDB

بعض التقنيات الواجب تعلمها

  • Git & Github
  • GraphQL
  • Rest API
  • Linux
  • Command Line

بعض المهارات الواجب تعلمها

  • التفكير المنطقي
  • مهارات التواصل
  • الإبداع
  • إدارة الوقت
في النهاية هذا المسمى عند الكثير له الكثير من المعاني وهناك من يضيف عليه مهارات وتقنيات أخرى مثل ال إدارة المشاريع وال System Administration وال Network وتختلف من بلد لبلد ومن شركة لشركة أخرى ولكن يبقى المعنى واضحا وهو أنك تقوم بالوظيفتين وحدك.

مقارنة الوظيفة بالنسبة للشركات

سوف نقيس هذه المقارنة على Full-Stack, Front-End, Back-End كلهم خبرتهم نفس عدد السنوات 5 سنوات على سبيل المثال, وهذه المقارنة لا تنفع في جميع الشركات ولكنها مقارنة عامة تحتمل الصواب في شركة ويمكن أن تكون خطأ في شركة أخرى ولكنها لعرض الفكرة فقط.
Full Stack Developer Front-End Or Back-End
الشركة تقوم بتعيين موظف واحد الشركة تقوم بتعيين موظفين بدلا من واحد
الشركة تتعامل مع شخص واحد في الطلبات الشركة تتعامل مع شخصين في الطلبات
لا تحتاج لتوحيد طريقة العمل ومعايير ال Code لأنه شخص واحد تحتاج لوضع معايير وتوحيد طريقة العمل لأنه فريق وليس شخص واحد
يمكن أن ينتقل لأي من المجالين ويتخصص فيهم لأنه يعمل فيهم بالفعل يحتاج لتعلم المجال الآخر من الصفر لأنه جديد عليه
لو كانت الشركة تحتاج لمتخصص وخبرته خمس سنوات لن ينفع معها لو كانت الشركة تحتاج لمتخصص وخبرته خمس سنوات فهو مناسب لها
يمكن أن يكون هناك خطوة في إتخاذ أي قرار بسبب أنه يخرج من شخص واحد إحتمال الخطأ ضعيف لأن القرار بيد أكثر من شخص يتناقشوا فيه