الانحرافات الغريبة من عالم تكنولوجيا المعلومات - 3

تقوم Daily WTF بجمع قصص مضحكة ووحشية و / أو حزينة من عالم تكنولوجيا المعلومات منذ 14 عامًا. قمت بترجمة العديد من القصص التي بدت مثيرة للاهتمام بالنسبة لي. تم تغيير جميع أسماء الشركات والأسماء. يمكن العثور على الإصدارات السابقة تحت عنوان " الانحرافات الغريبة ".

الصورة

القصة الأولى: "ليست فقط رائعة"


[ الأصل ]

كان لدينا جميع الزملاء الذين لم يتمكنوا من القيام بعملنا. كان جراد محظوظًا أيضًا.

عمل في شركة Initech في مجموعة صغيرة من المطورين الذين قاموا بإنشاء عميل Windows للعملاء الذين استخدموه للتفاعل مع خادمهم. قررت الشركة نقل التطبيق من .NET إلى Java. أوصى الدليل الأهم مطور جافا الرائد الذي يحظى باحترام كبير من Kisha من Intelligenuity كمدير للمشروع. "لا تقلق" ، قالت الإدارة. "الذكاء يوظف فقط المبرمجين الأكثر ذكاء."

في الاجتماع الأول للمشروع ، أعلن المدير أنه سيستخدم Eclipse لمشروع Java. قالت كيشا: "ليس لدي كسوف. هل يمكن لشخص أن يرسل؟ أرسلت لها جراد رابط. في الاجتماع التالي ، سألها عما إذا كانت تقوم بتثبيت Eclipse. أجابت أنها لا تستطيع تنزيل الوسيط ، لذلك انتظرت الاجتماع التالي لطلب المساعدة. ركض المدير إلى سيارتها وحل المشكلة من خلال النقر على رابط التنزيل.

دعنا ننتقل إلى الاجتماع التالي: قالت كيشا إنها لا تستطيع مواصلة العمل ، لأن "إكليبس لديه بعض المشاكل مع JDK ، هل يمكن لشخص ما إرسالها إلي؟" أرسلت لها جراد الرابط مرة أخرى. بعد بضعة أيام ، في الاجتماع التالي ، قالت: "لا يعمل Eclipse لأنه يحتاج إلى ملف مرطبان ، هل يمكن لشخص ما إرساله؟" وبعد ذلك ، "هل يمكن لشخص ما إرسال رمز لي لإنشاء فئات لأن Eclipse يقوم بالإبلاغ باستمرار عن NullPointerException ؟"

أخيرًا ، غير المدير هيكل الاجتماعات. استمروا في اجتماعات العملاء العادية لـ Windows ، لكنهم أضافوا اجتماعًا مخصصًا منفصلًا لـ Kishi فقط. مع مرور الوقت ، تبين أنها وزوجها صديقان لزعيم رفيع المستوى وزوجته. عقد اجتماع منفصل "لضمان نجاح أعماله" ؛ هذا يعني أن مدير الفريق كتب كود لها.

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

نظم المدير اجتماعًا مع العميل ، نفسه ، كيشي ، جراد ومدير المشروع ، لحل المشكلة نهائيًا. في يوم الاجتماع ، فوجئ العميل بعدد موظفي الدعم الفني والمديرين. وأوضح: "أم ..." المشكلة مع البوابة "" هي أنني طلبت من كيشا عنوان URL لبوابة الويب. كان كافيا أن نرسل له رسالة ".

في بعض الأحيان تحدث العدالة في هذا العالم ، وفقدت كيشا وظيفتها نتيجة لذلك.

القصة الثانية: "حكة لمدة ثلاثة أشهر"


[ الأصل ]


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

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

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

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

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

وقال إيان غريزي تقريبا "ماذا؟" سيكون عليهم التخلص من نتائج أسبوعين من العمل. بالإضافة إلى ذلك ، كان جزء جمع البيانات اختياريًا تمامًا من قبل.

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

وقال جاك "إذا وضعت كومة قش كبيرة بما فيه الكفاية ، فستظهر إبرة بكل تأكيد!" "سنجعل التطبيق مجانيًا ، وسنعني العمل به تسجيل إلزامي. الدخل الحقيقي لنا هو البيانات التي يتم جمعها. "

أنفق رأس مال المستثمر على مكتب فاخر في المركز التجاري للمدينة. مطورو التطبيق المجاني يستحقون الأفضل فقط. قام جاك بتعيين مطور ثانٍ لنظام iOS وعلوم البيانات والمتدرب.

"لكن لا تعطي المتدرب أي عمل مهم" ، قال جاك للموظفين بدوام كامل.

بعد أن أتقنت الموقف الجديد ، بدأت إيان في تطوير بنية النظام الجديد الذي سيسجل جميع البيانات اللازمة.

بعد ثلاثة أشهر ، ألقى جاك كل شيء في الصندوق. "لا توجد تطبيقات! نحن بحاجة إلى اتجاه جديد للتنمية! "

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

قال جاك: "الناس يحبون التحدث عن أنفسهم". "لا ينبغي أن ندفع لهم مقابل حقيقة أنهم يقدمون لنا بياناتهم!"

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

يمكنك بالفعل تخمين ما حدث بعد ثلاثة أشهر. لقد تخلى Jack عن موقع الويب الذي يتطور ببطء لصالح تطبيق Slack ، والذي كان من المفترض أن يستجيب لأمر "Play ${song} by ${artist}" ، حيث عثر على المسار في Spotify والربط به. تقوم أداة Spotify بتشغيل معاينة 30 ثانية أو ، إذا كان لدى المستخدم حساب Spotify Premium ، فإن الأغنية بأكملها.

هل هذا كل شيء؟ كيف سنكسب المال؟ "، - بحلول هذا الوقت ، لم يعد المطورين يقيدون أنفسهم في مطالباتهم.

"سيتم دفع الاشتراك" ، أجاب جاك بجرأة.

"بالنسبة للدردشة بوت؟" "إيان اعترض. "حتى يعمل بشكل كامل ، يحتاج المستخدم بالفعل إلى Spotify Premium. إذا كنا نريد أن يدفع الناس ما هو أبعد من ذلك ، فإننا نحتاج إلى منحهم المزيد من الفرص! "

"سوف نتعامل مع هذا في وقت لاحق" ، أجاب جاك.

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

ثلاثة أشهر أخرى مرت. تمت إضافة العديد من "الميزات" ، على سبيل المثال ، طلب الروبوت الهوس المستخدمين على قناة سلاك من استخدامها. انتهك هذا السلوك شروط استخدام Slack ، وبالتالي لم يُسمح للتطبيق بالدخول إلى المتجر ؛ كان على جاك نفسه أن يرسل روابط إلى المهتمين ، بحيث يقومون بتثبيتها يدويًا. في البداية ، تم نقل المنتج إلى 50 شركة "ودية للغاية" يعرفها جاك شخصيًا ؛ من هؤلاء ، عدد قليل فقط تثبيته ، وحتى أقل استمر في استخدامه في اليوم التالي. ثم قام جاك بتوسيع الإعلان ليشمل 300 شركة "صديقة" ، ولكن مع نفس النتيجة.

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

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

القصة الثالثة: "ناقل النسخ الاحتياطي"


[ الأصل ]

"أم ... هل يمكن أن ننظر إلى شيء بالنسبة لي؟"

انفصلت بات عن برمجة الميزات الجديدة ، ورأت مكعب ميلتون يقف بالقرب منها.

"أعتقد أنني أواجه مشاكل" ، أضاف ميلتون.

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

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

وقال ميلتون: "اعتقدت أن الأمر يستحق إجراء تغييراتي على نظام التحكم في الإصدار". "كان لدي برنامج نصي تم استدعاؤه بواسطة برنامج نصي تم استدعاؤه بواسطة البرنامج النصي ، وكان كل هذا يتوقف على مجموعة من متغيرات shell التي تم إنشاؤها ، على سبيل المثال $SETUP_DIR ."

هز رأسه.

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

على وجه الخصوص ، تضمن نص ميلتون هذا السطر:

#!/bin/sh

rm -rf $SETUP_DIR/*/


قام بإعادة تشكيلها في السطر التالي:

#!/bin/sh

rm -rf $1/*/


مخطوطات Shell لا تهتم بوجود هذه المتغيرات. كان لدى Milton بيئة ثابتة لـ $SETUP_DIR . لكن $1 هي الوسيطة الأولى ، وإذا لم $1 الوسيطة ، فستكون فارغة. لذلك ، تم نشر برنامج نصي Milton جديد ، عند تشغيله بدون وسيطات ، على rm -rf /*/ ، لحذف كل شيء كان لحسابه حق الوصول إليه.

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

"هل يمكن إصلاح هذا بطريقة أو بأخرى؟"

"حسنا ، نعم ، بالطبع. وقال بات إنه يمكن استعادة كل شيء من آخر نسخة احتياطية.

على الرغم من إطلاق أداة نسخ احتياطي تلقائية على جميع أنظمة Windows ، لم يتم تكوينها على أي نظام Linux. اعتبر قسم الدعم أنه إذا كنت مؤهلاً تقنيًا بما يكفي للعمل مع Linux وكتابة نصوص shell ، فستكون لديك معرفة كافية لتكوين نظام النسخ الاحتياطي الخاص بك. خاصة لهذا الغرض ، كان هناك SAN في متناول الجميع.

"أوه ، وأنا ... لم تنشئ نسخة احتياطية ،" همس ميلتون. "حسنا ... على الأقل لم أكن دفع؟"

أمل بات أن يتعلم ميلتون الدرس الصحيح من هذا الخطأ.

القصة الرابعة: "ما هي النقطة العائمة؟"


[ الأصل ]

الصورة

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

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

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

ووجد نفسه في مكتب الرئيس ، الذي رتب له لغسل نفسه.

"لن يفهم المبرمجون الآخرون هذا!" صاح المدير. الكود معقد للغاية. لماذا تغييره؟ إنه يعمل ، كان عليك أن تتركه! "

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

درس أولاف أكثر من زملائه ، لكن لا يوجد تدريب شامل. تمكن بسرعة من تحديد أنه كان خطأ رياضي مع نقطة عائمة. نظرًا لأنه لا يمكن تمثيل الأرقام العشرية بشكل ثنائي بدقة تامة ، فقد نشأت أخطاء حسابية في الحدود. بدأ يبحث عن الطرق الصحيحة للتعامل مع القيم العشرية في PHP. على عكس Node أو C # ، من الصعب جدًا توصيل المكتبات الخارجية في PHP ، لأن هذه اللغة لا تحتوي على دعم مضمن لإدارة الحزم. لم يستطع معرفة كيفية إضافة مكتبة قادرة على أداء العمليات الحسابية بشكل صحيح. نظرًا لأن البرنامج قام بحساب المبالغ فقط ، فقد قرر Olaf استخدام الرياضيات الصحيحة: حساب القيمة ، والتخلص من العلامة العشرية (بحيث يتم تمثيل قيمة 10.50 دولار كـ 1050) ، وإجراء العمليات الحسابية ، وإضافة العلامة العشرية مرة أخرى عند عرضها.

يحب صغار آخر هذه الفكرة. وافق عليه المطور الكبير ، لكن الرئيس رفض رفضًا قاطعًا العرض. كيف قال عن هذا؟ هذا ليس خطأ الفاصلة العائمة. إنه ينشأ بسبب ضعف كتابة PHP ، يحاول البرنامج جمع القيم كسلسلة ، وليس كأرقام. "

(بالنسبة لأولئك الذين لديهم فضول: لا يستخدم PHP عامل التشغيل + لتسلسل السلاسل. بدلاً من ذلك ، يستخدم ".". نتيجة "hello " . "world" سيكون "hello world" .)

ونتيجة لذلك ، أدرك المطور الرئيسي هذا القرار: لفصل الجزء بالكامل عن الجزء الكسري ، بحيث تحول 10.50 دولار إلى 10.00 دولارات و 0.50 دولار ، ثم لخص كل جزء على حدة.

لم يطول أولاف ، في انتظار أن يكتشفوا أن الخطأ لا يزال في مكانه ، لأن البرنامج لا يزال يعالج الجزء الكسري باستخدام سنتات كرقم عائم. وجد وظيفة أفضل بلغة أفضل ، وترك الشركة.

الصورة

القصة الخامسة: "الأمن المحسوب"


[ الأصل ]

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

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

في هذه الحقبة من نقل المعلومات عبر القرص المرن ، غالبًا ما كان المبرمجون يأخذون معهم إلى العمل ويأخذون صناديق بها أقراص مرنة. Schlockdeed , , . « ». , .

, HP-41CX. , , . HP-41CX .

: «, . ». . 41CX - ? , ? «, CIO. », — .

, , , «» . , (Chief Information Officer) . , 80-. , Calculator Inspection Officer.

«, », — , . HP-41CX. : « . , , . , !» , .

, . . , . AC (Approved Calculator), . HP-41CX, , Schlockdeed . , , « » -.

Source: https://habr.com/ru/post/ar442222/


All Articles