لعلك تكون قد فكّرت في التحوّل إلى نودجس (Nodejs) ومونغو ديبي (MongoDB). لكنك تتساءل عن السبب الذي يدفعك لذلك، لا شكّ أنك سمعت عنهما كثيرًا، وأنهما أصبحا الموضة الجديدة في البرمجة التي يتفاخر بها أصحاب الشركات الناشئة (startups)، من العباقرة الشباب أصحاب التغيير والفكر المنفتح. وبما أنك تعتبر نفسك من هؤلاء (وهذا أمر جيد)، فإنك تفكّر في اعتناق نود ومونغو، لكن ما زال ذلك الضمير العتيق الذي يؤنبك يقول أتتخلى عن دين آبائك من أجل هؤلاء؟ فتريد أن تبحث عن سبب وجيه ومقنع كي تنتقد التكنولوجيا “القديمة” التي تعرفها من أجل الانتقال إلى ما هو جديد. فدعني أساعدك في ذلك.

الدوافع

هناك ثلاثة أنواع من الدوافع التي تجعل شخصًا ينتقل إلى تكنولوجيا الويب الجديدة: دوافع تبعيّة، دوافع مهنية، ودوافع أسلوبية.

الدوافع التبعيّة تكمن في أن الشخص يحبّ أن يتعلّم كلّ ما هو رائج وناجح وحديث كي يحسّ بأنه ضمن جماعة العباقرة المُجَدِدين، ويبقى دائمًا في برّ الأمان، إذ يقول مادام يستعملها فلان وفلان، وينصح بها فلان وتكلّم عنها فلان فإنها جيّدة لي، لذلك سأتعلّمها، ثم يبدأ بدوره ينصح بها ويروّج لمميزاتها، علمًا أنه لم يضع أبدًا هذه المميزات في ميزان المقارنة والتقييم، وإنما ترك هذه المهمّة لمن يتّبعهم، حتى إذا جاء مُجَدِدون آخرون (وما أكثرهم هذه الأيّام) يحملون أدوات جديدة وجدته يعتنق معتقداتهم ويروّج للمميزات الجديدة. مثل هؤلاء الأشخاص ليسوا بالضرورة عديمي الكفاءة أو “أغبياء”، وإنما من وجهة نظري تنقصهم بعض الثقة في أنفسهم.

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

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

إذا اجتمع فيك واحد أو كلا الدافعين الأخيرين فأنت بخير، أما الدوافع التبعيّة فدعها إنها منتنة.

دوافع تبنّي مونغو

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

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

أعلم أنّ schema يقابلها في العربية مخطط. فكان لزامًا عليّ أن أقول أعلاه حفاظًا على تماسك المخطط (مخطط قاعدة البيانات). لكنّي أجد أن مصطلح شيمة يشبه المصطلح الإنجليزي المتداول بين المبرمجين، وبالتالي فهو مألوفٌ وأكثر اعتيادية، كما أنّه عربي ولو كان له معنى آخر لكن لا ضير في اقتراضه واستعماله في نطاق المعلوماتيات بمعنى مختلف.

أرَاكَ عَصِيَّ الدّمعِ شِيمَتُكَ الصّبرُ ،, أما للهوى نهيٌّ عليكَ ولا أمرُ

وبالحديث عن الشيمة، فإنّ الشيمة هي سبب كلّ ما نحن بصدده. فلأنك ملزم ببناء شيمة قاعدة البيانات، فهي تفرض عليك تخطيطها وبناءها استباقيًا بشكل كامل، وعدم التعديل عليها كثيرًا، وبالتالي تُناقض (أو تصعّب) مبدأ أجيل. وقد عاش الناس على هذا فترة من الزمن حتى جاء بعض جهابذة العِلم قالوا: أتعلم ماذا، تبًا للشيمة، سنخلعها ونجعل قاعدة البيانات بلا شيمة (schema less). وتوجد اليوم كثير من نظم قواعد البيانات البِلاشيمية Schema-less Database Systems. أبرزها وبلا مفاجئة نجد مونغو ديبي MongoDB.

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

شيء آخر، مونغو تعتمد على جيزون (Json) لوصف وجلب البيانات، وبالتالي فهي متكاملة مع لغة البرمجة (على افتراض أنك تبرمج بجافاسكربت)، فلا تحسّ أبدًا بذلك البون الشاسع ما بين لغة البرمجة، وقاعدة البيانات. فلطالما لم تعجبني مسألة إنشاء استعلاماتٍ بلغةٍ مختلفة تُرسَل إلى قاعدة البيانات على شكل نصوص لمعالجتها وردّ النتيجة. فتجد نفسك تتساءل هل هذه العملية أجعلها ضمن استعلام قاعدة البيانات؟ أم أقوم بها على مستوى الرِماز (الكود) مباشرة؟ لا تسئ فهمي هنا، فلغة سكيول (SQL) قوية ومتميّزة، لكنها قوية إلى حدّ كبير يجعلها تستحق أن تكون لغة برمجة رئيسية للتطوير وليس فقط نصوص متلاصقة (Concatenated Stings) ترسلها كمعطيات وظائف تستعلِم قاعدة البيانات، فذلك خلط بين لغتَين قويتين تتقاطعان في كثير من المسؤوليات.

دوافع تبنّي نود

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

إنّي أعلم بوجود خصوصيات تقنية تميّز نود عن باقي اللغات، كما أنّ باقي اللغات لها خصوصيات تقنية تميّزها عن نود. لكن كما أسلفت التوضيح في مقالات سابقة فإنّي لا أنظر في المميزات التقنية أكثر مما أنظر في الأسلوب والعقلية (mindset) التي تأتي بها هذه الأدوات وهل تتوافق مع عقليتي. بعدها أنظر إلى المميزات التقنية التي تخرج عن نطاق مقالاتي كهذه التي تجيب عن سؤال “لماذا”.

خاتمة

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