من ضمن الأشياء التي لاحظتها في أثناء إجراء مقابلات التعيين في "Booking.com" بوكينج Interviews أنّ كثير ممن يدخلون مقابلة العمل، عملوا أو يعملون في شركات صغيرة بالتالي هو لم يتعرّض لحجم مماثل لحجم بوكينج، بالتالي ما أن يتلقى سؤالاً في تصميم distributed system حتي يتعلثم أو يقدّم حلول ليس بها بدايات التفكير السليم. هو عمل طوال حياته في تصميم مواقع تعمل من على سيرفر واحد بالتالي لا يتخيل كيف يحل مشكلة على موقع يعمل على آلاف السيرفرات.

ما يزيد الأمور تعقيداً أنّ التدريس في معظم الكليات لا يدرّس ال distributed systems بما يرضي الله، إلا إن كنت خريج MIT و أمثالها، و عادة ما يرّكز الناس على مسائل ال problem solving، خاصة مع موجة المواقع و المسابقات التي تتنافس في حل هذه المسائل مثل:

Top coder و ACM

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

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

يمكنك أن تنظر للأمر على أنه مشكلة عامة أكبر من بوكينج و أكبر من مجال السوفتوير عموماً، الشركات الكبيرة تريد علم و خبرة لا وسيلة لتكونها إلا بأن تعمل في شركة كبيرة.

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

في لقاء العمل الخاص بي عرضت موقع newsery و هو موقع شبيه ب google news لكن باللغة العربية كنت قد صنعته فيما مضي. بعد أن عرضت الموقع سألني واحد من المبرمجين الذين أجروا المقابلة عن تصميمه، الـ Architecture. أجبته بأن الموقع صغير يتلقي فقط 40 زيارة في اليوم بالتالي يعمل بأكمله من علي سيرفر واحد لكني وضعت تصميماً يمكن تحويله بسهولة ل distributed system يعمل من على سيرفرات كثيرة، فطلب مني أن أعرض هذا التصميم الذي في ذهني و قضينا الوقت نناقش هذا التصميم، ثم عرض علي كيفية عمل google news و طلب مني أن أضع له تصميماً هو الآخر. شرح لي الـ algorithm ثم طلب مني أن أناقش كيف يمكن تحويل هذه ال algorithm لـ distributed system.

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

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

نقلًا عن (Muhammad Adel) أحد المهندسين بشركة بوكينج.

https://github.com/Muhammad-Adel