أدلة
الجداول تتضارب قبل أن تثقل
الجدول يعدّل القيم دون أن يخبرك
لا يترك Excel ما تكتبه كما هو. تذكر مايكروسوفت في وثائقها أربعة تحويلات تلقائية: إزالة الأصفار في بداية النص الرقمي وتحويله إلى رقم، واقتطاع الأرقام عند دقة 15 خانة وعرضها بالصيغة الأسية، وقراءة الأرقام المحيطة بحرف E على أنها صيغة أسية، وتحويل سلسلة متصلة من الحروف والأرقام إلى تاريخ. وتذكر الشركة نفسها الحد صراحة: الدقة تقف عند 15 خانة، فأي رقم من 16 خانة فأكثر يُقرّب ما بعد الخانة الخامسة عشرة إلى صفر.
والقيم التي تقع في هذا الفخ متشابهة في كل شركة: أرقام الهواتف التي تبدأ بصفر، وأرقام الطلبات التي تُملأ بالأصفار ليتساوى طولها، وأرقام البطاقات ذات الست عشرة خانة، ورموز الأصناف التي تخلط الحروف بالأرقام. وهذه التحويلات تجري عند فتح ملف CSV، وعند لصق عمود من شاشة أخرى، وعند تمرير أمر البحث والاستبدال.
والصعوبة أن شيئاً من ذلك لا يبدو خطأً. الرقم جالس في الخلية بهدوء والمجاميع تُحسب. وبعد شهور يُنقل الملف إلى النظام فتنتقل معه القيم المعدّلة، ثم يصير المتهم هو ما بُني حديثاً. لذلك فأول خطوة في النقل ليست النقل بل المطابقة: كل حقل ما زال أصله محفوظاً في مكان آخر، اسحب منه بضعة صفوف وقابلها بالعين.
قلّما يكون بلوغ الحد هو السبب
تذكر صفحات مساعدة Google أن الجدول الواحد يتسع حتى 10 ملايين خلية أو 18,278 عموداً. وورقة العمل الواحدة في Excel تتسع لـ 1,048,576 صفاً و16,384 عموداً. وبمئة طلب في اليوم، صفٌّ لكل طلب، يحتاج بلوغ هذين الرقمين إلى عشرات السنين. فالسعة نادراً ما تكون سبب خروج الشركة من الجداول.
ما يتعطل فعلاً ليس ملفاً واحداً بل المسافة بين عدة ملفات. والاختبار قصير: هل يعطي ملفان إجابتين مختلفتين للسؤال نفسه؟ مبيعات الشهر الماضي، وما تبقّى على الرف اليوم، ورقم هذا العميل. إن تغيّرت إجابة واحدة منها بحسب الملف الذي تفتحه، فتلك هي اللحظة.
والنسخ لا تولد من الكسل. حدث مرة أن اختفى صف أثناء التعديل المشترك، فصار كل واحد يحتفظ بنسخته. أو أُريدَ لشخص أن يرى جزءاً من البيانات ولا سبيل إلى عرض جزء منها، فقُطع نصيبه في ملف مستقل. الجدول يُفتح كملف كامل، ولا يمكن إخفاء عمود واحد عن قارئ واحد. والشركات التي امتلأت بالنسخ مرّت غالباً بإحدى هاتين الحالتين.
النقل كما هو يترك القواعد خلفه
الجدول يعمل لأن هناك من يسدّ فجواته بعينه: يرى صفين متقاربي الاسم فيعرف أنهما عميل واحد، ويرى خانة فارغة فيميّز بين قيمة لم تصل بعد وقيمة لا تنطبق أصلاً. والنظام لا يسدّ هذه الفجوات، بل يسأل قبل البناء، وبغير جواب لا يبدأ العمل.
- ما هو الصف الواحد؟ طلب واحد، أم صنف واحد داخل ذلك الطلب؟
- أي حقل يجعل العميل نفسه عميلاً واحداً؟ الأسماء تتكرر وأرقام الهواتف تتغير.
- أي الخانات يجوز أن تبقى فارغة وأيها لا يجوز؟
- هل تُعدَّل السجلات القديمة؟ وإن عُدِّلت، هل يبقى أثر بمن عدّل ومتى؟
- من يُدخل البيانات ومن يقرؤها فقط؟
متى استقرت هذه الخمسة صار الباقي مسألة اختيار أدوات. وإن بُني قبل أن تستقر، عادت النسخ خلال شهرين. والناس يرجعون إلى الجداول لا لأن النظام بطيء، بل لأن كل يوم يأتي بمدخل واحد يرفضه النظام.
افصل ما يُنقل عمّا يبقى
كل ما يعدّله أكثر من شخص ويحتاج إلى أثر يُنقل: الطلبات والمخزون والعملاء والحجوزات، وهي بيانات جوهرها من غيّر ماذا أمس. أما المكان الذي يحسب فيه شخص واحد لنفسه فبقاؤه في الجدول أفضل: ماذا يحدث لو غُيّر السعر هكذا، وكم صفاً يبقى بهذا الشرط. وتحويل هذه الحسابات إلى شاشات يضاعف نطاق العمل، ويظل صاحبها عاجزاً عن النظر من الزاوية التي يريد.
لذلك يبقى التصدير بعد النقل. تضع الشرط داخل النظام، وتسحب ملف CSV، ثم تحسبه في الجدول. لم يكن الهدف يوماً إلغاء الجداول، بل أن يتوقف الجدول عن كونه الأصل.
ويوم التحويل ليس يوماً واحداً كذلك. ستمر فترة يُدخل فيها إلى المكانين معاً، وتحتاج تلك الفترة إلى سطر بتاريخ يحدد أي الجهتين هي المرجع. وإن كانت الجهتان مرجعاً معاً، فقد عدت إلى ما قبل النقل.
ابدأ دون التخلي عن جداولك الحالية
ملفان أو ثلاثة مما تستخدمه اليوم تكفي لأول حوار. جمع البيانات وترتيبها في Weple يبدأ بصفّ هذه الملفات جنباً إلى جنب وتوحيد أسماء الأعمدة. أي القيم تغيّرت بالفعل، وهل يعني الصف الواحد الشيء نفسه في كل ملف، وأي ملف يقوم اليوم مقام الأصل: هذا ما نرتّبه قبل أن يُبنى شيء. وكيف يُحتسب العمل مكتوب في صفحة الأسعار. وإن كنت تزن الأتمتة قبل النقل، فالترتيب في قبل اختيار ما تُؤتمته، اشطب ما لا يستحق يستحق القراءة أولاً.
إن كنت في وضع مشابه
أرسل لنا وضعك الحالي، ونردّ بالنطاق والسعر خلال 24 ساعة.