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

كيف أبدأ بتصميم نظام ما؟

1. ابدأ أولًا بالحصول على متطلبات النظام بشكل دقيق، حاول الحصول على إجابات للأسئلة التالية:

- ما الهدف من النظام وما هي المشكلة التي يحاول حلها؟

- من هم مستخدمو النظام وكيف سيُستخدم؟

- ما هي مدخلات ومخرجات النظام وما هو كمّ البيانات الذي سيتعامل معها؟

- ما هو عدد المستخدمين اليوميين Daily active users (DAU)؟

- ما معدل القراءة إلى الكتابة؟ هل سيميل مستخدمو النظام لكتابة البيانات أم قراءتها غالبًا؟ على سبيل المثال، يختلف هذا المعدل في نظام Youtube عن نظام آخر مثل DropBox.

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

3. ابدأ بمناقشة كيفية تطبيق كل مكوّن من النظام على حدة، كالخوارزميات المتّبعة وكيفية حفظ البيانات وهكذا...

4. انظر إلى كفاءة التصميم مع زيادة عدد المستخدمين والبيانات التي يتعامل معها، أضف بعض التقنيات للتعامل مع هذه الحالة مثل Load Balancers و Database Sharding وغيرها.

للتعرّف على التقنيات المُستخدمة لزيادة القدرة الاستيعابية للنظام scaleability، أنصح بهذه المحاضرة: