تجمع The WTF اليومية قصصًا مضحكة ووحشية و / أو حزينة من عالم تكنولوجيا المعلومات منذ 14 عامًا. قمت بترجمة العديد من القصص التي بدت مثيرة للاهتمام بالنسبة لي. تم تغيير جميع أسماء الشركات والأسماء.
للعمل لمدة 3000 ميل
قصة حقيقية من التجربة الشخصية للمؤلف Snoofle. [الأصل]منذ عدة عقود ، عمل مقاول الدفاع DefCon Inc لصالح الجيش الأمريكي وحاول الحصول على عقد جديد لإنشاء نوع من التطبيقات المستخدمة في المعركة. أرادت الشركة أن تثبت في اقتراحها أن لديها ما يكفي من الموظفين لتنفيذ هذا المشروع. لذلك ، استأجرت أكثر من ألف مبرمج متنوع ، ومديري مشاريع ، ومديرين ، وما إلى ذلك. رأى الجيش ، الذي درس مختلف العروض التجارية ، مجموعة من الموظفين الجدد الذين لم يكونوا على دراية بالعمليات والإجراءات والمتطلبات اللازمة ، لذا قاموا بنقل العقد إلى شركة أخرى. المقاول ، من جانبه ، أطلق كل هذا الف شخص.
بعد بضعة أشهر ، ظهر عقد مماثل آخر. وظفت الشركة مرة أخرى ألف شخص لإظهار أن لديها موظفين. بعد بضعة أشهر ، تم نقل العقد مرة أخرى إلى مقاول آخر ، وقامت الشركة برفض الألف مرة أخرى.
على مدار عامين ، تم تكرار هذا عدة مرات.
بعد كل هذا ، كان معظم الموظفين المتاحين للتوظيف على علم بدورة التوظيف - الفصل القصيرة جدًا في الشركة ، لذلك لم يتمكن المقاول من جذب أي شخص باستثناء القادمين الجدد الذين تخرجوا للتو من المؤسسات التعليمية. أخيرًا ، صُدم بعض المديرين رفيعي المستوى بحقيقة أن جميع هؤلاء الأشخاص فقط بسبب المكتب كانوا أرخص بكثير من المطورين ذوي الخبرة في موظفي الشركة ، وأولئك الذين استأجرتهم الشركة ، طردوا من أجل العقود. لذلك ، أصدر أمراً
باستبدال جميع الموظفين ذوي الخبرة في الشركة بموظفين شباب
رخيصة . استغرقت العملية عامين ، لكنها ما زالت تحدث.
الآن وقد انخفضت تكاليف الرواتب بشكل كبير ، وأثارت غضب جميع المطورين المرشحين ذوي الخبرة ، يمكن للشركة زيادة موظفيها الدائمين دون تضخيم ميزانية الرواتب. يمكنها فقط توظيف مطورين صغار عديمي الخبرة للحصول على عقد في النهاية.
لسوء الحظ ، لم يكن لدى جميع هؤلاء المطورين الشباب سوى خبرة قليلة للغاية ، ولم تعد الشركة لديها أشخاص
في الخنادق يمكنهم تدريبهم. لذلك ، كانت نتيجة العقد الذي مدته سنتان هو هذا المشروع غير الموثوق به ، والذي غالبًا ما تعطل ، وكان يتصرف بشكل غير متوقع ولا يمكن تعديله. هذه الخصائص غير مرغوب فيها عند التعامل مع النظام الذي يجب أن يطلق النار وينفجر.
في مرحلة ما ، أدرك أحد كبار المسؤولين التنفيذيين ما حدث ، وأجبر الشركة على التوقف عن التصرف كفيل في متجر بالصين ، وتوظيف مستشارين بأجور عالية. لسوء الحظ ، تذكر الاستشاريون الذين يتلقون رواتب عالية دورة توظيف الموظفين ولا يريدون أن يكون لهم أي علاقة بالمنظمة. بعد مرور بعض الوقت ، كان على الشركة تحسين شروط التوظيف بشكل كبير ، حتى وافق العديد من الموظفين ذوي الخبرة على الحصول على وظيفة كموظفين بدوام كامل. حدث ذلك في نيو جيرسي.
بعد أن عينت الإدارة هؤلاء الموظفين الجدد للمشروع لتسريع العمل عليه ، قال الموظفون الجدد ،
"انتظر قليلاً ، هناك فجوة كبيرة في منتصف هذا المشروع!" وردت الإدارة بأن هذا الجزء من المشروع قد تم تصنيفه ولا يمكن دراسته إلا من قبل الأشخاص الذين لديهم إمكانية الوصول إلى المعلومات المصنفة وفقط في مؤسسة في كاليفورنيا. تم طلب الموافقات المناسبة واستلامها ، وبعد ذلك تم إرسال الموظفين ذوي الخبرة لمدة أسبوعين إلى منشأة في كاليفورنيا.
قبل الموافقة على الرحلة ، أراد المطورون أن يعرفوا كيف يمكنهم الوصول إلى المواد بعد الدراسة. بعد كل شيء ، لا يمكن الوصول إلى الموقع إلا في كاليفورنيا ، ويعيش ويعمل جميع الموظفين في نيو جيرسي. قيل لهم إنهم سيتعلمون التفاصيل في كاليفورنيا.
حسنًا ، طاروا جميعًا إلى الساحل الغربي ، وقاموا بالتحقق من الفنادق وتوجهوا إلى المكتب.
في تلك اللحظة تم إطلاعهم على جميع المشاكل التي تحتاج إلى معالجة. في يوم الخميس ، الأسبوع الثاني من العمل ، تقرر ضرورة عمل ما يقرب من عامين لإكمال جميع الترقيات اللازمة. سأل المطورين مرة أخرى:
"كيف يمكننا الوصول إلى المواد من ولاية نيو جيرسي؟" أجاب المديرون بأن كل العمل يجب أن يتم محليًا وسيبقون في كاليفورنيا للعامين المقبلين. ابتداء من الاثنين المقبل.
لكن مهلا ، لم تتح لهم الفرصة لمناقشة هذا الأمر مع العائلة! كيف سيؤثر غياب 90٪ من وقت أحد الوالدين على الأطفال؟ هل يريدون العيش في الفنادق والمطارات لمدة عامين؟ لماذا بحق الجحيم لم توظف الشركة موظفين محليين في كاليفورنيا ، ولكن في نيو جيرسي؟
اتضح أنه بما أن المقاول موجود في نيو جيرسي ، يجب أيضًا تسجيل الموظفين الذين يستعين بهم هناك. بالطبع ، إذا كان قد تم الإبلاغ عن ذلك قبل التوظيف ، فسيكون معظم الموظفين (إن لم يكن جميعهم) قد رفضوا العمل. إذا كانوا يعلمون ، فلن يستقل أي من العمال الطائرة ويطير إلى كاليفورنيا للتعرف على المشروع.
لا يمكنك حتى القول إن بقية العمل للمديرين تم فركه على ضرورة وجود ضحايا من أجل الشركة ، وكان المطورون يتساءلون: "ماذا بحق الجحيم؟" كان مساء الخميس مشغولاً بالمكالمات التي لا تنتهي. صباح الجمعة ، استقال جميع الموظفين وتوجهوا إلى المطار للعودة إلى منازلهم.
تصرف ممثلو الجيش بكرامة وكانوا متعاطفين مع حقيقة أن الناس لا يريدون مغادرة منازلهم وعائلاتهم لمدة عامين. ومع ذلك ، أصبحوا أكثر صرامة عندما يتعلق الأمر بالتحدث مع المقاول والوفاء بوعوده المتمثلة في وجود موظفين ذوي خبرة في مكان العمل.
نتيجة لذلك ، تم إنهاء العقد مع المقاول ، وتم التعاقد معه ليحل محل عقد جديد.
حالة الفشل
[الأصل]في اليوم الأول في الوظيفة الجديدة ،
لم يكن
سيباستيان متحمسًا بشكل خاص. لقد رأى الكثير بالفعل واكتسب اللامبالاة والتشاؤم. لا ينبغي أن يكون هذا العمل الجديد مختلفًا: مجموعة من الزملاء المزعجين ، متطلبات سيئة التفكير ، قواعد الشفرة القديمة ، مليئة برمز السباغيتي. لكنها كانت تتقاضى أجراً جيداً ، وقد سئم من مجموعته القديمة ، وكان متعباً من نفس الوجوه المألوفة. لذلك ، أعد داخليا لظلال جديدة قليلا من نفس السياسة المكتب والمهام الكئيبة.
لم يكن منزعجًا بشكل خاص عندما ذهب إلى قسم تكنولوجيا المعلومات للحصول على أوراق اعتماده وسمعت أصوات خوادم Packard Bell القديمة والنقر فوقها. قام سيباستيان ببساطة بتخفيض حاجته من المتطلبات لجهاز كمبيوتر يعمل إلى عدة مستويات ، وعاد إلى مكتبه الجديد. نعم ، يعني منصبه مكتبه ودفع المقابل. لهذا ، يمكن أن يتصالح مع أشياء أخرى كثيرة.
عمل تسجيل دخوله في المحاولة الأولى ، والتي كانت مفاجأة سارة. كان يتوقع نظام التشغيل Windows XP ؛ عندما تم تشغيل نظام التشغيل Vista ، لم يكن متأكدًا مما إذا كان ينبغي أن يفرح في نظام التشغيل الأحدث ، أو يشعر بالفزع من أنه كان نظام التشغيل Vista. من خلال إكمال امتيازات المسؤول وتقليص UAC ، يمكنه حتى التظاهر لفترة من الوقت بأنه "سبعة".
"سوف يستغرق الأمر شيئًا أكثر لإخافتي" ، كما اعتقد ، وبدأ تشغيل Outlook.
كان هناك بالفعل بريد في البريد الوارد: بعض رسائل الترحيب مع معلومات للموظفين الجدد ، وكذلك المهمة الأولى من مديره. وبسبب إعجابه الأقل ، بفعالية تعيين المهام ، فتح خطابًا من قائده الجديد.
الحرف الأول كان شيء مثل هذا:
مرحبا سيباستيان ، مرحبًا بك في بيئة العمل لدينا. كل شيء يتم فيه بشكل صحيح. عند إنشاء مستندات المشروع ، ستعمل مع Bonk-Word (تطبيق التوثيق المستند إلى الويب من IBM). تذكر أن تحفظ عملك كثيرًا! إذا تعطلت Bonk-Word ، فستحتاج إلى كتابة خطاب إلى قسم تكنولوجيا المعلومات لإعادة تشغيله.
تضع الشركة وثائق التصميم. اكتب كل شيء بصوت خافت ، واستخدم البنفسجي للإشارة إلى عناوين الفصول والأخضر للإشارة إلى عناوين الأقسام. يتم فحص المستندات يوميًا من قبل رئيس الشركة في الساعة 9 صباحًا ، لذا كن مستعدًا لذلك. سوف تصبح الأخطاء في الرؤوس علامة سوداء في ملفك الشخصي.
ابدأ بتصميم حل لمشكلة خطوط Macintosh لم نتمكن من حلها لمدة أربع سنوات. غدًا بحلول الساعة التاسعة صباحًا ، يجب أن يكون لديك مستند مشروع معد من ست صفحات. شكرا لك
"ست صفحات للغد؟" - سيباستيان قلق.
"أعتقد أنني فرحت بالكفاءة في وقت مبكر للغاية. حسنًا ، على الأقل لن يكون الأمر مملًا ، فقد كسر مفصل رأسه وفتح Bonk-Word وبدأ في التعامل مع ما يسمى بمشاكل الخطوط.
أول ما اكتشفه هو أن المدير لم يكن يمزح عن الادخار بشكل متكرر. بحلول نهاية اليوم ، صنع الرهانات الذهنية: ماذا سيحدث أولاً - Bonk-Word أو Vista نفسه. كلاهما تحطمت بعد كل نصف ساعة تقريبا. لكن الاحتفاظ بإحصائيات المغادرين على قطعة من الورق طمأنت سيباستيان لسبب ما. ذكرته: شيء آخر كان يعمل في العالم. أبسط العمليات الرياضية لم تكن مثيرة للإعجاب ، لكنها كانت موثوقة. العادية. مستقرة.
ربما كان سيباستيان وحيدًا في هذا المكتب. لكنه كان هادئ ومنفصل. رغم أن الطلعات الثابتة كانت مزعجة ، إلا أن سيباستيان ما زال يتحرك إلى الأمام. لقد عمل في دراسة مجموعة متنوعة من المؤلفات حول تقديم الخطوط ، بما في ذلك مواصفات بوستسكريبت ، والأدب المصاحب مع توصيات لاستخدامه ، ومراكز المعلومات على شبكة الويب العالمية ، المصممة لجمع حكمة أفضل عقول الصناعة في تنسيق أسئلة وأجوبة مألوفة ومريحة . وصفه على نطاق واسع في المستند "إنشاء برنامج Python لتقديم كل حرف." لقد أمضى صفحتين يصفان ما يمكن قوله باختصار.
"إذا احتاجوا إلى ست صفحات ، فسوف يحصلون على ست صفحات" ، حسب رأي سيباستيان.
اتضح أن اليوم الأول كان غريبًا ، لكن سيباستيان رأى أنه قادر على تحمله لعدة سنوات على الأقل. أنهى المهمة ، وغادر المبنى (الذي كانت رائحته مشبوهة من ملابس داخلية جلدية قديمة) ومشى ببطء إلى "ساحة انتظار السيارات المجانية" (ميزة أخرى تبرر هذا العمل في عينيه). ببطء - لأن الصدأ كان متآكلًا بالكامل بسبب الصدأ ، وفي العديد من الأماكن ، سقطت الخرسانة تمامًا ، مما كشف عن تعزيز الأرضية والأعمدة.
في صباح اليوم التالي ، تمامًا الساعة 9:00 صباحًا ، كان سيباستيان في مكتب مديره ، في انتظار التحقق الأول من المشروع من رئيس الشركة ، الذي اتصل به عبر الهاتف. شعر سيباستيان بعدم الارتياح من المحادثة مع الرئيس مباشرة ، نظرًا لوجود ستين موظفًا في الشركة ، لكنه اضطر إلى تحملها.
"لقد فعلت كما طلب ، وبالقدر المناسب. على الأرجح ، هذا مجرد إجراء شكلي ، وبعد ذلك يمكنني العمل. "بعد ساعة ، عاد سيباستيان المهين والمرهق إلى مكتبه. كان الانتقاد السخيف ولكن القاسي الذي تلقاه لا يزال يرن في أذنيه. وفقًا للرئيس ، لم تكن عناوين قسمه "خضراء" وليست خضراء ، كما طلبت الشركة ، وكانت عناوين الفصول "حمراء" بشكل لا يغتفر بدلاً من اللون الأرجواني المتوقع. بالإضافة إلى ذلك ، قيل له صراحة إنه "من المستحيل" تصحيح الخطوط باستخدام Python. بدلاً من ذلك ، طُلب إلى Sebastian العمل في C ++ واستخدام مكتبات البرامج "الرائعة" الخاصة بالشركة. في انتظار مكالمة الرئيس ، أشاد مدير سيباستيان بالوثيقة ، لكن خلال الفحص لم يقل كلمة واحدة ، نظرًا بشكل لا ينفصل إلى حائط القرميد على مكتبه.
أغلق سيباستيان باب المكتب ، وأغلق نفسه عن بقية الشركة. جلس على كرسيه الجلدي الفاخر وحدق في شاشة جهاز كمبيوتر بالكاد يعمل. أعاد فتح وثيقته ثم أعد تشغيل الجهاز لأن Vista قرر الطيران. عندما قام الكمبيوتر بالتمهيد مرة أخرى ، قام بفحص حسابه المصرفي ، وفكر في مدفوعات الرهن العقاري ، وصرير أسنانه.
"حسنًا ،" قال بصوت عالٍ في المكتب الفارغ. "إلقاء نظرة على هذه المكتبات."
أول ما بدأ البحث عنه هو التوثيق. وبطبيعة الحال ، في مثل هذه الشركة المهووسة بالوثائق ، يجب أن تكتب وثائق المكتبات "الرائعة" بدقة في الخط الصحيح مع تظليل دقيق مثالي ، مع عناوين الفصول وأسماء الأقسام الصحيحة. لكن الوثائق ... لم يكن. كان هناك الكثير من وثائق التصميم بألوان خضراء وأرجوانية مثالية. لكنهم وصفوا فقط منهجية تطوير المكتبة ولم يقلوا أي شيء عن استخدامها.
"هل أفقد عقلي؟" سأل سيباستيان نفسه عند إعادة تشغيل السيارة للمرة الثالثة.
"ربما الرمز هو توثيق ذاتي ..."لقد عانى من الرعب ، لكن لم تكن هناك مفاجأة كبيرة: كانت المكتبات تتألف من مغلفات سيئة الوظائف لوظائف السلسلة من المكتبة القياسية.
على الرغم من الانهيار المستمر ، إلا أن سيباستيان قد تعرض للضربة. تم استدعاؤه يوميا لجولة أخرى من التخويف اللفظي. لمدة أربع سنوات ، لم تستطع الشركة مواجهة مشكلة الخطوط هذه ؛ ومع ذلك ، فإن أيا من المقترح من قبله لم يناسب الرئيس. ترك سيباستيان مكتبته الخاصة بالشركة ، وبدأ في حل المشكلة في بيثون الذي كان يعرفه ؛ في النهاية ، إذا ظلوا ينتشرون العفن ، فلماذا ماذا يقولون لك؟ ولكن مهما استخدم: اختباره الخاص في Python أو اختبار Microsoft أو Apple أو Adobe - فقد ظل الخط فوضى كاملة. 488 غير قابلة للتصحيح ، غير قابلة للفصل ، وغير قابلة للحل عن طريق أخطاء التصحيحات.
رفض الرئيس بشكل قاطع الاعتراف بالحقيقة. ادعى أنه كان خطأ سيباستيان ، لأنه لم يستخدم مكتبات C ++ الممتازة.
بعد أن استنفد جميع الخيارات ، ترك سيباستيان المفتاح إلى المرآب الصدأ على مكتب المدير مع خطاب استقالة. وقال وداعا لمكتبه الجميل والآلة الكاتبة الجهنمية التي قدموها كجهاز كمبيوتر. أخذ نفسا عميقا ، وشعر برائحة الجلد الكئيبة للمرة الأخيرة وغادر ، تماما وبلا رجعة.
لسبب ما ، شك في أنه سيغيب عن الشركة.
يمكنك أن تمرض من هذا النوع من الرعاية الصحية.
[الأصل]في أي صناعة ، هناك معلومات يجب نقلها بين أنظمة غير متوافقة. إذا كنت تعيش حياة الصالحين ، فإن هذه الأنظمة كانت مجرد تطبيقات مختلفة على نفس المنصة. ومع ذلك ، إذا انحرفت عن المسار الجيد ، فقد تمت كتابة هذه الأنظمة بلغات مختلفة لمنصات مختلفة تعمل على أنظمة تشغيل مختلفة بترتيب بايت مختلف. تخيل بعض تطبيقات Java في Safari ضمن بعض إصدارات
Mac OS ، والتي تحتاج إلى التواصل مع بعض إصدارات
.NET ضمن بعض إصدارات
Windows ، والتي بدورها تحتاج إلى التواصل مع بعض إصدارات
COBOL باستخدام ثنائي
EBCIDIC يعمل على أي المركزية.
قبل وقت طويل من تخيل هذا الكابوس ، عملنا مع
SGML ، التي
تدهورت وتطورت إلى
XML ، والتي ينبغي أن تكون وسيلة مقبولة
تافهة لتحديد التنسيق والحقول الموجودة في مستند مع محلل متاح على جميع المنصات ، بحيث يمكن تبادل المعلومات ، لا تعرف شيئًا سوى
DTD و / أو برامج التحقق من الصحة والتحليل.
لعدم الأمل في الأفضل ، لتبسيط العمل ، كتبنا على رأس مكتبة غلاف XML.
لسوء الحظ ، لم يتعاملوا مع المهمة.
في قطاع الرعاية الصحية ، أنشأ بعض اللاعبين من مصدر copen مشروع (H) ealthcare (API) ، أو
HAPI ، والذي هو في الأساس محلل الرسائل النصية الموجه لقطاع الرعاية الصحية. لسوء الحظ ، يبدو أنهم يعانون من متلازمة
"لا أعرف متى تتوقف" .
بدلاً من تطبيق محلل معمم يكسر ببساطة سلسلة محددة أو سلسلة تنسيق ثابتة في قائمة قيم حقل النص ، يطبق
الإصدار الأخير 1205 محللًا مختلفًا ، لكل منها هيكل بيانات عالي المستوى خاص به. أعلى مستوى الهياكل لديها العشرات من الهياكل الأساسية. كل محلل لديه واحد أو أكثر من طرق الوصول لكل حقل. يمكن أن يكون الحقل مثيلًا واحدًا أو قائمة مثيلات ، وفي هذه الحالة يكون من الضروري تحديد طريقة الوصول التي يجب استخدامها برمجيًا.
هذا هو API مع ما يقرب من
15 ألف طريقة المكالمات! ما كان هؤلاء المطورين يفكرون على الإطلاق؟
على سبيل المثال ، قد يكون للفئة:
EHC_E15_PAYMENT_REMITTANCE_DETAIL_INFO من أقسام
خدمة المنتج صفرًا أو أكثر. لذلك بدأت على الفور التفكير في نوع من الصفيف أو القائمة. لذلك ، بدلاً من شيء مثل هذا:
EHC_E15_PAYMENT_REMITTANCE_DETAIL_INFO info = ...؛
قائمة <EHC_E15_PRODUCT_SERVICE_SECTION> prodServices = info.getProductServices () ،
// التكرار
... نحن بحاجة إلى القيام بأحد هذه الأمور:
// الحصول على البنية التحتية
EHC_E15_PAYMENT_REMITTANCE_DETAIL_INFO info = ...؛
// احصل على خدمة المنتج المدمجة من البنية التحتية
// ... إذا علمنا بالتأكيد أن لديه رسالة واحدة فقط:
EHC_E15_PRODUCT_SERVICE_SECTION prodSvc = info.getPRODUCT_SERVICE_SECTION ()؛
// ... إذا كنا لا نعرف كم سيكون هناك:
int n = infos.getPRODUCT_SERVICE_SECTIONReps ()؛
لـ (int i = 0 ؛ i <n؛ i ++) {
EHC_E15_PRODUCT_SERVICE_SECTION prodSvc = info.getPRODUCT_SERVICE_SECTION (i)؛
/ / استخدم هذا
}
// ... أو يمكنك فقط الاستيلاء عليها وتكرارها
قائمة <EHC_E15_PRODUCT_SERVICE_SECTION> allSvcs = info.getPRODUCT_SERVICE_SECTIONAll () ،
... وتحتاج إلى استدعاء الطريقة المطلوبة ، وإلا فإنك تخاطر بالحصول على استثناء. ولكن إذا كان هناك العديد من الطرق لأداء مهمة واحدة من خلال واجهة برمجة التطبيقات ، فهناك العديد من الطرق لتنفيذها في الكود باستخدام واجهة برمجة التطبيقات ، مما يؤدي حتماً إلى حدوث مشاكل.
يمكنك القول:
"هيا ، كل شيء ليس سيئًا للغاية" ؛ فقط استخدم ما تحتاجه. لكنك تدرك بعد ذلك أن بعض هياكل البيانات هذه مضمنة في عمق أو أكثر من عشرة مستويات ، ولكل منها عشرات من الهياكل الأساسية و / أو الحقول ، ولكل منها عدة طرق للوصول. وعلاوة على ذلك ، كل منهم لديهم أسماء طويلة حقا.
ثم تدرك أن مطوري HAPI قد سئموا من الكتابة وبدأوا في استخدام هياكل البيانات مثل LA1 و ILT و PCR للاختصارات.تحاول واجهة برمجة التطبيقات (API) أن تكون مفيدة: إذا لم تجد ما هو متوقع في الحقل الذي تطلب تحليله ، فسوف يلقي استثناءً ، وتحتاج إلى معرفة الخطأ الذي حدث بمفردك. بالطبع ، هذا يعني أنك تعرف بالفعل ما يتم نقله إليك في دفق البيانات.مجهولعملت في مجال الرعاية الصحية ودعمت مكتبة ملفوفة حول HAPI. تم تكليفه بانتظام بمهام (استغرق إنجازها عدة أسابيع) من خلال تحليل بسيط لمجال إضافي. بعد أن قضى الكثير من الوقت في المضغ على وحدات تخزين وثائق API ، كتب محللًا مشتركًا من فئة واحدة مكونة من 300 سطر مع العديد من الانقسامات ، و subring ، و parseDate ، و parseInt ، كبديل للواجهة بالكامل.بعد ذلك ، استغرق إضافة حقل جديد أكثر من عشر دقائق.